From 2aa0ceecd4549a6f8e968c52d820e7eed7305120 Mon Sep 17 00:00:00 2001 From: "Sajal.Kar" Date: Mon, 6 Apr 2020 14:00:37 +0000 Subject: [PATCH 01/98] VLab issue # 76949. Update FV3-WAM from IPD to CCPP --- physics/GFS_rrtmg_setup.meta | 4 ++-- physics/cires_ugwp.F90 | 3 ++- physics/dcyc2.meta | 16 ++++++------- physics/moninedmf.meta | 8 +++---- physics/rrtmg_lw_post.F90 | 13 ++++++---- physics/rrtmg_sw_post.F90 | 8 +++---- physics/satmedmfvdif.meta | 46 ++++++++++++++++++++++++++++++++---- physics/ugwp_driver_v0.F | 1 + physics/ysuvdif.meta | 8 +++---- 9 files changed, 75 insertions(+), 32 deletions(-) diff --git a/physics/GFS_rrtmg_setup.meta b/physics/GFS_rrtmg_setup.meta index 8405d160d..3f3cfa2c1 100644 --- a/physics/GFS_rrtmg_setup.meta +++ b/physics/GFS_rrtmg_setup.meta @@ -11,8 +11,8 @@ intent = in optional = F [levr] - standard_name = number_of_vertical_layers_for_radiation_calculations - long_name = number of vertical levels for radiation calculations + standard_name = adjusted_vertical_layer_dimension_for_radiation + long_name = number of vertical layers for radiation units = count dimensions = () type = integer diff --git a/physics/cires_ugwp.F90 b/physics/cires_ugwp.F90 index 99767e9b0..1cebd18d3 100644 --- a/physics/cires_ugwp.F90 +++ b/physics/cires_ugwp.F90 @@ -51,7 +51,8 @@ subroutine cires_ugwp_init (me, master, nlunit, logunit, fn_nml2, & integer, intent (in) :: lonr integer, intent (in) :: levs integer, intent (in) :: latr - real(kind=kind_phys), intent (in) :: ak(:), bk(:) +!SK real(kind=kind_phys), intent (in) :: ak(:), bk(:) + real(kind=kind_phys), intent (in) :: ak(levs+1), bk(levs+1) real(kind=kind_phys), intent (in) :: dtp real(kind=kind_phys), intent (in) :: cdmbgwd(4), cgwf(2) ! "scaling" controls for "old" GFS-GW schemes real(kind=kind_phys), intent (in) :: pa_rf_in, tau_rf_in diff --git a/physics/dcyc2.meta b/physics/dcyc2.meta index c4a8d9051..2fa998781 100644 --- a/physics/dcyc2.meta +++ b/physics/dcyc2.meta @@ -183,37 +183,37 @@ intent = in optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate on radiation time step units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [swhc] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_timestep long_name = clear sky shortwave heating rate on radiation time step units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate on radiation time step units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [hlwc] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_timestep long_name = clear sky longwave heating rate on radiation time step units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in diff --git a/physics/moninedmf.meta b/physics/moninedmf.meta index 47875640f..6a6ccd183 100644 --- a/physics/moninedmf.meta +++ b/physics/moninedmf.meta @@ -145,19 +145,19 @@ intent = in optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in diff --git a/physics/rrtmg_lw_post.F90 b/physics/rrtmg_lw_post.F90 index 971b278dd..8ddce4217 100644 --- a/physics/rrtmg_lw_post.F90 +++ b/physics/rrtmg_lw_post.F90 @@ -30,9 +30,12 @@ subroutine rrtmg_lw_post_run (Model, Grid, Radtend, Coupling, & type(GFS_grid_type), intent(in) :: Grid type(GFS_radtend_type), intent(inout) :: Radtend integer, intent(in) :: im, ltp, LM, kd - real(kind=kind_phys), dimension(size(Grid%xlon,1), Model%levr+LTP), intent(in) :: htlwc - real(kind=kind_phys), dimension(size(Grid%xlon,1), Model%levr+LTP), intent(in) :: htlw0 - real(kind=kind_phys), dimension(size(Grid%xlon,1)), intent(in) :: tsfa + real(kind=kind_phys), dimension(size(Grid%xlon,1), lm+LTP), intent(in) :: htlwc, htlw0 + real(kind=kind_phys), dimension(size(Grid%xlon,1)), intent(in) :: tsfa + +! real(kind=kind_phys), dimension(size(Grid%xlon,1), Model%levr+LTP), intent(in) :: htlwc +! real(kind=kind_phys), dimension(size(Grid%xlon,1), Model%levr+LTP), intent(in) :: htlw0 +! real(kind=kind_phys), dimension(size(Grid%xlon,1)), intent(in) :: tsfa character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg ! local variables @@ -54,7 +57,7 @@ subroutine rrtmg_lw_post_run (Model, Grid, Radtend, Coupling, & enddo ! --- repopulate the points above levr if (lm < Model%levs) then - do k = lm,Model%levs + do k = lm+1,Model%levs Radtend%htrlw (1:im,k) = Radtend%htrlw (1:im,LM) enddo endif @@ -66,7 +69,7 @@ subroutine rrtmg_lw_post_run (Model, Grid, Radtend, Coupling, & enddo ! --- repopulate the points above levr if (lm < Model%levs) then - do k = lm,Model%levs + do k = lm+1,Model%levs Radtend%lwhc(1:im,k) = Radtend%lwhc(1:im,LM) enddo endif diff --git a/physics/rrtmg_sw_post.F90 b/physics/rrtmg_sw_post.F90 index e11491d48..39de39c98 100644 --- a/physics/rrtmg_sw_post.F90 +++ b/physics/rrtmg_sw_post.F90 @@ -36,7 +36,7 @@ subroutine rrtmg_sw_post_run (Model, Grid, Diag, Radtend, Coupling, & type(GFS_diag_type), intent(inout) :: Diag integer, intent(in) :: im, lm, kd, nday, ltp type(cmpfsw_type), dimension(size(Grid%xlon,1)), intent(inout) :: scmpsw - real(kind=kind_phys), dimension(Size(Grid%xlon,1), Model%levr+LTP), intent(in) :: htswc, htsw0 + real(kind=kind_phys), dimension(Size(Grid%xlon,1), lm+LTP), intent(in) :: htswc, htsw0 real(kind=kind_phys), dimension(size(Grid%xlon,1)), intent(in) :: sfcalb1, sfcalb2, sfcalb3, sfcalb4 character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg @@ -56,7 +56,7 @@ subroutine rrtmg_sw_post_run (Model, Grid, Diag, Radtend, Coupling, & ! We are assuming that radiative tendencies are from bottom to top ! --- repopulate the points above levr i.e. LM if (lm < Model%levs) then - do k = lm,Model%levs + do k = lm+1,Model%levs Radtend%htrsw (1:im,k) = Radtend%htrsw (1:im,LM) enddo endif @@ -65,10 +65,10 @@ subroutine rrtmg_sw_post_run (Model, Grid, Diag, Radtend, Coupling, & do k = 1, lm k1 = k + kd Radtend%swhc(1:im,k) = htsw0(1:im,k1) - enddo + enddo ! --- repopulate the points above levr i.e. LM if (lm < Model%levs) then - do k = lm,Model%levs + do k = lm+1,Model%levs Radtend%swhc(1:im,k) = Radtend%swhc(1:im,LM) enddo endif diff --git a/physics/satmedmfvdif.meta b/physics/satmedmfvdif.meta index 7f21e58e1..9af1100f5 100644 --- a/physics/satmedmfvdif.meta +++ b/physics/satmedmfvdif.meta @@ -1,3 +1,41 @@ +[ccpp-arg-table] + name = satmedmfvdif_init + type = scheme +[isatmedmf] + standard_name = choice_of_scale_aware_TKE_moist_EDMF_PBL + long_name = choice of scale-aware TKE moist EDMF PBL scheme + units = none + dimensions = () + type = integer + intent = in + optional = F +[isatmedmf_vdif] + standard_name = choice_of_original_scale_aware_TKE_moist_EDMF_PBL + long_name = choice of original scale-aware TKE moist EDMF PBL scheme + units = none + dimensions = () + type = integer + intent = in + optional = F +[errmsg] + standard_name = ccpp_error_message + long_name = error message for error handling in CCPP + units = none + dimensions = () + type = character + kind = len=* + intent = out + optional = F +[errflg] + standard_name = ccpp_error_flag + long_name = error flag for error handling in CCPP + units = flag + dimensions = () + type = integer + intent = out + optional = F + +##################################################################### [ccpp-arg-table] name = satmedmfvdif_run type = scheme @@ -211,19 +249,19 @@ intent = in optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in diff --git a/physics/ugwp_driver_v0.F b/physics/ugwp_driver_v0.F index 52375dd18..a28a790c1 100644 --- a/physics/ugwp_driver_v0.F +++ b/physics/ugwp_driver_v0.F @@ -160,6 +160,7 @@ subroutine cires_ugwp_driver_v0(me, master, if (cdmbgwd(4) > 0.0) then do i=1,im turb_fac(i) = 0.0 + tem(i) = 0.0 enddo if (ntke > 0) then do k=1,(levs+levs)/3 diff --git a/physics/ysuvdif.meta b/physics/ysuvdif.meta index 458ff75ae..da01b0a41 100644 --- a/physics/ysuvdif.meta +++ b/physics/ysuvdif.meta @@ -125,19 +125,19 @@ intent = inout optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in From 6184a973585c3e8f5f429720c02226d68341ab78 Mon Sep 17 00:00:00 2001 From: HenryJuang-NOAA Date: Mon, 11 May 2020 21:55:55 -0500 Subject: [PATCH 02/98] add changes for swh and hlw for vertical dimension --- physics/dcyc2.meta | 16 ++++++++-------- physics/moninedmf.meta | 8 ++++---- physics/satmedmfvdif.meta | 8 ++++---- physics/ysuvdif.meta | 8 ++++---- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/physics/dcyc2.meta b/physics/dcyc2.meta index c4a8d9051..2fa998781 100644 --- a/physics/dcyc2.meta +++ b/physics/dcyc2.meta @@ -183,37 +183,37 @@ intent = in optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate on radiation time step units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [swhc] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_timestep long_name = clear sky shortwave heating rate on radiation time step units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate on radiation time step units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [hlwc] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_timestep long_name = clear sky longwave heating rate on radiation time step units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in diff --git a/physics/moninedmf.meta b/physics/moninedmf.meta index 47875640f..6a6ccd183 100644 --- a/physics/moninedmf.meta +++ b/physics/moninedmf.meta @@ -145,19 +145,19 @@ intent = in optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in diff --git a/physics/satmedmfvdif.meta b/physics/satmedmfvdif.meta index 7f21e58e1..00c65998b 100644 --- a/physics/satmedmfvdif.meta +++ b/physics/satmedmfvdif.meta @@ -211,19 +211,19 @@ intent = in optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in diff --git a/physics/ysuvdif.meta b/physics/ysuvdif.meta index 458ff75ae..da01b0a41 100644 --- a/physics/ysuvdif.meta +++ b/physics/ysuvdif.meta @@ -125,19 +125,19 @@ intent = inout optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate units = K s-1 - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_dimension,vertical_dimension) type = real kind = kind_phys intent = in From 07814b14f9eec89854cd38665a5760f94396336d Mon Sep 17 00:00:00 2001 From: Sajal Kar Date: Mon, 19 Oct 2020 10:21:33 -0500 Subject: [PATCH 03/98] All IDEA-physics routines working with IPD --- .gitignore | 0 CMakeLists.txt | 0 CODEOWNERS | 0 LICENSE | 0 README.md | 0 physics/GFDL_parse_tracers.F90 | 0 physics/GFS_DCNV_generic.F90 | 0 physics/GFS_DCNV_generic.meta | 0 physics/GFS_GWD_generic.F90 | 0 physics/GFS_GWD_generic.meta | 0 physics/GFS_MP_generic.F90 | 0 physics/GFS_MP_generic.meta | 0 physics/GFS_PBL_generic.F90 | 0 physics/GFS_PBL_generic.meta | 0 physics/GFS_SCNV_generic.F90 | 0 physics/GFS_SCNV_generic.meta | 0 physics/GFS_debug.F90 | 0 physics/GFS_debug.meta | 0 physics/GFS_phys_time_vary.fv3.F90 | 0 physics/GFS_phys_time_vary.fv3.meta | 0 physics/GFS_phys_time_vary.scm.F90 | 0 physics/GFS_phys_time_vary.scm.meta | 0 physics/GFS_rad_time_vary.fv3.F90 | 0 physics/GFS_rad_time_vary.fv3.meta | 0 physics/GFS_rad_time_vary.scm.F90 | 0 physics/GFS_rad_time_vary.scm.meta | 0 physics/GFS_rrtmg_post.F90 | 0 physics/GFS_rrtmg_post.meta | 0 physics/GFS_rrtmg_pre.F90 | 0 physics/GFS_rrtmg_pre.meta | 0 physics/GFS_rrtmg_setup.F90 | 0 physics/GFS_rrtmg_setup.meta | 0 physics/GFS_stochastics.F90 | 0 physics/GFS_stochastics.meta | 0 physics/GFS_suite_init_finalize_test.F90 | 0 physics/GFS_suite_init_finalize_test.meta | 0 physics/GFS_suite_interstitial.F90 | 0 physics/GFS_suite_interstitial.meta | 0 physics/GFS_surface_composites.F90 | 0 physics/GFS_surface_composites.meta | 0 physics/GFS_surface_generic.F90 | 0 physics/GFS_surface_generic.meta | 0 physics/GFS_surface_loop_control.F90 | 0 physics/GFS_surface_loop_control.meta | 0 physics/GFS_time_vary_pre.fv3.F90 | 0 physics/GFS_time_vary_pre.fv3.meta | 0 physics/GFS_time_vary_pre.scm.F90 | 0 physics/GFS_time_vary_pre.scm.meta | 0 physics/aer_cloud.F | 0 physics/aerclm_def.F | 0 physics/aerinterp.F90 | 0 physics/calpreciptype.f90 | 0 physics/cires_orowam2017.f | 0 physics/cires_ugwp.F90 | 0 physics/cires_ugwp.meta | 0 physics/cires_ugwp_initialize.F90 | 0 physics/cires_ugwp_module.F90 | 0 physics/cires_ugwp_post.meta | 0 physics/cires_ugwp_solvers.F90 | 0 physics/cires_ugwp_triggers.F90 | 0 physics/cires_ugwp_utils.F90 | 0 physics/cires_vert_lsatdis.F90 | 0 physics/cires_vert_orodis.F90 | 0 physics/cires_vert_wmsdis.F90 | 0 physics/cldmacro.F | 0 physics/cldwat2m_micro.F | 0 physics/cnvc90.f | 0 physics/cnvc90.meta | 0 physics/cs_conv.F90 | 0 physics/cs_conv.meta | 0 physics/cs_conv_aw_adj.F90 | 0 physics/cs_conv_aw_adj.meta | 0 physics/cu_gf_deep.F90 | 0 physics/cu_gf_driver.F90 | 0 physics/cu_gf_driver.meta | 0 physics/cu_gf_driver_post.F90 | 0 physics/cu_gf_driver_post.meta | 0 physics/cu_gf_driver_pre.F90 | 0 physics/cu_gf_driver_pre.meta | 0 physics/cu_gf_sh.F90 | 0 physics/cu_ntiedtke.F90 | 0 physics/cu_ntiedtke.meta | 0 physics/cu_ntiedtke_post.F90 | 0 physics/cu_ntiedtke_post.meta | 0 physics/cu_ntiedtke_pre.F90 | 0 physics/cu_ntiedtke_pre.meta | 0 physics/date_def.f | 0 physics/dcyc2.f | 0 physics/dcyc2.meta | 0 physics/docs/ccpp_dox | 0 physics/docs/ccpp_dox_extra_style.css | 0 physics/docs/ccpp_dox_layout.xml | 0 physics/docs/ccpp_doxyfile | 0 physics/docs/ccpplatex_dox | 0 physics/docs/ccppv3_doxyfile | 0 physics/docs/ccppv3_fv3_doxyfile | 0 physics/docs/img/FV3_structure.png | Bin physics/docs/img/GFS_gwdc.png | Bin physics/docs/img/GFS_sice_wonton2000_fig1.png | Bin physics/docs/img/GFS_stochy_spread.png | Bin physics/docs/img/GFS_zhaocarr_schematic.png | Bin physics/docs/img/GSD_thompson.png | Bin physics/docs/img/MG3_MP_diagram.png | Bin physics/docs/img/MYNN-EDMF_call_order.png | Bin physics/docs/img/NSST.png | Bin physics/docs/img/NSST_schematic.png | Bin physics/docs/img/Noah_LA_interaction.png | Bin physics/docs/img/dtc_logo.png | Bin physics/docs/img/gfdl_cloud_mp_diagram.png | Bin physics/docs/img/land_dataset.png | Bin physics/docs/img/precpd-micop.png | Bin physics/docs/img/rad_gas_AGGI.png | Bin physics/docs/img/roughness_length_fig1.png | Bin physics/docs/img/roughness_length_fig2.png | Bin physics/docs/img/ruc_lsm_frozen_precip.png | Bin physics/docs/img/ruc_lsm_heterogeneity.png | Bin physics/docs/img/ruc_lsm_mosaic.png | Bin physics/docs/img/ruc_lsm_veg_soil.png | Bin physics/docs/img/schematic_Rad_mod.png | Bin physics/docs/img/schematic_sice.png | Bin physics/docs/library.bib | 0 physics/docs/pdftxt/CPT_CSAW.txt | 0 physics/docs/pdftxt/CPT_MG3.txt | 0 physics/docs/pdftxt/CPT_adv_suite.txt | 0 physics/docs/pdftxt/GFDL_cloud.txt | 0 physics/docs/pdftxt/GFS_CALPRECIPTYPE.txt | 0 physics/docs/pdftxt/GFS_GWDC.txt | 0 physics/docs/pdftxt/GFS_GWDPS.txt | 0 physics/docs/pdftxt/GFS_H2OPHYS.txt | 0 physics/docs/pdftxt/GFS_HEDMF.txt | 0 physics/docs/pdftxt/GFS_NOAH.txt | 0 physics/docs/pdftxt/GFS_NSST.txt | 0 physics/docs/pdftxt/GFS_OZPHYS.txt | 0 physics/docs/pdftxt/GFS_RAYLEIGH.txt | 0 physics/docs/pdftxt/GFS_RRTMG.txt | 0 physics/docs/pdftxt/GFS_SAMF.txt | 0 physics/docs/pdftxt/GFS_SAMFdeep.txt | 0 physics/docs/pdftxt/GFS_SAMFshal.txt | 0 physics/docs/pdftxt/GFS_SATMEDMF.txt | 0 physics/docs/pdftxt/GFS_SFCLYR.txt | 0 physics/docs/pdftxt/GFS_SFCSICE.txt | 0 physics/docs/pdftxt/GFS_STOCHY_PHYS.txt | 0 physics/docs/pdftxt/GFS_STOCHY_PHYS.txt.save | 0 physics/docs/pdftxt/GFS_SURFACE_PERT.txt | 0 physics/docs/pdftxt/GFS_ZHAOC.txt | 0 physics/docs/pdftxt/GFSphys_namelist.txt | 0 physics/docs/pdftxt/GFSv14_suite.txt | 0 physics/docs/pdftxt/GFSv15_suite.txt | 0 physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt | 0 physics/docs/pdftxt/GSD_CU_GF_deep.txt | 0 physics/docs/pdftxt/GSD_MYNN_EDMF.txt | 0 physics/docs/pdftxt/GSD_RUCLSM.txt | 0 physics/docs/pdftxt/GSD_THOMPSON.txt | 0 physics/docs/pdftxt/GSD_adv_suite.txt | 0 physics/docs/pdftxt/MG_double.txt | 0 physics/docs/pdftxt/all_shemes_list.txt | 0 physics/docs/pdftxt/all_shemes_list.txt.FV3 | 0 physics/docs/pdftxt/code_overview.txt | 0 physics/docs/pdftxt/code_overview.txt.Aug17 | 0 physics/docs/pdftxt/mainpage.txt | 0 physics/docs/pdftxt/mainpage.txt.Aug17 | 0 physics/docs/pdftxt/rad_cld.txt | 0 physics/docs/pdftxt/suite_input.nml.txt | 0 physics/drag_suite.F90 | 0 physics/drag_suite.meta | 0 physics/funcphys.f90 | 0 physics/gcm_shoc.F90 | 0 physics/gcm_shoc.meta | 0 physics/gcycle.F90 | 0 physics/get_prs_fv3.F90 | 0 physics/get_prs_fv3.meta | 0 physics/gfdl_cloud_microphys.F90 | 0 physics/gfdl_cloud_microphys.meta | 0 physics/gfdl_fv_sat_adj.F90 | 0 physics/gfdl_fv_sat_adj.meta | 0 physics/gfs_phy_tracer_config.F | 0 physics/gmtb_scm_sfc_flux_spec.F90 | 0 physics/gmtb_scm_sfc_flux_spec.meta | 0 physics/gocart_tracer_config_stub.f | 0 physics/gscond.f | 0 physics/gscond.meta | 0 physics/gwdc.f | 0 physics/gwdc.meta | 0 physics/gwdps.f | 0 physics/gwdps.meta | 0 physics/h2o_def.f | 0 physics/h2ointerp.f90 | 0 physics/h2ophys.f | 0 physics/h2ophys.meta | 0 physics/iccn_def.F | 0 physics/iccninterp.F90 | 0 physics/iounitdef.f | 0 physics/lsm_ruc_sfc_sice_interstitial.F90 | 0 physics/lsm_ruc_sfc_sice_interstitial.meta | 0 physics/m_micro.F90 | 0 physics/m_micro.meta | 0 physics/m_micro_interstitial.F90 | 0 physics/m_micro_interstitial.meta | 0 physics/machine.F | 0 physics/machine.meta | 0 physics/maximum_hourly_diagnostics.F90 | 0 physics/maximum_hourly_diagnostics.meta | 0 physics/mersenne_twister.f | 0 physics/mfpbl.f | 0 physics/mfpblt.f | 0 physics/mfscu.f | 0 physics/micro_mg2_0.F90 | 0 physics/micro_mg3_0.F90 | 0 physics/micro_mg_utils.F90 | 0 physics/module_MYJPBL_wrapper.F90 | 0 physics/module_MYJPBL_wrapper.meta | 0 physics/module_MYJSFC_wrapper.F90 | 0 physics/module_MYJSFC_wrapper.meta | 0 physics/module_MYNNPBL_wrapper.F90 | 0 physics/module_MYNNPBL_wrapper.meta | 0 physics/module_MYNNSFC_wrapper.F90 | 0 physics/module_MYNNSFC_wrapper.meta | 0 physics/module_MYNNrad_post.F90 | 0 physics/module_MYNNrad_post.meta | 0 physics/module_MYNNrad_pre.F90 | 0 physics/module_MYNNrad_pre.meta | 0 physics/module_bfmicrophysics.f | 0 physics/module_bl_mynn.F90 | 0 physics/module_gfdl_cloud_microphys.F90 | 0 physics/module_mp_radar.F90 | 0 physics/module_mp_thompson.F90 | 0 ...odule_mp_thompson_make_number_concentrations.F90 | 0 physics/module_nst_model.f90 | 0 physics/module_nst_parameters.f90 | 0 physics/module_nst_water_prop.f90 | 0 physics/module_sf_mynn.F90 | 0 physics/module_sf_ruclsm.F90 | 0 physics/module_soil_pre.F90 | 0 physics/moninedmf.f | 0 physics/moninedmf.meta | 0 physics/moninshoc.f | 0 physics/moninshoc.meta | 0 physics/mp_thompson.F90 | 0 physics/mp_thompson.meta | 0 physics/mp_thompson_post.F90 | 0 physics/mp_thompson_post.meta | 0 physics/mp_thompson_pre.F90 | 0 physics/mp_thompson_pre.meta | 0 physics/multi_gases.F90 | 0 physics/namelist_soilveg.f | 0 physics/namelist_soilveg_ruc.F90 | 0 physics/num_parthds.F | 0 physics/ozinterp.f90 | 0 physics/ozne_def.f | 0 physics/ozphys.f | 0 physics/ozphys.meta | 0 physics/ozphys_2015.f | 0 physics/ozphys_2015.meta | 0 physics/physcons.F90 | 0 physics/physparam.f | 0 physics/precpd.f | 0 physics/precpd.meta | 0 physics/radcons.f90 | 0 physics/radiation_aerosols.f | 0 physics/radiation_astronomy.f | 0 physics/radiation_clouds.f | 0 physics/radiation_gases.f | 0 physics/radiation_surface.f | 0 physics/radlw_datatb.f | 0 physics/radlw_main.f | 0 physics/radlw_main.meta | 0 physics/radlw_param.f | 0 physics/radlw_param.meta | 0 physics/radsw_datatb.f | 0 physics/radsw_main.f | 0 physics/radsw_main.meta | 0 physics/radsw_param.f | 0 physics/radsw_param.meta | 0 physics/rayleigh_damp.f | 0 physics/rayleigh_damp.meta | 0 physics/rrtmg_lw_post.F90 | 0 physics/rrtmg_lw_post.meta | 0 physics/rrtmg_lw_pre.F90 | 0 physics/rrtmg_lw_pre.meta | 0 physics/rrtmg_sw_post.F90 | 0 physics/rrtmg_sw_post.meta | 0 physics/rrtmg_sw_pre.F90 | 0 physics/rrtmg_sw_pre.meta | 0 physics/samfaerosols.F | 0 physics/samfdeepcnv.f | 0 physics/samfdeepcnv.meta | 0 physics/samfshalcnv.f | 0 physics/samfshalcnv.meta | 0 physics/satmedmfvdif.F | 0 physics/satmedmfvdif.meta | 0 physics/set_soilveg.f | 0 physics/set_soilveg_ruc.F90 | 0 physics/sfc_cice.f | 0 physics/sfc_cice.meta | 0 physics/sfc_diag.f | 0 physics/sfc_diag.meta | 0 physics/sfc_diag_post.F90 | 0 physics/sfc_diag_post.meta | 0 physics/sfc_diff.f | 0 physics/sfc_diff.meta | 0 physics/sfc_drv.f | 0 physics/sfc_drv.meta | 0 physics/sfc_drv_ruc.F90 | 0 physics/sfc_drv_ruc.meta | 0 physics/sfc_noahmp_drv.meta | 0 physics/sfc_noahmp_pre.meta | 0 physics/sfc_nst.f | 0 physics/sfc_nst.meta | 0 physics/sfc_ocean.F | 0 physics/sfc_ocean.meta | 0 physics/sfc_sice.f | 0 physics/sfc_sice.meta | 0 physics/sfcsub.F | 0 physics/sflx.f | 0 physics/shinhongvdif.F90 | 0 physics/shinhongvdif.meta | 0 physics/surface_perturbation.F90 | 0 physics/tridi.f | 0 physics/ugwp_driver_v0.F | 0 physics/wv_saturation.F | 0 physics/ysuvdif.F90 | 0 physics/ysuvdif.meta | 0 322 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 CMakeLists.txt mode change 100644 => 100755 CODEOWNERS mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 physics/GFDL_parse_tracers.F90 mode change 100644 => 100755 physics/GFS_DCNV_generic.F90 mode change 100644 => 100755 physics/GFS_DCNV_generic.meta mode change 100644 => 100755 physics/GFS_GWD_generic.F90 mode change 100644 => 100755 physics/GFS_GWD_generic.meta mode change 100644 => 100755 physics/GFS_MP_generic.F90 mode change 100644 => 100755 physics/GFS_MP_generic.meta mode change 100644 => 100755 physics/GFS_PBL_generic.F90 mode change 100644 => 100755 physics/GFS_PBL_generic.meta mode change 100644 => 100755 physics/GFS_SCNV_generic.F90 mode change 100644 => 100755 physics/GFS_SCNV_generic.meta mode change 100644 => 100755 physics/GFS_debug.F90 mode change 100644 => 100755 physics/GFS_debug.meta mode change 100644 => 100755 physics/GFS_phys_time_vary.fv3.F90 mode change 100644 => 100755 physics/GFS_phys_time_vary.fv3.meta mode change 100644 => 100755 physics/GFS_phys_time_vary.scm.F90 mode change 100644 => 100755 physics/GFS_phys_time_vary.scm.meta mode change 100644 => 100755 physics/GFS_rad_time_vary.fv3.F90 mode change 100644 => 100755 physics/GFS_rad_time_vary.fv3.meta mode change 100644 => 100755 physics/GFS_rad_time_vary.scm.F90 mode change 100644 => 100755 physics/GFS_rad_time_vary.scm.meta mode change 100644 => 100755 physics/GFS_rrtmg_post.F90 mode change 100644 => 100755 physics/GFS_rrtmg_post.meta mode change 100644 => 100755 physics/GFS_rrtmg_pre.F90 mode change 100644 => 100755 physics/GFS_rrtmg_pre.meta mode change 100644 => 100755 physics/GFS_rrtmg_setup.F90 mode change 100644 => 100755 physics/GFS_rrtmg_setup.meta mode change 100644 => 100755 physics/GFS_stochastics.F90 mode change 100644 => 100755 physics/GFS_stochastics.meta mode change 100644 => 100755 physics/GFS_suite_init_finalize_test.F90 mode change 100644 => 100755 physics/GFS_suite_init_finalize_test.meta mode change 100644 => 100755 physics/GFS_suite_interstitial.F90 mode change 100644 => 100755 physics/GFS_suite_interstitial.meta mode change 100644 => 100755 physics/GFS_surface_composites.F90 mode change 100644 => 100755 physics/GFS_surface_composites.meta mode change 100644 => 100755 physics/GFS_surface_generic.F90 mode change 100644 => 100755 physics/GFS_surface_generic.meta mode change 100644 => 100755 physics/GFS_surface_loop_control.F90 mode change 100644 => 100755 physics/GFS_surface_loop_control.meta mode change 100644 => 100755 physics/GFS_time_vary_pre.fv3.F90 mode change 100644 => 100755 physics/GFS_time_vary_pre.fv3.meta mode change 100644 => 100755 physics/GFS_time_vary_pre.scm.F90 mode change 100644 => 100755 physics/GFS_time_vary_pre.scm.meta mode change 100644 => 100755 physics/aer_cloud.F mode change 100644 => 100755 physics/aerclm_def.F mode change 100644 => 100755 physics/aerinterp.F90 mode change 100644 => 100755 physics/calpreciptype.f90 mode change 100644 => 100755 physics/cires_orowam2017.f mode change 100644 => 100755 physics/cires_ugwp.F90 mode change 100644 => 100755 physics/cires_ugwp.meta mode change 100644 => 100755 physics/cires_ugwp_initialize.F90 mode change 100644 => 100755 physics/cires_ugwp_module.F90 mode change 100644 => 100755 physics/cires_ugwp_post.meta mode change 100644 => 100755 physics/cires_ugwp_solvers.F90 mode change 100644 => 100755 physics/cires_ugwp_triggers.F90 mode change 100644 => 100755 physics/cires_ugwp_utils.F90 mode change 100644 => 100755 physics/cires_vert_lsatdis.F90 mode change 100644 => 100755 physics/cires_vert_orodis.F90 mode change 100644 => 100755 physics/cires_vert_wmsdis.F90 mode change 100644 => 100755 physics/cldmacro.F mode change 100644 => 100755 physics/cldwat2m_micro.F mode change 100644 => 100755 physics/cnvc90.f mode change 100644 => 100755 physics/cnvc90.meta mode change 100644 => 100755 physics/cs_conv.F90 mode change 100644 => 100755 physics/cs_conv.meta mode change 100644 => 100755 physics/cs_conv_aw_adj.F90 mode change 100644 => 100755 physics/cs_conv_aw_adj.meta mode change 100644 => 100755 physics/cu_gf_deep.F90 mode change 100644 => 100755 physics/cu_gf_driver.F90 mode change 100644 => 100755 physics/cu_gf_driver.meta mode change 100644 => 100755 physics/cu_gf_driver_post.F90 mode change 100644 => 100755 physics/cu_gf_driver_post.meta mode change 100644 => 100755 physics/cu_gf_driver_pre.F90 mode change 100644 => 100755 physics/cu_gf_driver_pre.meta mode change 100644 => 100755 physics/cu_gf_sh.F90 mode change 100644 => 100755 physics/cu_ntiedtke.F90 mode change 100644 => 100755 physics/cu_ntiedtke.meta mode change 100644 => 100755 physics/cu_ntiedtke_post.F90 mode change 100644 => 100755 physics/cu_ntiedtke_post.meta mode change 100644 => 100755 physics/cu_ntiedtke_pre.F90 mode change 100644 => 100755 physics/cu_ntiedtke_pre.meta mode change 100644 => 100755 physics/date_def.f mode change 100644 => 100755 physics/dcyc2.f mode change 100644 => 100755 physics/dcyc2.meta mode change 100644 => 100755 physics/docs/ccpp_dox mode change 100644 => 100755 physics/docs/ccpp_dox_extra_style.css mode change 100644 => 100755 physics/docs/ccpp_dox_layout.xml mode change 100644 => 100755 physics/docs/ccpp_doxyfile mode change 100644 => 100755 physics/docs/ccpplatex_dox mode change 100644 => 100755 physics/docs/ccppv3_doxyfile mode change 100644 => 100755 physics/docs/ccppv3_fv3_doxyfile mode change 100644 => 100755 physics/docs/img/FV3_structure.png mode change 100644 => 100755 physics/docs/img/GFS_gwdc.png mode change 100644 => 100755 physics/docs/img/GFS_sice_wonton2000_fig1.png mode change 100644 => 100755 physics/docs/img/GFS_stochy_spread.png mode change 100644 => 100755 physics/docs/img/GFS_zhaocarr_schematic.png mode change 100644 => 100755 physics/docs/img/GSD_thompson.png mode change 100644 => 100755 physics/docs/img/MG3_MP_diagram.png mode change 100644 => 100755 physics/docs/img/MYNN-EDMF_call_order.png mode change 100644 => 100755 physics/docs/img/NSST.png mode change 100644 => 100755 physics/docs/img/NSST_schematic.png mode change 100644 => 100755 physics/docs/img/Noah_LA_interaction.png mode change 100644 => 100755 physics/docs/img/dtc_logo.png mode change 100644 => 100755 physics/docs/img/gfdl_cloud_mp_diagram.png mode change 100644 => 100755 physics/docs/img/land_dataset.png mode change 100644 => 100755 physics/docs/img/precpd-micop.png mode change 100644 => 100755 physics/docs/img/rad_gas_AGGI.png mode change 100644 => 100755 physics/docs/img/roughness_length_fig1.png mode change 100644 => 100755 physics/docs/img/roughness_length_fig2.png mode change 100644 => 100755 physics/docs/img/ruc_lsm_frozen_precip.png mode change 100644 => 100755 physics/docs/img/ruc_lsm_heterogeneity.png mode change 100644 => 100755 physics/docs/img/ruc_lsm_mosaic.png mode change 100644 => 100755 physics/docs/img/ruc_lsm_veg_soil.png mode change 100644 => 100755 physics/docs/img/schematic_Rad_mod.png mode change 100644 => 100755 physics/docs/img/schematic_sice.png mode change 100644 => 100755 physics/docs/library.bib mode change 100644 => 100755 physics/docs/pdftxt/CPT_CSAW.txt mode change 100644 => 100755 physics/docs/pdftxt/CPT_MG3.txt mode change 100644 => 100755 physics/docs/pdftxt/CPT_adv_suite.txt mode change 100644 => 100755 physics/docs/pdftxt/GFDL_cloud.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_CALPRECIPTYPE.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_GWDC.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_GWDPS.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_H2OPHYS.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_HEDMF.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_NOAH.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_NSST.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_OZPHYS.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_RAYLEIGH.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_RRTMG.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_SAMF.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_SAMFdeep.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_SAMFshal.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_SATMEDMF.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_SFCLYR.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_SFCSICE.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_STOCHY_PHYS.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_STOCHY_PHYS.txt.save mode change 100644 => 100755 physics/docs/pdftxt/GFS_SURFACE_PERT.txt mode change 100644 => 100755 physics/docs/pdftxt/GFS_ZHAOC.txt mode change 100644 => 100755 physics/docs/pdftxt/GFSphys_namelist.txt mode change 100644 => 100755 physics/docs/pdftxt/GFSv14_suite.txt mode change 100644 => 100755 physics/docs/pdftxt/GFSv15_suite.txt mode change 100644 => 100755 physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt mode change 100644 => 100755 physics/docs/pdftxt/GSD_CU_GF_deep.txt mode change 100644 => 100755 physics/docs/pdftxt/GSD_MYNN_EDMF.txt mode change 100644 => 100755 physics/docs/pdftxt/GSD_RUCLSM.txt mode change 100644 => 100755 physics/docs/pdftxt/GSD_THOMPSON.txt mode change 100644 => 100755 physics/docs/pdftxt/GSD_adv_suite.txt mode change 100644 => 100755 physics/docs/pdftxt/MG_double.txt mode change 100644 => 100755 physics/docs/pdftxt/all_shemes_list.txt mode change 100644 => 100755 physics/docs/pdftxt/all_shemes_list.txt.FV3 mode change 100644 => 100755 physics/docs/pdftxt/code_overview.txt mode change 100644 => 100755 physics/docs/pdftxt/code_overview.txt.Aug17 mode change 100644 => 100755 physics/docs/pdftxt/mainpage.txt mode change 100644 => 100755 physics/docs/pdftxt/mainpage.txt.Aug17 mode change 100644 => 100755 physics/docs/pdftxt/rad_cld.txt mode change 100644 => 100755 physics/docs/pdftxt/suite_input.nml.txt mode change 100644 => 100755 physics/drag_suite.F90 mode change 100644 => 100755 physics/drag_suite.meta mode change 100644 => 100755 physics/funcphys.f90 mode change 100644 => 100755 physics/gcm_shoc.F90 mode change 100644 => 100755 physics/gcm_shoc.meta mode change 100644 => 100755 physics/gcycle.F90 mode change 100644 => 100755 physics/get_prs_fv3.F90 mode change 100644 => 100755 physics/get_prs_fv3.meta mode change 100644 => 100755 physics/gfdl_cloud_microphys.F90 mode change 100644 => 100755 physics/gfdl_cloud_microphys.meta mode change 100644 => 100755 physics/gfdl_fv_sat_adj.F90 mode change 100644 => 100755 physics/gfdl_fv_sat_adj.meta mode change 100644 => 100755 physics/gfs_phy_tracer_config.F mode change 100644 => 100755 physics/gmtb_scm_sfc_flux_spec.F90 mode change 100644 => 100755 physics/gmtb_scm_sfc_flux_spec.meta mode change 100644 => 100755 physics/gocart_tracer_config_stub.f mode change 100644 => 100755 physics/gscond.f mode change 100644 => 100755 physics/gscond.meta mode change 100644 => 100755 physics/gwdc.f mode change 100644 => 100755 physics/gwdc.meta mode change 100644 => 100755 physics/gwdps.f mode change 100644 => 100755 physics/gwdps.meta mode change 100644 => 100755 physics/h2o_def.f mode change 100644 => 100755 physics/h2ointerp.f90 mode change 100644 => 100755 physics/h2ophys.f mode change 100644 => 100755 physics/h2ophys.meta mode change 100644 => 100755 physics/iccn_def.F mode change 100644 => 100755 physics/iccninterp.F90 mode change 100644 => 100755 physics/iounitdef.f mode change 100644 => 100755 physics/lsm_ruc_sfc_sice_interstitial.F90 mode change 100644 => 100755 physics/lsm_ruc_sfc_sice_interstitial.meta mode change 100644 => 100755 physics/m_micro.F90 mode change 100644 => 100755 physics/m_micro.meta mode change 100644 => 100755 physics/m_micro_interstitial.F90 mode change 100644 => 100755 physics/m_micro_interstitial.meta mode change 100644 => 100755 physics/machine.F mode change 100644 => 100755 physics/machine.meta mode change 100644 => 100755 physics/maximum_hourly_diagnostics.F90 mode change 100644 => 100755 physics/maximum_hourly_diagnostics.meta mode change 100644 => 100755 physics/mersenne_twister.f mode change 100644 => 100755 physics/mfpbl.f mode change 100644 => 100755 physics/mfpblt.f mode change 100644 => 100755 physics/mfscu.f mode change 100644 => 100755 physics/micro_mg2_0.F90 mode change 100644 => 100755 physics/micro_mg3_0.F90 mode change 100644 => 100755 physics/micro_mg_utils.F90 mode change 100644 => 100755 physics/module_MYJPBL_wrapper.F90 mode change 100644 => 100755 physics/module_MYJPBL_wrapper.meta mode change 100644 => 100755 physics/module_MYJSFC_wrapper.F90 mode change 100644 => 100755 physics/module_MYJSFC_wrapper.meta mode change 100644 => 100755 physics/module_MYNNPBL_wrapper.F90 mode change 100644 => 100755 physics/module_MYNNPBL_wrapper.meta mode change 100644 => 100755 physics/module_MYNNSFC_wrapper.F90 mode change 100644 => 100755 physics/module_MYNNSFC_wrapper.meta mode change 100644 => 100755 physics/module_MYNNrad_post.F90 mode change 100644 => 100755 physics/module_MYNNrad_post.meta mode change 100644 => 100755 physics/module_MYNNrad_pre.F90 mode change 100644 => 100755 physics/module_MYNNrad_pre.meta mode change 100644 => 100755 physics/module_bfmicrophysics.f mode change 100644 => 100755 physics/module_bl_mynn.F90 mode change 100644 => 100755 physics/module_gfdl_cloud_microphys.F90 mode change 100644 => 100755 physics/module_mp_radar.F90 mode change 100644 => 100755 physics/module_mp_thompson.F90 mode change 100644 => 100755 physics/module_mp_thompson_make_number_concentrations.F90 mode change 100644 => 100755 physics/module_nst_model.f90 mode change 100644 => 100755 physics/module_nst_parameters.f90 mode change 100644 => 100755 physics/module_nst_water_prop.f90 mode change 100644 => 100755 physics/module_sf_mynn.F90 mode change 100644 => 100755 physics/module_sf_ruclsm.F90 mode change 100644 => 100755 physics/module_soil_pre.F90 mode change 100644 => 100755 physics/moninedmf.f mode change 100644 => 100755 physics/moninedmf.meta mode change 100644 => 100755 physics/moninshoc.f mode change 100644 => 100755 physics/moninshoc.meta mode change 100644 => 100755 physics/mp_thompson.F90 mode change 100644 => 100755 physics/mp_thompson.meta mode change 100644 => 100755 physics/mp_thompson_post.F90 mode change 100644 => 100755 physics/mp_thompson_post.meta mode change 100644 => 100755 physics/mp_thompson_pre.F90 mode change 100644 => 100755 physics/mp_thompson_pre.meta mode change 100644 => 100755 physics/multi_gases.F90 mode change 100644 => 100755 physics/namelist_soilveg.f mode change 100644 => 100755 physics/namelist_soilveg_ruc.F90 mode change 100644 => 100755 physics/num_parthds.F mode change 100644 => 100755 physics/ozinterp.f90 mode change 100644 => 100755 physics/ozne_def.f mode change 100644 => 100755 physics/ozphys.f mode change 100644 => 100755 physics/ozphys.meta mode change 100644 => 100755 physics/ozphys_2015.f mode change 100644 => 100755 physics/ozphys_2015.meta mode change 100644 => 100755 physics/physcons.F90 mode change 100644 => 100755 physics/physparam.f mode change 100644 => 100755 physics/precpd.f mode change 100644 => 100755 physics/precpd.meta mode change 100644 => 100755 physics/radcons.f90 mode change 100644 => 100755 physics/radiation_aerosols.f mode change 100644 => 100755 physics/radiation_astronomy.f mode change 100644 => 100755 physics/radiation_clouds.f mode change 100644 => 100755 physics/radiation_gases.f mode change 100644 => 100755 physics/radiation_surface.f mode change 100644 => 100755 physics/radlw_datatb.f mode change 100644 => 100755 physics/radlw_main.f mode change 100644 => 100755 physics/radlw_main.meta mode change 100644 => 100755 physics/radlw_param.f mode change 100644 => 100755 physics/radlw_param.meta mode change 100644 => 100755 physics/radsw_datatb.f mode change 100644 => 100755 physics/radsw_main.f mode change 100644 => 100755 physics/radsw_main.meta mode change 100644 => 100755 physics/radsw_param.f mode change 100644 => 100755 physics/radsw_param.meta mode change 100644 => 100755 physics/rayleigh_damp.f mode change 100644 => 100755 physics/rayleigh_damp.meta mode change 100644 => 100755 physics/rrtmg_lw_post.F90 mode change 100644 => 100755 physics/rrtmg_lw_post.meta mode change 100644 => 100755 physics/rrtmg_lw_pre.F90 mode change 100644 => 100755 physics/rrtmg_lw_pre.meta mode change 100644 => 100755 physics/rrtmg_sw_post.F90 mode change 100644 => 100755 physics/rrtmg_sw_post.meta mode change 100644 => 100755 physics/rrtmg_sw_pre.F90 mode change 100644 => 100755 physics/rrtmg_sw_pre.meta mode change 100644 => 100755 physics/samfaerosols.F mode change 100644 => 100755 physics/samfdeepcnv.f mode change 100644 => 100755 physics/samfdeepcnv.meta mode change 100644 => 100755 physics/samfshalcnv.f mode change 100644 => 100755 physics/samfshalcnv.meta mode change 100644 => 100755 physics/satmedmfvdif.F mode change 100644 => 100755 physics/satmedmfvdif.meta mode change 100644 => 100755 physics/set_soilveg.f mode change 100644 => 100755 physics/set_soilveg_ruc.F90 mode change 100644 => 100755 physics/sfc_cice.f mode change 100644 => 100755 physics/sfc_cice.meta mode change 100644 => 100755 physics/sfc_diag.f mode change 100644 => 100755 physics/sfc_diag.meta mode change 100644 => 100755 physics/sfc_diag_post.F90 mode change 100644 => 100755 physics/sfc_diag_post.meta mode change 100644 => 100755 physics/sfc_diff.f mode change 100644 => 100755 physics/sfc_diff.meta mode change 100644 => 100755 physics/sfc_drv.f mode change 100644 => 100755 physics/sfc_drv.meta mode change 100644 => 100755 physics/sfc_drv_ruc.F90 mode change 100644 => 100755 physics/sfc_drv_ruc.meta mode change 100644 => 100755 physics/sfc_noahmp_drv.meta mode change 100644 => 100755 physics/sfc_noahmp_pre.meta mode change 100644 => 100755 physics/sfc_nst.f mode change 100644 => 100755 physics/sfc_nst.meta mode change 100644 => 100755 physics/sfc_ocean.F mode change 100644 => 100755 physics/sfc_ocean.meta mode change 100644 => 100755 physics/sfc_sice.f mode change 100644 => 100755 physics/sfc_sice.meta mode change 100644 => 100755 physics/sfcsub.F mode change 100644 => 100755 physics/sflx.f mode change 100644 => 100755 physics/shinhongvdif.F90 mode change 100644 => 100755 physics/shinhongvdif.meta mode change 100644 => 100755 physics/surface_perturbation.F90 mode change 100644 => 100755 physics/tridi.f mode change 100644 => 100755 physics/ugwp_driver_v0.F mode change 100644 => 100755 physics/wv_saturation.F mode change 100644 => 100755 physics/ysuvdif.F90 mode change 100644 => 100755 physics/ysuvdif.meta diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/CODEOWNERS b/CODEOWNERS old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/physics/GFDL_parse_tracers.F90 b/physics/GFDL_parse_tracers.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_DCNV_generic.F90 b/physics/GFS_DCNV_generic.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_DCNV_generic.meta b/physics/GFS_DCNV_generic.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_GWD_generic.F90 b/physics/GFS_GWD_generic.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_GWD_generic.meta b/physics/GFS_GWD_generic.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_MP_generic.F90 b/physics/GFS_MP_generic.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_MP_generic.meta b/physics/GFS_MP_generic.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_PBL_generic.F90 b/physics/GFS_PBL_generic.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_PBL_generic.meta b/physics/GFS_PBL_generic.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_SCNV_generic.F90 b/physics/GFS_SCNV_generic.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_SCNV_generic.meta b/physics/GFS_SCNV_generic.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_debug.F90 b/physics/GFS_debug.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_debug.meta b/physics/GFS_debug.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_phys_time_vary.fv3.F90 b/physics/GFS_phys_time_vary.fv3.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_phys_time_vary.fv3.meta b/physics/GFS_phys_time_vary.fv3.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_phys_time_vary.scm.F90 b/physics/GFS_phys_time_vary.scm.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_phys_time_vary.scm.meta b/physics/GFS_phys_time_vary.scm.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_rad_time_vary.fv3.F90 b/physics/GFS_rad_time_vary.fv3.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_rad_time_vary.fv3.meta b/physics/GFS_rad_time_vary.fv3.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_rad_time_vary.scm.F90 b/physics/GFS_rad_time_vary.scm.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_rad_time_vary.scm.meta b/physics/GFS_rad_time_vary.scm.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_rrtmg_post.F90 b/physics/GFS_rrtmg_post.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_rrtmg_post.meta b/physics/GFS_rrtmg_post.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_rrtmg_pre.F90 b/physics/GFS_rrtmg_pre.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_rrtmg_pre.meta b/physics/GFS_rrtmg_pre.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_rrtmg_setup.F90 b/physics/GFS_rrtmg_setup.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_rrtmg_setup.meta b/physics/GFS_rrtmg_setup.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_stochastics.F90 b/physics/GFS_stochastics.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_stochastics.meta b/physics/GFS_stochastics.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_suite_init_finalize_test.F90 b/physics/GFS_suite_init_finalize_test.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_suite_init_finalize_test.meta b/physics/GFS_suite_init_finalize_test.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_suite_interstitial.F90 b/physics/GFS_suite_interstitial.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_suite_interstitial.meta b/physics/GFS_suite_interstitial.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_surface_composites.F90 b/physics/GFS_surface_composites.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_surface_composites.meta b/physics/GFS_surface_composites.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_surface_generic.F90 b/physics/GFS_surface_generic.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_surface_generic.meta b/physics/GFS_surface_generic.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_surface_loop_control.F90 b/physics/GFS_surface_loop_control.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_surface_loop_control.meta b/physics/GFS_surface_loop_control.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_time_vary_pre.fv3.F90 b/physics/GFS_time_vary_pre.fv3.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_time_vary_pre.fv3.meta b/physics/GFS_time_vary_pre.fv3.meta old mode 100644 new mode 100755 diff --git a/physics/GFS_time_vary_pre.scm.F90 b/physics/GFS_time_vary_pre.scm.F90 old mode 100644 new mode 100755 diff --git a/physics/GFS_time_vary_pre.scm.meta b/physics/GFS_time_vary_pre.scm.meta old mode 100644 new mode 100755 diff --git a/physics/aer_cloud.F b/physics/aer_cloud.F old mode 100644 new mode 100755 diff --git a/physics/aerclm_def.F b/physics/aerclm_def.F old mode 100644 new mode 100755 diff --git a/physics/aerinterp.F90 b/physics/aerinterp.F90 old mode 100644 new mode 100755 diff --git a/physics/calpreciptype.f90 b/physics/calpreciptype.f90 old mode 100644 new mode 100755 diff --git a/physics/cires_orowam2017.f b/physics/cires_orowam2017.f old mode 100644 new mode 100755 diff --git a/physics/cires_ugwp.F90 b/physics/cires_ugwp.F90 old mode 100644 new mode 100755 diff --git a/physics/cires_ugwp.meta b/physics/cires_ugwp.meta old mode 100644 new mode 100755 diff --git a/physics/cires_ugwp_initialize.F90 b/physics/cires_ugwp_initialize.F90 old mode 100644 new mode 100755 diff --git a/physics/cires_ugwp_module.F90 b/physics/cires_ugwp_module.F90 old mode 100644 new mode 100755 diff --git a/physics/cires_ugwp_post.meta b/physics/cires_ugwp_post.meta old mode 100644 new mode 100755 diff --git a/physics/cires_ugwp_solvers.F90 b/physics/cires_ugwp_solvers.F90 old mode 100644 new mode 100755 diff --git a/physics/cires_ugwp_triggers.F90 b/physics/cires_ugwp_triggers.F90 old mode 100644 new mode 100755 diff --git a/physics/cires_ugwp_utils.F90 b/physics/cires_ugwp_utils.F90 old mode 100644 new mode 100755 diff --git a/physics/cires_vert_lsatdis.F90 b/physics/cires_vert_lsatdis.F90 old mode 100644 new mode 100755 diff --git a/physics/cires_vert_orodis.F90 b/physics/cires_vert_orodis.F90 old mode 100644 new mode 100755 diff --git a/physics/cires_vert_wmsdis.F90 b/physics/cires_vert_wmsdis.F90 old mode 100644 new mode 100755 diff --git a/physics/cldmacro.F b/physics/cldmacro.F old mode 100644 new mode 100755 diff --git a/physics/cldwat2m_micro.F b/physics/cldwat2m_micro.F old mode 100644 new mode 100755 diff --git a/physics/cnvc90.f b/physics/cnvc90.f old mode 100644 new mode 100755 diff --git a/physics/cnvc90.meta b/physics/cnvc90.meta old mode 100644 new mode 100755 diff --git a/physics/cs_conv.F90 b/physics/cs_conv.F90 old mode 100644 new mode 100755 diff --git a/physics/cs_conv.meta b/physics/cs_conv.meta old mode 100644 new mode 100755 diff --git a/physics/cs_conv_aw_adj.F90 b/physics/cs_conv_aw_adj.F90 old mode 100644 new mode 100755 diff --git a/physics/cs_conv_aw_adj.meta b/physics/cs_conv_aw_adj.meta old mode 100644 new mode 100755 diff --git a/physics/cu_gf_deep.F90 b/physics/cu_gf_deep.F90 old mode 100644 new mode 100755 diff --git a/physics/cu_gf_driver.F90 b/physics/cu_gf_driver.F90 old mode 100644 new mode 100755 diff --git a/physics/cu_gf_driver.meta b/physics/cu_gf_driver.meta old mode 100644 new mode 100755 diff --git a/physics/cu_gf_driver_post.F90 b/physics/cu_gf_driver_post.F90 old mode 100644 new mode 100755 diff --git a/physics/cu_gf_driver_post.meta b/physics/cu_gf_driver_post.meta old mode 100644 new mode 100755 diff --git a/physics/cu_gf_driver_pre.F90 b/physics/cu_gf_driver_pre.F90 old mode 100644 new mode 100755 diff --git a/physics/cu_gf_driver_pre.meta b/physics/cu_gf_driver_pre.meta old mode 100644 new mode 100755 diff --git a/physics/cu_gf_sh.F90 b/physics/cu_gf_sh.F90 old mode 100644 new mode 100755 diff --git a/physics/cu_ntiedtke.F90 b/physics/cu_ntiedtke.F90 old mode 100644 new mode 100755 diff --git a/physics/cu_ntiedtke.meta b/physics/cu_ntiedtke.meta old mode 100644 new mode 100755 diff --git a/physics/cu_ntiedtke_post.F90 b/physics/cu_ntiedtke_post.F90 old mode 100644 new mode 100755 diff --git a/physics/cu_ntiedtke_post.meta b/physics/cu_ntiedtke_post.meta old mode 100644 new mode 100755 diff --git a/physics/cu_ntiedtke_pre.F90 b/physics/cu_ntiedtke_pre.F90 old mode 100644 new mode 100755 diff --git a/physics/cu_ntiedtke_pre.meta b/physics/cu_ntiedtke_pre.meta old mode 100644 new mode 100755 diff --git a/physics/date_def.f b/physics/date_def.f old mode 100644 new mode 100755 diff --git a/physics/dcyc2.f b/physics/dcyc2.f old mode 100644 new mode 100755 diff --git a/physics/dcyc2.meta b/physics/dcyc2.meta old mode 100644 new mode 100755 diff --git a/physics/docs/ccpp_dox b/physics/docs/ccpp_dox old mode 100644 new mode 100755 diff --git a/physics/docs/ccpp_dox_extra_style.css b/physics/docs/ccpp_dox_extra_style.css old mode 100644 new mode 100755 diff --git a/physics/docs/ccpp_dox_layout.xml b/physics/docs/ccpp_dox_layout.xml old mode 100644 new mode 100755 diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile old mode 100644 new mode 100755 diff --git a/physics/docs/ccpplatex_dox b/physics/docs/ccpplatex_dox old mode 100644 new mode 100755 diff --git a/physics/docs/ccppv3_doxyfile b/physics/docs/ccppv3_doxyfile old mode 100644 new mode 100755 diff --git a/physics/docs/ccppv3_fv3_doxyfile b/physics/docs/ccppv3_fv3_doxyfile old mode 100644 new mode 100755 diff --git a/physics/docs/img/FV3_structure.png b/physics/docs/img/FV3_structure.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/GFS_gwdc.png b/physics/docs/img/GFS_gwdc.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/GFS_sice_wonton2000_fig1.png b/physics/docs/img/GFS_sice_wonton2000_fig1.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/GFS_stochy_spread.png b/physics/docs/img/GFS_stochy_spread.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/GFS_zhaocarr_schematic.png b/physics/docs/img/GFS_zhaocarr_schematic.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/GSD_thompson.png b/physics/docs/img/GSD_thompson.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/MG3_MP_diagram.png b/physics/docs/img/MG3_MP_diagram.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/MYNN-EDMF_call_order.png b/physics/docs/img/MYNN-EDMF_call_order.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/NSST.png b/physics/docs/img/NSST.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/NSST_schematic.png b/physics/docs/img/NSST_schematic.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/Noah_LA_interaction.png b/physics/docs/img/Noah_LA_interaction.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/dtc_logo.png b/physics/docs/img/dtc_logo.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/gfdl_cloud_mp_diagram.png b/physics/docs/img/gfdl_cloud_mp_diagram.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/land_dataset.png b/physics/docs/img/land_dataset.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/precpd-micop.png b/physics/docs/img/precpd-micop.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/rad_gas_AGGI.png b/physics/docs/img/rad_gas_AGGI.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/roughness_length_fig1.png b/physics/docs/img/roughness_length_fig1.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/roughness_length_fig2.png b/physics/docs/img/roughness_length_fig2.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/ruc_lsm_frozen_precip.png b/physics/docs/img/ruc_lsm_frozen_precip.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/ruc_lsm_heterogeneity.png b/physics/docs/img/ruc_lsm_heterogeneity.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/ruc_lsm_mosaic.png b/physics/docs/img/ruc_lsm_mosaic.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/ruc_lsm_veg_soil.png b/physics/docs/img/ruc_lsm_veg_soil.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/schematic_Rad_mod.png b/physics/docs/img/schematic_Rad_mod.png old mode 100644 new mode 100755 diff --git a/physics/docs/img/schematic_sice.png b/physics/docs/img/schematic_sice.png old mode 100644 new mode 100755 diff --git a/physics/docs/library.bib b/physics/docs/library.bib old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/CPT_CSAW.txt b/physics/docs/pdftxt/CPT_CSAW.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/CPT_MG3.txt b/physics/docs/pdftxt/CPT_MG3.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/CPT_adv_suite.txt b/physics/docs/pdftxt/CPT_adv_suite.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFDL_cloud.txt b/physics/docs/pdftxt/GFDL_cloud.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_CALPRECIPTYPE.txt b/physics/docs/pdftxt/GFS_CALPRECIPTYPE.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_GWDC.txt b/physics/docs/pdftxt/GFS_GWDC.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_GWDPS.txt b/physics/docs/pdftxt/GFS_GWDPS.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_H2OPHYS.txt b/physics/docs/pdftxt/GFS_H2OPHYS.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_HEDMF.txt b/physics/docs/pdftxt/GFS_HEDMF.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_NOAH.txt b/physics/docs/pdftxt/GFS_NOAH.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_NSST.txt b/physics/docs/pdftxt/GFS_NSST.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_OZPHYS.txt b/physics/docs/pdftxt/GFS_OZPHYS.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_RAYLEIGH.txt b/physics/docs/pdftxt/GFS_RAYLEIGH.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_RRTMG.txt b/physics/docs/pdftxt/GFS_RRTMG.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_SAMF.txt b/physics/docs/pdftxt/GFS_SAMF.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_SAMFdeep.txt b/physics/docs/pdftxt/GFS_SAMFdeep.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_SAMFshal.txt b/physics/docs/pdftxt/GFS_SAMFshal.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_SATMEDMF.txt b/physics/docs/pdftxt/GFS_SATMEDMF.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_SFCLYR.txt b/physics/docs/pdftxt/GFS_SFCLYR.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_SFCSICE.txt b/physics/docs/pdftxt/GFS_SFCSICE.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_STOCHY_PHYS.txt b/physics/docs/pdftxt/GFS_STOCHY_PHYS.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_STOCHY_PHYS.txt.save b/physics/docs/pdftxt/GFS_STOCHY_PHYS.txt.save old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_SURFACE_PERT.txt b/physics/docs/pdftxt/GFS_SURFACE_PERT.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFS_ZHAOC.txt b/physics/docs/pdftxt/GFS_ZHAOC.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFSphys_namelist.txt b/physics/docs/pdftxt/GFSphys_namelist.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFSv14_suite.txt b/physics/docs/pdftxt/GFSv14_suite.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFSv15_suite.txt b/physics/docs/pdftxt/GFSv15_suite.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt b/physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GSD_CU_GF_deep.txt b/physics/docs/pdftxt/GSD_CU_GF_deep.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GSD_MYNN_EDMF.txt b/physics/docs/pdftxt/GSD_MYNN_EDMF.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GSD_RUCLSM.txt b/physics/docs/pdftxt/GSD_RUCLSM.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GSD_THOMPSON.txt b/physics/docs/pdftxt/GSD_THOMPSON.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/GSD_adv_suite.txt b/physics/docs/pdftxt/GSD_adv_suite.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/MG_double.txt b/physics/docs/pdftxt/MG_double.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/all_shemes_list.txt b/physics/docs/pdftxt/all_shemes_list.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/all_shemes_list.txt.FV3 b/physics/docs/pdftxt/all_shemes_list.txt.FV3 old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/code_overview.txt b/physics/docs/pdftxt/code_overview.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/code_overview.txt.Aug17 b/physics/docs/pdftxt/code_overview.txt.Aug17 old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/mainpage.txt.Aug17 b/physics/docs/pdftxt/mainpage.txt.Aug17 old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/rad_cld.txt b/physics/docs/pdftxt/rad_cld.txt old mode 100644 new mode 100755 diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt old mode 100644 new mode 100755 diff --git a/physics/drag_suite.F90 b/physics/drag_suite.F90 old mode 100644 new mode 100755 diff --git a/physics/drag_suite.meta b/physics/drag_suite.meta old mode 100644 new mode 100755 diff --git a/physics/funcphys.f90 b/physics/funcphys.f90 old mode 100644 new mode 100755 diff --git a/physics/gcm_shoc.F90 b/physics/gcm_shoc.F90 old mode 100644 new mode 100755 diff --git a/physics/gcm_shoc.meta b/physics/gcm_shoc.meta old mode 100644 new mode 100755 diff --git a/physics/gcycle.F90 b/physics/gcycle.F90 old mode 100644 new mode 100755 diff --git a/physics/get_prs_fv3.F90 b/physics/get_prs_fv3.F90 old mode 100644 new mode 100755 diff --git a/physics/get_prs_fv3.meta b/physics/get_prs_fv3.meta old mode 100644 new mode 100755 diff --git a/physics/gfdl_cloud_microphys.F90 b/physics/gfdl_cloud_microphys.F90 old mode 100644 new mode 100755 diff --git a/physics/gfdl_cloud_microphys.meta b/physics/gfdl_cloud_microphys.meta old mode 100644 new mode 100755 diff --git a/physics/gfdl_fv_sat_adj.F90 b/physics/gfdl_fv_sat_adj.F90 old mode 100644 new mode 100755 diff --git a/physics/gfdl_fv_sat_adj.meta b/physics/gfdl_fv_sat_adj.meta old mode 100644 new mode 100755 diff --git a/physics/gfs_phy_tracer_config.F b/physics/gfs_phy_tracer_config.F old mode 100644 new mode 100755 diff --git a/physics/gmtb_scm_sfc_flux_spec.F90 b/physics/gmtb_scm_sfc_flux_spec.F90 old mode 100644 new mode 100755 diff --git a/physics/gmtb_scm_sfc_flux_spec.meta b/physics/gmtb_scm_sfc_flux_spec.meta old mode 100644 new mode 100755 diff --git a/physics/gocart_tracer_config_stub.f b/physics/gocart_tracer_config_stub.f old mode 100644 new mode 100755 diff --git a/physics/gscond.f b/physics/gscond.f old mode 100644 new mode 100755 diff --git a/physics/gscond.meta b/physics/gscond.meta old mode 100644 new mode 100755 diff --git a/physics/gwdc.f b/physics/gwdc.f old mode 100644 new mode 100755 diff --git a/physics/gwdc.meta b/physics/gwdc.meta old mode 100644 new mode 100755 diff --git a/physics/gwdps.f b/physics/gwdps.f old mode 100644 new mode 100755 diff --git a/physics/gwdps.meta b/physics/gwdps.meta old mode 100644 new mode 100755 diff --git a/physics/h2o_def.f b/physics/h2o_def.f old mode 100644 new mode 100755 diff --git a/physics/h2ointerp.f90 b/physics/h2ointerp.f90 old mode 100644 new mode 100755 diff --git a/physics/h2ophys.f b/physics/h2ophys.f old mode 100644 new mode 100755 diff --git a/physics/h2ophys.meta b/physics/h2ophys.meta old mode 100644 new mode 100755 diff --git a/physics/iccn_def.F b/physics/iccn_def.F old mode 100644 new mode 100755 diff --git a/physics/iccninterp.F90 b/physics/iccninterp.F90 old mode 100644 new mode 100755 diff --git a/physics/iounitdef.f b/physics/iounitdef.f old mode 100644 new mode 100755 diff --git a/physics/lsm_ruc_sfc_sice_interstitial.F90 b/physics/lsm_ruc_sfc_sice_interstitial.F90 old mode 100644 new mode 100755 diff --git a/physics/lsm_ruc_sfc_sice_interstitial.meta b/physics/lsm_ruc_sfc_sice_interstitial.meta old mode 100644 new mode 100755 diff --git a/physics/m_micro.F90 b/physics/m_micro.F90 old mode 100644 new mode 100755 diff --git a/physics/m_micro.meta b/physics/m_micro.meta old mode 100644 new mode 100755 diff --git a/physics/m_micro_interstitial.F90 b/physics/m_micro_interstitial.F90 old mode 100644 new mode 100755 diff --git a/physics/m_micro_interstitial.meta b/physics/m_micro_interstitial.meta old mode 100644 new mode 100755 diff --git a/physics/machine.F b/physics/machine.F old mode 100644 new mode 100755 diff --git a/physics/machine.meta b/physics/machine.meta old mode 100644 new mode 100755 diff --git a/physics/maximum_hourly_diagnostics.F90 b/physics/maximum_hourly_diagnostics.F90 old mode 100644 new mode 100755 diff --git a/physics/maximum_hourly_diagnostics.meta b/physics/maximum_hourly_diagnostics.meta old mode 100644 new mode 100755 diff --git a/physics/mersenne_twister.f b/physics/mersenne_twister.f old mode 100644 new mode 100755 diff --git a/physics/mfpbl.f b/physics/mfpbl.f old mode 100644 new mode 100755 diff --git a/physics/mfpblt.f b/physics/mfpblt.f old mode 100644 new mode 100755 diff --git a/physics/mfscu.f b/physics/mfscu.f old mode 100644 new mode 100755 diff --git a/physics/micro_mg2_0.F90 b/physics/micro_mg2_0.F90 old mode 100644 new mode 100755 diff --git a/physics/micro_mg3_0.F90 b/physics/micro_mg3_0.F90 old mode 100644 new mode 100755 diff --git a/physics/micro_mg_utils.F90 b/physics/micro_mg_utils.F90 old mode 100644 new mode 100755 diff --git a/physics/module_MYJPBL_wrapper.F90 b/physics/module_MYJPBL_wrapper.F90 old mode 100644 new mode 100755 diff --git a/physics/module_MYJPBL_wrapper.meta b/physics/module_MYJPBL_wrapper.meta old mode 100644 new mode 100755 diff --git a/physics/module_MYJSFC_wrapper.F90 b/physics/module_MYJSFC_wrapper.F90 old mode 100644 new mode 100755 diff --git a/physics/module_MYJSFC_wrapper.meta b/physics/module_MYJSFC_wrapper.meta old mode 100644 new mode 100755 diff --git a/physics/module_MYNNPBL_wrapper.F90 b/physics/module_MYNNPBL_wrapper.F90 old mode 100644 new mode 100755 diff --git a/physics/module_MYNNPBL_wrapper.meta b/physics/module_MYNNPBL_wrapper.meta old mode 100644 new mode 100755 diff --git a/physics/module_MYNNSFC_wrapper.F90 b/physics/module_MYNNSFC_wrapper.F90 old mode 100644 new mode 100755 diff --git a/physics/module_MYNNSFC_wrapper.meta b/physics/module_MYNNSFC_wrapper.meta old mode 100644 new mode 100755 diff --git a/physics/module_MYNNrad_post.F90 b/physics/module_MYNNrad_post.F90 old mode 100644 new mode 100755 diff --git a/physics/module_MYNNrad_post.meta b/physics/module_MYNNrad_post.meta old mode 100644 new mode 100755 diff --git a/physics/module_MYNNrad_pre.F90 b/physics/module_MYNNrad_pre.F90 old mode 100644 new mode 100755 diff --git a/physics/module_MYNNrad_pre.meta b/physics/module_MYNNrad_pre.meta old mode 100644 new mode 100755 diff --git a/physics/module_bfmicrophysics.f b/physics/module_bfmicrophysics.f old mode 100644 new mode 100755 diff --git a/physics/module_bl_mynn.F90 b/physics/module_bl_mynn.F90 old mode 100644 new mode 100755 diff --git a/physics/module_gfdl_cloud_microphys.F90 b/physics/module_gfdl_cloud_microphys.F90 old mode 100644 new mode 100755 diff --git a/physics/module_mp_radar.F90 b/physics/module_mp_radar.F90 old mode 100644 new mode 100755 diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 old mode 100644 new mode 100755 diff --git a/physics/module_mp_thompson_make_number_concentrations.F90 b/physics/module_mp_thompson_make_number_concentrations.F90 old mode 100644 new mode 100755 diff --git a/physics/module_nst_model.f90 b/physics/module_nst_model.f90 old mode 100644 new mode 100755 diff --git a/physics/module_nst_parameters.f90 b/physics/module_nst_parameters.f90 old mode 100644 new mode 100755 diff --git a/physics/module_nst_water_prop.f90 b/physics/module_nst_water_prop.f90 old mode 100644 new mode 100755 diff --git a/physics/module_sf_mynn.F90 b/physics/module_sf_mynn.F90 old mode 100644 new mode 100755 diff --git a/physics/module_sf_ruclsm.F90 b/physics/module_sf_ruclsm.F90 old mode 100644 new mode 100755 diff --git a/physics/module_soil_pre.F90 b/physics/module_soil_pre.F90 old mode 100644 new mode 100755 diff --git a/physics/moninedmf.f b/physics/moninedmf.f old mode 100644 new mode 100755 diff --git a/physics/moninedmf.meta b/physics/moninedmf.meta old mode 100644 new mode 100755 diff --git a/physics/moninshoc.f b/physics/moninshoc.f old mode 100644 new mode 100755 diff --git a/physics/moninshoc.meta b/physics/moninshoc.meta old mode 100644 new mode 100755 diff --git a/physics/mp_thompson.F90 b/physics/mp_thompson.F90 old mode 100644 new mode 100755 diff --git a/physics/mp_thompson.meta b/physics/mp_thompson.meta old mode 100644 new mode 100755 diff --git a/physics/mp_thompson_post.F90 b/physics/mp_thompson_post.F90 old mode 100644 new mode 100755 diff --git a/physics/mp_thompson_post.meta b/physics/mp_thompson_post.meta old mode 100644 new mode 100755 diff --git a/physics/mp_thompson_pre.F90 b/physics/mp_thompson_pre.F90 old mode 100644 new mode 100755 diff --git a/physics/mp_thompson_pre.meta b/physics/mp_thompson_pre.meta old mode 100644 new mode 100755 diff --git a/physics/multi_gases.F90 b/physics/multi_gases.F90 old mode 100644 new mode 100755 diff --git a/physics/namelist_soilveg.f b/physics/namelist_soilveg.f old mode 100644 new mode 100755 diff --git a/physics/namelist_soilveg_ruc.F90 b/physics/namelist_soilveg_ruc.F90 old mode 100644 new mode 100755 diff --git a/physics/num_parthds.F b/physics/num_parthds.F old mode 100644 new mode 100755 diff --git a/physics/ozinterp.f90 b/physics/ozinterp.f90 old mode 100644 new mode 100755 diff --git a/physics/ozne_def.f b/physics/ozne_def.f old mode 100644 new mode 100755 diff --git a/physics/ozphys.f b/physics/ozphys.f old mode 100644 new mode 100755 diff --git a/physics/ozphys.meta b/physics/ozphys.meta old mode 100644 new mode 100755 diff --git a/physics/ozphys_2015.f b/physics/ozphys_2015.f old mode 100644 new mode 100755 diff --git a/physics/ozphys_2015.meta b/physics/ozphys_2015.meta old mode 100644 new mode 100755 diff --git a/physics/physcons.F90 b/physics/physcons.F90 old mode 100644 new mode 100755 diff --git a/physics/physparam.f b/physics/physparam.f old mode 100644 new mode 100755 diff --git a/physics/precpd.f b/physics/precpd.f old mode 100644 new mode 100755 diff --git a/physics/precpd.meta b/physics/precpd.meta old mode 100644 new mode 100755 diff --git a/physics/radcons.f90 b/physics/radcons.f90 old mode 100644 new mode 100755 diff --git a/physics/radiation_aerosols.f b/physics/radiation_aerosols.f old mode 100644 new mode 100755 diff --git a/physics/radiation_astronomy.f b/physics/radiation_astronomy.f old mode 100644 new mode 100755 diff --git a/physics/radiation_clouds.f b/physics/radiation_clouds.f old mode 100644 new mode 100755 diff --git a/physics/radiation_gases.f b/physics/radiation_gases.f old mode 100644 new mode 100755 diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f old mode 100644 new mode 100755 diff --git a/physics/radlw_datatb.f b/physics/radlw_datatb.f old mode 100644 new mode 100755 diff --git a/physics/radlw_main.f b/physics/radlw_main.f old mode 100644 new mode 100755 diff --git a/physics/radlw_main.meta b/physics/radlw_main.meta old mode 100644 new mode 100755 diff --git a/physics/radlw_param.f b/physics/radlw_param.f old mode 100644 new mode 100755 diff --git a/physics/radlw_param.meta b/physics/radlw_param.meta old mode 100644 new mode 100755 diff --git a/physics/radsw_datatb.f b/physics/radsw_datatb.f old mode 100644 new mode 100755 diff --git a/physics/radsw_main.f b/physics/radsw_main.f old mode 100644 new mode 100755 diff --git a/physics/radsw_main.meta b/physics/radsw_main.meta old mode 100644 new mode 100755 diff --git a/physics/radsw_param.f b/physics/radsw_param.f old mode 100644 new mode 100755 diff --git a/physics/radsw_param.meta b/physics/radsw_param.meta old mode 100644 new mode 100755 diff --git a/physics/rayleigh_damp.f b/physics/rayleigh_damp.f old mode 100644 new mode 100755 diff --git a/physics/rayleigh_damp.meta b/physics/rayleigh_damp.meta old mode 100644 new mode 100755 diff --git a/physics/rrtmg_lw_post.F90 b/physics/rrtmg_lw_post.F90 old mode 100644 new mode 100755 diff --git a/physics/rrtmg_lw_post.meta b/physics/rrtmg_lw_post.meta old mode 100644 new mode 100755 diff --git a/physics/rrtmg_lw_pre.F90 b/physics/rrtmg_lw_pre.F90 old mode 100644 new mode 100755 diff --git a/physics/rrtmg_lw_pre.meta b/physics/rrtmg_lw_pre.meta old mode 100644 new mode 100755 diff --git a/physics/rrtmg_sw_post.F90 b/physics/rrtmg_sw_post.F90 old mode 100644 new mode 100755 diff --git a/physics/rrtmg_sw_post.meta b/physics/rrtmg_sw_post.meta old mode 100644 new mode 100755 diff --git a/physics/rrtmg_sw_pre.F90 b/physics/rrtmg_sw_pre.F90 old mode 100644 new mode 100755 diff --git a/physics/rrtmg_sw_pre.meta b/physics/rrtmg_sw_pre.meta old mode 100644 new mode 100755 diff --git a/physics/samfaerosols.F b/physics/samfaerosols.F old mode 100644 new mode 100755 diff --git a/physics/samfdeepcnv.f b/physics/samfdeepcnv.f old mode 100644 new mode 100755 diff --git a/physics/samfdeepcnv.meta b/physics/samfdeepcnv.meta old mode 100644 new mode 100755 diff --git a/physics/samfshalcnv.f b/physics/samfshalcnv.f old mode 100644 new mode 100755 diff --git a/physics/samfshalcnv.meta b/physics/samfshalcnv.meta old mode 100644 new mode 100755 diff --git a/physics/satmedmfvdif.F b/physics/satmedmfvdif.F old mode 100644 new mode 100755 diff --git a/physics/satmedmfvdif.meta b/physics/satmedmfvdif.meta old mode 100644 new mode 100755 diff --git a/physics/set_soilveg.f b/physics/set_soilveg.f old mode 100644 new mode 100755 diff --git a/physics/set_soilveg_ruc.F90 b/physics/set_soilveg_ruc.F90 old mode 100644 new mode 100755 diff --git a/physics/sfc_cice.f b/physics/sfc_cice.f old mode 100644 new mode 100755 diff --git a/physics/sfc_cice.meta b/physics/sfc_cice.meta old mode 100644 new mode 100755 diff --git a/physics/sfc_diag.f b/physics/sfc_diag.f old mode 100644 new mode 100755 diff --git a/physics/sfc_diag.meta b/physics/sfc_diag.meta old mode 100644 new mode 100755 diff --git a/physics/sfc_diag_post.F90 b/physics/sfc_diag_post.F90 old mode 100644 new mode 100755 diff --git a/physics/sfc_diag_post.meta b/physics/sfc_diag_post.meta old mode 100644 new mode 100755 diff --git a/physics/sfc_diff.f b/physics/sfc_diff.f old mode 100644 new mode 100755 diff --git a/physics/sfc_diff.meta b/physics/sfc_diff.meta old mode 100644 new mode 100755 diff --git a/physics/sfc_drv.f b/physics/sfc_drv.f old mode 100644 new mode 100755 diff --git a/physics/sfc_drv.meta b/physics/sfc_drv.meta old mode 100644 new mode 100755 diff --git a/physics/sfc_drv_ruc.F90 b/physics/sfc_drv_ruc.F90 old mode 100644 new mode 100755 diff --git a/physics/sfc_drv_ruc.meta b/physics/sfc_drv_ruc.meta old mode 100644 new mode 100755 diff --git a/physics/sfc_noahmp_drv.meta b/physics/sfc_noahmp_drv.meta old mode 100644 new mode 100755 diff --git a/physics/sfc_noahmp_pre.meta b/physics/sfc_noahmp_pre.meta old mode 100644 new mode 100755 diff --git a/physics/sfc_nst.f b/physics/sfc_nst.f old mode 100644 new mode 100755 diff --git a/physics/sfc_nst.meta b/physics/sfc_nst.meta old mode 100644 new mode 100755 diff --git a/physics/sfc_ocean.F b/physics/sfc_ocean.F old mode 100644 new mode 100755 diff --git a/physics/sfc_ocean.meta b/physics/sfc_ocean.meta old mode 100644 new mode 100755 diff --git a/physics/sfc_sice.f b/physics/sfc_sice.f old mode 100644 new mode 100755 diff --git a/physics/sfc_sice.meta b/physics/sfc_sice.meta old mode 100644 new mode 100755 diff --git a/physics/sfcsub.F b/physics/sfcsub.F old mode 100644 new mode 100755 diff --git a/physics/sflx.f b/physics/sflx.f old mode 100644 new mode 100755 diff --git a/physics/shinhongvdif.F90 b/physics/shinhongvdif.F90 old mode 100644 new mode 100755 diff --git a/physics/shinhongvdif.meta b/physics/shinhongvdif.meta old mode 100644 new mode 100755 diff --git a/physics/surface_perturbation.F90 b/physics/surface_perturbation.F90 old mode 100644 new mode 100755 diff --git a/physics/tridi.f b/physics/tridi.f old mode 100644 new mode 100755 diff --git a/physics/ugwp_driver_v0.F b/physics/ugwp_driver_v0.F old mode 100644 new mode 100755 diff --git a/physics/wv_saturation.F b/physics/wv_saturation.F old mode 100644 new mode 100755 diff --git a/physics/ysuvdif.F90 b/physics/ysuvdif.F90 old mode 100644 new mode 100755 diff --git a/physics/ysuvdif.meta b/physics/ysuvdif.meta old mode 100644 new mode 100755 From 71d93a74d923c2f09539b83e3fcdb417d37e97e5 Mon Sep 17 00:00:00 2001 From: HenryJuang-NOAA Date: Thu, 12 Nov 2020 08:07:19 -0600 Subject: [PATCH 04/98] correct time_step in name --- physics/GFS_rrtmg_setup.meta | 4 ++-- physics/dcyc2.meta | 8 ++++---- physics/moninedmf.meta | 4 ++-- physics/satmedmfvdif.meta | 4 ++-- physics/ysuvdif.meta | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/physics/GFS_rrtmg_setup.meta b/physics/GFS_rrtmg_setup.meta index bd9be06db..e55147d66 100755 --- a/physics/GFS_rrtmg_setup.meta +++ b/physics/GFS_rrtmg_setup.meta @@ -17,8 +17,8 @@ intent = in optional = F [levr] - standard_name = adjusted_vertical_layer_dimension_for_radiation - long_name = number of vertical layers for radiation + standard_name = number_of_vertical_layers_for_radiation_calculations + long_name = number of vertical levels for radiation calculations units = count dimensions = () type = integer diff --git a/physics/dcyc2.meta b/physics/dcyc2.meta index 36d4a3259..6fbc7f8b6 100755 --- a/physics/dcyc2.meta +++ b/physics/dcyc2.meta @@ -179,7 +179,7 @@ intent = in optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step long_name = total sky shortwave heating rate on radiation time step units = K s-1 dimensions = (horizontal_loop_extent,vertical_dimension) @@ -188,7 +188,7 @@ intent = in optional = F [swhc] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_timestep + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step long_name = clear sky shortwave heating rate on radiation time step units = K s-1 dimensions = (horizontal_loop_extent,vertical_dimension) @@ -197,7 +197,7 @@ intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step long_name = total sky longwave heating rate on radiation time step units = K s-1 dimensions = (horizontal_loop_extent,vertical_dimension) @@ -206,7 +206,7 @@ intent = in optional = F [hlwc] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_timestep + standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step long_name = clear sky longwave heating rate on radiation time step units = K s-1 dimensions = (horizontal_loop_extent,vertical_dimension) diff --git a/physics/moninedmf.meta b/physics/moninedmf.meta index 93b51dace..b14dbd2fc 100755 --- a/physics/moninedmf.meta +++ b/physics/moninedmf.meta @@ -143,7 +143,7 @@ intent = in optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step long_name = total sky shortwave heating rate units = K s-1 dimensions = (horizontal_loop_extent,vertical_dimension) @@ -152,7 +152,7 @@ intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step long_name = total sky longwave heating rate units = K s-1 dimensions = (horizontal_loop_extent,vertical_dimension) diff --git a/physics/satmedmfvdif.meta b/physics/satmedmfvdif.meta index 511df6d41..d860e3310 100755 --- a/physics/satmedmfvdif.meta +++ b/physics/satmedmfvdif.meta @@ -247,7 +247,7 @@ intent = in optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step long_name = total sky shortwave heating rate units = K s-1 dimensions = (horizontal_loop_extent,vertical_dimension) @@ -256,7 +256,7 @@ intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step long_name = total sky longwave heating rate units = K s-1 dimensions = (horizontal_loop_extent,vertical_dimension) diff --git a/physics/ysuvdif.meta b/physics/ysuvdif.meta index f13a99b81..9ba31ed27 100755 --- a/physics/ysuvdif.meta +++ b/physics/ysuvdif.meta @@ -123,7 +123,7 @@ intent = inout optional = F [swh] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step long_name = total sky shortwave heating rate units = K s-1 dimensions = (horizontal_loop_extent,vertical_dimension) @@ -132,7 +132,7 @@ intent = in optional = F [hlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step long_name = total sky longwave heating rate units = K s-1 dimensions = (horizontal_loop_extent,vertical_dimension) From b61465661adfee7e5367eaac4642f76973c53ce7 Mon Sep 17 00:00:00 2001 From: HenryJuang-NOAA Date: Sat, 14 Nov 2020 14:00:03 -0600 Subject: [PATCH 05/98] use Cmake and can be compiled in orion --- physics/docs/pdftxt/suite_input.nml.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index 2565c58eb..e042fa20b 100755 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -30,7 +30,6 @@ and how stochastic perturbations are used in the Noah Land Surface Model. cplflx gfs_control_type logical flag for cplflx collection .false. cplwav gfs_control_type logical flag for cplwav collection .false. cplchm gfs_control_type logical flag for chemistry collection .false. -lsidea gfs_control_type logical flag for idealized physics .false. oz_phys gfs_control_type flag for old (2006) ozone physics .true. oz_phys_2015 gfs_control_type flag for new (2015) ozone physics .false. fhcyc gfs_control_type frequency for surface data cycling in hours 0.0 From 92bf0d4809ce160c57762296fe3b9fefbba506ec Mon Sep 17 00:00:00 2001 From: "henry.juang" Date: Thu, 18 Feb 2021 20:14:40 +0000 Subject: [PATCH 06/98] fix spfo3 for ntoz --- physics/gfs_phy_tracer_config.F | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/physics/gfs_phy_tracer_config.F b/physics/gfs_phy_tracer_config.F index 8ed7443d3..0bfe25f21 100755 --- a/physics/gfs_phy_tracer_config.F +++ b/physics/gfs_phy_tracer_config.F @@ -1,4 +1,3 @@ -#undef MULTI_GASES ! !! ! Module: gfs_phy_tracer_config @@ -135,7 +134,6 @@ subroutine tracer_config_init (ntrac,ntoz,ntcw,ncld, !--- fill in met tracers gfs_phy_tracer%vname(1) = 'spfh' - if(ntoz > 0) gfs_phy_tracer%vname(ntoz) = 'o3mr' if(ntcw > 0) gfs_phy_tracer%vname(ntcw) = 'clwmr' if(ntiw > 0) gfs_phy_tracer%vname(ntiw) = 'climr' if(ntlnc > 0) gfs_phy_tracer%vname(ntlnc) = 'lnc' @@ -146,10 +144,12 @@ subroutine tracer_config_init (ntrac,ntoz,ntcw,ncld, if(ntsnc > 0) gfs_phy_tracer%vname(ntsnc) = 'snc' if(ntke > 0) gfs_phy_tracer%vname(ntke) = 'tke' #ifdef MULTI_GASES - print *,' ++++ nto nto2 ',nto,nto2 + print *,' ++++ ntoz nto nto2 ',ntoz,nto,nto2 + if(ntoz > 0) gfs_phy_tracer%vname(ntoz) = 'spfo3' if(nto > 0) gfs_phy_tracer%vname(nto) = 'spfo' if(nto2 > 0) gfs_phy_tracer%vname(nto2) = 'spfo2' #else + if(ntoz > 0) gfs_phy_tracer%vname(ntoz) = 'o3mr' if(nto > 0) gfs_phy_tracer%vname(nto) = 'o' if(nto2 > 0) gfs_phy_tracer%vname(nto2) = 'o2' #endif From 8dc1da1625e327236d884d86c53b63f391313979 Mon Sep 17 00:00:00 2001 From: "henry.juang" Date: Fri, 19 Feb 2021 22:23:06 +0000 Subject: [PATCH 07/98] change spfox to spox for consistency with sphum. --- physics/gfs_phy_tracer_config.F | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/physics/gfs_phy_tracer_config.F b/physics/gfs_phy_tracer_config.F index 0bfe25f21..db9d7b0a9 100755 --- a/physics/gfs_phy_tracer_config.F +++ b/physics/gfs_phy_tracer_config.F @@ -145,9 +145,9 @@ subroutine tracer_config_init (ntrac,ntoz,ntcw,ncld, if(ntke > 0) gfs_phy_tracer%vname(ntke) = 'tke' #ifdef MULTI_GASES print *,' ++++ ntoz nto nto2 ',ntoz,nto,nto2 - if(ntoz > 0) gfs_phy_tracer%vname(ntoz) = 'spfo3' - if(nto > 0) gfs_phy_tracer%vname(nto) = 'spfo' - if(nto2 > 0) gfs_phy_tracer%vname(nto2) = 'spfo2' + if(ntoz > 0) gfs_phy_tracer%vname(ntoz) = 'spo3' + if(nto > 0) gfs_phy_tracer%vname(nto) = 'spo' + if(nto2 > 0) gfs_phy_tracer%vname(nto2) = 'spo2' #else if(ntoz > 0) gfs_phy_tracer%vname(ntoz) = 'o3mr' if(nto > 0) gfs_phy_tracer%vname(nto) = 'o' From 65af4c117cbbe79a3fe3624bdefed661b7add94c Mon Sep 17 00:00:00 2001 From: Xiaqiong Zhou Date: Tue, 27 Jul 2021 16:34:58 +0000 Subject: [PATCH 08/98] Change file permissions --- CMakeLists.txt | 0 CODEOWNERS | 0 LICENSE | 0 README.md | 0 physics/GFDL_parse_tracers.F90 | 0 physics/GFS_DCNV_generic.F90 | 0 physics/GFS_DCNV_generic.meta | 0 physics/GFS_GWD_generic.F90 | 0 physics/GFS_GWD_generic.meta | 0 physics/GFS_MP_generic.F90 | 0 physics/GFS_MP_generic.meta | 0 physics/GFS_PBL_generic.F90 | 0 physics/GFS_PBL_generic.meta | 0 physics/GFS_SCNV_generic.F90 | 0 physics/GFS_SCNV_generic.meta | 0 physics/GFS_debug.F90 | 0 physics/GFS_debug.meta | 0 physics/GFS_phys_time_vary.fv3.F90 | 0 physics/GFS_phys_time_vary.fv3.meta | 0 physics/GFS_phys_time_vary.scm.F90 | 0 physics/GFS_phys_time_vary.scm.meta | 0 physics/GFS_rad_time_vary.fv3.F90 | 0 physics/GFS_rad_time_vary.fv3.meta | 0 physics/GFS_rad_time_vary.scm.F90 | 0 physics/GFS_rad_time_vary.scm.meta | 0 physics/GFS_rrtmg_post.F90 | 0 physics/GFS_rrtmg_post.meta | 0 physics/GFS_rrtmg_pre.F90 | 0 physics/GFS_rrtmg_pre.meta | 0 physics/GFS_rrtmg_setup.F90 | 0 physics/GFS_rrtmg_setup.meta | 0 physics/GFS_stochastics.F90 | 0 physics/GFS_stochastics.meta | 0 physics/GFS_suite_interstitial.F90 | 0 physics/GFS_suite_interstitial.meta | 0 physics/GFS_surface_composites.F90 | 0 physics/GFS_surface_composites.meta | 0 physics/GFS_surface_generic.F90 | 0 physics/GFS_surface_generic.meta | 0 physics/GFS_surface_loop_control.F90 | 0 physics/GFS_surface_loop_control.meta | 0 physics/GFS_time_vary_pre.fv3.F90 | 0 physics/GFS_time_vary_pre.fv3.meta | 0 physics/GFS_time_vary_pre.scm.F90 | 0 physics/GFS_time_vary_pre.scm.meta | 0 physics/aer_cloud.F | 0 physics/aerclm_def.F | 0 physics/aerinterp.F90 | 0 physics/calpreciptype.f90 | 0 physics/cires_orowam2017.f | 0 physics/cires_ugwp.F90 | 0 physics/cires_ugwp.meta | 0 physics/cires_ugwp_initialize.F90 | 0 physics/cires_ugwp_module.F90 | 0 physics/cires_ugwp_post.meta | 0 physics/cires_ugwp_triggers.F90 | 0 physics/cldmacro.F | 0 physics/cldwat2m_micro.F | 0 physics/cnvc90.f | 0 physics/cnvc90.meta | 0 physics/cs_conv.F90 | 0 physics/cs_conv.meta | 0 physics/cs_conv_aw_adj.F90 | 0 physics/cs_conv_aw_adj.meta | 0 physics/cu_gf_deep.F90 | 0 physics/cu_gf_driver.F90 | 0 physics/cu_gf_driver.meta | 0 physics/cu_gf_driver_post.F90 | 0 physics/cu_gf_driver_post.meta | 0 physics/cu_gf_driver_pre.F90 | 0 physics/cu_gf_driver_pre.meta | 0 physics/cu_gf_sh.F90 | 0 physics/cu_ntiedtke.F90 | 0 physics/cu_ntiedtke.meta | 0 physics/cu_ntiedtke_post.F90 | 0 physics/cu_ntiedtke_post.meta | 0 physics/cu_ntiedtke_pre.F90 | 0 physics/cu_ntiedtke_pre.meta | 0 physics/date_def.f | 0 physics/dcyc2.f | 0 physics/dcyc2.meta | 0 physics/docs/ccppv4_doxyfile | 0 physics/docs/ccppv5_doxyfile | 0 physics/docs/img/FV3_structure.png | Bin physics/docs/img/GFS_gwdc.png | Bin physics/docs/img/GFS_sice_wonton2000_fig1.png | Bin physics/docs/img/GFS_stochy_spread.png | Bin physics/docs/img/GFS_zhaocarr_schematic.png | Bin physics/docs/img/GSD_thompson.png | Bin physics/docs/img/MG3_MP_diagram.png | Bin physics/docs/img/MYNN-EDMF_call_order.png | Bin physics/docs/img/NSST.png | Bin physics/docs/img/NSST_schematic.png | Bin physics/docs/img/Noah_LA_interaction.png | Bin physics/docs/img/dtc_logo.png | Bin physics/docs/img/gfdl_cloud_mp_diagram.png | Bin physics/docs/img/land_dataset.png | Bin physics/docs/img/precpd-micop.png | Bin physics/docs/img/rad_gas_AGGI.png | Bin physics/docs/img/roughness_length_fig1.png | Bin physics/docs/img/roughness_length_fig2.png | Bin physics/docs/img/ruc_lsm_frozen_precip.png | Bin physics/docs/img/ruc_lsm_heterogeneity.png | Bin physics/docs/img/ruc_lsm_mosaic.png | Bin physics/docs/img/ruc_lsm_veg_soil.png | Bin physics/docs/img/schematic_Rad_mod.png | Bin physics/docs/img/schematic_sice.png | Bin physics/docs/pdftxt/CPT_CSAW.txt | 0 physics/docs/pdftxt/CPT_MG3.txt | 0 physics/docs/pdftxt/CPT_adv_suite.txt | 0 physics/docs/pdftxt/GFDL_cloud.txt | 0 physics/docs/pdftxt/GFS_CALPRECIPTYPE.txt | 0 physics/docs/pdftxt/GFS_GWDC.txt | 0 physics/docs/pdftxt/GFS_GWDPS.txt | 0 physics/docs/pdftxt/GFS_H2OPHYS.txt | 0 physics/docs/pdftxt/GFS_HEDMF.txt | 0 physics/docs/pdftxt/GFS_NOAH.txt | 0 physics/docs/pdftxt/GFS_NSST.txt | 0 physics/docs/pdftxt/GFS_OZPHYS.txt | 0 physics/docs/pdftxt/GFS_RAYLEIGH.txt | 0 physics/docs/pdftxt/GFS_RRTMG.txt | 0 physics/docs/pdftxt/GFS_SAMF.txt | 0 physics/docs/pdftxt/GFS_SAMFdeep.txt | 0 physics/docs/pdftxt/GFS_SAMFshal.txt | 0 physics/docs/pdftxt/GFS_SATMEDMF.txt | 0 physics/docs/pdftxt/GFS_SFCLYR.txt | 0 physics/docs/pdftxt/GFS_SFCSICE.txt | 0 physics/docs/pdftxt/GFS_STOCHY_PHYS.txt | 0 physics/docs/pdftxt/GFS_STOCHY_PHYS.txt.save | 0 physics/docs/pdftxt/GFS_SURFACE_PERT.txt | 0 physics/docs/pdftxt/GFS_ZHAOC.txt | 0 physics/docs/pdftxt/GFSphys_namelist.txt | 0 physics/docs/pdftxt/GFSv14_suite.txt | 0 physics/docs/pdftxt/GFSv15_suite.txt | 0 physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt | 0 physics/docs/pdftxt/GSD_CU_GF_deep.txt | 0 physics/docs/pdftxt/GSD_MYNN_EDMF.txt | 0 physics/docs/pdftxt/GSD_RUCLSM.txt | 0 physics/docs/pdftxt/GSD_THOMPSON.txt | 0 physics/docs/pdftxt/GSD_adv_suite.txt | 0 physics/docs/pdftxt/MG_double.txt | 0 physics/docs/pdftxt/all_shemes_list.txt | 0 physics/docs/pdftxt/all_shemes_list.txt.FV3 | 0 physics/docs/pdftxt/code_overview.txt | 0 physics/docs/pdftxt/code_overview.txt.Aug17 | 0 physics/docs/pdftxt/mainpage.txt | 0 physics/docs/pdftxt/mainpage.txt.Aug17 | 0 physics/docs/pdftxt/rad_cld.txt | 0 physics/docs/pdftxt/suite_input.nml.txt | 0 physics/drag_suite.F90 | 0 physics/drag_suite.meta | 0 physics/funcphys.f90 | 0 physics/gcm_shoc.F90 | 0 physics/gcm_shoc.meta | 0 physics/gcycle.F90 | 0 physics/get_prs_fv3.F90 | 0 physics/get_prs_fv3.meta | 0 physics/gfdl_cloud_microphys.F90 | 0 physics/gfdl_cloud_microphys.meta | 0 physics/gfdl_fv_sat_adj.F90 | 0 physics/gfdl_fv_sat_adj.meta | 0 physics/gfs_phy_tracer_config.F | 0 physics/gocart_tracer_config_stub.f | 0 physics/gscond.f | 0 physics/gscond.meta | 0 physics/gwdc.f | 0 physics/gwdc.meta | 0 physics/gwdps.f | 0 physics/gwdps.meta | 0 physics/h2o_def.f | 0 physics/h2ointerp.f90 | 0 physics/h2ophys.f | 0 physics/h2ophys.meta | 0 physics/iccn_def.F | 0 physics/iccninterp.F90 | 0 physics/iounitdef.f | 0 physics/m_micro.F90 | 0 physics/m_micro.meta | 0 physics/m_micro_interstitial.F90 | 0 physics/m_micro_interstitial.meta | 0 physics/machine.F | 0 physics/machine.meta | 0 physics/maximum_hourly_diagnostics.F90 | 0 physics/maximum_hourly_diagnostics.meta | 0 physics/mersenne_twister.f | 0 physics/mfpbl.f | 0 physics/mfpblt.f | 0 physics/mfscu.f | 0 physics/micro_mg2_0.F90 | 0 physics/micro_mg3_0.F90 | 0 physics/micro_mg_utils.F90 | 0 physics/module_MYJPBL_wrapper.F90 | 0 physics/module_MYJPBL_wrapper.meta | 0 physics/module_MYJSFC_wrapper.F90 | 0 physics/module_MYJSFC_wrapper.meta | 0 physics/module_MYNNPBL_wrapper.F90 | 0 physics/module_MYNNPBL_wrapper.meta | 0 physics/module_MYNNSFC_wrapper.F90 | 0 physics/module_MYNNSFC_wrapper.meta | 0 physics/module_SGSCloud_RadPost.meta | 0 physics/module_bfmicrophysics.f | 0 physics/module_bl_mynn.F90 | 0 physics/module_gfdl_cloud_microphys.F90 | 0 physics/module_mp_radar.F90 | 0 physics/module_mp_thompson.F90 | 0 ...odule_mp_thompson_make_number_concentrations.F90 | 0 physics/module_nst_model.f90 | 0 physics/module_nst_parameters.f90 | 0 physics/module_nst_water_prop.f90 | 0 physics/module_sf_mynn.F90 | 0 physics/module_sf_ruclsm.F90 | 0 physics/module_soil_pre.F90 | 0 physics/moninedmf.f | 0 physics/moninedmf.meta | 0 physics/moninshoc.f | 0 physics/moninshoc.meta | 0 physics/mp_thompson.F90 | 0 physics/mp_thompson.meta | 0 physics/mp_thompson_post.F90 | 0 physics/mp_thompson_post.meta | 0 physics/mp_thompson_pre.F90 | 0 physics/mp_thompson_pre.meta | 0 physics/multi_gases.F90 | 0 physics/namelist_soilveg.f | 0 physics/namelist_soilveg_ruc.F90 | 0 physics/ozinterp.f90 | 0 physics/ozne_def.f | 0 physics/ozphys.f | 0 physics/ozphys.meta | 0 physics/ozphys_2015.f | 0 physics/ozphys_2015.meta | 0 physics/physcons.F90 | 0 physics/physparam.f | 0 physics/precpd.f | 0 physics/precpd.meta | 0 physics/radcons.f90 | 0 physics/radiation_aerosols.f | 0 physics/radiation_astronomy.f | 0 physics/radiation_clouds.f | 0 physics/radiation_gases.f | 0 physics/radiation_surface.f | 0 physics/radlw_datatb.f | 0 physics/radlw_main.F90 | 0 physics/radlw_main.meta | 0 physics/radlw_param.f | 0 physics/radlw_param.meta | 0 physics/radsw_datatb.f | 0 physics/radsw_main.F90 | 0 physics/radsw_main.meta | 0 physics/radsw_param.f | 0 physics/radsw_param.meta | 0 physics/rayleigh_damp.f | 0 physics/rayleigh_damp.meta | 0 physics/rrtmg_lw_post.F90 | 0 physics/rrtmg_lw_post.meta | 0 physics/rrtmg_lw_pre.F90 | 0 physics/rrtmg_lw_pre.meta | 0 physics/rrtmg_sw_post.F90 | 0 physics/rrtmg_sw_post.meta | 0 physics/rrtmg_sw_pre.F90 | 0 physics/rrtmg_sw_pre.meta | 0 physics/samfaerosols.F | 0 physics/samfdeepcnv.f | 0 physics/samfdeepcnv.meta | 0 physics/samfshalcnv.f | 0 physics/samfshalcnv.meta | 0 physics/satmedmfvdif.F | 0 physics/satmedmfvdif.meta | 0 physics/scm_sfc_flux_spec.F90 | 0 physics/scm_sfc_flux_spec.meta | 0 physics/set_soilveg.f | 0 physics/set_soilveg_ruc.F90 | 0 physics/sfc_cice.f | 0 physics/sfc_cice.meta | 0 physics/sfc_diag.f | 0 physics/sfc_diag.meta | 0 physics/sfc_diag_post.F90 | 0 physics/sfc_diag_post.meta | 0 physics/sfc_diff.f | 0 physics/sfc_diff.meta | 0 physics/sfc_drv.f | 0 physics/sfc_drv.meta | 0 physics/sfc_drv_ruc.F90 | 0 physics/sfc_drv_ruc.meta | 0 physics/sfc_noahmp_drv.meta | 0 physics/sfc_nst.f | 0 physics/sfc_nst.meta | 0 physics/sfc_ocean.F | 0 physics/sfc_ocean.meta | 0 physics/sfc_sice.f | 0 physics/sfc_sice.meta | 0 physics/sfcsub.F | 0 physics/sflx.f | 0 physics/shinhongvdif.F90 | 0 physics/shinhongvdif.meta | 0 physics/surface_perturbation.F90 | 0 physics/tridi.f | 0 physics/ugwp_driver_v0.F | 0 physics/wv_saturation.F | 0 physics/ysuvdif.F90 | 0 physics/ysuvdif.meta | 0 301 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 CMakeLists.txt mode change 100755 => 100644 CODEOWNERS mode change 100755 => 100644 LICENSE mode change 100755 => 100644 README.md mode change 100755 => 100644 physics/GFDL_parse_tracers.F90 mode change 100755 => 100644 physics/GFS_DCNV_generic.F90 mode change 100755 => 100644 physics/GFS_DCNV_generic.meta mode change 100755 => 100644 physics/GFS_GWD_generic.F90 mode change 100755 => 100644 physics/GFS_GWD_generic.meta mode change 100755 => 100644 physics/GFS_MP_generic.F90 mode change 100755 => 100644 physics/GFS_MP_generic.meta mode change 100755 => 100644 physics/GFS_PBL_generic.F90 mode change 100755 => 100644 physics/GFS_PBL_generic.meta mode change 100755 => 100644 physics/GFS_SCNV_generic.F90 mode change 100755 => 100644 physics/GFS_SCNV_generic.meta mode change 100755 => 100644 physics/GFS_debug.F90 mode change 100755 => 100644 physics/GFS_debug.meta mode change 100755 => 100644 physics/GFS_phys_time_vary.fv3.F90 mode change 100755 => 100644 physics/GFS_phys_time_vary.fv3.meta mode change 100755 => 100644 physics/GFS_phys_time_vary.scm.F90 mode change 100755 => 100644 physics/GFS_phys_time_vary.scm.meta mode change 100755 => 100644 physics/GFS_rad_time_vary.fv3.F90 mode change 100755 => 100644 physics/GFS_rad_time_vary.fv3.meta mode change 100755 => 100644 physics/GFS_rad_time_vary.scm.F90 mode change 100755 => 100644 physics/GFS_rad_time_vary.scm.meta mode change 100755 => 100644 physics/GFS_rrtmg_post.F90 mode change 100755 => 100644 physics/GFS_rrtmg_post.meta mode change 100755 => 100644 physics/GFS_rrtmg_pre.F90 mode change 100755 => 100644 physics/GFS_rrtmg_pre.meta mode change 100755 => 100644 physics/GFS_rrtmg_setup.F90 mode change 100755 => 100644 physics/GFS_rrtmg_setup.meta mode change 100755 => 100644 physics/GFS_stochastics.F90 mode change 100755 => 100644 physics/GFS_stochastics.meta mode change 100755 => 100644 physics/GFS_suite_interstitial.F90 mode change 100755 => 100644 physics/GFS_suite_interstitial.meta mode change 100755 => 100644 physics/GFS_surface_composites.F90 mode change 100755 => 100644 physics/GFS_surface_composites.meta mode change 100755 => 100644 physics/GFS_surface_generic.F90 mode change 100755 => 100644 physics/GFS_surface_generic.meta mode change 100755 => 100644 physics/GFS_surface_loop_control.F90 mode change 100755 => 100644 physics/GFS_surface_loop_control.meta mode change 100755 => 100644 physics/GFS_time_vary_pre.fv3.F90 mode change 100755 => 100644 physics/GFS_time_vary_pre.fv3.meta mode change 100755 => 100644 physics/GFS_time_vary_pre.scm.F90 mode change 100755 => 100644 physics/GFS_time_vary_pre.scm.meta mode change 100755 => 100644 physics/aer_cloud.F mode change 100755 => 100644 physics/aerclm_def.F mode change 100755 => 100644 physics/aerinterp.F90 mode change 100755 => 100644 physics/calpreciptype.f90 mode change 100755 => 100644 physics/cires_orowam2017.f mode change 100755 => 100644 physics/cires_ugwp.F90 mode change 100755 => 100644 physics/cires_ugwp.meta mode change 100755 => 100644 physics/cires_ugwp_initialize.F90 mode change 100755 => 100644 physics/cires_ugwp_module.F90 mode change 100755 => 100644 physics/cires_ugwp_post.meta mode change 100755 => 100644 physics/cires_ugwp_triggers.F90 mode change 100755 => 100644 physics/cldmacro.F mode change 100755 => 100644 physics/cldwat2m_micro.F mode change 100755 => 100644 physics/cnvc90.f mode change 100755 => 100644 physics/cnvc90.meta mode change 100755 => 100644 physics/cs_conv.F90 mode change 100755 => 100644 physics/cs_conv.meta mode change 100755 => 100644 physics/cs_conv_aw_adj.F90 mode change 100755 => 100644 physics/cs_conv_aw_adj.meta mode change 100755 => 100644 physics/cu_gf_deep.F90 mode change 100755 => 100644 physics/cu_gf_driver.F90 mode change 100755 => 100644 physics/cu_gf_driver.meta mode change 100755 => 100644 physics/cu_gf_driver_post.F90 mode change 100755 => 100644 physics/cu_gf_driver_post.meta mode change 100755 => 100644 physics/cu_gf_driver_pre.F90 mode change 100755 => 100644 physics/cu_gf_driver_pre.meta mode change 100755 => 100644 physics/cu_gf_sh.F90 mode change 100755 => 100644 physics/cu_ntiedtke.F90 mode change 100755 => 100644 physics/cu_ntiedtke.meta mode change 100755 => 100644 physics/cu_ntiedtke_post.F90 mode change 100755 => 100644 physics/cu_ntiedtke_post.meta mode change 100755 => 100644 physics/cu_ntiedtke_pre.F90 mode change 100755 => 100644 physics/cu_ntiedtke_pre.meta mode change 100755 => 100644 physics/date_def.f mode change 100755 => 100644 physics/dcyc2.f mode change 100755 => 100644 physics/dcyc2.meta mode change 100644 => 100755 physics/docs/ccppv4_doxyfile mode change 100644 => 100755 physics/docs/ccppv5_doxyfile mode change 100755 => 100644 physics/docs/img/FV3_structure.png mode change 100755 => 100644 physics/docs/img/GFS_gwdc.png mode change 100755 => 100644 physics/docs/img/GFS_sice_wonton2000_fig1.png mode change 100755 => 100644 physics/docs/img/GFS_stochy_spread.png mode change 100755 => 100644 physics/docs/img/GFS_zhaocarr_schematic.png mode change 100755 => 100644 physics/docs/img/GSD_thompson.png mode change 100755 => 100644 physics/docs/img/MG3_MP_diagram.png mode change 100755 => 100644 physics/docs/img/MYNN-EDMF_call_order.png mode change 100755 => 100644 physics/docs/img/NSST.png mode change 100755 => 100644 physics/docs/img/NSST_schematic.png mode change 100755 => 100644 physics/docs/img/Noah_LA_interaction.png mode change 100755 => 100644 physics/docs/img/dtc_logo.png mode change 100755 => 100644 physics/docs/img/gfdl_cloud_mp_diagram.png mode change 100755 => 100644 physics/docs/img/land_dataset.png mode change 100755 => 100644 physics/docs/img/precpd-micop.png mode change 100755 => 100644 physics/docs/img/rad_gas_AGGI.png mode change 100755 => 100644 physics/docs/img/roughness_length_fig1.png mode change 100755 => 100644 physics/docs/img/roughness_length_fig2.png mode change 100755 => 100644 physics/docs/img/ruc_lsm_frozen_precip.png mode change 100755 => 100644 physics/docs/img/ruc_lsm_heterogeneity.png mode change 100755 => 100644 physics/docs/img/ruc_lsm_mosaic.png mode change 100755 => 100644 physics/docs/img/ruc_lsm_veg_soil.png mode change 100755 => 100644 physics/docs/img/schematic_Rad_mod.png mode change 100755 => 100644 physics/docs/img/schematic_sice.png mode change 100755 => 100644 physics/docs/pdftxt/CPT_CSAW.txt mode change 100755 => 100644 physics/docs/pdftxt/CPT_MG3.txt mode change 100755 => 100644 physics/docs/pdftxt/CPT_adv_suite.txt mode change 100755 => 100644 physics/docs/pdftxt/GFDL_cloud.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_CALPRECIPTYPE.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_GWDC.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_GWDPS.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_H2OPHYS.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_HEDMF.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_NOAH.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_NSST.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_OZPHYS.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_RAYLEIGH.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_RRTMG.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_SAMF.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_SAMFdeep.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_SAMFshal.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_SATMEDMF.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_SFCLYR.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_SFCSICE.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_STOCHY_PHYS.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_STOCHY_PHYS.txt.save mode change 100755 => 100644 physics/docs/pdftxt/GFS_SURFACE_PERT.txt mode change 100755 => 100644 physics/docs/pdftxt/GFS_ZHAOC.txt mode change 100755 => 100644 physics/docs/pdftxt/GFSphys_namelist.txt mode change 100755 => 100644 physics/docs/pdftxt/GFSv14_suite.txt mode change 100755 => 100644 physics/docs/pdftxt/GFSv15_suite.txt mode change 100755 => 100644 physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt mode change 100755 => 100644 physics/docs/pdftxt/GSD_CU_GF_deep.txt mode change 100755 => 100644 physics/docs/pdftxt/GSD_MYNN_EDMF.txt mode change 100755 => 100644 physics/docs/pdftxt/GSD_RUCLSM.txt mode change 100755 => 100644 physics/docs/pdftxt/GSD_THOMPSON.txt mode change 100755 => 100644 physics/docs/pdftxt/GSD_adv_suite.txt mode change 100755 => 100644 physics/docs/pdftxt/MG_double.txt mode change 100755 => 100644 physics/docs/pdftxt/all_shemes_list.txt mode change 100755 => 100644 physics/docs/pdftxt/all_shemes_list.txt.FV3 mode change 100755 => 100644 physics/docs/pdftxt/code_overview.txt mode change 100755 => 100644 physics/docs/pdftxt/code_overview.txt.Aug17 mode change 100755 => 100644 physics/docs/pdftxt/mainpage.txt mode change 100755 => 100644 physics/docs/pdftxt/mainpage.txt.Aug17 mode change 100755 => 100644 physics/docs/pdftxt/rad_cld.txt mode change 100755 => 100644 physics/docs/pdftxt/suite_input.nml.txt mode change 100755 => 100644 physics/drag_suite.F90 mode change 100755 => 100644 physics/drag_suite.meta mode change 100755 => 100644 physics/funcphys.f90 mode change 100755 => 100644 physics/gcm_shoc.F90 mode change 100755 => 100644 physics/gcm_shoc.meta mode change 100755 => 100644 physics/gcycle.F90 mode change 100755 => 100644 physics/get_prs_fv3.F90 mode change 100755 => 100644 physics/get_prs_fv3.meta mode change 100755 => 100644 physics/gfdl_cloud_microphys.F90 mode change 100755 => 100644 physics/gfdl_cloud_microphys.meta mode change 100755 => 100644 physics/gfdl_fv_sat_adj.F90 mode change 100755 => 100644 physics/gfdl_fv_sat_adj.meta mode change 100755 => 100644 physics/gfs_phy_tracer_config.F mode change 100755 => 100644 physics/gocart_tracer_config_stub.f mode change 100755 => 100644 physics/gscond.f mode change 100755 => 100644 physics/gscond.meta mode change 100755 => 100644 physics/gwdc.f mode change 100755 => 100644 physics/gwdc.meta mode change 100755 => 100644 physics/gwdps.f mode change 100755 => 100644 physics/gwdps.meta mode change 100755 => 100644 physics/h2o_def.f mode change 100755 => 100644 physics/h2ointerp.f90 mode change 100755 => 100644 physics/h2ophys.f mode change 100755 => 100644 physics/h2ophys.meta mode change 100755 => 100644 physics/iccn_def.F mode change 100755 => 100644 physics/iccninterp.F90 mode change 100755 => 100644 physics/iounitdef.f mode change 100755 => 100644 physics/m_micro.F90 mode change 100755 => 100644 physics/m_micro.meta mode change 100755 => 100644 physics/m_micro_interstitial.F90 mode change 100755 => 100644 physics/m_micro_interstitial.meta mode change 100755 => 100644 physics/machine.F mode change 100755 => 100644 physics/machine.meta mode change 100755 => 100644 physics/maximum_hourly_diagnostics.F90 mode change 100755 => 100644 physics/maximum_hourly_diagnostics.meta mode change 100755 => 100644 physics/mersenne_twister.f mode change 100755 => 100644 physics/mfpbl.f mode change 100755 => 100644 physics/mfpblt.f mode change 100755 => 100644 physics/mfscu.f mode change 100755 => 100644 physics/micro_mg2_0.F90 mode change 100755 => 100644 physics/micro_mg3_0.F90 mode change 100755 => 100644 physics/micro_mg_utils.F90 mode change 100755 => 100644 physics/module_MYJPBL_wrapper.F90 mode change 100755 => 100644 physics/module_MYJPBL_wrapper.meta mode change 100755 => 100644 physics/module_MYJSFC_wrapper.F90 mode change 100755 => 100644 physics/module_MYJSFC_wrapper.meta mode change 100755 => 100644 physics/module_MYNNPBL_wrapper.F90 mode change 100755 => 100644 physics/module_MYNNPBL_wrapper.meta mode change 100755 => 100644 physics/module_MYNNSFC_wrapper.F90 mode change 100755 => 100644 physics/module_MYNNSFC_wrapper.meta mode change 100755 => 100644 physics/module_SGSCloud_RadPost.meta mode change 100755 => 100644 physics/module_bfmicrophysics.f mode change 100755 => 100644 physics/module_bl_mynn.F90 mode change 100755 => 100644 physics/module_gfdl_cloud_microphys.F90 mode change 100755 => 100644 physics/module_mp_radar.F90 mode change 100755 => 100644 physics/module_mp_thompson.F90 mode change 100755 => 100644 physics/module_mp_thompson_make_number_concentrations.F90 mode change 100755 => 100644 physics/module_nst_model.f90 mode change 100755 => 100644 physics/module_nst_parameters.f90 mode change 100755 => 100644 physics/module_nst_water_prop.f90 mode change 100755 => 100644 physics/module_sf_mynn.F90 mode change 100755 => 100644 physics/module_sf_ruclsm.F90 mode change 100755 => 100644 physics/module_soil_pre.F90 mode change 100755 => 100644 physics/moninedmf.f mode change 100755 => 100644 physics/moninedmf.meta mode change 100755 => 100644 physics/moninshoc.f mode change 100755 => 100644 physics/moninshoc.meta mode change 100755 => 100644 physics/mp_thompson.F90 mode change 100755 => 100644 physics/mp_thompson.meta mode change 100755 => 100644 physics/mp_thompson_post.F90 mode change 100755 => 100644 physics/mp_thompson_post.meta mode change 100755 => 100644 physics/mp_thompson_pre.F90 mode change 100755 => 100644 physics/mp_thompson_pre.meta mode change 100755 => 100644 physics/multi_gases.F90 mode change 100755 => 100644 physics/namelist_soilveg.f mode change 100755 => 100644 physics/namelist_soilveg_ruc.F90 mode change 100755 => 100644 physics/ozinterp.f90 mode change 100755 => 100644 physics/ozne_def.f mode change 100755 => 100644 physics/ozphys.f mode change 100755 => 100644 physics/ozphys.meta mode change 100755 => 100644 physics/ozphys_2015.f mode change 100755 => 100644 physics/ozphys_2015.meta mode change 100755 => 100644 physics/physcons.F90 mode change 100755 => 100644 physics/physparam.f mode change 100755 => 100644 physics/precpd.f mode change 100755 => 100644 physics/precpd.meta mode change 100755 => 100644 physics/radcons.f90 mode change 100755 => 100644 physics/radiation_aerosols.f mode change 100755 => 100644 physics/radiation_astronomy.f mode change 100755 => 100644 physics/radiation_clouds.f mode change 100755 => 100644 physics/radiation_gases.f mode change 100755 => 100644 physics/radiation_surface.f mode change 100755 => 100644 physics/radlw_datatb.f mode change 100755 => 100644 physics/radlw_main.F90 mode change 100755 => 100644 physics/radlw_main.meta mode change 100755 => 100644 physics/radlw_param.f mode change 100755 => 100644 physics/radlw_param.meta mode change 100755 => 100644 physics/radsw_datatb.f mode change 100755 => 100644 physics/radsw_main.F90 mode change 100755 => 100644 physics/radsw_main.meta mode change 100755 => 100644 physics/radsw_param.f mode change 100755 => 100644 physics/radsw_param.meta mode change 100755 => 100644 physics/rayleigh_damp.f mode change 100755 => 100644 physics/rayleigh_damp.meta mode change 100755 => 100644 physics/rrtmg_lw_post.F90 mode change 100755 => 100644 physics/rrtmg_lw_post.meta mode change 100755 => 100644 physics/rrtmg_lw_pre.F90 mode change 100755 => 100644 physics/rrtmg_lw_pre.meta mode change 100755 => 100644 physics/rrtmg_sw_post.F90 mode change 100755 => 100644 physics/rrtmg_sw_post.meta mode change 100755 => 100644 physics/rrtmg_sw_pre.F90 mode change 100755 => 100644 physics/rrtmg_sw_pre.meta mode change 100755 => 100644 physics/samfaerosols.F mode change 100755 => 100644 physics/samfdeepcnv.f mode change 100755 => 100644 physics/samfdeepcnv.meta mode change 100755 => 100644 physics/samfshalcnv.f mode change 100755 => 100644 physics/samfshalcnv.meta mode change 100755 => 100644 physics/satmedmfvdif.F mode change 100755 => 100644 physics/satmedmfvdif.meta mode change 100755 => 100644 physics/scm_sfc_flux_spec.F90 mode change 100755 => 100644 physics/scm_sfc_flux_spec.meta mode change 100755 => 100644 physics/set_soilveg.f mode change 100755 => 100644 physics/set_soilveg_ruc.F90 mode change 100755 => 100644 physics/sfc_cice.f mode change 100755 => 100644 physics/sfc_cice.meta mode change 100755 => 100644 physics/sfc_diag.f mode change 100755 => 100644 physics/sfc_diag.meta mode change 100755 => 100644 physics/sfc_diag_post.F90 mode change 100755 => 100644 physics/sfc_diag_post.meta mode change 100755 => 100644 physics/sfc_diff.f mode change 100755 => 100644 physics/sfc_diff.meta mode change 100755 => 100644 physics/sfc_drv.f mode change 100755 => 100644 physics/sfc_drv.meta mode change 100755 => 100644 physics/sfc_drv_ruc.F90 mode change 100755 => 100644 physics/sfc_drv_ruc.meta mode change 100755 => 100644 physics/sfc_noahmp_drv.meta mode change 100755 => 100644 physics/sfc_nst.f mode change 100755 => 100644 physics/sfc_nst.meta mode change 100755 => 100644 physics/sfc_ocean.F mode change 100755 => 100644 physics/sfc_ocean.meta mode change 100755 => 100644 physics/sfc_sice.f mode change 100755 => 100644 physics/sfc_sice.meta mode change 100755 => 100644 physics/sfcsub.F mode change 100755 => 100644 physics/sflx.f mode change 100755 => 100644 physics/shinhongvdif.F90 mode change 100755 => 100644 physics/shinhongvdif.meta mode change 100755 => 100644 physics/surface_perturbation.F90 mode change 100755 => 100644 physics/tridi.f mode change 100755 => 100644 physics/ugwp_driver_v0.F mode change 100755 => 100644 physics/wv_saturation.F mode change 100755 => 100644 physics/ysuvdif.F90 mode change 100755 => 100644 physics/ysuvdif.meta diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100755 new mode 100644 diff --git a/CODEOWNERS b/CODEOWNERS old mode 100755 new mode 100644 diff --git a/LICENSE b/LICENSE old mode 100755 new mode 100644 diff --git a/README.md b/README.md old mode 100755 new mode 100644 diff --git a/physics/GFDL_parse_tracers.F90 b/physics/GFDL_parse_tracers.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_DCNV_generic.F90 b/physics/GFS_DCNV_generic.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_DCNV_generic.meta b/physics/GFS_DCNV_generic.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_GWD_generic.F90 b/physics/GFS_GWD_generic.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_GWD_generic.meta b/physics/GFS_GWD_generic.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_MP_generic.F90 b/physics/GFS_MP_generic.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_MP_generic.meta b/physics/GFS_MP_generic.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_PBL_generic.F90 b/physics/GFS_PBL_generic.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_PBL_generic.meta b/physics/GFS_PBL_generic.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_SCNV_generic.F90 b/physics/GFS_SCNV_generic.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_SCNV_generic.meta b/physics/GFS_SCNV_generic.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_debug.F90 b/physics/GFS_debug.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_debug.meta b/physics/GFS_debug.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_phys_time_vary.fv3.F90 b/physics/GFS_phys_time_vary.fv3.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_phys_time_vary.fv3.meta b/physics/GFS_phys_time_vary.fv3.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_phys_time_vary.scm.F90 b/physics/GFS_phys_time_vary.scm.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_phys_time_vary.scm.meta b/physics/GFS_phys_time_vary.scm.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_rad_time_vary.fv3.F90 b/physics/GFS_rad_time_vary.fv3.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_rad_time_vary.fv3.meta b/physics/GFS_rad_time_vary.fv3.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_rad_time_vary.scm.F90 b/physics/GFS_rad_time_vary.scm.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_rad_time_vary.scm.meta b/physics/GFS_rad_time_vary.scm.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_rrtmg_post.F90 b/physics/GFS_rrtmg_post.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_rrtmg_post.meta b/physics/GFS_rrtmg_post.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_rrtmg_pre.F90 b/physics/GFS_rrtmg_pre.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_rrtmg_pre.meta b/physics/GFS_rrtmg_pre.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_rrtmg_setup.F90 b/physics/GFS_rrtmg_setup.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_rrtmg_setup.meta b/physics/GFS_rrtmg_setup.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_stochastics.F90 b/physics/GFS_stochastics.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_stochastics.meta b/physics/GFS_stochastics.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_suite_interstitial.F90 b/physics/GFS_suite_interstitial.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_suite_interstitial.meta b/physics/GFS_suite_interstitial.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_surface_composites.F90 b/physics/GFS_surface_composites.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_surface_composites.meta b/physics/GFS_surface_composites.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_surface_generic.F90 b/physics/GFS_surface_generic.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_surface_generic.meta b/physics/GFS_surface_generic.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_surface_loop_control.F90 b/physics/GFS_surface_loop_control.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_surface_loop_control.meta b/physics/GFS_surface_loop_control.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_time_vary_pre.fv3.F90 b/physics/GFS_time_vary_pre.fv3.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_time_vary_pre.fv3.meta b/physics/GFS_time_vary_pre.fv3.meta old mode 100755 new mode 100644 diff --git a/physics/GFS_time_vary_pre.scm.F90 b/physics/GFS_time_vary_pre.scm.F90 old mode 100755 new mode 100644 diff --git a/physics/GFS_time_vary_pre.scm.meta b/physics/GFS_time_vary_pre.scm.meta old mode 100755 new mode 100644 diff --git a/physics/aer_cloud.F b/physics/aer_cloud.F old mode 100755 new mode 100644 diff --git a/physics/aerclm_def.F b/physics/aerclm_def.F old mode 100755 new mode 100644 diff --git a/physics/aerinterp.F90 b/physics/aerinterp.F90 old mode 100755 new mode 100644 diff --git a/physics/calpreciptype.f90 b/physics/calpreciptype.f90 old mode 100755 new mode 100644 diff --git a/physics/cires_orowam2017.f b/physics/cires_orowam2017.f old mode 100755 new mode 100644 diff --git a/physics/cires_ugwp.F90 b/physics/cires_ugwp.F90 old mode 100755 new mode 100644 diff --git a/physics/cires_ugwp.meta b/physics/cires_ugwp.meta old mode 100755 new mode 100644 diff --git a/physics/cires_ugwp_initialize.F90 b/physics/cires_ugwp_initialize.F90 old mode 100755 new mode 100644 diff --git a/physics/cires_ugwp_module.F90 b/physics/cires_ugwp_module.F90 old mode 100755 new mode 100644 diff --git a/physics/cires_ugwp_post.meta b/physics/cires_ugwp_post.meta old mode 100755 new mode 100644 diff --git a/physics/cires_ugwp_triggers.F90 b/physics/cires_ugwp_triggers.F90 old mode 100755 new mode 100644 diff --git a/physics/cldmacro.F b/physics/cldmacro.F old mode 100755 new mode 100644 diff --git a/physics/cldwat2m_micro.F b/physics/cldwat2m_micro.F old mode 100755 new mode 100644 diff --git a/physics/cnvc90.f b/physics/cnvc90.f old mode 100755 new mode 100644 diff --git a/physics/cnvc90.meta b/physics/cnvc90.meta old mode 100755 new mode 100644 diff --git a/physics/cs_conv.F90 b/physics/cs_conv.F90 old mode 100755 new mode 100644 diff --git a/physics/cs_conv.meta b/physics/cs_conv.meta old mode 100755 new mode 100644 diff --git a/physics/cs_conv_aw_adj.F90 b/physics/cs_conv_aw_adj.F90 old mode 100755 new mode 100644 diff --git a/physics/cs_conv_aw_adj.meta b/physics/cs_conv_aw_adj.meta old mode 100755 new mode 100644 diff --git a/physics/cu_gf_deep.F90 b/physics/cu_gf_deep.F90 old mode 100755 new mode 100644 diff --git a/physics/cu_gf_driver.F90 b/physics/cu_gf_driver.F90 old mode 100755 new mode 100644 diff --git a/physics/cu_gf_driver.meta b/physics/cu_gf_driver.meta old mode 100755 new mode 100644 diff --git a/physics/cu_gf_driver_post.F90 b/physics/cu_gf_driver_post.F90 old mode 100755 new mode 100644 diff --git a/physics/cu_gf_driver_post.meta b/physics/cu_gf_driver_post.meta old mode 100755 new mode 100644 diff --git a/physics/cu_gf_driver_pre.F90 b/physics/cu_gf_driver_pre.F90 old mode 100755 new mode 100644 diff --git a/physics/cu_gf_driver_pre.meta b/physics/cu_gf_driver_pre.meta old mode 100755 new mode 100644 diff --git a/physics/cu_gf_sh.F90 b/physics/cu_gf_sh.F90 old mode 100755 new mode 100644 diff --git a/physics/cu_ntiedtke.F90 b/physics/cu_ntiedtke.F90 old mode 100755 new mode 100644 diff --git a/physics/cu_ntiedtke.meta b/physics/cu_ntiedtke.meta old mode 100755 new mode 100644 diff --git a/physics/cu_ntiedtke_post.F90 b/physics/cu_ntiedtke_post.F90 old mode 100755 new mode 100644 diff --git a/physics/cu_ntiedtke_post.meta b/physics/cu_ntiedtke_post.meta old mode 100755 new mode 100644 diff --git a/physics/cu_ntiedtke_pre.F90 b/physics/cu_ntiedtke_pre.F90 old mode 100755 new mode 100644 diff --git a/physics/cu_ntiedtke_pre.meta b/physics/cu_ntiedtke_pre.meta old mode 100755 new mode 100644 diff --git a/physics/date_def.f b/physics/date_def.f old mode 100755 new mode 100644 diff --git a/physics/dcyc2.f b/physics/dcyc2.f old mode 100755 new mode 100644 diff --git a/physics/dcyc2.meta b/physics/dcyc2.meta old mode 100755 new mode 100644 diff --git a/physics/docs/ccppv4_doxyfile b/physics/docs/ccppv4_doxyfile old mode 100644 new mode 100755 diff --git a/physics/docs/ccppv5_doxyfile b/physics/docs/ccppv5_doxyfile old mode 100644 new mode 100755 diff --git a/physics/docs/img/FV3_structure.png b/physics/docs/img/FV3_structure.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/GFS_gwdc.png b/physics/docs/img/GFS_gwdc.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/GFS_sice_wonton2000_fig1.png b/physics/docs/img/GFS_sice_wonton2000_fig1.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/GFS_stochy_spread.png b/physics/docs/img/GFS_stochy_spread.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/GFS_zhaocarr_schematic.png b/physics/docs/img/GFS_zhaocarr_schematic.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/GSD_thompson.png b/physics/docs/img/GSD_thompson.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/MG3_MP_diagram.png b/physics/docs/img/MG3_MP_diagram.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/MYNN-EDMF_call_order.png b/physics/docs/img/MYNN-EDMF_call_order.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/NSST.png b/physics/docs/img/NSST.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/NSST_schematic.png b/physics/docs/img/NSST_schematic.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/Noah_LA_interaction.png b/physics/docs/img/Noah_LA_interaction.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/dtc_logo.png b/physics/docs/img/dtc_logo.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/gfdl_cloud_mp_diagram.png b/physics/docs/img/gfdl_cloud_mp_diagram.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/land_dataset.png b/physics/docs/img/land_dataset.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/precpd-micop.png b/physics/docs/img/precpd-micop.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/rad_gas_AGGI.png b/physics/docs/img/rad_gas_AGGI.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/roughness_length_fig1.png b/physics/docs/img/roughness_length_fig1.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/roughness_length_fig2.png b/physics/docs/img/roughness_length_fig2.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/ruc_lsm_frozen_precip.png b/physics/docs/img/ruc_lsm_frozen_precip.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/ruc_lsm_heterogeneity.png b/physics/docs/img/ruc_lsm_heterogeneity.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/ruc_lsm_mosaic.png b/physics/docs/img/ruc_lsm_mosaic.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/ruc_lsm_veg_soil.png b/physics/docs/img/ruc_lsm_veg_soil.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/schematic_Rad_mod.png b/physics/docs/img/schematic_Rad_mod.png old mode 100755 new mode 100644 diff --git a/physics/docs/img/schematic_sice.png b/physics/docs/img/schematic_sice.png old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/CPT_CSAW.txt b/physics/docs/pdftxt/CPT_CSAW.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/CPT_MG3.txt b/physics/docs/pdftxt/CPT_MG3.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/CPT_adv_suite.txt b/physics/docs/pdftxt/CPT_adv_suite.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFDL_cloud.txt b/physics/docs/pdftxt/GFDL_cloud.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_CALPRECIPTYPE.txt b/physics/docs/pdftxt/GFS_CALPRECIPTYPE.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_GWDC.txt b/physics/docs/pdftxt/GFS_GWDC.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_GWDPS.txt b/physics/docs/pdftxt/GFS_GWDPS.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_H2OPHYS.txt b/physics/docs/pdftxt/GFS_H2OPHYS.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_HEDMF.txt b/physics/docs/pdftxt/GFS_HEDMF.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_NOAH.txt b/physics/docs/pdftxt/GFS_NOAH.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_NSST.txt b/physics/docs/pdftxt/GFS_NSST.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_OZPHYS.txt b/physics/docs/pdftxt/GFS_OZPHYS.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_RAYLEIGH.txt b/physics/docs/pdftxt/GFS_RAYLEIGH.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_RRTMG.txt b/physics/docs/pdftxt/GFS_RRTMG.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_SAMF.txt b/physics/docs/pdftxt/GFS_SAMF.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_SAMFdeep.txt b/physics/docs/pdftxt/GFS_SAMFdeep.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_SAMFshal.txt b/physics/docs/pdftxt/GFS_SAMFshal.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_SATMEDMF.txt b/physics/docs/pdftxt/GFS_SATMEDMF.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_SFCLYR.txt b/physics/docs/pdftxt/GFS_SFCLYR.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_SFCSICE.txt b/physics/docs/pdftxt/GFS_SFCSICE.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_STOCHY_PHYS.txt b/physics/docs/pdftxt/GFS_STOCHY_PHYS.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_STOCHY_PHYS.txt.save b/physics/docs/pdftxt/GFS_STOCHY_PHYS.txt.save old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_SURFACE_PERT.txt b/physics/docs/pdftxt/GFS_SURFACE_PERT.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFS_ZHAOC.txt b/physics/docs/pdftxt/GFS_ZHAOC.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFSphys_namelist.txt b/physics/docs/pdftxt/GFSphys_namelist.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFSv14_suite.txt b/physics/docs/pdftxt/GFSv14_suite.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFSv15_suite.txt b/physics/docs/pdftxt/GFSv15_suite.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt b/physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GSD_CU_GF_deep.txt b/physics/docs/pdftxt/GSD_CU_GF_deep.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GSD_MYNN_EDMF.txt b/physics/docs/pdftxt/GSD_MYNN_EDMF.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GSD_RUCLSM.txt b/physics/docs/pdftxt/GSD_RUCLSM.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GSD_THOMPSON.txt b/physics/docs/pdftxt/GSD_THOMPSON.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/GSD_adv_suite.txt b/physics/docs/pdftxt/GSD_adv_suite.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/MG_double.txt b/physics/docs/pdftxt/MG_double.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/all_shemes_list.txt b/physics/docs/pdftxt/all_shemes_list.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/all_shemes_list.txt.FV3 b/physics/docs/pdftxt/all_shemes_list.txt.FV3 old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/code_overview.txt b/physics/docs/pdftxt/code_overview.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/code_overview.txt.Aug17 b/physics/docs/pdftxt/code_overview.txt.Aug17 old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/mainpage.txt.Aug17 b/physics/docs/pdftxt/mainpage.txt.Aug17 old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/rad_cld.txt b/physics/docs/pdftxt/rad_cld.txt old mode 100755 new mode 100644 diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt old mode 100755 new mode 100644 diff --git a/physics/drag_suite.F90 b/physics/drag_suite.F90 old mode 100755 new mode 100644 diff --git a/physics/drag_suite.meta b/physics/drag_suite.meta old mode 100755 new mode 100644 diff --git a/physics/funcphys.f90 b/physics/funcphys.f90 old mode 100755 new mode 100644 diff --git a/physics/gcm_shoc.F90 b/physics/gcm_shoc.F90 old mode 100755 new mode 100644 diff --git a/physics/gcm_shoc.meta b/physics/gcm_shoc.meta old mode 100755 new mode 100644 diff --git a/physics/gcycle.F90 b/physics/gcycle.F90 old mode 100755 new mode 100644 diff --git a/physics/get_prs_fv3.F90 b/physics/get_prs_fv3.F90 old mode 100755 new mode 100644 diff --git a/physics/get_prs_fv3.meta b/physics/get_prs_fv3.meta old mode 100755 new mode 100644 diff --git a/physics/gfdl_cloud_microphys.F90 b/physics/gfdl_cloud_microphys.F90 old mode 100755 new mode 100644 diff --git a/physics/gfdl_cloud_microphys.meta b/physics/gfdl_cloud_microphys.meta old mode 100755 new mode 100644 diff --git a/physics/gfdl_fv_sat_adj.F90 b/physics/gfdl_fv_sat_adj.F90 old mode 100755 new mode 100644 diff --git a/physics/gfdl_fv_sat_adj.meta b/physics/gfdl_fv_sat_adj.meta old mode 100755 new mode 100644 diff --git a/physics/gfs_phy_tracer_config.F b/physics/gfs_phy_tracer_config.F old mode 100755 new mode 100644 diff --git a/physics/gocart_tracer_config_stub.f b/physics/gocart_tracer_config_stub.f old mode 100755 new mode 100644 diff --git a/physics/gscond.f b/physics/gscond.f old mode 100755 new mode 100644 diff --git a/physics/gscond.meta b/physics/gscond.meta old mode 100755 new mode 100644 diff --git a/physics/gwdc.f b/physics/gwdc.f old mode 100755 new mode 100644 diff --git a/physics/gwdc.meta b/physics/gwdc.meta old mode 100755 new mode 100644 diff --git a/physics/gwdps.f b/physics/gwdps.f old mode 100755 new mode 100644 diff --git a/physics/gwdps.meta b/physics/gwdps.meta old mode 100755 new mode 100644 diff --git a/physics/h2o_def.f b/physics/h2o_def.f old mode 100755 new mode 100644 diff --git a/physics/h2ointerp.f90 b/physics/h2ointerp.f90 old mode 100755 new mode 100644 diff --git a/physics/h2ophys.f b/physics/h2ophys.f old mode 100755 new mode 100644 diff --git a/physics/h2ophys.meta b/physics/h2ophys.meta old mode 100755 new mode 100644 diff --git a/physics/iccn_def.F b/physics/iccn_def.F old mode 100755 new mode 100644 diff --git a/physics/iccninterp.F90 b/physics/iccninterp.F90 old mode 100755 new mode 100644 diff --git a/physics/iounitdef.f b/physics/iounitdef.f old mode 100755 new mode 100644 diff --git a/physics/m_micro.F90 b/physics/m_micro.F90 old mode 100755 new mode 100644 diff --git a/physics/m_micro.meta b/physics/m_micro.meta old mode 100755 new mode 100644 diff --git a/physics/m_micro_interstitial.F90 b/physics/m_micro_interstitial.F90 old mode 100755 new mode 100644 diff --git a/physics/m_micro_interstitial.meta b/physics/m_micro_interstitial.meta old mode 100755 new mode 100644 diff --git a/physics/machine.F b/physics/machine.F old mode 100755 new mode 100644 diff --git a/physics/machine.meta b/physics/machine.meta old mode 100755 new mode 100644 diff --git a/physics/maximum_hourly_diagnostics.F90 b/physics/maximum_hourly_diagnostics.F90 old mode 100755 new mode 100644 diff --git a/physics/maximum_hourly_diagnostics.meta b/physics/maximum_hourly_diagnostics.meta old mode 100755 new mode 100644 diff --git a/physics/mersenne_twister.f b/physics/mersenne_twister.f old mode 100755 new mode 100644 diff --git a/physics/mfpbl.f b/physics/mfpbl.f old mode 100755 new mode 100644 diff --git a/physics/mfpblt.f b/physics/mfpblt.f old mode 100755 new mode 100644 diff --git a/physics/mfscu.f b/physics/mfscu.f old mode 100755 new mode 100644 diff --git a/physics/micro_mg2_0.F90 b/physics/micro_mg2_0.F90 old mode 100755 new mode 100644 diff --git a/physics/micro_mg3_0.F90 b/physics/micro_mg3_0.F90 old mode 100755 new mode 100644 diff --git a/physics/micro_mg_utils.F90 b/physics/micro_mg_utils.F90 old mode 100755 new mode 100644 diff --git a/physics/module_MYJPBL_wrapper.F90 b/physics/module_MYJPBL_wrapper.F90 old mode 100755 new mode 100644 diff --git a/physics/module_MYJPBL_wrapper.meta b/physics/module_MYJPBL_wrapper.meta old mode 100755 new mode 100644 diff --git a/physics/module_MYJSFC_wrapper.F90 b/physics/module_MYJSFC_wrapper.F90 old mode 100755 new mode 100644 diff --git a/physics/module_MYJSFC_wrapper.meta b/physics/module_MYJSFC_wrapper.meta old mode 100755 new mode 100644 diff --git a/physics/module_MYNNPBL_wrapper.F90 b/physics/module_MYNNPBL_wrapper.F90 old mode 100755 new mode 100644 diff --git a/physics/module_MYNNPBL_wrapper.meta b/physics/module_MYNNPBL_wrapper.meta old mode 100755 new mode 100644 diff --git a/physics/module_MYNNSFC_wrapper.F90 b/physics/module_MYNNSFC_wrapper.F90 old mode 100755 new mode 100644 diff --git a/physics/module_MYNNSFC_wrapper.meta b/physics/module_MYNNSFC_wrapper.meta old mode 100755 new mode 100644 diff --git a/physics/module_SGSCloud_RadPost.meta b/physics/module_SGSCloud_RadPost.meta old mode 100755 new mode 100644 diff --git a/physics/module_bfmicrophysics.f b/physics/module_bfmicrophysics.f old mode 100755 new mode 100644 diff --git a/physics/module_bl_mynn.F90 b/physics/module_bl_mynn.F90 old mode 100755 new mode 100644 diff --git a/physics/module_gfdl_cloud_microphys.F90 b/physics/module_gfdl_cloud_microphys.F90 old mode 100755 new mode 100644 diff --git a/physics/module_mp_radar.F90 b/physics/module_mp_radar.F90 old mode 100755 new mode 100644 diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 old mode 100755 new mode 100644 diff --git a/physics/module_mp_thompson_make_number_concentrations.F90 b/physics/module_mp_thompson_make_number_concentrations.F90 old mode 100755 new mode 100644 diff --git a/physics/module_nst_model.f90 b/physics/module_nst_model.f90 old mode 100755 new mode 100644 diff --git a/physics/module_nst_parameters.f90 b/physics/module_nst_parameters.f90 old mode 100755 new mode 100644 diff --git a/physics/module_nst_water_prop.f90 b/physics/module_nst_water_prop.f90 old mode 100755 new mode 100644 diff --git a/physics/module_sf_mynn.F90 b/physics/module_sf_mynn.F90 old mode 100755 new mode 100644 diff --git a/physics/module_sf_ruclsm.F90 b/physics/module_sf_ruclsm.F90 old mode 100755 new mode 100644 diff --git a/physics/module_soil_pre.F90 b/physics/module_soil_pre.F90 old mode 100755 new mode 100644 diff --git a/physics/moninedmf.f b/physics/moninedmf.f old mode 100755 new mode 100644 diff --git a/physics/moninedmf.meta b/physics/moninedmf.meta old mode 100755 new mode 100644 diff --git a/physics/moninshoc.f b/physics/moninshoc.f old mode 100755 new mode 100644 diff --git a/physics/moninshoc.meta b/physics/moninshoc.meta old mode 100755 new mode 100644 diff --git a/physics/mp_thompson.F90 b/physics/mp_thompson.F90 old mode 100755 new mode 100644 diff --git a/physics/mp_thompson.meta b/physics/mp_thompson.meta old mode 100755 new mode 100644 diff --git a/physics/mp_thompson_post.F90 b/physics/mp_thompson_post.F90 old mode 100755 new mode 100644 diff --git a/physics/mp_thompson_post.meta b/physics/mp_thompson_post.meta old mode 100755 new mode 100644 diff --git a/physics/mp_thompson_pre.F90 b/physics/mp_thompson_pre.F90 old mode 100755 new mode 100644 diff --git a/physics/mp_thompson_pre.meta b/physics/mp_thompson_pre.meta old mode 100755 new mode 100644 diff --git a/physics/multi_gases.F90 b/physics/multi_gases.F90 old mode 100755 new mode 100644 diff --git a/physics/namelist_soilveg.f b/physics/namelist_soilveg.f old mode 100755 new mode 100644 diff --git a/physics/namelist_soilveg_ruc.F90 b/physics/namelist_soilveg_ruc.F90 old mode 100755 new mode 100644 diff --git a/physics/ozinterp.f90 b/physics/ozinterp.f90 old mode 100755 new mode 100644 diff --git a/physics/ozne_def.f b/physics/ozne_def.f old mode 100755 new mode 100644 diff --git a/physics/ozphys.f b/physics/ozphys.f old mode 100755 new mode 100644 diff --git a/physics/ozphys.meta b/physics/ozphys.meta old mode 100755 new mode 100644 diff --git a/physics/ozphys_2015.f b/physics/ozphys_2015.f old mode 100755 new mode 100644 diff --git a/physics/ozphys_2015.meta b/physics/ozphys_2015.meta old mode 100755 new mode 100644 diff --git a/physics/physcons.F90 b/physics/physcons.F90 old mode 100755 new mode 100644 diff --git a/physics/physparam.f b/physics/physparam.f old mode 100755 new mode 100644 diff --git a/physics/precpd.f b/physics/precpd.f old mode 100755 new mode 100644 diff --git a/physics/precpd.meta b/physics/precpd.meta old mode 100755 new mode 100644 diff --git a/physics/radcons.f90 b/physics/radcons.f90 old mode 100755 new mode 100644 diff --git a/physics/radiation_aerosols.f b/physics/radiation_aerosols.f old mode 100755 new mode 100644 diff --git a/physics/radiation_astronomy.f b/physics/radiation_astronomy.f old mode 100755 new mode 100644 diff --git a/physics/radiation_clouds.f b/physics/radiation_clouds.f old mode 100755 new mode 100644 diff --git a/physics/radiation_gases.f b/physics/radiation_gases.f old mode 100755 new mode 100644 diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f old mode 100755 new mode 100644 diff --git a/physics/radlw_datatb.f b/physics/radlw_datatb.f old mode 100755 new mode 100644 diff --git a/physics/radlw_main.F90 b/physics/radlw_main.F90 old mode 100755 new mode 100644 diff --git a/physics/radlw_main.meta b/physics/radlw_main.meta old mode 100755 new mode 100644 diff --git a/physics/radlw_param.f b/physics/radlw_param.f old mode 100755 new mode 100644 diff --git a/physics/radlw_param.meta b/physics/radlw_param.meta old mode 100755 new mode 100644 diff --git a/physics/radsw_datatb.f b/physics/radsw_datatb.f old mode 100755 new mode 100644 diff --git a/physics/radsw_main.F90 b/physics/radsw_main.F90 old mode 100755 new mode 100644 diff --git a/physics/radsw_main.meta b/physics/radsw_main.meta old mode 100755 new mode 100644 diff --git a/physics/radsw_param.f b/physics/radsw_param.f old mode 100755 new mode 100644 diff --git a/physics/radsw_param.meta b/physics/radsw_param.meta old mode 100755 new mode 100644 diff --git a/physics/rayleigh_damp.f b/physics/rayleigh_damp.f old mode 100755 new mode 100644 diff --git a/physics/rayleigh_damp.meta b/physics/rayleigh_damp.meta old mode 100755 new mode 100644 diff --git a/physics/rrtmg_lw_post.F90 b/physics/rrtmg_lw_post.F90 old mode 100755 new mode 100644 diff --git a/physics/rrtmg_lw_post.meta b/physics/rrtmg_lw_post.meta old mode 100755 new mode 100644 diff --git a/physics/rrtmg_lw_pre.F90 b/physics/rrtmg_lw_pre.F90 old mode 100755 new mode 100644 diff --git a/physics/rrtmg_lw_pre.meta b/physics/rrtmg_lw_pre.meta old mode 100755 new mode 100644 diff --git a/physics/rrtmg_sw_post.F90 b/physics/rrtmg_sw_post.F90 old mode 100755 new mode 100644 diff --git a/physics/rrtmg_sw_post.meta b/physics/rrtmg_sw_post.meta old mode 100755 new mode 100644 diff --git a/physics/rrtmg_sw_pre.F90 b/physics/rrtmg_sw_pre.F90 old mode 100755 new mode 100644 diff --git a/physics/rrtmg_sw_pre.meta b/physics/rrtmg_sw_pre.meta old mode 100755 new mode 100644 diff --git a/physics/samfaerosols.F b/physics/samfaerosols.F old mode 100755 new mode 100644 diff --git a/physics/samfdeepcnv.f b/physics/samfdeepcnv.f old mode 100755 new mode 100644 diff --git a/physics/samfdeepcnv.meta b/physics/samfdeepcnv.meta old mode 100755 new mode 100644 diff --git a/physics/samfshalcnv.f b/physics/samfshalcnv.f old mode 100755 new mode 100644 diff --git a/physics/samfshalcnv.meta b/physics/samfshalcnv.meta old mode 100755 new mode 100644 diff --git a/physics/satmedmfvdif.F b/physics/satmedmfvdif.F old mode 100755 new mode 100644 diff --git a/physics/satmedmfvdif.meta b/physics/satmedmfvdif.meta old mode 100755 new mode 100644 diff --git a/physics/scm_sfc_flux_spec.F90 b/physics/scm_sfc_flux_spec.F90 old mode 100755 new mode 100644 diff --git a/physics/scm_sfc_flux_spec.meta b/physics/scm_sfc_flux_spec.meta old mode 100755 new mode 100644 diff --git a/physics/set_soilveg.f b/physics/set_soilveg.f old mode 100755 new mode 100644 diff --git a/physics/set_soilveg_ruc.F90 b/physics/set_soilveg_ruc.F90 old mode 100755 new mode 100644 diff --git a/physics/sfc_cice.f b/physics/sfc_cice.f old mode 100755 new mode 100644 diff --git a/physics/sfc_cice.meta b/physics/sfc_cice.meta old mode 100755 new mode 100644 diff --git a/physics/sfc_diag.f b/physics/sfc_diag.f old mode 100755 new mode 100644 diff --git a/physics/sfc_diag.meta b/physics/sfc_diag.meta old mode 100755 new mode 100644 diff --git a/physics/sfc_diag_post.F90 b/physics/sfc_diag_post.F90 old mode 100755 new mode 100644 diff --git a/physics/sfc_diag_post.meta b/physics/sfc_diag_post.meta old mode 100755 new mode 100644 diff --git a/physics/sfc_diff.f b/physics/sfc_diff.f old mode 100755 new mode 100644 diff --git a/physics/sfc_diff.meta b/physics/sfc_diff.meta old mode 100755 new mode 100644 diff --git a/physics/sfc_drv.f b/physics/sfc_drv.f old mode 100755 new mode 100644 diff --git a/physics/sfc_drv.meta b/physics/sfc_drv.meta old mode 100755 new mode 100644 diff --git a/physics/sfc_drv_ruc.F90 b/physics/sfc_drv_ruc.F90 old mode 100755 new mode 100644 diff --git a/physics/sfc_drv_ruc.meta b/physics/sfc_drv_ruc.meta old mode 100755 new mode 100644 diff --git a/physics/sfc_noahmp_drv.meta b/physics/sfc_noahmp_drv.meta old mode 100755 new mode 100644 diff --git a/physics/sfc_nst.f b/physics/sfc_nst.f old mode 100755 new mode 100644 diff --git a/physics/sfc_nst.meta b/physics/sfc_nst.meta old mode 100755 new mode 100644 diff --git a/physics/sfc_ocean.F b/physics/sfc_ocean.F old mode 100755 new mode 100644 diff --git a/physics/sfc_ocean.meta b/physics/sfc_ocean.meta old mode 100755 new mode 100644 diff --git a/physics/sfc_sice.f b/physics/sfc_sice.f old mode 100755 new mode 100644 diff --git a/physics/sfc_sice.meta b/physics/sfc_sice.meta old mode 100755 new mode 100644 diff --git a/physics/sfcsub.F b/physics/sfcsub.F old mode 100755 new mode 100644 diff --git a/physics/sflx.f b/physics/sflx.f old mode 100755 new mode 100644 diff --git a/physics/shinhongvdif.F90 b/physics/shinhongvdif.F90 old mode 100755 new mode 100644 diff --git a/physics/shinhongvdif.meta b/physics/shinhongvdif.meta old mode 100755 new mode 100644 diff --git a/physics/surface_perturbation.F90 b/physics/surface_perturbation.F90 old mode 100755 new mode 100644 diff --git a/physics/tridi.f b/physics/tridi.f old mode 100755 new mode 100644 diff --git a/physics/ugwp_driver_v0.F b/physics/ugwp_driver_v0.F old mode 100755 new mode 100644 diff --git a/physics/wv_saturation.F b/physics/wv_saturation.F old mode 100755 new mode 100644 diff --git a/physics/ysuvdif.F90 b/physics/ysuvdif.F90 old mode 100755 new mode 100644 diff --git a/physics/ysuvdif.meta b/physics/ysuvdif.meta old mode 100755 new mode 100644 From fd5428aaeac8b5acf3e22dc8f5d243629912265c Mon Sep 17 00:00:00 2001 From: Xiaqiong Zhou Date: Tue, 27 Jul 2021 16:37:58 +0000 Subject: [PATCH 09/98] Change file permission --- physics/docs/ccpp_dox | 0 physics/docs/ccpp_dox_extra_style.css | 0 physics/docs/ccpp_dox_layout.xml | 0 physics/docs/ccpp_doxyfile | 0 physics/docs/ccpplatex_dox | 0 physics/docs/ccppv3_doxyfile | 0 physics/docs/ccppv3_fv3_doxyfile | 0 physics/docs/ccppv4_doxyfile | 0 physics/docs/ccppv5_doxyfile | 0 physics/docs/library.bib | 0 10 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 physics/docs/ccpp_dox mode change 100755 => 100644 physics/docs/ccpp_dox_extra_style.css mode change 100755 => 100644 physics/docs/ccpp_dox_layout.xml mode change 100755 => 100644 physics/docs/ccpp_doxyfile mode change 100755 => 100644 physics/docs/ccpplatex_dox mode change 100755 => 100644 physics/docs/ccppv3_doxyfile mode change 100755 => 100644 physics/docs/ccppv3_fv3_doxyfile mode change 100755 => 100644 physics/docs/ccppv4_doxyfile mode change 100755 => 100644 physics/docs/ccppv5_doxyfile mode change 100755 => 100644 physics/docs/library.bib diff --git a/physics/docs/ccpp_dox b/physics/docs/ccpp_dox old mode 100755 new mode 100644 diff --git a/physics/docs/ccpp_dox_extra_style.css b/physics/docs/ccpp_dox_extra_style.css old mode 100755 new mode 100644 diff --git a/physics/docs/ccpp_dox_layout.xml b/physics/docs/ccpp_dox_layout.xml old mode 100755 new mode 100644 diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile old mode 100755 new mode 100644 diff --git a/physics/docs/ccpplatex_dox b/physics/docs/ccpplatex_dox old mode 100755 new mode 100644 diff --git a/physics/docs/ccppv3_doxyfile b/physics/docs/ccppv3_doxyfile old mode 100755 new mode 100644 diff --git a/physics/docs/ccppv3_fv3_doxyfile b/physics/docs/ccppv3_fv3_doxyfile old mode 100755 new mode 100644 diff --git a/physics/docs/ccppv4_doxyfile b/physics/docs/ccppv4_doxyfile old mode 100755 new mode 100644 diff --git a/physics/docs/ccppv5_doxyfile b/physics/docs/ccppv5_doxyfile old mode 100755 new mode 100644 diff --git a/physics/docs/library.bib b/physics/docs/library.bib old mode 100755 new mode 100644 From ac5fe1aa9373ffb40198b05246e1806108a1914b Mon Sep 17 00:00:00 2001 From: Xiaqiong Zhou Date: Tue, 27 Jul 2021 16:44:13 +0000 Subject: [PATCH 10/98] Change file permission --- .gitignore | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 .gitignore diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 From 6a06c204a3a5b07731112e65d9daf8dcfbb70176 Mon Sep 17 00:00:00 2001 From: XiaqiongZhou-NOAA <48254930+XiaqiongZhou-NOAA@users.noreply.github.com> Date: Wed, 28 Jul 2021 11:15:52 -0400 Subject: [PATCH 11/98] Update cires_ugwp.F90 Change it back to the original. --- physics/cires_ugwp.F90 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/physics/cires_ugwp.F90 b/physics/cires_ugwp.F90 index bb8347b17..6efce96f5 100644 --- a/physics/cires_ugwp.F90 +++ b/physics/cires_ugwp.F90 @@ -53,8 +53,7 @@ subroutine cires_ugwp_init (me, master, nlunit, input_nml_file, logunit, & integer, intent (in) :: lonr integer, intent (in) :: levs integer, intent (in) :: latr -!SK real(kind=kind_phys), intent (in) :: ak(:), bk(:) - real(kind=kind_phys), intent (in) :: ak(levs+1), bk(levs+1) + real(kind=kind_phys), intent (in) :: ak(:), bk(:) real(kind=kind_phys), intent (in) :: dtp real(kind=kind_phys), intent (in) :: cdmbgwd(:), cgwf(:) ! "scaling" controls for "old" GFS-GW schemes real(kind=kind_phys), intent (in) :: pa_rf_in, tau_rf_in From 1a778352ccc16afd6e0a0c4a99dfd0e5ccd007f2 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Wed, 18 Aug 2021 18:41:17 +0000 Subject: [PATCH 12/98] minor change in ras --- physics/rascnv.F90 | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/physics/rascnv.F90 b/physics/rascnv.F90 index b23b04e9a..a2574b25f 100644 --- a/physics/rascnv.F90 +++ b/physics/rascnv.F90 @@ -353,11 +353,11 @@ subroutine rascnv_run(IM, k, itc, ntc, ntr, dt, dtf & &, cnv_dqldt, clcn & &, cnv_fice, cnv_ndrop & &, cnv_nice, cf_upi - real(kind=kind_phys), dimension(:) , intent(in) :: area, cdrag + real(kind=kind_phys), dimension(:) , intent(in) :: area, cdrag real(kind=kind_phys), dimension(:) , intent(out) :: rainc, ddvel - real(kind=kind_phys), dimension(:,:), intent(in) :: rannum + real(kind=kind_phys), dimension(:,:), intent(in) :: rannum real(kind=kind_phys), intent(inout) :: ccin(:,:,:) - real(kind=kind_phys), intent(in) :: dt, dtf + real(kind=kind_phys), intent(in) :: dt, dtf ! ! Added for aerosol scavenging for GOCART ! @@ -373,7 +373,8 @@ subroutine rascnv_run(IM, k, itc, ntc, ntr, dt, dtf & real(kind=kind_phys), dimension(k) :: toi, qoi, tcu, qcu & &, pcu, clw, cli, qii, qli& &, phi_l, prsm,psjm & - &, alfinq, alfind, rhc_l & + &, alfind, rhc_l & +! &, alfinq, alfind, rhc_l & &, qoi_l, qli_l, qii_l real(kind=kind_phys), dimension(k+1) :: prs, psj, phi_h, flx, flxd From 3721df1561514a15b6141a6461d26a33472a3fa7 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Thu, 19 Aug 2021 18:00:56 +0000 Subject: [PATCH 13/98] a fix for slianl in sfcsub.F --- physics/sfcsub.F | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/physics/sfcsub.F b/physics/sfcsub.F index b0aefb858..53a907cc0 100644 --- a/physics/sfcsub.F +++ b/physics/sfcsub.F @@ -2019,11 +2019,13 @@ subroutine sfccycle(lugb,len,lsoil,sig1t,deltsfc & ! *,' tsffcs=',tsffcs(iprnt),' slianl=',slianl(iprnt) do i=1,len - if (sicanl(i) >= min_ice(i)) then - slianl(i) = 2.0_kind_io8 - else - slianl(i) = zero - sicanl(i) = zero + if (nint(slmskl(i)) /= 1) then + if (sicanl(i) >= min_ice(i)) then + slianl(i) = 2.0_kind_io8 + else + slianl(i) = zero + sicanl(i) = zero + endif endif enddo From 915ce6f87e0571b0feb1cc7675a540e4320a4460 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Sat, 21 Aug 2021 00:27:59 +0000 Subject: [PATCH 14/98] adding alternate cires*solv2 routine --- physics/cires_ugwpv1_solv2.F90 | 1033 +++++++++++++------------- physics/cires_ugwpv1_solv2.F90_mine | 1049 +++++++++++++++++++++++++++ physics/cires_ugwpv1_solv2.F90_orig | 1036 ++++++++++++++++++++++++++ 3 files changed, 2608 insertions(+), 510 deletions(-) create mode 100644 physics/cires_ugwpv1_solv2.F90_mine create mode 100644 physics/cires_ugwpv1_solv2.F90_orig diff --git a/physics/cires_ugwpv1_solv2.F90 b/physics/cires_ugwpv1_solv2.F90 index afd94ff5c..8f417ea1d 100644 --- a/physics/cires_ugwpv1_solv2.F90 +++ b/physics/cires_ugwpv1_solv2.F90 @@ -14,7 +14,7 @@ module cires_ugwpv1_solv2 subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & tau_ngw, tm , um, vm, qm, prsl, prsi, zmet, zmeti, prslk, & xlatd, sinlat, coslat, & - pdudt, pdvdt, pdtdt, dked, zngw) + pdudt, pdvdt, pdtdt, dked, zngw) ! !-------------------------------------------------------------------------------- ! nov 2015 alternative gw-solver for nggps-wam @@ -24,7 +24,7 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! oct 2020 Diagnostics of "tauabs, wrms, trms" is taken out ! -------------------------------------------------------------------------------- ! - use machine, only : kind_phys + use machine, only : kind_phys use cires_ugwpv1_module,only : krad, kvg, kion, ktg, iPr_ktgw, Pr_kdis, Pr_kvkt @@ -157,7 +157,8 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! real(kind=kind_phys) :: zdelp, zdelm, taud_min - real(kind=kind_phys) :: tvc, tvm, ptc, ptm + real(kind=kind_phys) :: tvc, tvm +! real(kind=kind_phys) :: tvc, tvm, ptc, ptm real(kind=kind_phys) :: umfp, umfm, umfc, ucrit3 real(kind=kind_phys) :: fmode, expdis, fdis real(kind=kind_phys) :: v_kzi, v_kzw, v_cdp, v_wdp, tx1, fcorsat, dzcrit @@ -181,85 +182,85 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & real(kind=kind_phys) :: dzmetm, dzmetp, dzmetf, bdif, bt_dif, apc, kturp real(kind=kind_phys) :: rstar, rstar2 - real(kind=kind_phys) :: snorm_ener, sigu2, flux_2_sig, ekin_norm - real(kind=kind_phys) :: taub_ch, sigu2_ch - real(kind=kind_phys) :: Pr_kdis_eff, mf_diss_heat, iPr_max - real(kind=kind_phys) :: exp_sponge, mi_sponge, gipr + real(kind=kind_phys) :: snorm_ener, sigu2, flux_2_sig, ekin_norm + real(kind=kind_phys) :: taub_ch, sigu2_ch + real(kind=kind_phys) :: Pr_kdis_eff, mf_diss_heat, iPr_max + real(kind=kind_phys) :: exp_sponge, mi_sponge, gipr !-------------------------------------------------------------------------- ! nslope3 = nslope + 3.0 - Pr_kdis_eff = gw_eff*pr_kdis - iPr_max = max(1.0, iPr_ktgw) - gipr = grav* Ipr_ktgw + Pr_kdis_eff = gw_eff*pr_kdis + iPr_max = max(1.0, iPr_ktgw) + gipr = grav* Ipr_ktgw ! ! test for input fields -! if (mpi_id == master .and. kdt < -2) then -! print *, im, levs, dtp, kdt, ' vay-solv2-v1' -! print *, minval(tm), maxval(tm), ' min-max-tm ' -! print *, minval(vm), maxval(vm), ' min-max-vm ' -! print *, minval(um), maxval(um), ' min-max-um ' -! print *, minval(qm), maxval(qm), ' min-max-qm ' -! print *, minval(prsl), maxval(prsl), ' min-max-Pmid ' -! print *, minval(prsi), maxval(prsi), ' min-max-Pint ' -! print *, minval(zmet), maxval(zmet), ' min-max-Zmid ' -! print *, minval(zmeti), maxval(zmeti), ' min-max-Zint ' -! print *, minval(prslk), maxval(prslk), ' min-max-Exner ' -! print *, minval(tau_ngw), maxval(tau_ngw), ' min-max-taungw ' -! print *, tau_min, ' tau_min ', tamp_mpa, ' tamp_mpa ' -! -! endif - - if (idebug_gwrms == 1) then - tauabs=0.0; wrms =0.0 ; trms =0.0 - endif +! if (mpi_id == master .and. kdt < -2) then +! print *, im, levs, dtp, kdt, ' vay-solv2-v1' +! print *, minval(tm), maxval(tm), ' min-max-tm ' +! print *, minval(vm), maxval(vm), ' min-max-vm ' +! print *, minval(um), maxval(um), ' min-max-um ' +! print *, minval(qm), maxval(qm), ' min-max-qm ' +! print *, minval(prsl), maxval(prsl), ' min-max-Pmid ' +! print *, minval(prsi), maxval(prsi), ' min-max-Pint ' +! print *, minval(zmet), maxval(zmet), ' min-max-Zmid ' +! print *, minval(zmeti), maxval(zmeti), ' min-max-Zint ' +! print *, minval(prslk), maxval(prslk), ' min-max-Exner ' +! print *, minval(tau_ngw), maxval(tau_ngw), ' min-max-taungw ' +! print *, tau_min, ' tau_min ', tamp_mpa, ' tamp_mpa ' +! +! endif + + if (idebug_gwrms == 1) then + tauabs = 0.0 ; wrms = 0.0 ; trms = 0.0 + endif - rci(:) = 1./zci(:) - rdci(:) = 1./zdci(:) + rci(:) = 1.0 / zci(:) + rdci(:) = 1.0 / zdci(:) - rdtp = 1./dtp - rdtp2 = 0.5*rdtp + rdtp = 1.0 / dtp + rdtp2 = 0.5 * rdtp - ksrc= max(ilaunch, 3) - km2 = ksrc - 2 - km1 = ksrc - 1 - kp1 = ksrc + 1 - ktop= levs+1 + ksrc = max(ilaunch, 3) + km2 = ksrc - 2 + km1 = ksrc - 1 + kp1 = ksrc + 1 + ktop = levs + 1 - suprf(ktop) = kion(levs) + suprf(ktop) = kion(levs) - do k=1,levs - suprf(k) = kion(k) ! approximate 1-st order damping with Fast super-RF of FV3 - pdvdt(:,k) = 0.0 - pdudt(:,k) = 0.0 - pdtdt(:,k) = 0.0 - dked(: ,k) = 0.0 - enddo + do k=1,levs + suprf(k) = kion(k) ! approximate 1-st order damping with Fast super-RF of FV3 + pdvdt(:,k) = 0.0 + pdudt(:,k) = 0.0 + pdtdt(:,k) = 0.0 + dked(: ,k) = 0.0 + enddo !----------------------------------------------------------- ! column-based j=1,im pjysics with 1D-arrays !----------------------------------------------------------- - DO j=1, im - jl =j - tx1 = omega2 * sinlat(j) *rv_kxw - cf1 = abs(tx1) - c2f2 = tx1 * tx1 - ucrit_max = max(ucrit, cf1) - ucrit3 = ucrit_max*ucrit_max*ucrit_max + DO j=1, im + jl = j + tx1 = omega2 * sinlat(j) *rv_kxw + cf1 = abs(tx1) + c2f2 = tx1 * tx1 + ucrit_max = max(ucrit, cf1) + ucrit3 = ucrit_max*ucrit_max*ucrit_max ! ! ngw-fluxes at all gridpoints (with tau_min at least) -! - aprsl(1:levs) = prsl(jl,1:levs) +! + aprsl(1:levs) = prsl(jl,1:levs) ! ! ksrc-define "aprsi(1:levs+1) redefine "ilaunch" ! do k=1, levs - if (aprsl(k) .lt. psrc ) exit - enddo - ilaunch = max(k-1, 3) - ksrc= max(ilaunch, 3) + if (aprsl(k) < psrc ) exit + enddo + ilaunch = max(k-1, 3) + ksrc = max(ilaunch, 3) - zngw(j) = zmet(j, ksrc) + zngw(j) = zmet(j, ksrc) km2 = ksrc - 2 km1 = ksrc - 1 @@ -267,338 +268,340 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & !=====ksrc - aum(1:levs) = um(jl,1:levs) - avm(1:levs) = vm(jl,1:levs) - atm(1:levs) = tm(jl,1:levs) - aqm(1:levs) = qm(jl,1:levs) - azmet(1:levs) = zmet(jl,1:levs) - aprsi(1:levs+1) = prsi(jl,1:levs+1) - azmeti(1:levs+1) = zmeti(jl,1:levs+1) + do k=1, levs + aum(k) = um(jl,k) + avm(k) = vm(jl,k) + atm(k) = tm(jl,k) + aqm(k) = qm(jl,k) + azmet(k) = zmet(jl,k) + aprsi(k) = prsi(jl,k) + azmeti(k) = zmeti(jl,k) + enddo + aprsi(levs+1) = prsi(jl,levs+1) + azmeti(levs+1) = zmeti(jl,levs+1) - rho_src = aprsl(ksrc)*rdi/atm(ksrc) - taub_ch = max(tau_ngw(jl), tau_min) - taub_src = taub_ch + rho_src = aprsl(ksrc)*rdi/atm(ksrc) + taub_ch = max(tau_ngw(jl), tau_min) + taub_src = taub_ch - sigu2 = taub_src/rho_src/v_kxw * zms - sig_u2az(1:nazd) = sigu2 + sigu2 = zms * taub_src / (rho_src*v_kxw) + sig_u2az(1:nazd) = sigu2 ! ! compute diffusion-based arrays km2:levs ! - do jk = km2, levs - dz_meti(jk) = azmeti(jk+1)-azmeti(jk) - dz_met(jk) = azmet(jk)-azmeti(jk-1) - enddo + do jk = km2, levs + dz_meti(jk) = azmeti(jk+1) - azmeti(jk) + dz_met(jk) = azmet(jk) - azmeti(jk-1) + enddo ! --------------------------------------------- ! interface mean flow parameters launch -> levs+1 ! --------------------------------------------- - do jk= km1,levs - tvc = atm(jk)*(1. +fv*aqm(jk)) - tvm = atm(jk-1)*(1. +fv*aqm(jk-1)) - ptc = tvc/ prslk(jl, jk) - ptm = tvm/prslk(jl,jk-1) -! - zthm = 2.0/(tvc+tvm) - rhp_wam = zthm*gor + do jk= km1,levs + tvc = atm(jk) * (1.0 + fv*aqm(jk)) + tvm = atm(jk-1) * (1.0 + fv*aqm(jk-1)) +! ptc = tvc / prslk(jl,jk) ! not used +! ptm = tvm / prslk(jl,jk-1) ! notused +! + zthm = 2.0 / (tvc+tvm) + rhp_wam = zthm*gor !interface - uint(jk) = 0.5*(aum(jk-1)+aum(jk)) - vint(jk) = 0.5*(avm(jk-1)+avm(jk)) - tint(jk) = 0.5*(tvc+tvm) - rhomid(jk) = aprsl(jk)*rdi/atm(jk) - rhoint(jk) = aprsi(jk)*rdi*zthm ! rho = p/(RTv) - zdelp = dz_meti(jk) ! >0 ...... dz-meters - v_zmet(jk) = 2.*zdelp ! 2*kzi*[Z_int(k+1)-Z_int(k)] - zdelm = 1./dz_met(jk) ! 1/dz ...... 1/meters + uint(jk) = 0.5*(aum(jk-1)+aum(jk)) + vint(jk) = 0.5*(avm(jk-1)+avm(jk)) + tint(jk) = 0.5*(tvc+tvm) + rhomid(jk) = aprsl(jk)*rdi/atm(jk) + rhoint(jk) = aprsi(jk)*rdi*zthm ! rho = p/(RTv) + zdelp = dz_meti(jk) ! >0 ...... dz-meters + v_zmet(jk) = zdelp + zdelp ! 2*kzi*[Z_int(k+1)-Z_int(k)] + zdelm = 1.0 / dz_met(jk) ! 1/dz ...... 1/meters ! -! bvf2 = grav2*zdelm*(ptc-ptm)/(ptc + ptm) ! N2=[g/PT]*(dPT/dz) +! bvf2 = grav2*zdelm*(ptc-ptm) / (ptc + ptm) ! N2=[g/PT]*(dPT/dz) ! - bn2(jk) = grav2cpd*zthm*(1.0+rcpdl*(tvc-tvm)*zdelm) - bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) - bn(jk) = sqrt(bn2(jk)) + bn2(jk) = grav2cpd*zthm*(1.0+rcpdl*(tvc-tvm)*zdelm) + bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) + bn(jk) = sqrt(bn2(jk)) - wrk3(jk)= 1./zdelp/rhomid(jk) ! 1/rho_mid(k)/[Z_int(k+1)-Z_int(k)] - irhodz_mid(jk) = rdtp*zdelp*rhomid(jk)/rho_src + wrk3(jk) = 1.0 / (zdelp*rhomid(jk)) ! 1/rho_mid(k)/[Z_int(k+1)-Z_int(k)] + irhodz_mid(jk) = rdtp*zdelp*rhomid(jk)/rho_src ! ! ! diagnostics -Kzz above PBL ! - uz = aum(jk) - aum(jk-1) - vz = avm(jk) - avm(jk-1) - shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm + uz = aum(jk) - aum(jk-1) + vz = avm(jk) - avm(jk-1) + shr2 = max(uz*uz+vz*vz, dw2min) * zdelm *zdelm - zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 - zgrow = exp(zmetk) - ritur = bn2(jk)/shr2 - kamp = sqrt(shr2)*sc2 *zgrow - w1 = 1./(1. + 5*ritur) - ktur= min(max(kamp * w1 * w1, dked_min), dked_max) - zmetk = azmet(jk)* rhp - vueff(jk) = ktur + kvg(jk) + zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 + zgrow = exp(zmetk) + ritur = bn2(jk) / shr2 + kamp = sqrt(shr2) * sc2 * zgrow + w1 = 1.0 / (1.0 + 5*ritur) + ktur = min(max(kamp * w1 * w1, dked_min), dked_max) + zmetk = azmet(jk)* rhp + vueff(jk) = ktur + kvg(jk) - akt(jk) = gipr/tvc - enddo + akt(jk) = gipr / tvc + enddo if (idebug_gwrms == 1) then - do jk= km1,levs - wrk1(jk) = rv_kxw/rhoint(jk) - wrk2(jk)= rgrav2*zthm*zthm*bn2(jk) ! dimension [K*K]*(c2/m2) + do jk= km1,levs + wrk1(jk) = rv_kxw/rhoint(jk) + wrk2(jk) = rgrav2*zthm*zthm*bn2(jk) ! dimension [K*K]*(c2/m2) enddo endif ! ! extrapolating values for ktop = levs+1 (lev-interface for prsi(levs+1) =/= 0) ! - jk = levs + jk = levs - rhoint(ktop) = 0.5*aprsi(levs)*rdi/atm(jk) - tint(ktop) = atm(jk)*(1. +fv*aqm(jk)) - uint(ktop) = aum(jk) - vint(ktop) = avm(jk) + rhoint(ktop) = 0.5*aprsi(levs)*rdi/atm(jk) + tint(ktop) = atm(jk)*(1. +fv*aqm(jk)) + uint(ktop) = aum(jk) + vint(ktop) = avm(jk) - v_zmet(ktop) = v_zmet(jk) - vueff(ktop) = vueff(jk) - bn2(ktop) = bn2(jk) - bn(ktop) = bn(jk) + v_zmet(ktop) = v_zmet(jk) + vueff(ktop) = vueff(jk) + bn2(ktop) = bn2(jk) + bn(ktop) = bn(jk) ! ! akt_mid *KT = -g*(1/H + 1/T*dT/dz)*KT ... grav/tvc for eddy heat conductivity ! - do jk=km1, levs - akt(jk) = -akt(jk)*(gor + (tint(jk+1)-tint(jk))/dz_meti(jk) ) - enddo + do jk=km1, levs + akt(jk) = -akt(jk)*(gor + (tint(jk+1)-tint(jk))/dz_meti(jk) ) + enddo - bvi = bn(ksrc); bvi2 = bvi * bvi; - bvi3 = bvi2*bvi; bvi4 = bvi2 * bvi2; rcms = zms/bvi + bvi = bn(ksrc); bvi2 = bvi * bvi; + bvi3 = bvi2*bvi; bvi4 = bvi2 * bvi2; rcms = zms/bvi ! ! project winds at ksrc ! do iaz=1, nazd - ul(iaz) = zcosang(iaz) *uint(ksrc) + zsinang(iaz) *vint(ksrc) + ul(iaz) = zcosang(iaz) *uint(ksrc) + zsinang(iaz) *vint(ksrc) enddo ! - do jk=ksrc, ktop - cstar(jk) = bn(jk)/zms - cstar2(jk) = cstar(jk)*cstar(jk) + do jk=ksrc, ktop + cstar(jk) = bn(jk)/zms + cstar2(jk) = cstar(jk)*cstar(jk) - fden_lsat(jk) = rhoint(jk)/bn(jk)*v_kxw*Linsat2 - - do iaz=1, nazd - zu = zcosang(iaz)*uint(jk) + zsinang(iaz)*vint(jk) - ui(iaz, jk) = zu !- ul(iaz)*0. - enddo + fden_lsat(jk) = rhoint(jk)/bn(jk)*v_kxw*Linsat2 + + do iaz=1, nazd + zu = zcosang(iaz)*uint(jk) + zsinang(iaz)*vint(jk) + ui(iaz, jk) = zu !- ul(iaz)*0. enddo + enddo - rstar = 1./cstar(ksrc) - rstar2 = rstar*rstar + rstar = 1.0 / cstar(ksrc) + rstar2 = rstar*rstar ! ----------------------------------------- ! set launch momentum flux spectral density ! ----------------------------------------- - fpu(1:nazd, km2:ktop) =0. + fpu(1:nazd, km2:ktop) = 0. - do inc=1,nwav + do inc=1,nwav - zcin = zci(inc)*rstar + zcin = zci(inc)*rstar ! ! integrate (flux(cin) x dcin ) old tau-flux and normalization ! - flux(inc,1) = rstar*(zcin*zcin)/(1.+ zcin**nslope3) + flux(inc,1) = rstar*(zcin*zcin)/(1.+ zcin**nslope3) ! -! fsat = rstar*(zcin*zcin) * taub_src / SN * [rho/rho_src *N_src/N] +! fsat = rstar*(zcin*zcin) * taub_src / SN * [rho/rho_src *N_src/N] ! - fpu(1,ksrc) = fpu(1,ksrc) + flux(inc,1)*zdci(inc) ! dc/cstar = dim-less - - do iaz=1,nazd - akzw(inc, iaz, ksrc) = bvi*rci(inc) - enddo + fpu(1,ksrc) = fpu(1,ksrc) + flux(inc,1)*zdci(inc) ! dc/cstar = dim-less + + do iaz=1,nazd + akzw(inc, iaz, ksrc) = bvi*rci(inc) + enddo - enddo + enddo ! ! adjust rho/bn vertical factors for saturated fluxes (E(m) ~m^-3) - flux_norm = taub_src / fpu(1, ksrc) ! [Pa * dc/cstar *dim_less] - ze1 = flux_norm * bvi/rhoint(ksrc) *rstar *rstar2 - do jk=ksrc, ktop - fden_bn(jk) = ze1* rhoint(jk) / bn(jk) ! [Pa]/[m/s] * rstar2 - enddo + flux_norm = taub_src / fpu(1, ksrc) ! [Pa * dc/cstar *dim_less] + ze1 = flux_norm * bvi/rhoint(ksrc) *rstar *rstar2 + do jk=ksrc, ktop + fden_bn(jk) = ze1* rhoint(jk) / bn(jk) ! [Pa]/[m/s] * rstar2 + enddo ! - do inc=1, nwav - flux(inc,1) = flux_norm*flux(inc,1) - enddo - + do inc=1, nwav + flux(inc,1) = flux_norm*flux(inc,1) + enddo - if (ener_norm == 1) then - snorm_ener = 0. - do inc=1,nwav - zcin = zci(inc)*rstar - - ze2 = zcin /(1.+ zcin**nslope3) + if (ener_norm == 1) then + snorm_ener = 0. + do inc=1,nwav + zcin = zci(inc)*rstar + ze2 = zcin / (1.0 + zcin**nslope3) + snorm_ener = snorm_ener + ze2*zdci(inc)*rstar !dim-less + flux(inc,1) = ze2 * zcin + enddo - snorm_ener = snorm_ener + ze2*zdci(inc)*rstar !dim-less - flux(inc,1) = ze2 * zcin - enddo + ekin_norm = 1.0 / snorm_ener - ekin_norm = 1./snorm_ener - ! taub_src = sigu2 * rho_src * [v_kxw / zms ] ! sigu2 = taub_src*zms/(rho_src/v_kxw) ! ze1 = sigu2*ks*dens/Ns = taub*zms/Ns - ze1 = taub_src*zms/bvi * ekin_norm + ze1 = taub_src*zms/bvi * ekin_norm taub_src = 0. - - do inc=1,nwav - flux(inc,1) = ze1* flux(inc,1) - taub_src = taub_src + flux(inc,1)*zdci(inc) - enddo - ze1 = ekin_norm * v_kxw * rstar2 - do jk=ksrc, ktop - fden_bnen(jk) = rhoint(jk) / bn(jk) *ze1 ! mult on => sigu2(z)*cdf2 => flux_sat - enddo - - endif + + do inc=1,nwav + flux(inc,1) = ze1* flux(inc,1) + taub_src = taub_src + flux(inc,1)*zdci(inc) + enddo + ze1 = ekin_norm * v_kxw * rstar2 + do jk=ksrc, ktop + fden_bnen(jk) = rhoint(jk) / bn(jk) * ze1 ! mult on => sigu2(z)*cdf2 => flux_sat + enddo + + endif ! - do iaz=1,nazd - fpu(iaz, ksrc) = taub_src - fpu(iaz, km1) = taub_src - enddo + do iaz=1,nazd + fpu(iaz, ksrc) = taub_src + fpu(iaz, km1) = taub_src + enddo ! copy flux-1 into other azimuths ! -------------------------------- - do iaz=2, nazd - do inc=1,nwav - flux(inc,iaz) = flux(inc,1) + do iaz=2, nazd + do inc=1,nwav + flux(inc,iaz) = flux(inc,1) + enddo enddo - enddo -! if (mpi_id == master .and. ener_norm == 1) then -! print * -! print *, 'vay_norm: ', taub_src, taub_ch, sigu2, flux_norm, ekin_norm -! print * -! endif - - if (idebug_gwrms == 1) then - pwrms =0. - ptrms =0. - tx1 = real(nazd)/rhoint(ksrc)*rv_kxw - ze2 = wrk2(ksrc) ! (bvi*atm(ksrc)*rgrav)**2 - do inc=1, nwav - v_kzw = bvi*rci(inc) - ze1 = flux(inc,1)*zdci(inc)*tx1*v_kzw - pwrms = pwrms + ze1 - ptrms = ptrms + ze1 * ze2 - enddo - wrms(jl, ksrc) = pwrms - trms(jl, ksrc) = ptrms - endif +! if (mpi_id == master .and. ener_norm == 1) then +! print * +! print *, 'vay_norm: ', taub_src, taub_ch, sigu2, flux_norm, ekin_norm +! print * +! endif + + if (idebug_gwrms == 1) then + pwrms = 0. + ptrms = 0. + tx1 = real(nazd)/rhoint(ksrc)*rv_kxw + ze2 = wrk2(ksrc) ! (bvi*atm(ksrc)*rgrav)**2 + do inc=1, nwav + v_kzw = bvi*rci(inc) + ze1 = flux(inc,1)*zdci(inc)*tx1*v_kzw + pwrms = pwrms + ze1 + ptrms = ptrms + ze1 * ze2 + enddo + wrms(jl, ksrc) = pwrms + trms(jl, ksrc) = ptrms + endif ! -------------------------------- - wave_act(:,:) = 1.0 + wave_act(:,:) = 1.0 ! vertical do-loop - do jk=ksrc, levs + do jk=ksrc, levs - jkp = jk+1 + jkp = jk+1 ! azimuth do-loop - do iaz=1, nazd + do iaz=1, nazd - sig_u2az_m(iaz) = sig_u2az(iaz) + sig_u2az_m(iaz) = sig_u2az(iaz) - umfp = ui(iaz, jkp) - umfm = ui(iaz, jk) - umfc = .5*(umfm + umfp) + umfp = ui(iaz, jkp) + umfm = ui(iaz, jk) + umfc = .5*(umfm + umfp) ! wave-cin loop - dfdz_v(iaz, jk) = 0.0 - dfdz_heat(iaz, jk) = 0.0 - fpu(iaz, jkp) = 0.0 - sig_u2az(iaz) =0.0 + dfdz_v(iaz, jk) = 0.0 + dfdz_heat(iaz, jk) = 0.0 + fpu(iaz, jkp) = 0.0 + sig_u2az(iaz) = 0.0 ! ! wave_dis(iaz, :) = vueff(jk) - do inc=1, nwav - flux_m(inc, iaz) = flux(inc, iaz) + do inc=1, nwav + flux_m(inc, iaz) = flux(inc, iaz) - zcin = zci(inc) ! zcin =/0 by definition - zcinc = rci(inc) + zcin = zci(inc) ! zcin =/0 by definition + zcinc = rci(inc) - if(wave_act(inc,iaz) == 1.0) then + if (wave_act(inc,iaz) == 1.0) then !======================================================================= ! discrete mode ! saturated limit wfit = kzw*kzw*kt; wfdt = wfit/(kxw*cx)*betat ! & dissipative kzi = 2.*kzw*(wfdm+wfdt)*dzpi(k) !======================================================================= - v_cdp = zcin - umfp - v_cdp2=v_cdp*v_cdp - cdf2 = v_cdp2 - c2f2 - if (v_cdp .le. ucrit_max .or. cdf2 .le. 0.0) then + v_cdp = zcin - umfp + v_cdp2=v_cdp*v_cdp + cdf2 = v_cdp2 - c2f2 + if (v_cdp .le. ucrit_max .or. cdf2 .le. 0.0) then ! ! between layer [k-1,k or jk-jkp] (Chi - Uk) -> ucrit_max, wave's absorption ! - wave_act(inc,iaz) =0. - akzw(inc, iaz, jkp) = pi/dz_meti(jk) ! pi2/dzmet - fluxs = 0.0 !max(0., rhobnk(jkp)*ucrit3)*rdci(inc) - flux(inc,iaz) = fluxs + wave_act(inc,iaz) = 0. + akzw(inc, iaz, jkp) = pi/dz_meti(jk) ! pi2/dzmet + fluxs = 0.0 !max(0., rhobnk(jkp)*ucrit3)*rdci(inc) + flux(inc,iaz) = fluxs - else + else - v_wdp = v_kxw*v_cdp - wdop2 = v_wdp* v_wdp + v_wdp = v_kxw * v_cdp + wdop2 = v_wdp * v_wdp ! ! rotational cut-off ! - kzw2 = (bn2(jkp)-wdop2)/Cdf2 + kzw2 = (bn2(jkp)-wdop2)/Cdf2 ! !cires_ugwp_initialize.F90: real, parameter :: mkzmin = pi2/80.0e3 ! - if ( kzw2 > mkz2min ) then - v_kzw = sqrt(kzw2) - akzw(inc, iaz, jkp) = v_kzw + if ( kzw2 > mkz2min ) then + v_kzw = sqrt(kzw2) + akzw(inc, iaz, jkp) = v_kzw ! !linsatdis: kzw2, kzw3, kdsat, c2f2, cdf2, cdf1 ! !kzw2 = (bn2(k)-wdop2)/Cdf2 - rhp4 - v_kx2w ! full lin DS-NGW (N2-wd2)*k2=(m2+k2+[1/2H]^2)*(wd2-f2) ! Kds_sat = kxw*Cdf1*rhp2/kzw3 !krad, kvg, kion, ktg - v_cdp = sqrt( cdf2 ) - v_wdp = v_kxw * v_cdp - v_wdi = kzw2*vueff(jk) + kion(jk) ! supRF-diss due for "all" vars - v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) - v_kzi = v_kzw*v_wdi/v_wdpc + v_cdp = sqrt( cdf2 ) + v_wdp = v_kxw * v_cdp + v_wdi = kzw2*vueff(jk) + kion(jk) ! supRF-diss due for "all" vars + v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) + v_kzi = v_kzw*v_wdi/v_wdpc ! - ze1 = v_kzi*v_zmet(jk) + ze1 = v_kzi*v_zmet(jk) - if (ze1 .ge. 1.e-2) then - expdis = max(exp(-ze1), 0.01) - else - expdis = 1./(1.+ ze1) - endif + if (ze1 .ge. 1.e-2) then + expdis = max(exp(-ze1), 0.01) + else + expdis = 1.0 / (1.0 + ze1) + endif ! - wave_act(inc,iaz) = 1.0 - fmode = flux(inc,iaz) + wave_act(inc,iaz) = 1.0 + fmode = flux(inc,iaz) - flux_2_sig = v_kzw/v_kxw/rhoint(jkp) - w1 = v_wdpc/kzw2/v_kzw/v_zmet(jk) - else ! kzw2 <= mkz2min large "Lz"-reflection + flux_2_sig = v_kzw / (v_kxw*rhoint(jkp)) + w1 = v_wdpc / (kzw2*v_kzw*v_zmet(jk)) + else ! kzw2 <= mkz2min large "Lz"-reflection - expdis = 1.0 - v_kzw = mkzmin + expdis = 1.0 + v_kzw = mkzmin - v_cdp = 0. ! no effects of reflected waves - wave_act(inc,iaz) = 0.0 - akzw(inc, iaz, jkp) = v_kzw - fmode = 0. - w1 =0. - endif -! expdis =1.0 + v_cdp = 0. ! no effects of reflected waves + wave_act(inc,iaz) = 0.0 + akzw(inc, iaz, jkp) = v_kzw + fmode = 0. + w1 = 0. + endif + +! expdis =1.0 - fdis = fmode*expdis*wave_act(inc,iaz) + fdis = fmode*expdis*wave_act(inc,iaz) !============================================================================== ! ! Saturated Fluxes and Energy: Spectral and Dicrete Modes @@ -612,7 +615,7 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! fluxs= fden_bn(jkp)*cdf2*zcinc*wave_act(inc,iaz) ! new sat fluxs= fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) ! -! fluxs= fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) +! fluxs = fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) ! ! @@ -621,131 +624,136 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! [fden_bn(jkp)] = Pa/dc ! fsat = rstar*(zcin*zcin) * [taub_src / SN * [ rstar3*rho/rho_src *N_src/N] = fden_bn ] - if (ener_norm == 0) fluxs= fden_bn(jkp)*cdf2*wave_act(inc,iaz) ! dim-n: Pa/[m/s] + if (ener_norm == 0) fluxs= fden_bn(jkp)*cdf2*wave_act(inc,iaz) ! dim-n: Pa/[m/s] ! ! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc ! - if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) + if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) - if (ener_norm == 1) then + if (ener_norm == 1) then ! spectral saturation limit - - if (ener_lsat == 0) fluxs= fden_bnen(jk)*cdf2*wave_act(inc,iaz)*sig_u2az_m(iaz) + + if (ener_lsat == 0) fluxs= fden_bnen(jk)*cdf2*wave_act(inc,iaz)*sig_u2az_m(iaz) ! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc - if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) + if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) ! - endif + endif !---------------------------------------------------------------------------- ! dicrete mode saturation fden_sat(jkp) = rhoint(jkp)/bn(jkp)*v_kxw -! fluxs = fden_sat(jkp)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat -! fluxs_src = fden_sat(ksrc)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat +! fluxs = fden_sat(jkp)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat +! fluxs_src = fden_sat(ksrc)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat !---------------------------------------------------------------------------- - zdep = fdis-fluxs ! dimension [Pa/dc] *dc = Pa - if(zdep > 0.0 ) then + zdep = fdis-fluxs ! dimension [Pa/dc] *dc = Pa + if (zdep > 0.0 ) then ! subs on sat-limit - ze1 = flux(inc,iaz) - flux(inc,iaz) = fluxs - ze2 = log(ze1/fluxs)*w1 ! Kdsat-compute damping of mode =>df = f-fluxs - ! here we can add extra-dissip for the next layer - else + ze1 = flux(inc,iaz) + flux(inc,iaz) = fluxs + ze2 = log(ze1/fluxs)*w1 ! Kdsat-compute damping of mode =>df = f-fluxs + ! here we can add extra-dissip for the next layer +!Moorthi the above ze2 is not used it appears! + + else ! assign dis-ve flux - flux(inc,iaz) = fdis - endif + flux(inc,iaz) = fdis + endif - dtau = flux_m(inc,iaz)-flux(inc,iaz) - if (dtau .lt. 0) then - flux(inc,iaz) = flux_m(inc,iaz) - endif + dtau = flux_m(inc,iaz)-flux(inc,iaz) + if (dtau .lt. 0) then + flux(inc,iaz) = flux_m(inc,iaz) + endif ! ! GW-sponge domain: saturate all "GW"-modes above "zsp_gw" ! - if ( azmeti(jkp) .ge. zsp_gw) then - mi_sponge = .5/dz_meti(jk) - ze2 = v_wdp /v_kzw * mi_sponge ! Ksat*v_kzw2 = [mi_sat*wdp/kzw] - v_wdi = ze2 + v_wdi*0.25 ! diss-sat GW-sponge - v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) - v_kzi = v_kzw*v_wdi/v_wdpc + if ( azmeti(jkp) >= zsp_gw) then +! mi_sponge = 0.5 / dz_meti(jk) +! ze2 = v_wdp / v_kzw * mi_sponge ! Ksat*v_kzw2 = [mi_sat*wdp/kzw] +! v_wdi = ze2 + v_wdi*0.25 ! diss-sat GW-sponge + + v_wdi = 0.5 * v_wdp / (v_kzw *dz_meti(jk)) + v_wdi*0.25 ! diss-sat GW-sponge + v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) + v_kzi = v_kzw*v_wdi/v_wdpc ! - ze1 = v_kzi*v_zmet(jk) - exp_sponge = exp(-ze1) +! ze1 = v_kzi*v_zmet(jk) +! exp_sponge = exp(-ze1) + exp_sponge = exp(-v_kzi*v_zmet(jk)) ! ! additional sponge ! - flux(inc,iaz) = flux(inc,iaz) *exp_sponge - endif + flux(inc,iaz) = flux(inc,iaz) *exp_sponge + endif - endif ! coriolis or CL condition-checkif => (v_cdp .le. ucrit_max) then - endif ! only for waves w/o CL-absorption wave_act=1 + endif ! coriolis or CL condition-checkif => (v_cdp .le. ucrit_max) then + endif ! only for waves w/o CL-absorption wave_act=1 ! ! sum for given (jk, iaz) all active "wave" contributions ! - if (wave_act(inc,iaz) == 1) then + if (wave_act(inc,iaz) == 1) then - zcinc =zdci(inc) - vc_zflx_mode = flux(inc,iaz) - vmdiff = max(0., flux_m(inc,iaz)-vc_zflx_mode) - if (vmdiff <= 0. ) vc_zflx_mode = flux_m(inc,iaz) - ze1 = vc_zflx_mode*zcinc - fpu(iaz, jkp) = fpu(iaz,jkp) + ze1 ! flux (pa) at - sig_u2az(iaz) = sig_u2az(iaz) + ze1*flux_2_sig ! ekin(m2/s2) at z+dz + zcinc = zdci(inc) + vc_zflx_mode = flux(inc,iaz) + vmdiff = max(0., flux_m(inc,iaz)-vc_zflx_mode) + if (vmdiff <= 0. ) vc_zflx_mode = flux_m(inc,iaz) + ze1 = vc_zflx_mode*zcinc + fpu(iaz, jkp) = fpu(iaz,jkp) + ze1 ! flux (pa) at + sig_u2az(iaz) = sig_u2az(iaz) + ze1*flux_2_sig ! ekin(m2/s2) at z+dz !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! (heat deposition integration over spectral mode for each azimuth ! later sum over selected azimuths as "non-negative" scalars) ! cdf1 = sqrt( (zci(inc)-umfc)**2-c2f2) !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -! zdelp = wrk3(jk)*cdf1 *zcinc +! zdelp = wrk3(jk)*cdf1 *zcinc - zdelp = wrk3(jk)* v_cdp *zcinc * vmdiff + zdelp = wrk3(jk) * v_cdp * zcinc * vmdiff -! zcool = 1. ! COOL=(-3.5 + Pr)/Pr -! zcool = [Kv/Pr]*N2*(Pr-Cp/R)/cp -! edis = (c-u)*ax/cp = Kv_dis*N2/cp -! cool = -Kt*N2/R +! zcool = 1. ! COOL=(-3.5 + Pr)/Pr +! zcool = [Kv/Pr]*N2*(Pr-Cp/R)/cp +! edis = (c-u)*ax/cp = Kv_dis*N2/cp +! cool = -Kt*N2/R ! add heat-conduction "bulk" impact: 1/Pr*(g*g*rho)* d [rho*Kv(dT/dp- R/Cp *T/p)] ! - dfdz_v(iaz, jk) = dfdz_v(iaz,jk) + zdelp ! +cool !heating & simple cooling < 0 - dfdz_heat(iaz, jk) = dfdz_heat(iaz,jk) + zdelp ! heating -only > 0 - endif !wave_act(inc,iaz) == 1) + dfdz_v(iaz, jk) = dfdz_v(iaz,jk) + zdelp ! +cool !heating & simple cooling < 0 + dfdz_heat(iaz, jk) = dfdz_heat(iaz,jk) + zdelp ! heating -only > 0 + endif !wave_act(inc,iaz) == 1) ! - enddo ! wave-inc-loop + enddo ! wave-inc-loop - ze1 =fpu(iaz, jk) - if (fpu(iaz, jkp) > ze1 ) fpu(iaz, jkp) = ze1 + ze1 = fpu(iaz, jk) + if (fpu(iaz, jkp) > ze1 ) fpu(iaz, jkp) = ze1 ! ! compute wind and temp-re rms ! - if (idebug_gwrms == 1) then - pwrms =0. - ptrms =0. - do inc=1, nwav - if (wave_act(inc,iaz) > 0.) then - v_kzw =akzw(inc, iaz, jk) - ze1 = flux(inc,iaz)*v_kzw*zdci(inc)*wrk1(jk) - pwrms = pwrms + ze1 - ptrms = ptrms + ze1*wrk2(jk) - endif - enddo - Awrms(iaz, jk) = pwrms - Atrms(iaz, jk) = ptrms - endif + if (idebug_gwrms == 1) then + pwrms = 0. + ptrms = 0. + do inc=1, nwav + if (wave_act(inc,iaz) > 0.) then + v_kzw = akzw(inc, iaz, jk) + ze1 = flux(inc,iaz)*v_kzw*zdci(inc)*wrk1(jk) + pwrms = pwrms + ze1 + ptrms = ptrms + ze1*wrk2(jk) + endif + enddo + Awrms(iaz, jk) = pwrms + Atrms(iaz, jk) = ptrms + endif ! -------------- - enddo ! end Azimuth do-loop + enddo ! end Azimuth do-loop ! ! eddy wave dissipation to limit GW-rms ! - tx1 = sum(abs(dfdz_heat(1:nazd, jk)))/bn2(jk) - ze1=max(dked_min, tx1) - ze2=min(dked_max, ze1) - vueff(jkp) = ze2 + vueff(jkp) + tx1 = sum(abs(dfdz_heat(1:nazd, jk))) / bn2(jk) + ze1 = max(dked_min, tx1) + ze2 = min(dked_max, ze1) + vueff(jkp) = ze2 + vueff(jkp) ! - enddo ! end Vertical do-loop + enddo ! end Vertical do-loop ! ! top-layers constant interface-fluxes and zero-heat ! we allow non-zero momentum fluxes and thermal effects @@ -761,38 +769,38 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! at the source level and below taux = 0 (taux_E=-taux_W by assumption) !======================================================================== - do jk=ksrc, levs + do jk=ksrc, levs taux(jk) = 0.0 tauy(jk) = 0.0 - do iaz=1,nazd - taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) - tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) - pdtdt(jl,jk) = pdtdt(jl,jk) + dfdz_v(iaz,jk) - dked(jl,jk) = dked(jl,jk) + dfdz_heat(iaz,jk) + do iaz=1,nazd + taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) + tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) + pdtdt(jl,jk) = pdtdt(jl,jk) + dfdz_v(iaz,jk) + dked(jl,jk) = dked(jl,jk) + dfdz_heat(iaz,jk) + enddo enddo - enddo - jk = ktop; taux(jk)=0.; tauy(jk)=0. + jk = ktop ; taux(jk) = 0. ; tauy(jk) = 0. do iaz=1,nazd - taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) - tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) + taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) + tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) enddo - if (idebug_gwrms == 1) then - do jk=kp1, levs - do iaz=1,nazd - wrms(jl,jk) =wrms(jl,jk) + Awrms(iaz,jk) - trms(jl,jk) =trms(jl,jk) + Atrms(iaz,jk) - tauabs(jl,jk)=tauabs(jl,jk) + fpu(iaz,jk) - enddo - enddo - endif + if (idebug_gwrms == 1) then + do jk=kp1, levs + do iaz=1,nazd + wrms(jl,jk) = wrms(jl,jk) + Awrms(iaz,jk) + trms(jl,jk) = trms(jl,jk) + Atrms(iaz,jk) + tauabs(jl,jk) = tauabs(jl,jk) + fpu(iaz,jk) + enddo + enddo + endif ! - do jk=ksrc+1,levs - jkp = jk + 1 + do jk=ksrc+1,levs + jkp = jk + 1 zdelp = wrk3(jk)*gw_eff - ze1 = (taux(jkp)-taux(jk))* zdelp - ze2 = (tauy(jkp)-tauy(jk))* zdelp + ze1 = (taux(jkp)-taux(jk)) * zdelp + ze2 = (tauy(jkp)-tauy(jk)) * zdelp if (abs(ze1) >= maxdudt ) then ze1 = sign(maxdudt, ze1) @@ -807,230 +815,235 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! Cx =0 based Cx=/= 0. above ! ! - if (knob_ugwp_doheat == 1) then + if (knob_ugwp_doheat == 1) then ! -!maxdtdt= dked_max * bnfix2 +! maxdtdt= dked_max * bnfix2 ! - pdtdt(jl,jk) = pdtdt(jl,jk)*gw_eff - ze2 = pdtdt(jl,jk) - if (abs(ze2) >= max_eps ) pdtdt(jl,jk) = sign(max_eps, ze2) + pdtdt(jl,jk) = pdtdt(jl,jk)*gw_eff + ze2 = pdtdt(jl,jk) + if (abs(ze2) >= max_eps ) pdtdt(jl,jk) = sign(max_eps, ze2) - dked(jl,jk) = dked(jl,jk)/bn2(jk) - ze1 = max(dked_min, dked(jl,jk)) - dked(jl,jk) = min(dked_max, ze1) - qmid(jk) = pdtdt(j,jk) - endif - enddo + dked(jl,jk) = dked(jl,jk) / bn2(jk) + ze1 = max(dked_min, dked(jl,jk)) + dked(jl,jk) = min(dked_max, ze1) + qmid(jk) = pdtdt(j,jk) + endif + enddo !---------------------------------------------------------------------------------- ! Update heat = ek_diss/cp and aply 1-2-1 smoother for "dked" => dktur ! here with "u_new = u +dtp*dudt ; vnew = v + v +dtp*dvdt ! can check "stability" in the column and "add" ktur-estimation ! to suppress instability as needed so dked = dked_gw + ktur_ric !---------------------------------------------------------------------------------- - - dktur(1:levs) = dked(jl,1:levs) + + dktur(1:levs) = dked(jl,1:levs) ! - do ist= 1, nstdif - do jk=ksrc,levs-1 - adif(jk) =.25*(dktur(jk-1)+ dktur(jk+1)) + .5*dktur(jk) - enddo - dktur(ksrc:levs-1) = adif(ksrc:levs-1) - enddo - dktur(levs) = .5*( dked(jl,levs)+ dked(jl,levs-1)) - dktur(levs+1) = dktur(levs) + do ist= 1, nstdif + do jk=ksrc,levs-1 + adif(jk) =.25*(dktur(jk-1)+ dktur(jk+1)) + .5*dktur(jk) + enddo + dktur(ksrc:levs-1) = adif(ksrc:levs-1) + enddo + dktur(levs) = .5*( dked(jl,levs)+ dked(jl,levs-1)) + dktur(levs+1) = dktur(levs) - do jk=ksrc,levs+1 - ze1 = .5*( dktur(jk) +dktur(jk-1) ) - kvint(jk) = ze1 - ktint(jk) = ze1*iPr_ktgw - enddo + do jk=ksrc,levs+1 + ze1 = .5*( dktur(jk) +dktur(jk-1) ) + kvint(jk) = ze1 + ktint(jk) = ze1*iPr_ktgw + enddo ! ! Thermal budget qmid = qheat + qcool ! - do jk=ksrc+1,levs + do jk=ksrc+1,levs ze2 = qmid(jk) + dktur(jk)*Akt(jk) + grav*(ktint(jk+1)-ktint(jk))/dz_meti(jk) - qmid(jk) = ze2 - if (abs(ze2) >= max_eps ) qmid(jk) = sign(max_eps, ze2) + qmid(jk) = ze2 + if (abs(ze2) >= max_eps ) qmid(jk) = sign(max_eps, ze2) pdtdt(jl,jk) = qmid(jk)*rcpd - dked(jl, jk) = dktur(jk) + dked(jl, jk) = dktur(jk) enddo ! ! perform explicit eddy "diffusive" 3-point smoothing of "u-v-t" ! from the surface/launch-gw to the "top" ! ! + do jk=km2,levs ! update by source function X(t+dt) = X(t) + dtp * dXdt ! - uold(km2:levs) = aum(km2:levs)+pdudt(jl,km2:levs)*dtp - vold(km2:levs) = avm(km2:levs)+pdvdt(jl,km2:levs)*dtp - told(km2:levs) = atm(km2:levs)+pdtdt(jl,km2:levs)*dtp + uold(jk) = aum(jk) + pdudt(jl,jk) * dtp + vold(jk) = avm(jk) + pdvdt(jl,jk) * dtp + told(jk) = atm(jk) + pdtdt(jl,jk) * dtp ! ! diagnose turb-profile using "stability-check" relying on the free-atm diffusion ! sc2 = 30m x 30m ! - dktur(km2:levs) = dked_min + dktur(jk) = dked_min + enddo - do jk=km1,levs - uz = uold(jk) - uold(jk-1) - vz = vold(jk) - vold(jk-1) - ze1 = dz_met(jk) - zdelm = 1./ze1 + do jk=km1,levs + uz = uold(jk) - uold(jk-1) + vz = vold(jk) - vold(jk-1) + ze1 = dz_met(jk) + zdelm = 1.0 / ze1 - tvc = told(jk) * (1. +fv*aqm(jk)) - tvm = told(jk-1) * (1. +fv*aqm(jk-1)) - zthm = 2.0 / (tvc+tvm) - shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm + tvc = told(jk) * (1. +fv*aqm(jk)) + tvm = told(jk-1) * (1. +fv*aqm(jk-1)) + zthm = 2.0 / (tvc+tvm) + shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm - bn2(jk) = grav2cpd*zthm * (1.0+rcpdl*(tvc-tvm)*zdelm) + bn2(jk) = grav2cpd*zthm * (1.0+rcpdl*(tvc-tvm)*zdelm) - bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) - zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 - zgrow = exp(zmetk) - ritur = bn2(jk)/shr2 - w1 = 1./(1. + 5*ritur) - ze2 = min( sc2 *zgrow, 4.*ze1*ze1) + bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) + zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 + zgrow = exp(zmetk) + ritur = bn2(jk)/shr2 + w1 = 1.0 / (1.0 + 5*ritur) + ze2 = min( sc2 *zgrow, 4.*ze1*ze1) ! ! Smag-type of eddy diffusion K_smag = Sqrt(Deformation - N2/Pr)* L2 *const ! - kamp = sqrt(shr2)* ze2 * w1 * w1 - ktur= min(max(kamp, dked_min), dked_max) - dktur(jk) = ktur + kamp = sqrt(shr2)* ze2 * w1 * w1 + ktur = min(max(kamp, dked_min), dked_max) + dktur(jk) = ktur ! ! update of dked = dked_gw + k_turb_mf -! - dked(jl, jk) = dked(jl, jk) +ktur +! + dked(jl, jk) = dked(jl, jk) +ktur - enddo + enddo ! ! apply eddy effects due to GWs: explicit scheme Kzz*dt/dz2 < 0.5 stability ! - if (knob_ugwp_dokdis == 2) then + if (knob_ugwp_dokdis == 2) then - do jk=ksrc,levs - ze1 = min(.5*(dktur(jk) +dktur(jk-1)), dturb_max) - kvint(jk) = kvint(jk) + ze1 -! ktint(jk) = ktint(jk) + ze1*iPr_ktgw - enddo - kvint(km1) = kvint(ksrc) - kvint(ktop) = kvint(levs) + do jk=ksrc,levs + ze1 = min(.5*(dktur(jk)+dktur(jk-1)), dturb_max) + kvint(jk) = kvint(jk) + ze1 +! ktint(jk) = ktint(jk) + ze1*iPr_ktgw + enddo + kvint(km1) = kvint(ksrc) + kvint(ktop) = kvint(levs) - dzmetm = 1./dz_met(km1) - Adif(km1:levs) = 0. - Cdif(km1:levs) = 0. + dzmetm = 1./dz_met(km1) + Adif(km1:levs) = 0. + Cdif(km1:levs) = 0. do jk=km1,levs-1 - dzmetp = 1./dz_met(jk+1) - dzmetf = 1./(dz_meti(jk)*rhomid(jk)) + dzmetp = 1.0 / dz_met(jk+1) + dzmetf = 1.0 / (dz_meti(jk)*rhomid(jk)) - ktur = kvint(jk) *rhoint(jk) * dzmetf - kturp =Kvint(jk+1)*rhoint(jk+1) * dzmetf - - Adif(jk) = ktur * dzmetm - Cdif(jk) = kturp * dzmetp - ApC = adif(jk)+cdif(jk) - ACdif(jk) = ApC + ktur = kvint(jk) * rhoint(jk) * dzmetf + kturp = Kvint(jk+1) * rhoint(jk+1) * dzmetf + + Adif(jk) = ktur * dzmetm + Cdif(jk) = kturp * dzmetp + ApC = adif(jk) + cdif(jk) + ACdif(jk) = ApC - w1 = ApC*iPr_max - if (rdtp < w1 ) then - Anstab(jk) = floor(w1*dtp) + 1 - else - Anstab(jk) = 1 - endif - dzmetm = dzmetp - enddo + w1 = ApC*iPr_max + if (rdtp < w1 ) then + Anstab(jk) = floor(w1*dtp) + 1 + else + Anstab(jk) = 1 + endif + dzmetm = dzmetp + enddo - nstab = maxval( Anstab(ksrc:levs-1)) + nstab = maxval( Anstab(ksrc:levs-1)) -! if (nstab .ge. 3) print *, 'nstab ', nstab +! if (nstab .ge. 3) print *, 'nstab ', nstab ! ! k instead Jk ! - dtdif = dtp/real(nstab) - ze1 = 1./dtdif + dtdif = dtp/real(nstab) + ze1 = 1./dtdif - do ist= 1, nstab - do k=ksrc,levs-1 - Bdif = ze1 - ACdif(k) - Bt_dif = ze1 - ACdif(k)* iPr_ktgw ! ipr_Ktgw = 1./Pr <1 - unew(k) = uold(k)*Bdif + uold(k-1)*Adif(k) + uold(k+1)*Cdif(k) - vnew(k) = vold(k)*Bdif + vold(k-1)*Adif(k) + vold(k+1)*Cdif(k) - tnew(k) = told(k)*Bt_dif+(told(k-1)*Adif(k) + told(k+1)*Cdif(k))*iPr_ktgw - enddo + do ist= 1, nstab + do k=ksrc,levs-1 + Bdif = ze1 - ACdif(k) + Bt_dif = ze1 - ACdif(k)* iPr_ktgw ! ipr_Ktgw = 1./Pr <1 + unew(k) = uold(k)*Bdif + uold(k-1)*Adif(k) + uold(k+1)*Cdif(k) + vnew(k) = vold(k)*Bdif + vold(k-1)*Adif(k) + vold(k+1)*Cdif(k) + tnew(k) = told(k)*Bt_dif+(told(k-1)*Adif(k) + told(k+1)*Cdif(k))*iPr_ktgw + enddo - uold(ksrc:levs-1) = unew(ksrc:levs-1)*dtdif ! value du/dtp *dtp = du - vold(ksrc:levs-1) = vnew(ksrc:levs-1)*dtdif - told(ksrc:levs-1) = tnew(ksrc:levs-1)*dtdif + do k=ksrc,levs-1 + uold(k) = unew(k) * dtdif ! value du/dtp *dtp = du + vold(k) = vnew(k) * dtdif + told(k) = tnew(k) * dtdif + enddo ! ! smoothing the boundary points: "k-1" = ksrc-1 and "k+1" = levs ! - uold(levs) = uold(levs-1) - vold(levs) = vold(levs-1) - told(levs) = told(levs-1) - enddo + uold(levs) = uold(levs-1) + vold(levs) = vold(levs-1) + told(levs) = told(levs-1) + enddo ! ! compute "smoothed" tendencies by molecular + GW-eddy diffusions ! - do k=ksrc,levs-1 -! + do k=ksrc,levs-1 +! ! final updates of tendencies and diffusion ! - ze2 = rdtp*(uold(k) - aum(k)) - ze1 = rdtp*(vold(k) - avm(k)) - pdtdt(jl,k)= rdtp*( told(k) - atm(k) ) + ze2 = rdtp * (uold(k) - aum(k)) + ze1 = rdtp * (vold(k) - avm(k)) + pdtdt(jl,k) = rdtp * (told(k) - atm(k)) - if (abs(pdtdt(jl,k)) >= maxdtdt ) pdtdt(jl,k) = sign(maxdtdt,pdtdt(jl,k) ) - if (abs(ze1) >= maxdudt ) then - ze1 = sign(maxdudt, ze1) - endif - if (abs(ze2) >= maxdudt ) then - ze2 = sign(maxdudt, ze2) - endif + if (abs(pdtdt(jl,k)) >= maxdtdt ) pdtdt(jl,k) = sign(maxdtdt,pdtdt(jl,k) ) + if (abs(ze1) >= maxdudt ) then + ze1 = sign(maxdudt, ze1) + endif + if (abs(ze2) >= maxdudt ) then + ze2 = sign(maxdudt, ze2) + endif - pdudt(jl, k) = ze2 - pdvdt(jl, k) = ze1 - uz = uold(k+1) - uold(k-1) - vz = vold(k+1) - vold(k-1) - ze2 = 1./(dz_met(k+1)+dz_met(k) ) - mf_diss_heat = rcpd*kvint(k)*(uz*uz +vz*vz)*ze2*ze2 ! vert grad heat - pdtdt(jl,k)= pdtdt(jl,k) + mf_diss_heat ! extra heat due to eddy viscosity + pdudt(jl, k) = ze2 + pdvdt(jl, k) = ze1 + uz = uold(k+1) - uold(k-1) + vz = vold(k+1) - vold(k-1) + ze2 = 1.0 / (dz_met(k+1)+dz_met(k) ) - enddo + mf_diss_heat = rcpd*kvint(k)*(uz*uz +vz*vz)*ze2*ze2 ! vert grad heat + pdtdt(jl,k) = pdtdt(jl,k) + mf_diss_heat ! extra heat due to eddy viscosity + + enddo - ENDIF ! dissipative IF-loop for vertical eddy difusion u-v-t + ENDIF ! dissipative IF-loop for vertical eddy difusion u-v-t - enddo ! J-loop + enddo ! J-loop ! - RETURN + RETURN !================================= diag print after "return" ====================== - if (kdt ==1 .and. mpi_id == master) then + if (kdt ==1 .and. mpi_id == master) then ! - print *, ' ugwpv1: nazd-nw-ilaunch=', nazd, nwav,ilaunch, maxval(kvg), ' kvg ' - print *, 'ugwpv1: zdci(inc)=' , maxval(zdci), minval(zdci) - print *, 'ugwpv1: zcimax=' , maxval(zci) ,' zcimin=' , minval(zci) -! print *, 'ugwpv1: tau_ngw=' , maxval(taub_src)*1.e3, minval(taub_src)*1.e3, tau_min + print *, ' ugwpv1: nazd-nw-ilaunch=', nazd, nwav,ilaunch, maxval(kvg), ' kvg ' + print *, 'ugwpv1: zdci(inc)=' , maxval(zdci), minval(zdci) + print *, 'ugwpv1: zcimax=' , maxval(zci) ,' zcimin=' , minval(zci) +! print *, 'ugwpv1: tau_ngw=' , maxval(taub_src)*1.e3, minval(taub_src)*1.e3, tau_min - print * + print * - endif + endif - if (kdt == 1 .and. mpi_id == master) then - print *, 'vgw done nstab ', nstab + if (kdt == 1 .and. mpi_id == master) then + print *, 'vgw done nstab ', nstab ! - print *, maxval(pdudt)*86400., minval(pdudt)*86400, 'vgw ax ugwp' - print *, maxval(pdvdt)*86400., minval(pdvdt)*86400, 'vgw ay ugwp' - print *, maxval(dked)*1., minval(dked)*1, 'vgw keddy m2/sec ugwp' - print *, maxval(pdtdt)*86400., minval(pdtdt)*86400,'vgw eps ugwp' + print *, maxval(pdudt)*86400., minval(pdudt)*86400, 'vgw ax ugwp' + print *, maxval(pdvdt)*86400., minval(pdvdt)*86400, 'vgw ay ugwp' + print *, maxval(dked)*1., minval(dked)*1, 'vgw keddy m2/sec ugwp' + print *, maxval(pdtdt)*86400., minval(pdtdt)*86400,'vgw eps ugwp' ! -! print *, ' ugwp -heating rates ' - endif +! print *, ' ugwp -heating rates ' + endif !================================= - return - end subroutine cires_ugwpv1_ngw_solv2 + return + end subroutine cires_ugwpv1_ngw_solv2 end module cires_ugwpv1_solv2 diff --git a/physics/cires_ugwpv1_solv2.F90_mine b/physics/cires_ugwpv1_solv2.F90_mine new file mode 100644 index 000000000..8f417ea1d --- /dev/null +++ b/physics/cires_ugwpv1_solv2.F90_mine @@ -0,0 +1,1049 @@ +module cires_ugwpv1_solv2 + + +contains + + +!--------------------------------------------------- +! Broad spectrum FVS-1993, mkz^nSlope with nSlope = 0, 1,2 +! dissipative solver with NonHyd/ROT-effects +! reflected GWs treated as waves with "negligible" flux, +! they are out of given column +!--------------------------------------------------- + + subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & + tau_ngw, tm , um, vm, qm, prsl, prsi, zmet, zmeti, prslk, & + xlatd, sinlat, coslat, & + pdudt, pdvdt, pdtdt, dked, zngw) +! +!-------------------------------------------------------------------------------- +! nov 2015 alternative gw-solver for nggps-wam +! nov 2017 nh/rotational gw-modes for nh-fv3gfs +! oct 2019 adding empirical satellite-based +! source function and *F90 CIRES-style of the code +! oct 2020 Diagnostics of "tauabs, wrms, trms" is taken out +! -------------------------------------------------------------------------------- +! + use machine, only : kind_phys + + use cires_ugwpv1_module,only : krad, kvg, kion, ktg, iPr_ktgw, Pr_kdis, Pr_kvkt + + use cires_ugwpv1_module,only : knob_ugwp_doheat, knob_ugwp_dokdis, idebug_gwrms + + use cires_ugwpv1_module,only : psrc => knob_ugwp_palaunch + + use cires_ugwpv1_module,only : maxdudt, maxdtdt, max_eps, dked_min, dked_max + + use ugwp_common , only : rgrav, grav, cpd, rd, rv, rcpdl, grav2cpd, & + omega2, rcpd, rcpd2, pi, pi2, fv, & + rad_to_deg, deg_to_rad, & + rdi, gor, grcp, gocp, & + bnv2min, bnv2max, dw2min, velmin, gr2, & + hpscale, rhp, rh4, grav2, rgrav2, mkzmin, mkz2min +! + use ugwp_wmsdis_init, only : v_kxw, rv_kxw, v_kxw2, tamp_mpa, tau_min, ucrit, & + gw_eff, & + nslope, ilaunch, zms, & + zci, zdci, zci4, zci3, zci2, & + zaz_fct, zcosang, zsinang, nwav, nazd, & + zcimin, zcimax, rimin, sc2, sc2u, ric +! + implicit none +! + real(kind=kind_phys), parameter :: zsp_gw = 106.5e3 ! sponge for GWs above the model top + real(kind=kind_phys), parameter :: linsat2 = 1.0, dturb_max = 100.0 + integer, parameter :: ener_norm =0 + integer, parameter :: ener_lsat=0 + integer, parameter :: nstdif = 1 + integer, parameter :: wave_sponge = 1 + + integer, intent(in) :: levs ! vertical level + integer, intent(in) :: im ! horiz tiles + integer, intent(in) :: mpi_id, master, kdt + + real(kind=kind_phys) ,intent(in) :: dtp ! model time step + real(kind=kind_phys) ,intent(in) :: tau_ngw(im) + + real(kind=kind_phys) ,intent(in) :: vm(im,levs) ! meridional wind + real(kind=kind_phys) ,intent(in) :: um(im,levs) ! zonal wind + real(kind=kind_phys) ,intent(in) :: qm(im,levs) ! spec. humidity + real(kind=kind_phys) ,intent(in) :: tm(im,levs) ! kinetic temperature + + real(kind=kind_phys) ,intent(in) :: prsl(im,levs) ! mid-layer pressure + real(kind=kind_phys) ,intent(in) :: prslk(im,levs) ! mid-layer exner function + real(kind=kind_phys) ,intent(in) :: zmet(im,levs) ! meters now !!!!! phil =philg/grav + real(kind=kind_phys) ,intent(in) :: prsi(im,levs+1) ! interface pressure + real(kind=kind_phys) ,intent(in) :: zmeti(im,levs+1) ! interface geopi/meters + real(kind=kind_phys) ,intent(in) :: xlatd(im) ! xlat_d in degrees + real(kind=kind_phys) ,intent(in) :: sinlat(im) + real(kind=kind_phys) ,intent(in) :: coslat(im) +! +! out-gw effects +! + real(kind=kind_phys) ,intent(out) :: pdudt(im,levs) ! zonal momentum tendency + real(kind=kind_phys) ,intent(out) :: pdvdt(im,levs) ! meridional momentum tendency + real(kind=kind_phys) ,intent(out) :: pdtdt(im,levs) ! gw-heating (u*ax+v*ay)/cp and cooling + real(kind=kind_phys) ,intent(out) :: dked(im,levs) ! gw-eddy diffusion + real(kind=kind_phys) ,intent(out) :: zngw(im) ! launch height +! +! +! +! local =========================================================================================== + + real(kind=kind_phys) :: tauabs(im,levs) ! + real(kind=kind_phys) :: wrms(im,levs) ! + real(kind=kind_phys) :: trms(im,levs) ! + + real(kind=kind_phys) :: zwrms(nwav,nazd), wrk1(levs), wrk2(levs) + real(kind=kind_phys) :: atrms(nazd, levs),awrms(nazd, levs), akzw(nwav,nazd, levs+1) +! +! local =========================================================================================== + real(kind=kind_phys) :: taux(levs+1) ! EW component of vertical momentum flux (pa) + real(kind=kind_phys) :: tauy(levs+1) ! NS component of vertical momentum flux (pa) + real(kind=kind_phys) :: fpu(nazd, levs+1) ! az-momentum flux + real(kind=kind_phys) :: ui(nazd, levs+1) ! azimuthal wind + + real(kind=kind_phys) :: fden_bn(levs+1) ! density/brent + real(kind=kind_phys) :: flux (nwav, nazd) , flux_m (nwav, nazd) +! + real(kind=kind_phys) :: bn(levs+1) ! interface BV-frequency + real(kind=kind_phys) :: bn2(levs+1) ! interface BV*BV-frequency + real(kind=kind_phys) :: rhoint(levs+1) ! interface density + real(kind=kind_phys) :: uint(levs+1) ! interface zonal wind + real(kind=kind_phys) :: vint(levs+1) ! meridional wind + real(kind=kind_phys) :: tint(levs+1) ! temp-re + + real(kind=kind_phys) :: irhodz_mid(levs) + real(kind=kind_phys) :: suprf(levs+1) ! RF-super linear dissipation + real(kind=kind_phys) :: cstar(levs+1) ,cstar2(levs+1) + real(kind=kind_phys) :: v_zmet(levs+1) + real(kind=kind_phys) :: vueff(levs+1) + real(kind=kind_phys) :: dfdz_v(nazd, levs), dfdz_heat(nazd, levs) ! axj = -df*rho/dz directional Ax + + real(kind=kind_phys), dimension(levs) :: atm , aum, avm, aqm, aprsl, azmet, dz_met + real(kind=kind_phys), dimension(levs+1) :: aprsi, azmeti, dz_meti + + real(kind=kind_phys), dimension(levs) :: wrk3 + real(kind=kind_phys), dimension(levs) :: uold, vold, told, unew, vnew, tnew + real(kind=kind_phys), dimension(levs) :: rho, rhomid, adif, cdif, acdif + real(kind=kind_phys), dimension(levs) :: Qmid, AKT + real(kind=kind_phys), dimension(levs+1) :: dktur, Ktint, Kvint + real(kind=kind_phys), dimension(levs+1) :: fden_lsat, fden_bnen + + integer, dimension(levs) :: Anstab + + real(kind=kind_phys) :: sig_u2az(nazd), sig_u2az_m(nazd) + real(kind=kind_phys) :: wave_dis(nwav, nazd), wave_disaz(nazd) + real(kind=kind_phys) :: rdci(nwav), rci(nwav) + real(kind=kind_phys) :: wave_act(nwav, nazd) ! active waves at given vert-level + real(kind=kind_phys) :: ul(nazd) ! velocity in azimuthal direction at launch level +! +! scalars +! + real(kind=kind_phys) :: bvi, bvi2, bvi3, bvi4, rcms ! BV at launch level + real(kind=kind_phys) :: c2f2, cf1, wave_distot + + + real(kind=kind_phys) :: flux_norm ! norm-factor + real(kind=kind_phys) :: taub_src, rho_src, zcool, vmdiff +! + real(kind=kind_phys) :: zthm, dtau, cgz, ucrit_maxdc + real(kind=kind_phys) :: vm_zflx_mode, vc_zflx_mode + real(kind=kind_phys) :: kzw2, kzw3, kdsat, cdf2, cdf1, wdop2,v_cdp2 + real(kind=kind_phys) :: ucrit_max + real(kind=kind_phys) :: pwrms, ptrms + real(kind=kind_phys) :: zu, zcin, zcin2, zcin3, zcin4, zcinc + real(kind=kind_phys) :: zatmp, fluxs, zdep, ze1, ze2 + +! + real(kind=kind_phys) :: zdelp, zdelm, taud_min + real(kind=kind_phys) :: tvc, tvm +! real(kind=kind_phys) :: tvc, tvm, ptc, ptm + real(kind=kind_phys) :: umfp, umfm, umfc, ucrit3 + real(kind=kind_phys) :: fmode, expdis, fdis + real(kind=kind_phys) :: v_kzi, v_kzw, v_cdp, v_wdp, tx1, fcorsat, dzcrit + real(kind=kind_phys) :: v_wdi, v_wdpc + real(kind=kind_phys) :: ugw, vgw, ek1, ek2, rdtp, rdtp2, rhp_wam + + integer :: j, jj, k, kk, inc, jk, jkp, jl, iaz + integer :: ksrc, km2, km1, kp1, ktop +! +! Kturb-part +! + real(kind=kind_phys) :: uz, vz, shr2 , ritur, ktur + + real(kind=kind_phys) :: kamp, zmetk, zgrow + real(kind=kind_phys) :: stab, stab_dt, dtstab + real(kind=kind_phys) :: nslope3 +! + integer :: nstab, ist + real(kind=kind_phys) :: w1, w2, w3, dtdif + + real(kind=kind_phys) :: dzmetm, dzmetp, dzmetf, bdif, bt_dif, apc, kturp + real(kind=kind_phys) :: rstar, rstar2 + + real(kind=kind_phys) :: snorm_ener, sigu2, flux_2_sig, ekin_norm + real(kind=kind_phys) :: taub_ch, sigu2_ch + real(kind=kind_phys) :: Pr_kdis_eff, mf_diss_heat, iPr_max + real(kind=kind_phys) :: exp_sponge, mi_sponge, gipr + +!-------------------------------------------------------------------------- +! + nslope3 = nslope + 3.0 + Pr_kdis_eff = gw_eff*pr_kdis + iPr_max = max(1.0, iPr_ktgw) + gipr = grav* Ipr_ktgw +! +! test for input fields +! if (mpi_id == master .and. kdt < -2) then +! print *, im, levs, dtp, kdt, ' vay-solv2-v1' +! print *, minval(tm), maxval(tm), ' min-max-tm ' +! print *, minval(vm), maxval(vm), ' min-max-vm ' +! print *, minval(um), maxval(um), ' min-max-um ' +! print *, minval(qm), maxval(qm), ' min-max-qm ' +! print *, minval(prsl), maxval(prsl), ' min-max-Pmid ' +! print *, minval(prsi), maxval(prsi), ' min-max-Pint ' +! print *, minval(zmet), maxval(zmet), ' min-max-Zmid ' +! print *, minval(zmeti), maxval(zmeti), ' min-max-Zint ' +! print *, minval(prslk), maxval(prslk), ' min-max-Exner ' +! print *, minval(tau_ngw), maxval(tau_ngw), ' min-max-taungw ' +! print *, tau_min, ' tau_min ', tamp_mpa, ' tamp_mpa ' +! +! endif + + if (idebug_gwrms == 1) then + tauabs = 0.0 ; wrms = 0.0 ; trms = 0.0 + endif + + rci(:) = 1.0 / zci(:) + rdci(:) = 1.0 / zdci(:) + + rdtp = 1.0 / dtp + rdtp2 = 0.5 * rdtp + + ksrc = max(ilaunch, 3) + km2 = ksrc - 2 + km1 = ksrc - 1 + kp1 = ksrc + 1 + ktop = levs + 1 + + suprf(ktop) = kion(levs) + + do k=1,levs + suprf(k) = kion(k) ! approximate 1-st order damping with Fast super-RF of FV3 + pdvdt(:,k) = 0.0 + pdudt(:,k) = 0.0 + pdtdt(:,k) = 0.0 + dked(: ,k) = 0.0 + enddo + +!----------------------------------------------------------- +! column-based j=1,im pjysics with 1D-arrays +!----------------------------------------------------------- + DO j=1, im + jl = j + tx1 = omega2 * sinlat(j) *rv_kxw + cf1 = abs(tx1) + c2f2 = tx1 * tx1 + ucrit_max = max(ucrit, cf1) + ucrit3 = ucrit_max*ucrit_max*ucrit_max +! +! ngw-fluxes at all gridpoints (with tau_min at least) +! + aprsl(1:levs) = prsl(jl,1:levs) +! +! ksrc-define "aprsi(1:levs+1) redefine "ilaunch" +! + do k=1, levs + if (aprsl(k) < psrc ) exit + enddo + ilaunch = max(k-1, 3) + ksrc = max(ilaunch, 3) + + zngw(j) = zmet(j, ksrc) + + km2 = ksrc - 2 + km1 = ksrc - 1 + kp1 = ksrc + 1 + +!=====ksrc + + do k=1, levs + aum(k) = um(jl,k) + avm(k) = vm(jl,k) + atm(k) = tm(jl,k) + aqm(k) = qm(jl,k) + azmet(k) = zmet(jl,k) + aprsi(k) = prsi(jl,k) + azmeti(k) = zmeti(jl,k) + enddo + aprsi(levs+1) = prsi(jl,levs+1) + azmeti(levs+1) = zmeti(jl,levs+1) + + rho_src = aprsl(ksrc)*rdi/atm(ksrc) + taub_ch = max(tau_ngw(jl), tau_min) + taub_src = taub_ch + + + sigu2 = zms * taub_src / (rho_src*v_kxw) + sig_u2az(1:nazd) = sigu2 +! +! compute diffusion-based arrays km2:levs +! + do jk = km2, levs + dz_meti(jk) = azmeti(jk+1) - azmeti(jk) + dz_met(jk) = azmet(jk) - azmeti(jk-1) + enddo +! --------------------------------------------- +! interface mean flow parameters launch -> levs+1 +! --------------------------------------------- + do jk= km1,levs + tvc = atm(jk) * (1.0 + fv*aqm(jk)) + tvm = atm(jk-1) * (1.0 + fv*aqm(jk-1)) +! ptc = tvc / prslk(jl,jk) ! not used +! ptm = tvm / prslk(jl,jk-1) ! notused +! + zthm = 2.0 / (tvc+tvm) + rhp_wam = zthm*gor +!interface + uint(jk) = 0.5*(aum(jk-1)+aum(jk)) + vint(jk) = 0.5*(avm(jk-1)+avm(jk)) + tint(jk) = 0.5*(tvc+tvm) + rhomid(jk) = aprsl(jk)*rdi/atm(jk) + rhoint(jk) = aprsi(jk)*rdi*zthm ! rho = p/(RTv) + zdelp = dz_meti(jk) ! >0 ...... dz-meters + v_zmet(jk) = zdelp + zdelp ! 2*kzi*[Z_int(k+1)-Z_int(k)] + zdelm = 1.0 / dz_met(jk) ! 1/dz ...... 1/meters +! +! bvf2 = grav2*zdelm*(ptc-ptm) / (ptc + ptm) ! N2=[g/PT]*(dPT/dz) +! + bn2(jk) = grav2cpd*zthm*(1.0+rcpdl*(tvc-tvm)*zdelm) + bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) + bn(jk) = sqrt(bn2(jk)) + + + wrk3(jk) = 1.0 / (zdelp*rhomid(jk)) ! 1/rho_mid(k)/[Z_int(k+1)-Z_int(k)] + irhodz_mid(jk) = rdtp*zdelp*rhomid(jk)/rho_src +! +! +! diagnostics -Kzz above PBL +! + uz = aum(jk) - aum(jk-1) + vz = avm(jk) - avm(jk-1) + shr2 = max(uz*uz+vz*vz, dw2min) * zdelm *zdelm + + zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 + zgrow = exp(zmetk) + ritur = bn2(jk) / shr2 + kamp = sqrt(shr2) * sc2 * zgrow + w1 = 1.0 / (1.0 + 5*ritur) + ktur = min(max(kamp * w1 * w1, dked_min), dked_max) + zmetk = azmet(jk)* rhp + vueff(jk) = ktur + kvg(jk) + + akt(jk) = gipr / tvc + enddo + + if (idebug_gwrms == 1) then + do jk= km1,levs + wrk1(jk) = rv_kxw/rhoint(jk) + wrk2(jk) = rgrav2*zthm*zthm*bn2(jk) ! dimension [K*K]*(c2/m2) + enddo + endif + +! +! extrapolating values for ktop = levs+1 (lev-interface for prsi(levs+1) =/= 0) +! + jk = levs + + rhoint(ktop) = 0.5*aprsi(levs)*rdi/atm(jk) + tint(ktop) = atm(jk)*(1. +fv*aqm(jk)) + uint(ktop) = aum(jk) + vint(ktop) = avm(jk) + + v_zmet(ktop) = v_zmet(jk) + vueff(ktop) = vueff(jk) + bn2(ktop) = bn2(jk) + bn(ktop) = bn(jk) +! +! akt_mid *KT = -g*(1/H + 1/T*dT/dz)*KT ... grav/tvc for eddy heat conductivity +! + do jk=km1, levs + akt(jk) = -akt(jk)*(gor + (tint(jk+1)-tint(jk))/dz_meti(jk) ) + enddo + + + bvi = bn(ksrc); bvi2 = bvi * bvi; + bvi3 = bvi2*bvi; bvi4 = bvi2 * bvi2; rcms = zms/bvi +! +! project winds at ksrc +! + do iaz=1, nazd + ul(iaz) = zcosang(iaz) *uint(ksrc) + zsinang(iaz) *vint(ksrc) + enddo +! + + do jk=ksrc, ktop + cstar(jk) = bn(jk)/zms + cstar2(jk) = cstar(jk)*cstar(jk) + + fden_lsat(jk) = rhoint(jk)/bn(jk)*v_kxw*Linsat2 + + do iaz=1, nazd + zu = zcosang(iaz)*uint(jk) + zsinang(iaz)*vint(jk) + ui(iaz, jk) = zu !- ul(iaz)*0. + enddo + enddo + + rstar = 1.0 / cstar(ksrc) + rstar2 = rstar*rstar +! ----------------------------------------- +! set launch momentum flux spectral density +! ----------------------------------------- + + fpu(1:nazd, km2:ktop) = 0. + + do inc=1,nwav + + zcin = zci(inc)*rstar + +! +! integrate (flux(cin) x dcin ) old tau-flux and normalization +! + flux(inc,1) = rstar*(zcin*zcin)/(1.+ zcin**nslope3) +! +! fsat = rstar*(zcin*zcin) * taub_src / SN * [rho/rho_src *N_src/N] +! + fpu(1,ksrc) = fpu(1,ksrc) + flux(inc,1)*zdci(inc) ! dc/cstar = dim-less + + do iaz=1,nazd + akzw(inc, iaz, ksrc) = bvi*rci(inc) + enddo + + enddo +! +! adjust rho/bn vertical factors for saturated fluxes (E(m) ~m^-3) + + flux_norm = taub_src / fpu(1, ksrc) ! [Pa * dc/cstar *dim_less] + ze1 = flux_norm * bvi/rhoint(ksrc) *rstar *rstar2 + do jk=ksrc, ktop + fden_bn(jk) = ze1* rhoint(jk) / bn(jk) ! [Pa]/[m/s] * rstar2 + enddo +! + do inc=1, nwav + flux(inc,1) = flux_norm*flux(inc,1) + enddo + + if (ener_norm == 1) then + snorm_ener = 0. + do inc=1,nwav + zcin = zci(inc)*rstar + ze2 = zcin / (1.0 + zcin**nslope3) + snorm_ener = snorm_ener + ze2*zdci(inc)*rstar !dim-less + flux(inc,1) = ze2 * zcin + enddo + + ekin_norm = 1.0 / snorm_ener + +! taub_src = sigu2 * rho_src * [v_kxw / zms ] +! sigu2 = taub_src*zms/(rho_src/v_kxw) +! ze1 = sigu2*ks*dens/Ns = taub*zms/Ns + + ze1 = taub_src*zms/bvi * ekin_norm + taub_src = 0. + + do inc=1,nwav + flux(inc,1) = ze1* flux(inc,1) + taub_src = taub_src + flux(inc,1)*zdci(inc) + enddo + ze1 = ekin_norm * v_kxw * rstar2 + do jk=ksrc, ktop + fden_bnen(jk) = rhoint(jk) / bn(jk) * ze1 ! mult on => sigu2(z)*cdf2 => flux_sat + enddo + + endif +! + do iaz=1,nazd + fpu(iaz, ksrc) = taub_src + fpu(iaz, km1) = taub_src + enddo + +! copy flux-1 into other azimuths +! -------------------------------- + + + do iaz=2, nazd + do inc=1,nwav + flux(inc,iaz) = flux(inc,1) + enddo + enddo + +! if (mpi_id == master .and. ener_norm == 1) then +! print * +! print *, 'vay_norm: ', taub_src, taub_ch, sigu2, flux_norm, ekin_norm +! print * +! endif + + if (idebug_gwrms == 1) then + pwrms = 0. + ptrms = 0. + tx1 = real(nazd)/rhoint(ksrc)*rv_kxw + ze2 = wrk2(ksrc) ! (bvi*atm(ksrc)*rgrav)**2 + do inc=1, nwav + v_kzw = bvi*rci(inc) + ze1 = flux(inc,1)*zdci(inc)*tx1*v_kzw + pwrms = pwrms + ze1 + ptrms = ptrms + ze1 * ze2 + enddo + wrms(jl, ksrc) = pwrms + trms(jl, ksrc) = ptrms + endif + +! -------------------------------- + wave_act(:,:) = 1.0 +! vertical do-loop + do jk=ksrc, levs + + jkp = jk+1 +! azimuth do-loop + do iaz=1, nazd + + sig_u2az_m(iaz) = sig_u2az(iaz) + + umfp = ui(iaz, jkp) + umfm = ui(iaz, jk) + umfc = .5*(umfm + umfp) +! wave-cin loop + dfdz_v(iaz, jk) = 0.0 + dfdz_heat(iaz, jk) = 0.0 + fpu(iaz, jkp) = 0.0 + sig_u2az(iaz) = 0.0 +! +! wave_dis(iaz, :) = vueff(jk) + do inc=1, nwav + flux_m(inc, iaz) = flux(inc, iaz) + + zcin = zci(inc) ! zcin =/0 by definition + zcinc = rci(inc) + + if (wave_act(inc,iaz) == 1.0) then +!======================================================================= +! discrete mode +! saturated limit wfit = kzw*kzw*kt; wfdt = wfit/(kxw*cx)*betat +! & dissipative kzi = 2.*kzw*(wfdm+wfdt)*dzpi(k) +!======================================================================= + + v_cdp = zcin - umfp + v_cdp2=v_cdp*v_cdp + cdf2 = v_cdp2 - c2f2 + if (v_cdp .le. ucrit_max .or. cdf2 .le. 0.0) then +! +! between layer [k-1,k or jk-jkp] (Chi - Uk) -> ucrit_max, wave's absorption +! + wave_act(inc,iaz) = 0. + akzw(inc, iaz, jkp) = pi/dz_meti(jk) ! pi2/dzmet + fluxs = 0.0 !max(0., rhobnk(jkp)*ucrit3)*rdci(inc) + flux(inc,iaz) = fluxs + + else + + v_wdp = v_kxw * v_cdp + wdop2 = v_wdp * v_wdp + +! +! rotational cut-off +! + kzw2 = (bn2(jkp)-wdop2)/Cdf2 +! +!cires_ugwp_initialize.F90: real, parameter :: mkzmin = pi2/80.0e3 +! + if ( kzw2 > mkz2min ) then + v_kzw = sqrt(kzw2) + akzw(inc, iaz, jkp) = v_kzw +! +!linsatdis: kzw2, kzw3, kdsat, c2f2, cdf2, cdf1 +! +!kzw2 = (bn2(k)-wdop2)/Cdf2 - rhp4 - v_kx2w ! full lin DS-NGW (N2-wd2)*k2=(m2+k2+[1/2H]^2)*(wd2-f2) +! Kds_sat = kxw*Cdf1*rhp2/kzw3 +!krad, kvg, kion, ktg + v_cdp = sqrt( cdf2 ) + v_wdp = v_kxw * v_cdp + v_wdi = kzw2*vueff(jk) + kion(jk) ! supRF-diss due for "all" vars + v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) + v_kzi = v_kzw*v_wdi/v_wdpc + +! + ze1 = v_kzi*v_zmet(jk) + + if (ze1 .ge. 1.e-2) then + expdis = max(exp(-ze1), 0.01) + else + expdis = 1.0 / (1.0 + ze1) + endif + +! + wave_act(inc,iaz) = 1.0 + fmode = flux(inc,iaz) + + flux_2_sig = v_kzw / (v_kxw*rhoint(jkp)) + w1 = v_wdpc / (kzw2*v_kzw*v_zmet(jk)) + else ! kzw2 <= mkz2min large "Lz"-reflection + + expdis = 1.0 + v_kzw = mkzmin + + v_cdp = 0. ! no effects of reflected waves + wave_act(inc,iaz) = 0.0 + akzw(inc, iaz, jkp) = v_kzw + fmode = 0. + w1 = 0. + endif + +! expdis =1.0 + + fdis = fmode*expdis*wave_act(inc,iaz) +!============================================================================== +! +! Saturated Fluxes and Energy: Spectral and Dicrete Modes +! +! S2003 fluxs= fden_bn(jk)*(zcin-ui(jk,iaz))**2/zcin +! WM2001 fluxs= fden_bn(jk)*(zcin-ui(jk,iaz)) +! saturated flux + wave dissipation - Keddy_gwsat in UGWP-V1 +! linsatdis = 1.0 , here: u'^2 ~ linsatdis* [v_cdp*v_cdp] +! +! old-sat fluxs= fden_bn(jkp)*cdf2*zcinc*wave_act(inc,iaz) +! fluxs= fden_bn(jkp)*cdf2*zcinc*wave_act(inc,iaz) +! new sat fluxs= fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) +! +! fluxs = fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) + +! +! +! old spectral sat-limit with "mapping to source-level" sp_tau(cd) = fden_bn(jkp)*sqrt(cdf2) +! new spectral sat-limit with "mapping to source-level" sp_tau(cd) = fden_bn(jkp)*cdf2*rstar2 +! [fden_bn(jkp)] = Pa/dc +! fsat = rstar*(zcin*zcin) * [taub_src / SN * [ rstar3*rho/rho_src *N_src/N] = fden_bn ] + + if (ener_norm == 0) fluxs= fden_bn(jkp)*cdf2*wave_act(inc,iaz) ! dim-n: Pa/[m/s] +! +! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc +! + if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) + + if (ener_norm == 1) then + +! spectral saturation limit + + if (ener_lsat == 0) fluxs= fden_bnen(jk)*cdf2*wave_act(inc,iaz)*sig_u2az_m(iaz) + +! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc + + if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) +! + endif +!---------------------------------------------------------------------------- +! dicrete mode saturation fden_sat(jkp) = rhoint(jkp)/bn(jkp)*v_kxw +! fluxs = fden_sat(jkp)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat +! fluxs_src = fden_sat(ksrc)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat +!---------------------------------------------------------------------------- + zdep = fdis-fluxs ! dimension [Pa/dc] *dc = Pa + if (zdep > 0.0 ) then +! subs on sat-limit + ze1 = flux(inc,iaz) + flux(inc,iaz) = fluxs + ze2 = log(ze1/fluxs)*w1 ! Kdsat-compute damping of mode =>df = f-fluxs + ! here we can add extra-dissip for the next layer +!Moorthi the above ze2 is not used it appears! + + else +! assign dis-ve flux + flux(inc,iaz) = fdis + endif + + dtau = flux_m(inc,iaz)-flux(inc,iaz) + if (dtau .lt. 0) then + flux(inc,iaz) = flux_m(inc,iaz) + endif +! +! GW-sponge domain: saturate all "GW"-modes above "zsp_gw" +! + if ( azmeti(jkp) >= zsp_gw) then +! mi_sponge = 0.5 / dz_meti(jk) +! ze2 = v_wdp / v_kzw * mi_sponge ! Ksat*v_kzw2 = [mi_sat*wdp/kzw] +! v_wdi = ze2 + v_wdi*0.25 ! diss-sat GW-sponge + + v_wdi = 0.5 * v_wdp / (v_kzw *dz_meti(jk)) + v_wdi*0.25 ! diss-sat GW-sponge + v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) + v_kzi = v_kzw*v_wdi/v_wdpc +! +! ze1 = v_kzi*v_zmet(jk) +! exp_sponge = exp(-ze1) + exp_sponge = exp(-v_kzi*v_zmet(jk)) +! +! additional sponge +! + flux(inc,iaz) = flux(inc,iaz) *exp_sponge + endif + + endif ! coriolis or CL condition-checkif => (v_cdp .le. ucrit_max) then + endif ! only for waves w/o CL-absorption wave_act=1 +! +! sum for given (jk, iaz) all active "wave" contributions +! + if (wave_act(inc,iaz) == 1) then + + zcinc = zdci(inc) + vc_zflx_mode = flux(inc,iaz) + vmdiff = max(0., flux_m(inc,iaz)-vc_zflx_mode) + if (vmdiff <= 0. ) vc_zflx_mode = flux_m(inc,iaz) + ze1 = vc_zflx_mode*zcinc + fpu(iaz, jkp) = fpu(iaz,jkp) + ze1 ! flux (pa) at + sig_u2az(iaz) = sig_u2az(iaz) + ze1*flux_2_sig ! ekin(m2/s2) at z+dz + +!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +! (heat deposition integration over spectral mode for each azimuth +! later sum over selected azimuths as "non-negative" scalars) +! cdf1 = sqrt( (zci(inc)-umfc)**2-c2f2) +!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +! zdelp = wrk3(jk)*cdf1 *zcinc + + zdelp = wrk3(jk) * v_cdp * zcinc * vmdiff + + +! zcool = 1. ! COOL=(-3.5 + Pr)/Pr +! zcool = [Kv/Pr]*N2*(Pr-Cp/R)/cp +! edis = (c-u)*ax/cp = Kv_dis*N2/cp +! cool = -Kt*N2/R +! add heat-conduction "bulk" impact: 1/Pr*(g*g*rho)* d [rho*Kv(dT/dp- R/Cp *T/p)] +! + dfdz_v(iaz, jk) = dfdz_v(iaz,jk) + zdelp ! +cool !heating & simple cooling < 0 + dfdz_heat(iaz, jk) = dfdz_heat(iaz,jk) + zdelp ! heating -only > 0 + endif !wave_act(inc,iaz) == 1) +! + enddo ! wave-inc-loop + + ze1 = fpu(iaz, jk) + if (fpu(iaz, jkp) > ze1 ) fpu(iaz, jkp) = ze1 +! +! compute wind and temp-re rms +! + if (idebug_gwrms == 1) then + pwrms = 0. + ptrms = 0. + do inc=1, nwav + if (wave_act(inc,iaz) > 0.) then + v_kzw = akzw(inc, iaz, jk) + ze1 = flux(inc,iaz)*v_kzw*zdci(inc)*wrk1(jk) + pwrms = pwrms + ze1 + ptrms = ptrms + ze1*wrk2(jk) + endif + enddo + Awrms(iaz, jk) = pwrms + Atrms(iaz, jk) = ptrms + endif + +! -------------- + enddo ! end Azimuth do-loop + +! +! eddy wave dissipation to limit GW-rms +! + tx1 = sum(abs(dfdz_heat(1:nazd, jk))) / bn2(jk) + ze1 = max(dked_min, tx1) + ze2 = min(dked_max, ze1) + vueff(jkp) = ze2 + vueff(jkp) +! + enddo ! end Vertical do-loop +! +! top-layers constant interface-fluxes and zero-heat +! we allow non-zero momentum fluxes and thermal effects +! fpu(1:nazd,levs+1) = fpu(1:nazd, levs) +! dfdz_v(1:nazd, levs) = 0.0 + +! --------------------------------------------------------------------- +! sum contribution for total zonal and meridional fluxes + +! energy dissipation +! --------------------------------------------------- +! +!======================================================================== +! at the source level and below taux = 0 (taux_E=-taux_W by assumption) +!======================================================================== + + do jk=ksrc, levs + taux(jk) = 0.0 + tauy(jk) = 0.0 + do iaz=1,nazd + taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) + tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) + pdtdt(jl,jk) = pdtdt(jl,jk) + dfdz_v(iaz,jk) + dked(jl,jk) = dked(jl,jk) + dfdz_heat(iaz,jk) + enddo + enddo + jk = ktop ; taux(jk) = 0. ; tauy(jk) = 0. + do iaz=1,nazd + taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) + tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) + enddo + + if (idebug_gwrms == 1) then + do jk=kp1, levs + do iaz=1,nazd + wrms(jl,jk) = wrms(jl,jk) + Awrms(iaz,jk) + trms(jl,jk) = trms(jl,jk) + Atrms(iaz,jk) + tauabs(jl,jk) = tauabs(jl,jk) + fpu(iaz,jk) + enddo + enddo + endif +! + + do jk=ksrc+1,levs + jkp = jk + 1 + zdelp = wrk3(jk)*gw_eff + ze1 = (taux(jkp)-taux(jk)) * zdelp + ze2 = (tauy(jkp)-tauy(jk)) * zdelp + + if (abs(ze1) >= maxdudt ) then + ze1 = sign(maxdudt, ze1) + endif + if (abs(ze2) >= maxdudt ) then + ze2 = sign(maxdudt, ze2) + endif + + pdudt(jl,jk) = -ze1 + pdvdt(jl,jk) = -ze2 +! +! Cx =0 based Cx=/= 0. above +! +! + if (knob_ugwp_doheat == 1) then +! +! maxdtdt= dked_max * bnfix2 +! + pdtdt(jl,jk) = pdtdt(jl,jk)*gw_eff + ze2 = pdtdt(jl,jk) + if (abs(ze2) >= max_eps ) pdtdt(jl,jk) = sign(max_eps, ze2) + + dked(jl,jk) = dked(jl,jk) / bn2(jk) + ze1 = max(dked_min, dked(jl,jk)) + dked(jl,jk) = min(dked_max, ze1) + qmid(jk) = pdtdt(j,jk) + endif + enddo +!---------------------------------------------------------------------------------- +! Update heat = ek_diss/cp and aply 1-2-1 smoother for "dked" => dktur +! here with "u_new = u +dtp*dudt ; vnew = v + v +dtp*dvdt +! can check "stability" in the column and "add" ktur-estimation +! to suppress instability as needed so dked = dked_gw + ktur_ric +!---------------------------------------------------------------------------------- + + dktur(1:levs) = dked(jl,1:levs) +! + do ist= 1, nstdif + do jk=ksrc,levs-1 + adif(jk) =.25*(dktur(jk-1)+ dktur(jk+1)) + .5*dktur(jk) + enddo + dktur(ksrc:levs-1) = adif(ksrc:levs-1) + enddo + dktur(levs) = .5*( dked(jl,levs)+ dked(jl,levs-1)) + dktur(levs+1) = dktur(levs) + + do jk=ksrc,levs+1 + ze1 = .5*( dktur(jk) +dktur(jk-1) ) + kvint(jk) = ze1 + ktint(jk) = ze1*iPr_ktgw + enddo + +! +! Thermal budget qmid = qheat + qcool +! + do jk=ksrc+1,levs + ze2 = qmid(jk) + dktur(jk)*Akt(jk) + grav*(ktint(jk+1)-ktint(jk))/dz_meti(jk) + qmid(jk) = ze2 + if (abs(ze2) >= max_eps ) qmid(jk) = sign(max_eps, ze2) + pdtdt(jl,jk) = qmid(jk)*rcpd + dked(jl, jk) = dktur(jk) + enddo +! +! perform explicit eddy "diffusive" 3-point smoothing of "u-v-t" +! from the surface/launch-gw to the "top" +! +! + do jk=km2,levs +! update by source function X(t+dt) = X(t) + dtp * dXdt +! + uold(jk) = aum(jk) + pdudt(jl,jk) * dtp + vold(jk) = avm(jk) + pdvdt(jl,jk) * dtp + told(jk) = atm(jk) + pdtdt(jl,jk) * dtp +! +! diagnose turb-profile using "stability-check" relying on the free-atm diffusion +! sc2 = 30m x 30m +! + dktur(jk) = dked_min + enddo + + do jk=km1,levs + uz = uold(jk) - uold(jk-1) + vz = vold(jk) - vold(jk-1) + ze1 = dz_met(jk) + zdelm = 1.0 / ze1 + + tvc = told(jk) * (1. +fv*aqm(jk)) + tvm = told(jk-1) * (1. +fv*aqm(jk-1)) + zthm = 2.0 / (tvc+tvm) + shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm + + bn2(jk) = grav2cpd*zthm * (1.0+rcpdl*(tvc-tvm)*zdelm) + + bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) + zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 + zgrow = exp(zmetk) + ritur = bn2(jk)/shr2 + w1 = 1.0 / (1.0 + 5*ritur) + ze2 = min( sc2 *zgrow, 4.*ze1*ze1) +! +! Smag-type of eddy diffusion K_smag = Sqrt(Deformation - N2/Pr)* L2 *const +! + kamp = sqrt(shr2)* ze2 * w1 * w1 + ktur = min(max(kamp, dked_min), dked_max) + dktur(jk) = ktur +! +! update of dked = dked_gw + k_turb_mf +! + dked(jl, jk) = dked(jl, jk) +ktur + + enddo + +! +! apply eddy effects due to GWs: explicit scheme Kzz*dt/dz2 < 0.5 stability +! + if (knob_ugwp_dokdis == 2) then + + do jk=ksrc,levs + ze1 = min(.5*(dktur(jk)+dktur(jk-1)), dturb_max) + kvint(jk) = kvint(jk) + ze1 +! ktint(jk) = ktint(jk) + ze1*iPr_ktgw + enddo + kvint(km1) = kvint(ksrc) + kvint(ktop) = kvint(levs) + + dzmetm = 1./dz_met(km1) + Adif(km1:levs) = 0. + Cdif(km1:levs) = 0. + do jk=km1,levs-1 + + dzmetp = 1.0 / dz_met(jk+1) + dzmetf = 1.0 / (dz_meti(jk)*rhomid(jk)) + + + ktur = kvint(jk) * rhoint(jk) * dzmetf + kturp = Kvint(jk+1) * rhoint(jk+1) * dzmetf + + Adif(jk) = ktur * dzmetm + Cdif(jk) = kturp * dzmetp + ApC = adif(jk) + cdif(jk) + ACdif(jk) = ApC + + w1 = ApC*iPr_max + if (rdtp < w1 ) then + Anstab(jk) = floor(w1*dtp) + 1 + else + Anstab(jk) = 1 + endif + dzmetm = dzmetp + enddo + + nstab = maxval( Anstab(ksrc:levs-1)) + +! if (nstab .ge. 3) print *, 'nstab ', nstab +! +! k instead Jk +! + dtdif = dtp/real(nstab) + ze1 = 1./dtdif + + do ist= 1, nstab + do k=ksrc,levs-1 + Bdif = ze1 - ACdif(k) + Bt_dif = ze1 - ACdif(k)* iPr_ktgw ! ipr_Ktgw = 1./Pr <1 + unew(k) = uold(k)*Bdif + uold(k-1)*Adif(k) + uold(k+1)*Cdif(k) + vnew(k) = vold(k)*Bdif + vold(k-1)*Adif(k) + vold(k+1)*Cdif(k) + tnew(k) = told(k)*Bt_dif+(told(k-1)*Adif(k) + told(k+1)*Cdif(k))*iPr_ktgw + enddo + + do k=ksrc,levs-1 + uold(k) = unew(k) * dtdif ! value du/dtp *dtp = du + vold(k) = vnew(k) * dtdif + told(k) = tnew(k) * dtdif + enddo +! +! smoothing the boundary points: "k-1" = ksrc-1 and "k+1" = levs +! + uold(levs) = uold(levs-1) + vold(levs) = vold(levs-1) + told(levs) = told(levs-1) + enddo +! +! compute "smoothed" tendencies by molecular + GW-eddy diffusions +! + do k=ksrc,levs-1 +! +! final updates of tendencies and diffusion +! + ze2 = rdtp * (uold(k) - aum(k)) + ze1 = rdtp * (vold(k) - avm(k)) + pdtdt(jl,k) = rdtp * (told(k) - atm(k)) + + if (abs(pdtdt(jl,k)) >= maxdtdt ) pdtdt(jl,k) = sign(maxdtdt,pdtdt(jl,k) ) + if (abs(ze1) >= maxdudt ) then + ze1 = sign(maxdudt, ze1) + endif + if (abs(ze2) >= maxdudt ) then + ze2 = sign(maxdudt, ze2) + endif + + pdudt(jl, k) = ze2 + pdvdt(jl, k) = ze1 + uz = uold(k+1) - uold(k-1) + vz = vold(k+1) - vold(k-1) + ze2 = 1.0 / (dz_met(k+1)+dz_met(k) ) + + mf_diss_heat = rcpd*kvint(k)*(uz*uz +vz*vz)*ze2*ze2 ! vert grad heat + pdtdt(jl,k) = pdtdt(jl,k) + mf_diss_heat ! extra heat due to eddy viscosity + + enddo + + + ENDIF ! dissipative IF-loop for vertical eddy difusion u-v-t + + enddo ! J-loop +! + RETURN + +!================================= diag print after "return" ====================== + if (kdt ==1 .and. mpi_id == master) then +! + print *, ' ugwpv1: nazd-nw-ilaunch=', nazd, nwav,ilaunch, maxval(kvg), ' kvg ' + print *, 'ugwpv1: zdci(inc)=' , maxval(zdci), minval(zdci) + print *, 'ugwpv1: zcimax=' , maxval(zci) ,' zcimin=' , minval(zci) +! print *, 'ugwpv1: tau_ngw=' , maxval(taub_src)*1.e3, minval(taub_src)*1.e3, tau_min + + print * + + endif + + if (kdt == 1 .and. mpi_id == master) then + print *, 'vgw done nstab ', nstab +! + print *, maxval(pdudt)*86400., minval(pdudt)*86400, 'vgw ax ugwp' + print *, maxval(pdvdt)*86400., minval(pdvdt)*86400, 'vgw ay ugwp' + print *, maxval(dked)*1., minval(dked)*1, 'vgw keddy m2/sec ugwp' + print *, maxval(pdtdt)*86400., minval(pdtdt)*86400,'vgw eps ugwp' +! +! print *, ' ugwp -heating rates ' + endif +!================================= + return + end subroutine cires_ugwpv1_ngw_solv2 + + +end module cires_ugwpv1_solv2 diff --git a/physics/cires_ugwpv1_solv2.F90_orig b/physics/cires_ugwpv1_solv2.F90_orig new file mode 100644 index 000000000..afd94ff5c --- /dev/null +++ b/physics/cires_ugwpv1_solv2.F90_orig @@ -0,0 +1,1036 @@ +module cires_ugwpv1_solv2 + + +contains + + +!--------------------------------------------------- +! Broad spectrum FVS-1993, mkz^nSlope with nSlope = 0, 1,2 +! dissipative solver with NonHyd/ROT-effects +! reflected GWs treated as waves with "negligible" flux, +! they are out of given column +!--------------------------------------------------- + + subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & + tau_ngw, tm , um, vm, qm, prsl, prsi, zmet, zmeti, prslk, & + xlatd, sinlat, coslat, & + pdudt, pdvdt, pdtdt, dked, zngw) +! +!-------------------------------------------------------------------------------- +! nov 2015 alternative gw-solver for nggps-wam +! nov 2017 nh/rotational gw-modes for nh-fv3gfs +! oct 2019 adding empirical satellite-based +! source function and *F90 CIRES-style of the code +! oct 2020 Diagnostics of "tauabs, wrms, trms" is taken out +! -------------------------------------------------------------------------------- +! + use machine, only : kind_phys + + use cires_ugwpv1_module,only : krad, kvg, kion, ktg, iPr_ktgw, Pr_kdis, Pr_kvkt + + use cires_ugwpv1_module,only : knob_ugwp_doheat, knob_ugwp_dokdis, idebug_gwrms + + use cires_ugwpv1_module,only : psrc => knob_ugwp_palaunch + + use cires_ugwpv1_module,only : maxdudt, maxdtdt, max_eps, dked_min, dked_max + + use ugwp_common , only : rgrav, grav, cpd, rd, rv, rcpdl, grav2cpd, & + omega2, rcpd, rcpd2, pi, pi2, fv, & + rad_to_deg, deg_to_rad, & + rdi, gor, grcp, gocp, & + bnv2min, bnv2max, dw2min, velmin, gr2, & + hpscale, rhp, rh4, grav2, rgrav2, mkzmin, mkz2min +! + use ugwp_wmsdis_init, only : v_kxw, rv_kxw, v_kxw2, tamp_mpa, tau_min, ucrit, & + gw_eff, & + nslope, ilaunch, zms, & + zci, zdci, zci4, zci3, zci2, & + zaz_fct, zcosang, zsinang, nwav, nazd, & + zcimin, zcimax, rimin, sc2, sc2u, ric +! + implicit none +! + real(kind=kind_phys), parameter :: zsp_gw = 106.5e3 ! sponge for GWs above the model top + real(kind=kind_phys), parameter :: linsat2 = 1.0, dturb_max = 100.0 + integer, parameter :: ener_norm =0 + integer, parameter :: ener_lsat=0 + integer, parameter :: nstdif = 1 + integer, parameter :: wave_sponge = 1 + + integer, intent(in) :: levs ! vertical level + integer, intent(in) :: im ! horiz tiles + integer, intent(in) :: mpi_id, master, kdt + + real(kind=kind_phys) ,intent(in) :: dtp ! model time step + real(kind=kind_phys) ,intent(in) :: tau_ngw(im) + + real(kind=kind_phys) ,intent(in) :: vm(im,levs) ! meridional wind + real(kind=kind_phys) ,intent(in) :: um(im,levs) ! zonal wind + real(kind=kind_phys) ,intent(in) :: qm(im,levs) ! spec. humidity + real(kind=kind_phys) ,intent(in) :: tm(im,levs) ! kinetic temperature + + real(kind=kind_phys) ,intent(in) :: prsl(im,levs) ! mid-layer pressure + real(kind=kind_phys) ,intent(in) :: prslk(im,levs) ! mid-layer exner function + real(kind=kind_phys) ,intent(in) :: zmet(im,levs) ! meters now !!!!! phil =philg/grav + real(kind=kind_phys) ,intent(in) :: prsi(im,levs+1) ! interface pressure + real(kind=kind_phys) ,intent(in) :: zmeti(im,levs+1) ! interface geopi/meters + real(kind=kind_phys) ,intent(in) :: xlatd(im) ! xlat_d in degrees + real(kind=kind_phys) ,intent(in) :: sinlat(im) + real(kind=kind_phys) ,intent(in) :: coslat(im) +! +! out-gw effects +! + real(kind=kind_phys) ,intent(out) :: pdudt(im,levs) ! zonal momentum tendency + real(kind=kind_phys) ,intent(out) :: pdvdt(im,levs) ! meridional momentum tendency + real(kind=kind_phys) ,intent(out) :: pdtdt(im,levs) ! gw-heating (u*ax+v*ay)/cp and cooling + real(kind=kind_phys) ,intent(out) :: dked(im,levs) ! gw-eddy diffusion + real(kind=kind_phys) ,intent(out) :: zngw(im) ! launch height +! +! +! +! local =========================================================================================== + + real(kind=kind_phys) :: tauabs(im,levs) ! + real(kind=kind_phys) :: wrms(im,levs) ! + real(kind=kind_phys) :: trms(im,levs) ! + + real(kind=kind_phys) :: zwrms(nwav,nazd), wrk1(levs), wrk2(levs) + real(kind=kind_phys) :: atrms(nazd, levs),awrms(nazd, levs), akzw(nwav,nazd, levs+1) +! +! local =========================================================================================== + real(kind=kind_phys) :: taux(levs+1) ! EW component of vertical momentum flux (pa) + real(kind=kind_phys) :: tauy(levs+1) ! NS component of vertical momentum flux (pa) + real(kind=kind_phys) :: fpu(nazd, levs+1) ! az-momentum flux + real(kind=kind_phys) :: ui(nazd, levs+1) ! azimuthal wind + + real(kind=kind_phys) :: fden_bn(levs+1) ! density/brent + real(kind=kind_phys) :: flux (nwav, nazd) , flux_m (nwav, nazd) +! + real(kind=kind_phys) :: bn(levs+1) ! interface BV-frequency + real(kind=kind_phys) :: bn2(levs+1) ! interface BV*BV-frequency + real(kind=kind_phys) :: rhoint(levs+1) ! interface density + real(kind=kind_phys) :: uint(levs+1) ! interface zonal wind + real(kind=kind_phys) :: vint(levs+1) ! meridional wind + real(kind=kind_phys) :: tint(levs+1) ! temp-re + + real(kind=kind_phys) :: irhodz_mid(levs) + real(kind=kind_phys) :: suprf(levs+1) ! RF-super linear dissipation + real(kind=kind_phys) :: cstar(levs+1) ,cstar2(levs+1) + real(kind=kind_phys) :: v_zmet(levs+1) + real(kind=kind_phys) :: vueff(levs+1) + real(kind=kind_phys) :: dfdz_v(nazd, levs), dfdz_heat(nazd, levs) ! axj = -df*rho/dz directional Ax + + real(kind=kind_phys), dimension(levs) :: atm , aum, avm, aqm, aprsl, azmet, dz_met + real(kind=kind_phys), dimension(levs+1) :: aprsi, azmeti, dz_meti + + real(kind=kind_phys), dimension(levs) :: wrk3 + real(kind=kind_phys), dimension(levs) :: uold, vold, told, unew, vnew, tnew + real(kind=kind_phys), dimension(levs) :: rho, rhomid, adif, cdif, acdif + real(kind=kind_phys), dimension(levs) :: Qmid, AKT + real(kind=kind_phys), dimension(levs+1) :: dktur, Ktint, Kvint + real(kind=kind_phys), dimension(levs+1) :: fden_lsat, fden_bnen + + integer, dimension(levs) :: Anstab + + real(kind=kind_phys) :: sig_u2az(nazd), sig_u2az_m(nazd) + real(kind=kind_phys) :: wave_dis(nwav, nazd), wave_disaz(nazd) + real(kind=kind_phys) :: rdci(nwav), rci(nwav) + real(kind=kind_phys) :: wave_act(nwav, nazd) ! active waves at given vert-level + real(kind=kind_phys) :: ul(nazd) ! velocity in azimuthal direction at launch level +! +! scalars +! + real(kind=kind_phys) :: bvi, bvi2, bvi3, bvi4, rcms ! BV at launch level + real(kind=kind_phys) :: c2f2, cf1, wave_distot + + + real(kind=kind_phys) :: flux_norm ! norm-factor + real(kind=kind_phys) :: taub_src, rho_src, zcool, vmdiff +! + real(kind=kind_phys) :: zthm, dtau, cgz, ucrit_maxdc + real(kind=kind_phys) :: vm_zflx_mode, vc_zflx_mode + real(kind=kind_phys) :: kzw2, kzw3, kdsat, cdf2, cdf1, wdop2,v_cdp2 + real(kind=kind_phys) :: ucrit_max + real(kind=kind_phys) :: pwrms, ptrms + real(kind=kind_phys) :: zu, zcin, zcin2, zcin3, zcin4, zcinc + real(kind=kind_phys) :: zatmp, fluxs, zdep, ze1, ze2 + +! + real(kind=kind_phys) :: zdelp, zdelm, taud_min + real(kind=kind_phys) :: tvc, tvm, ptc, ptm + real(kind=kind_phys) :: umfp, umfm, umfc, ucrit3 + real(kind=kind_phys) :: fmode, expdis, fdis + real(kind=kind_phys) :: v_kzi, v_kzw, v_cdp, v_wdp, tx1, fcorsat, dzcrit + real(kind=kind_phys) :: v_wdi, v_wdpc + real(kind=kind_phys) :: ugw, vgw, ek1, ek2, rdtp, rdtp2, rhp_wam + + integer :: j, jj, k, kk, inc, jk, jkp, jl, iaz + integer :: ksrc, km2, km1, kp1, ktop +! +! Kturb-part +! + real(kind=kind_phys) :: uz, vz, shr2 , ritur, ktur + + real(kind=kind_phys) :: kamp, zmetk, zgrow + real(kind=kind_phys) :: stab, stab_dt, dtstab + real(kind=kind_phys) :: nslope3 +! + integer :: nstab, ist + real(kind=kind_phys) :: w1, w2, w3, dtdif + + real(kind=kind_phys) :: dzmetm, dzmetp, dzmetf, bdif, bt_dif, apc, kturp + real(kind=kind_phys) :: rstar, rstar2 + + real(kind=kind_phys) :: snorm_ener, sigu2, flux_2_sig, ekin_norm + real(kind=kind_phys) :: taub_ch, sigu2_ch + real(kind=kind_phys) :: Pr_kdis_eff, mf_diss_heat, iPr_max + real(kind=kind_phys) :: exp_sponge, mi_sponge, gipr + +!-------------------------------------------------------------------------- +! + nslope3 = nslope + 3.0 + Pr_kdis_eff = gw_eff*pr_kdis + iPr_max = max(1.0, iPr_ktgw) + gipr = grav* Ipr_ktgw +! +! test for input fields +! if (mpi_id == master .and. kdt < -2) then +! print *, im, levs, dtp, kdt, ' vay-solv2-v1' +! print *, minval(tm), maxval(tm), ' min-max-tm ' +! print *, minval(vm), maxval(vm), ' min-max-vm ' +! print *, minval(um), maxval(um), ' min-max-um ' +! print *, minval(qm), maxval(qm), ' min-max-qm ' +! print *, minval(prsl), maxval(prsl), ' min-max-Pmid ' +! print *, minval(prsi), maxval(prsi), ' min-max-Pint ' +! print *, minval(zmet), maxval(zmet), ' min-max-Zmid ' +! print *, minval(zmeti), maxval(zmeti), ' min-max-Zint ' +! print *, minval(prslk), maxval(prslk), ' min-max-Exner ' +! print *, minval(tau_ngw), maxval(tau_ngw), ' min-max-taungw ' +! print *, tau_min, ' tau_min ', tamp_mpa, ' tamp_mpa ' +! +! endif + + if (idebug_gwrms == 1) then + tauabs=0.0; wrms =0.0 ; trms =0.0 + endif + + rci(:) = 1./zci(:) + rdci(:) = 1./zdci(:) + + rdtp = 1./dtp + rdtp2 = 0.5*rdtp + + ksrc= max(ilaunch, 3) + km2 = ksrc - 2 + km1 = ksrc - 1 + kp1 = ksrc + 1 + ktop= levs+1 + + suprf(ktop) = kion(levs) + + do k=1,levs + suprf(k) = kion(k) ! approximate 1-st order damping with Fast super-RF of FV3 + pdvdt(:,k) = 0.0 + pdudt(:,k) = 0.0 + pdtdt(:,k) = 0.0 + dked(: ,k) = 0.0 + enddo + +!----------------------------------------------------------- +! column-based j=1,im pjysics with 1D-arrays +!----------------------------------------------------------- + DO j=1, im + jl =j + tx1 = omega2 * sinlat(j) *rv_kxw + cf1 = abs(tx1) + c2f2 = tx1 * tx1 + ucrit_max = max(ucrit, cf1) + ucrit3 = ucrit_max*ucrit_max*ucrit_max +! +! ngw-fluxes at all gridpoints (with tau_min at least) +! + aprsl(1:levs) = prsl(jl,1:levs) +! +! ksrc-define "aprsi(1:levs+1) redefine "ilaunch" +! + do k=1, levs + if (aprsl(k) .lt. psrc ) exit + enddo + ilaunch = max(k-1, 3) + ksrc= max(ilaunch, 3) + + zngw(j) = zmet(j, ksrc) + + km2 = ksrc - 2 + km1 = ksrc - 1 + kp1 = ksrc + 1 + +!=====ksrc + + aum(1:levs) = um(jl,1:levs) + avm(1:levs) = vm(jl,1:levs) + atm(1:levs) = tm(jl,1:levs) + aqm(1:levs) = qm(jl,1:levs) + azmet(1:levs) = zmet(jl,1:levs) + aprsi(1:levs+1) = prsi(jl,1:levs+1) + azmeti(1:levs+1) = zmeti(jl,1:levs+1) + + rho_src = aprsl(ksrc)*rdi/atm(ksrc) + taub_ch = max(tau_ngw(jl), tau_min) + taub_src = taub_ch + + + sigu2 = taub_src/rho_src/v_kxw * zms + sig_u2az(1:nazd) = sigu2 +! +! compute diffusion-based arrays km2:levs +! + do jk = km2, levs + dz_meti(jk) = azmeti(jk+1)-azmeti(jk) + dz_met(jk) = azmet(jk)-azmeti(jk-1) + enddo +! --------------------------------------------- +! interface mean flow parameters launch -> levs+1 +! --------------------------------------------- + do jk= km1,levs + tvc = atm(jk)*(1. +fv*aqm(jk)) + tvm = atm(jk-1)*(1. +fv*aqm(jk-1)) + ptc = tvc/ prslk(jl, jk) + ptm = tvm/prslk(jl,jk-1) +! + zthm = 2.0/(tvc+tvm) + rhp_wam = zthm*gor +!interface + uint(jk) = 0.5*(aum(jk-1)+aum(jk)) + vint(jk) = 0.5*(avm(jk-1)+avm(jk)) + tint(jk) = 0.5*(tvc+tvm) + rhomid(jk) = aprsl(jk)*rdi/atm(jk) + rhoint(jk) = aprsi(jk)*rdi*zthm ! rho = p/(RTv) + zdelp = dz_meti(jk) ! >0 ...... dz-meters + v_zmet(jk) = 2.*zdelp ! 2*kzi*[Z_int(k+1)-Z_int(k)] + zdelm = 1./dz_met(jk) ! 1/dz ...... 1/meters +! +! bvf2 = grav2*zdelm*(ptc-ptm)/(ptc + ptm) ! N2=[g/PT]*(dPT/dz) +! + bn2(jk) = grav2cpd*zthm*(1.0+rcpdl*(tvc-tvm)*zdelm) + bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) + bn(jk) = sqrt(bn2(jk)) + + + wrk3(jk)= 1./zdelp/rhomid(jk) ! 1/rho_mid(k)/[Z_int(k+1)-Z_int(k)] + irhodz_mid(jk) = rdtp*zdelp*rhomid(jk)/rho_src +! +! +! diagnostics -Kzz above PBL +! + uz = aum(jk) - aum(jk-1) + vz = avm(jk) - avm(jk-1) + shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm + + zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 + zgrow = exp(zmetk) + ritur = bn2(jk)/shr2 + kamp = sqrt(shr2)*sc2 *zgrow + w1 = 1./(1. + 5*ritur) + ktur= min(max(kamp * w1 * w1, dked_min), dked_max) + zmetk = azmet(jk)* rhp + vueff(jk) = ktur + kvg(jk) + + akt(jk) = gipr/tvc + enddo + + if (idebug_gwrms == 1) then + do jk= km1,levs + wrk1(jk) = rv_kxw/rhoint(jk) + wrk2(jk)= rgrav2*zthm*zthm*bn2(jk) ! dimension [K*K]*(c2/m2) + enddo + endif + +! +! extrapolating values for ktop = levs+1 (lev-interface for prsi(levs+1) =/= 0) +! + jk = levs + + rhoint(ktop) = 0.5*aprsi(levs)*rdi/atm(jk) + tint(ktop) = atm(jk)*(1. +fv*aqm(jk)) + uint(ktop) = aum(jk) + vint(ktop) = avm(jk) + + v_zmet(ktop) = v_zmet(jk) + vueff(ktop) = vueff(jk) + bn2(ktop) = bn2(jk) + bn(ktop) = bn(jk) +! +! akt_mid *KT = -g*(1/H + 1/T*dT/dz)*KT ... grav/tvc for eddy heat conductivity +! + do jk=km1, levs + akt(jk) = -akt(jk)*(gor + (tint(jk+1)-tint(jk))/dz_meti(jk) ) + enddo + + + bvi = bn(ksrc); bvi2 = bvi * bvi; + bvi3 = bvi2*bvi; bvi4 = bvi2 * bvi2; rcms = zms/bvi +! +! project winds at ksrc +! + do iaz=1, nazd + ul(iaz) = zcosang(iaz) *uint(ksrc) + zsinang(iaz) *vint(ksrc) + enddo +! + + do jk=ksrc, ktop + cstar(jk) = bn(jk)/zms + cstar2(jk) = cstar(jk)*cstar(jk) + + fden_lsat(jk) = rhoint(jk)/bn(jk)*v_kxw*Linsat2 + + do iaz=1, nazd + zu = zcosang(iaz)*uint(jk) + zsinang(iaz)*vint(jk) + ui(iaz, jk) = zu !- ul(iaz)*0. + enddo + enddo + + rstar = 1./cstar(ksrc) + rstar2 = rstar*rstar +! ----------------------------------------- +! set launch momentum flux spectral density +! ----------------------------------------- + + fpu(1:nazd, km2:ktop) =0. + + do inc=1,nwav + + zcin = zci(inc)*rstar + +! +! integrate (flux(cin) x dcin ) old tau-flux and normalization +! + flux(inc,1) = rstar*(zcin*zcin)/(1.+ zcin**nslope3) +! +! fsat = rstar*(zcin*zcin) * taub_src / SN * [rho/rho_src *N_src/N] +! + fpu(1,ksrc) = fpu(1,ksrc) + flux(inc,1)*zdci(inc) ! dc/cstar = dim-less + + do iaz=1,nazd + akzw(inc, iaz, ksrc) = bvi*rci(inc) + enddo + + enddo +! +! adjust rho/bn vertical factors for saturated fluxes (E(m) ~m^-3) + + flux_norm = taub_src / fpu(1, ksrc) ! [Pa * dc/cstar *dim_less] + ze1 = flux_norm * bvi/rhoint(ksrc) *rstar *rstar2 + do jk=ksrc, ktop + fden_bn(jk) = ze1* rhoint(jk) / bn(jk) ! [Pa]/[m/s] * rstar2 + enddo +! + do inc=1, nwav + flux(inc,1) = flux_norm*flux(inc,1) + enddo + + + if (ener_norm == 1) then + snorm_ener = 0. + do inc=1,nwav + zcin = zci(inc)*rstar + + ze2 = zcin /(1.+ zcin**nslope3) + + snorm_ener = snorm_ener + ze2*zdci(inc)*rstar !dim-less + flux(inc,1) = ze2 * zcin + enddo + + ekin_norm = 1./snorm_ener + +! taub_src = sigu2 * rho_src * [v_kxw / zms ] +! sigu2 = taub_src*zms/(rho_src/v_kxw) +! ze1 = sigu2*ks*dens/Ns = taub*zms/Ns + + ze1 = taub_src*zms/bvi * ekin_norm + taub_src = 0. + + do inc=1,nwav + flux(inc,1) = ze1* flux(inc,1) + taub_src = taub_src + flux(inc,1)*zdci(inc) + enddo + ze1 = ekin_norm * v_kxw * rstar2 + do jk=ksrc, ktop + fden_bnen(jk) = rhoint(jk) / bn(jk) *ze1 ! mult on => sigu2(z)*cdf2 => flux_sat + enddo + + endif +! + do iaz=1,nazd + fpu(iaz, ksrc) = taub_src + fpu(iaz, km1) = taub_src + enddo + +! copy flux-1 into other azimuths +! -------------------------------- + + + do iaz=2, nazd + do inc=1,nwav + flux(inc,iaz) = flux(inc,1) + enddo + enddo + +! if (mpi_id == master .and. ener_norm == 1) then +! print * +! print *, 'vay_norm: ', taub_src, taub_ch, sigu2, flux_norm, ekin_norm +! print * +! endif + + if (idebug_gwrms == 1) then + pwrms =0. + ptrms =0. + tx1 = real(nazd)/rhoint(ksrc)*rv_kxw + ze2 = wrk2(ksrc) ! (bvi*atm(ksrc)*rgrav)**2 + do inc=1, nwav + v_kzw = bvi*rci(inc) + ze1 = flux(inc,1)*zdci(inc)*tx1*v_kzw + pwrms = pwrms + ze1 + ptrms = ptrms + ze1 * ze2 + enddo + wrms(jl, ksrc) = pwrms + trms(jl, ksrc) = ptrms + endif + +! -------------------------------- + wave_act(:,:) = 1.0 +! vertical do-loop + do jk=ksrc, levs + + jkp = jk+1 +! azimuth do-loop + do iaz=1, nazd + + sig_u2az_m(iaz) = sig_u2az(iaz) + + umfp = ui(iaz, jkp) + umfm = ui(iaz, jk) + umfc = .5*(umfm + umfp) +! wave-cin loop + dfdz_v(iaz, jk) = 0.0 + dfdz_heat(iaz, jk) = 0.0 + fpu(iaz, jkp) = 0.0 + sig_u2az(iaz) =0.0 +! +! wave_dis(iaz, :) = vueff(jk) + do inc=1, nwav + flux_m(inc, iaz) = flux(inc, iaz) + + zcin = zci(inc) ! zcin =/0 by definition + zcinc = rci(inc) + + if(wave_act(inc,iaz) == 1.0) then +!======================================================================= +! discrete mode +! saturated limit wfit = kzw*kzw*kt; wfdt = wfit/(kxw*cx)*betat +! & dissipative kzi = 2.*kzw*(wfdm+wfdt)*dzpi(k) +!======================================================================= + + v_cdp = zcin - umfp + v_cdp2=v_cdp*v_cdp + cdf2 = v_cdp2 - c2f2 + if (v_cdp .le. ucrit_max .or. cdf2 .le. 0.0) then +! +! between layer [k-1,k or jk-jkp] (Chi - Uk) -> ucrit_max, wave's absorption +! + wave_act(inc,iaz) =0. + akzw(inc, iaz, jkp) = pi/dz_meti(jk) ! pi2/dzmet + fluxs = 0.0 !max(0., rhobnk(jkp)*ucrit3)*rdci(inc) + flux(inc,iaz) = fluxs + + else + + v_wdp = v_kxw*v_cdp + wdop2 = v_wdp* v_wdp + +! +! rotational cut-off +! + kzw2 = (bn2(jkp)-wdop2)/Cdf2 +! +!cires_ugwp_initialize.F90: real, parameter :: mkzmin = pi2/80.0e3 +! + if ( kzw2 > mkz2min ) then + v_kzw = sqrt(kzw2) + akzw(inc, iaz, jkp) = v_kzw +! +!linsatdis: kzw2, kzw3, kdsat, c2f2, cdf2, cdf1 +! +!kzw2 = (bn2(k)-wdop2)/Cdf2 - rhp4 - v_kx2w ! full lin DS-NGW (N2-wd2)*k2=(m2+k2+[1/2H]^2)*(wd2-f2) +! Kds_sat = kxw*Cdf1*rhp2/kzw3 +!krad, kvg, kion, ktg + v_cdp = sqrt( cdf2 ) + v_wdp = v_kxw * v_cdp + v_wdi = kzw2*vueff(jk) + kion(jk) ! supRF-diss due for "all" vars + v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) + v_kzi = v_kzw*v_wdi/v_wdpc + +! + ze1 = v_kzi*v_zmet(jk) + + if (ze1 .ge. 1.e-2) then + expdis = max(exp(-ze1), 0.01) + else + expdis = 1./(1.+ ze1) + endif + +! + wave_act(inc,iaz) = 1.0 + fmode = flux(inc,iaz) + + flux_2_sig = v_kzw/v_kxw/rhoint(jkp) + w1 = v_wdpc/kzw2/v_kzw/v_zmet(jk) + else ! kzw2 <= mkz2min large "Lz"-reflection + + expdis = 1.0 + v_kzw = mkzmin + + v_cdp = 0. ! no effects of reflected waves + wave_act(inc,iaz) = 0.0 + akzw(inc, iaz, jkp) = v_kzw + fmode = 0. + w1 =0. + endif +! expdis =1.0 + + fdis = fmode*expdis*wave_act(inc,iaz) +!============================================================================== +! +! Saturated Fluxes and Energy: Spectral and Dicrete Modes +! +! S2003 fluxs= fden_bn(jk)*(zcin-ui(jk,iaz))**2/zcin +! WM2001 fluxs= fden_bn(jk)*(zcin-ui(jk,iaz)) +! saturated flux + wave dissipation - Keddy_gwsat in UGWP-V1 +! linsatdis = 1.0 , here: u'^2 ~ linsatdis* [v_cdp*v_cdp] +! +! old-sat fluxs= fden_bn(jkp)*cdf2*zcinc*wave_act(inc,iaz) +! fluxs= fden_bn(jkp)*cdf2*zcinc*wave_act(inc,iaz) +! new sat fluxs= fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) +! +! fluxs= fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) + +! +! +! old spectral sat-limit with "mapping to source-level" sp_tau(cd) = fden_bn(jkp)*sqrt(cdf2) +! new spectral sat-limit with "mapping to source-level" sp_tau(cd) = fden_bn(jkp)*cdf2*rstar2 +! [fden_bn(jkp)] = Pa/dc +! fsat = rstar*(zcin*zcin) * [taub_src / SN * [ rstar3*rho/rho_src *N_src/N] = fden_bn ] + + if (ener_norm == 0) fluxs= fden_bn(jkp)*cdf2*wave_act(inc,iaz) ! dim-n: Pa/[m/s] +! +! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc +! + if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) + + if (ener_norm == 1) then + +! spectral saturation limit + + if (ener_lsat == 0) fluxs= fden_bnen(jk)*cdf2*wave_act(inc,iaz)*sig_u2az_m(iaz) + +! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc + + if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) +! + endif +!---------------------------------------------------------------------------- +! dicrete mode saturation fden_sat(jkp) = rhoint(jkp)/bn(jkp)*v_kxw +! fluxs = fden_sat(jkp)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat +! fluxs_src = fden_sat(ksrc)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat +!---------------------------------------------------------------------------- + zdep = fdis-fluxs ! dimension [Pa/dc] *dc = Pa + if(zdep > 0.0 ) then +! subs on sat-limit + ze1 = flux(inc,iaz) + flux(inc,iaz) = fluxs + ze2 = log(ze1/fluxs)*w1 ! Kdsat-compute damping of mode =>df = f-fluxs + ! here we can add extra-dissip for the next layer + else +! assign dis-ve flux + flux(inc,iaz) = fdis + endif + + dtau = flux_m(inc,iaz)-flux(inc,iaz) + if (dtau .lt. 0) then + flux(inc,iaz) = flux_m(inc,iaz) + endif +! +! GW-sponge domain: saturate all "GW"-modes above "zsp_gw" +! + if ( azmeti(jkp) .ge. zsp_gw) then + mi_sponge = .5/dz_meti(jk) + ze2 = v_wdp /v_kzw * mi_sponge ! Ksat*v_kzw2 = [mi_sat*wdp/kzw] + v_wdi = ze2 + v_wdi*0.25 ! diss-sat GW-sponge + v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) + v_kzi = v_kzw*v_wdi/v_wdpc +! + ze1 = v_kzi*v_zmet(jk) + exp_sponge = exp(-ze1) +! +! additional sponge +! + flux(inc,iaz) = flux(inc,iaz) *exp_sponge + endif + + endif ! coriolis or CL condition-checkif => (v_cdp .le. ucrit_max) then + endif ! only for waves w/o CL-absorption wave_act=1 +! +! sum for given (jk, iaz) all active "wave" contributions +! + if (wave_act(inc,iaz) == 1) then + + zcinc =zdci(inc) + vc_zflx_mode = flux(inc,iaz) + vmdiff = max(0., flux_m(inc,iaz)-vc_zflx_mode) + if (vmdiff <= 0. ) vc_zflx_mode = flux_m(inc,iaz) + ze1 = vc_zflx_mode*zcinc + fpu(iaz, jkp) = fpu(iaz,jkp) + ze1 ! flux (pa) at + sig_u2az(iaz) = sig_u2az(iaz) + ze1*flux_2_sig ! ekin(m2/s2) at z+dz + +!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +! (heat deposition integration over spectral mode for each azimuth +! later sum over selected azimuths as "non-negative" scalars) +! cdf1 = sqrt( (zci(inc)-umfc)**2-c2f2) +!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +! zdelp = wrk3(jk)*cdf1 *zcinc + + zdelp = wrk3(jk)* v_cdp *zcinc * vmdiff + + +! zcool = 1. ! COOL=(-3.5 + Pr)/Pr +! zcool = [Kv/Pr]*N2*(Pr-Cp/R)/cp +! edis = (c-u)*ax/cp = Kv_dis*N2/cp +! cool = -Kt*N2/R +! add heat-conduction "bulk" impact: 1/Pr*(g*g*rho)* d [rho*Kv(dT/dp- R/Cp *T/p)] +! + dfdz_v(iaz, jk) = dfdz_v(iaz,jk) + zdelp ! +cool !heating & simple cooling < 0 + dfdz_heat(iaz, jk) = dfdz_heat(iaz,jk) + zdelp ! heating -only > 0 + endif !wave_act(inc,iaz) == 1) +! + enddo ! wave-inc-loop + + ze1 =fpu(iaz, jk) + if (fpu(iaz, jkp) > ze1 ) fpu(iaz, jkp) = ze1 +! +! compute wind and temp-re rms +! + if (idebug_gwrms == 1) then + pwrms =0. + ptrms =0. + do inc=1, nwav + if (wave_act(inc,iaz) > 0.) then + v_kzw =akzw(inc, iaz, jk) + ze1 = flux(inc,iaz)*v_kzw*zdci(inc)*wrk1(jk) + pwrms = pwrms + ze1 + ptrms = ptrms + ze1*wrk2(jk) + endif + enddo + Awrms(iaz, jk) = pwrms + Atrms(iaz, jk) = ptrms + endif + +! -------------- + enddo ! end Azimuth do-loop + +! +! eddy wave dissipation to limit GW-rms +! + tx1 = sum(abs(dfdz_heat(1:nazd, jk)))/bn2(jk) + ze1=max(dked_min, tx1) + ze2=min(dked_max, ze1) + vueff(jkp) = ze2 + vueff(jkp) +! + enddo ! end Vertical do-loop +! +! top-layers constant interface-fluxes and zero-heat +! we allow non-zero momentum fluxes and thermal effects +! fpu(1:nazd,levs+1) = fpu(1:nazd, levs) +! dfdz_v(1:nazd, levs) = 0.0 + +! --------------------------------------------------------------------- +! sum contribution for total zonal and meridional fluxes + +! energy dissipation +! --------------------------------------------------- +! +!======================================================================== +! at the source level and below taux = 0 (taux_E=-taux_W by assumption) +!======================================================================== + + do jk=ksrc, levs + taux(jk) = 0.0 + tauy(jk) = 0.0 + do iaz=1,nazd + taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) + tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) + pdtdt(jl,jk) = pdtdt(jl,jk) + dfdz_v(iaz,jk) + dked(jl,jk) = dked(jl,jk) + dfdz_heat(iaz,jk) + enddo + enddo + jk = ktop; taux(jk)=0.; tauy(jk)=0. + do iaz=1,nazd + taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) + tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) + enddo + + if (idebug_gwrms == 1) then + do jk=kp1, levs + do iaz=1,nazd + wrms(jl,jk) =wrms(jl,jk) + Awrms(iaz,jk) + trms(jl,jk) =trms(jl,jk) + Atrms(iaz,jk) + tauabs(jl,jk)=tauabs(jl,jk) + fpu(iaz,jk) + enddo + enddo + endif +! + + do jk=ksrc+1,levs + jkp = jk + 1 + zdelp = wrk3(jk)*gw_eff + ze1 = (taux(jkp)-taux(jk))* zdelp + ze2 = (tauy(jkp)-tauy(jk))* zdelp + + if (abs(ze1) >= maxdudt ) then + ze1 = sign(maxdudt, ze1) + endif + if (abs(ze2) >= maxdudt ) then + ze2 = sign(maxdudt, ze2) + endif + + pdudt(jl,jk) = -ze1 + pdvdt(jl,jk) = -ze2 +! +! Cx =0 based Cx=/= 0. above +! +! + if (knob_ugwp_doheat == 1) then +! +!maxdtdt= dked_max * bnfix2 +! + pdtdt(jl,jk) = pdtdt(jl,jk)*gw_eff + ze2 = pdtdt(jl,jk) + if (abs(ze2) >= max_eps ) pdtdt(jl,jk) = sign(max_eps, ze2) + + dked(jl,jk) = dked(jl,jk)/bn2(jk) + ze1 = max(dked_min, dked(jl,jk)) + dked(jl,jk) = min(dked_max, ze1) + qmid(jk) = pdtdt(j,jk) + endif + enddo +!---------------------------------------------------------------------------------- +! Update heat = ek_diss/cp and aply 1-2-1 smoother for "dked" => dktur +! here with "u_new = u +dtp*dudt ; vnew = v + v +dtp*dvdt +! can check "stability" in the column and "add" ktur-estimation +! to suppress instability as needed so dked = dked_gw + ktur_ric +!---------------------------------------------------------------------------------- + + dktur(1:levs) = dked(jl,1:levs) +! + do ist= 1, nstdif + do jk=ksrc,levs-1 + adif(jk) =.25*(dktur(jk-1)+ dktur(jk+1)) + .5*dktur(jk) + enddo + dktur(ksrc:levs-1) = adif(ksrc:levs-1) + enddo + dktur(levs) = .5*( dked(jl,levs)+ dked(jl,levs-1)) + dktur(levs+1) = dktur(levs) + + do jk=ksrc,levs+1 + ze1 = .5*( dktur(jk) +dktur(jk-1) ) + kvint(jk) = ze1 + ktint(jk) = ze1*iPr_ktgw + enddo + +! +! Thermal budget qmid = qheat + qcool +! + do jk=ksrc+1,levs + ze2 = qmid(jk) + dktur(jk)*Akt(jk) + grav*(ktint(jk+1)-ktint(jk))/dz_meti(jk) + qmid(jk) = ze2 + if (abs(ze2) >= max_eps ) qmid(jk) = sign(max_eps, ze2) + pdtdt(jl,jk) = qmid(jk)*rcpd + dked(jl, jk) = dktur(jk) + enddo +! +! perform explicit eddy "diffusive" 3-point smoothing of "u-v-t" +! from the surface/launch-gw to the "top" +! +! +! update by source function X(t+dt) = X(t) + dtp * dXdt +! + uold(km2:levs) = aum(km2:levs)+pdudt(jl,km2:levs)*dtp + vold(km2:levs) = avm(km2:levs)+pdvdt(jl,km2:levs)*dtp + told(km2:levs) = atm(km2:levs)+pdtdt(jl,km2:levs)*dtp +! +! diagnose turb-profile using "stability-check" relying on the free-atm diffusion +! sc2 = 30m x 30m +! + dktur(km2:levs) = dked_min + + do jk=km1,levs + uz = uold(jk) - uold(jk-1) + vz = vold(jk) - vold(jk-1) + ze1 = dz_met(jk) + zdelm = 1./ze1 + + tvc = told(jk) * (1. +fv*aqm(jk)) + tvm = told(jk-1) * (1. +fv*aqm(jk-1)) + zthm = 2.0 / (tvc+tvm) + shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm + + bn2(jk) = grav2cpd*zthm * (1.0+rcpdl*(tvc-tvm)*zdelm) + + bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) + zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 + zgrow = exp(zmetk) + ritur = bn2(jk)/shr2 + w1 = 1./(1. + 5*ritur) + ze2 = min( sc2 *zgrow, 4.*ze1*ze1) +! +! Smag-type of eddy diffusion K_smag = Sqrt(Deformation - N2/Pr)* L2 *const +! + kamp = sqrt(shr2)* ze2 * w1 * w1 + ktur= min(max(kamp, dked_min), dked_max) + dktur(jk) = ktur +! +! update of dked = dked_gw + k_turb_mf +! + dked(jl, jk) = dked(jl, jk) +ktur + + enddo + +! +! apply eddy effects due to GWs: explicit scheme Kzz*dt/dz2 < 0.5 stability +! + if (knob_ugwp_dokdis == 2) then + + do jk=ksrc,levs + ze1 = min(.5*(dktur(jk) +dktur(jk-1)), dturb_max) + kvint(jk) = kvint(jk) + ze1 +! ktint(jk) = ktint(jk) + ze1*iPr_ktgw + enddo + kvint(km1) = kvint(ksrc) + kvint(ktop) = kvint(levs) + + dzmetm = 1./dz_met(km1) + Adif(km1:levs) = 0. + Cdif(km1:levs) = 0. + do jk=km1,levs-1 + + dzmetp = 1./dz_met(jk+1) + dzmetf = 1./(dz_meti(jk)*rhomid(jk)) + + + ktur = kvint(jk) *rhoint(jk) * dzmetf + kturp =Kvint(jk+1)*rhoint(jk+1) * dzmetf + + Adif(jk) = ktur * dzmetm + Cdif(jk) = kturp * dzmetp + ApC = adif(jk)+cdif(jk) + ACdif(jk) = ApC + + w1 = ApC*iPr_max + if (rdtp < w1 ) then + Anstab(jk) = floor(w1*dtp) + 1 + else + Anstab(jk) = 1 + endif + dzmetm = dzmetp + enddo + + nstab = maxval( Anstab(ksrc:levs-1)) + +! if (nstab .ge. 3) print *, 'nstab ', nstab +! +! k instead Jk +! + dtdif = dtp/real(nstab) + ze1 = 1./dtdif + + do ist= 1, nstab + do k=ksrc,levs-1 + Bdif = ze1 - ACdif(k) + Bt_dif = ze1 - ACdif(k)* iPr_ktgw ! ipr_Ktgw = 1./Pr <1 + unew(k) = uold(k)*Bdif + uold(k-1)*Adif(k) + uold(k+1)*Cdif(k) + vnew(k) = vold(k)*Bdif + vold(k-1)*Adif(k) + vold(k+1)*Cdif(k) + tnew(k) = told(k)*Bt_dif+(told(k-1)*Adif(k) + told(k+1)*Cdif(k))*iPr_ktgw + enddo + + uold(ksrc:levs-1) = unew(ksrc:levs-1)*dtdif ! value du/dtp *dtp = du + vold(ksrc:levs-1) = vnew(ksrc:levs-1)*dtdif + told(ksrc:levs-1) = tnew(ksrc:levs-1)*dtdif +! +! smoothing the boundary points: "k-1" = ksrc-1 and "k+1" = levs +! + uold(levs) = uold(levs-1) + vold(levs) = vold(levs-1) + told(levs) = told(levs-1) + enddo +! +! compute "smoothed" tendencies by molecular + GW-eddy diffusions +! + do k=ksrc,levs-1 +! +! final updates of tendencies and diffusion +! + ze2 = rdtp*(uold(k) - aum(k)) + ze1 = rdtp*(vold(k) - avm(k)) + pdtdt(jl,k)= rdtp*( told(k) - atm(k) ) + + if (abs(pdtdt(jl,k)) >= maxdtdt ) pdtdt(jl,k) = sign(maxdtdt,pdtdt(jl,k) ) + if (abs(ze1) >= maxdudt ) then + ze1 = sign(maxdudt, ze1) + endif + if (abs(ze2) >= maxdudt ) then + ze2 = sign(maxdudt, ze2) + endif + + pdudt(jl, k) = ze2 + pdvdt(jl, k) = ze1 + uz = uold(k+1) - uold(k-1) + vz = vold(k+1) - vold(k-1) + ze2 = 1./(dz_met(k+1)+dz_met(k) ) + mf_diss_heat = rcpd*kvint(k)*(uz*uz +vz*vz)*ze2*ze2 ! vert grad heat + pdtdt(jl,k)= pdtdt(jl,k) + mf_diss_heat ! extra heat due to eddy viscosity + + enddo + + + ENDIF ! dissipative IF-loop for vertical eddy difusion u-v-t + + enddo ! J-loop +! + RETURN + +!================================= diag print after "return" ====================== + if (kdt ==1 .and. mpi_id == master) then +! + print *, ' ugwpv1: nazd-nw-ilaunch=', nazd, nwav,ilaunch, maxval(kvg), ' kvg ' + print *, 'ugwpv1: zdci(inc)=' , maxval(zdci), minval(zdci) + print *, 'ugwpv1: zcimax=' , maxval(zci) ,' zcimin=' , minval(zci) +! print *, 'ugwpv1: tau_ngw=' , maxval(taub_src)*1.e3, minval(taub_src)*1.e3, tau_min + + print * + + endif + + if (kdt == 1 .and. mpi_id == master) then + print *, 'vgw done nstab ', nstab +! + print *, maxval(pdudt)*86400., minval(pdudt)*86400, 'vgw ax ugwp' + print *, maxval(pdvdt)*86400., minval(pdvdt)*86400, 'vgw ay ugwp' + print *, maxval(dked)*1., minval(dked)*1, 'vgw keddy m2/sec ugwp' + print *, maxval(pdtdt)*86400., minval(pdtdt)*86400,'vgw eps ugwp' +! +! print *, ' ugwp -heating rates ' + endif +!================================= + return + end subroutine cires_ugwpv1_ngw_solv2 + + +end module cires_ugwpv1_solv2 From 5f323e2dc4d2d4881f727b752dcdd47438b4ba45 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Fri, 27 Aug 2021 00:05:48 +0000 Subject: [PATCH 15/98] commit double couning of cloud diagnostic arrays in rrtmgp --- physics/GFS_rrtmgp_lw_post.F90 | 72 +++++++++++++------------- physics/GFS_rrtmgp_sw_post.F90 | 92 ++++++++++++++++++---------------- 2 files changed, 84 insertions(+), 80 deletions(-) diff --git a/physics/GFS_rrtmgp_lw_post.F90 b/physics/GFS_rrtmgp_lw_post.F90 index ff0346fe4..2e30fdbd0 100644 --- a/physics/GFS_rrtmgp_lw_post.F90 +++ b/physics/GFS_rrtmgp_lw_post.F90 @@ -1,4 +1,4 @@ -module GFS_rrtmgp_lw_post +module GFS_rrtmgp_lw_post use machine, only: kind_phys use module_radiation_aerosols, only: NSPC1 use module_radlw_parameters, only: topflw_type, sfcflw_type, proflw_type @@ -6,9 +6,9 @@ module GFS_rrtmgp_lw_post use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp use mo_fluxes_byband, only: ty_fluxes_byband use mo_heating_rates, only: compute_heating_rate - use radiation_tools, only: check_error_msg + use radiation_tools, only: check_error_msg implicit none - + public GFS_rrtmgp_lw_post_init,GFS_rrtmgp_lw_post_run,GFS_rrtmgp_lw_post_finalize contains @@ -29,16 +29,16 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag fluxlwDOWN_clrsky, raddt, aerodp, cldsa, mtopa, mbota, cld_frac, cldtaulw, fluxr, & sfcdlw, sfculw, sfcflw, tsflw, htrlw, topflw, flxprf_lw, htrlwc, errmsg, errflg) - ! Inputs - integer, intent(in) :: & + ! Inputs + integer, intent(in) :: & nCol, & ! Horizontal loop extent nLev ! Number of vertical layers - logical, intent(in) :: & + logical, intent(in) :: & lslwr, & ! Logical flags for lw radiation calls - do_lw_clrsky_hr, & ! Output clear-sky SW heating-rate? - save_diag ! Output radiation diagnostics? + do_lw_clrsky_hr, & ! Output clear-sky SW heating-rate? + save_diag ! Output radiation diagnostics? real(kind_phys), intent(in) :: & - fhlwr ! Frequency for SW radiation + fhlwr ! Frequency for SW radiation real(kind_phys), dimension(nCol), intent(in) :: & tsfa ! Lowest model layer air temperature for radiation (K) real(kind_phys), dimension(nCol, nLev), intent(in) :: & @@ -52,25 +52,25 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag real(kind_phys), intent(in) :: & raddt ! Radiation time step real(kind_phys), dimension(nCol,NSPC1), intent(in) :: & - aerodp ! Vertical integrated optical depth for various aerosol species + aerodp ! Vertical integrated optical depth for various aerosol species real(kind_phys), dimension(nCol,5), intent(in) :: & - cldsa ! Fraction of clouds for low, middle, high, total and BL + cldsa ! Fraction of clouds for low, middle, high, total and BL integer, dimension(nCol,3), intent(in) ::& mbota, & ! vertical indices for low, middle and high cloud tops mtopa ! vertical indices for low, middle and high cloud bases real(kind_phys), dimension(nCol,nLev), intent(in) :: & cld_frac, & ! Total cloud fraction in each layer - cldtaulw ! approx 10.mu band layer cloud optical depth - + cldtaulw ! approx 10.mu band layer cloud optical depth + real(kind=kind_phys), dimension(:,:), intent(inout) :: fluxr - + ! Outputs (mandatory) real(kind_phys), dimension(nCol), intent(inout) :: & sfcdlw, & ! Total sky sfc downward lw flux (W/m2) sfculw, & ! Total sky sfc upward lw flux (W/m2) tsflw ! surface air temp during lw calculation (K) type(sfcflw_type), dimension(nCol), intent(inout) :: & - sfcflw ! LW radiation fluxes at sfc + sfcflw ! LW radiation fluxes at sfc real(kind_phys), dimension(nCol,nLev), intent(inout) :: & htrlw ! LW all-sky heating rate type(topflw_type), dimension(nCol), intent(out) :: & @@ -79,7 +79,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag errmsg integer, intent(out) :: & errflg - + ! Outputs (optional) type(proflw_type), dimension(nCol, nLev+1), optional, intent(inout) :: & flxprf_lw ! 2D radiative fluxes, components: @@ -89,7 +89,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag ! dnfx0 - clear sky dnward flux (W/m2) real(kind_phys),dimension(nCol, nLev),intent(inout),optional :: & htrlwc ! Longwave clear-sky heating-rate (K/sec) - + ! Local variables integer :: i, j, k, iSFC, iTOA, itop, ibtc logical :: l_fluxeslw2d, top_at_1 @@ -118,7 +118,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag endif ! ####################################################################################### - ! Compute LW heating-rates. + ! Compute LW heating-rates. ! ####################################################################################### ! Clear-sky heating-rate (optional) if (do_lw_clrsky_hr) then @@ -128,7 +128,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag p_lev, & ! IN - Pressure @ layer-interfaces (Pa) htrlwc)) ! OUT - Longwave clear-sky heating rate (K/sec) endif - + ! All-sky heating-rate (mandatory) call check_error_msg('GFS_rrtmgp_post',compute_heating_rate( & fluxlwUP_allsky, & ! IN - RRTMGP upward longwave all-sky flux profiles (W/m2) @@ -147,7 +147,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag sfcflw(:)%upfx0 = fluxlwUP_clrsky(:,iSFC) sfcflw(:)%dnfxc = fluxlwDOWN_allsky(:,iSFC) sfcflw(:)%dnfx0 = fluxlwDOWN_clrsky(:,iSFC) - + ! Optional outputs if(l_fluxeslw2d) then flxprf_lw%upfxc = fluxlwUP_allsky @@ -155,7 +155,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag flxprf_lw%upfx0 = fluxlwUP_clrsky flxprf_lw%dnfx0 = fluxlwDOWN_clrsky endif - + ! Save surface air temp for diurnal adjustment at model t-steps tsflw (:) = tsfa(:) @@ -165,8 +165,8 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag ! ####################################################################################### ! Save LW diagnostics - ! - For time averaged output quantities (including total-sky and clear-sky SW and LW - ! fluxes at TOA and surface; conventional 3-domain cloud amount, cloud top and base + ! - For time averaged output quantities (including total-sky and clear-sky SW and LW + ! fluxes at TOA and surface; conventional 3-domain cloud amount, cloud top and base ! pressure, and cloud top temperature; aerosols AOD, etc.), store computed results in ! corresponding slots of array fluxr with appropriate time weights. ! - Collect the fluxr data for wrtsfc @@ -182,24 +182,24 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag fluxr(i,30) = fluxr(i,30) + fhlwr * fluxlwDOWN_clrsky(i,iSFC) ! clear sky sfc lw dn fluxr(i,33) = fluxr(i,33) + fhlwr * fluxlwUP_clrsky( i,iSFC) ! clear sky sfc lw up enddo - - do i=1,nCol - fluxr(i,17) = fluxr(i,17) + raddt * cldsa(i,4) - fluxr(i,18) = fluxr(i,18) + raddt * cldsa(i,5) - enddo + +! do i=1,nCol +! fluxr(i,17) = fluxr(i,17) + raddt * cldsa(i,4) +! fluxr(i,18) = fluxr(i,18) + raddt * cldsa(i,5) +! enddo ! Save cld frac,toplyr,botlyr and top temp, note that the order of h,m,l cloud is reversed for ! the fluxr output. save interface pressure (pa) of top/bot do j = 1, 3 do i = 1, nCol - tem0d = raddt * cldsa(i,j) - itop = mtopa(i,j) - ibtc = mbota(i,j) - fluxr(i, 8-j) = fluxr(i, 8-j) + tem0d - fluxr(i,11-j) = fluxr(i,11-j) + tem0d * p_lev(i,itop) - fluxr(i,14-j) = fluxr(i,14-j) + tem0d * p_lev(i,ibtc) - fluxr(i,17-j) = fluxr(i,17-j) + tem0d * t_lay(i,itop) - +! tem0d = raddt * cldsa(i,j) +! itop = mtopa(i,j) +! ibtc = mbota(i,j) +! fluxr(i, 8-j) = fluxr(i, 8-j) + tem0d +! fluxr(i,11-j) = fluxr(i,11-j) + tem0d * p_lev(i,itop) +! fluxr(i,14-j) = fluxr(i,14-j) + tem0d * p_lev(i,ibtc) +! fluxr(i,17-j) = fluxr(i,17-j) + tem0d * t_lay(i,itop) + ! Add optical depth and emissivity output tem2 = 0. do k=ibtc,itop diff --git a/physics/GFS_rrtmgp_sw_post.F90 b/physics/GFS_rrtmgp_sw_post.F90 index 23a681826..d8514650a 100644 --- a/physics/GFS_rrtmgp_sw_post.F90 +++ b/physics/GFS_rrtmgp_sw_post.F90 @@ -1,14 +1,14 @@ -module GFS_rrtmgp_sw_post +module GFS_rrtmgp_sw_post use machine, only: kind_phys use module_radiation_aerosols, only: NSPC1 use module_radsw_parameters, only: topfsw_type, sfcfsw_type, profsw_type, cmpfsw_type use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp use mo_fluxes_byband, only: ty_fluxes_byband use mo_heating_rates, only: compute_heating_rate - use radiation_tools, only: check_error_msg + use radiation_tools, only: check_error_msg use rrtmgp_sw_gas_optics, only: sw_gas_props implicit none - + public GFS_rrtmgp_sw_post_init,GFS_rrtmgp_sw_post_run,GFS_rrtmgp_sw_post_finalize contains @@ -33,23 +33,23 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky nirbmdi, nirdfdi, visbmdi, visdfdi, nirbmui, nirdfui, visbmui, visdfui, sfcnsw, & sfcdsw, htrsw, sfcfsw, topfsw, htrswc, flxprf_sw, scmpsw, errmsg, errflg) - ! Inputs - integer, intent(in) :: & - nCol, & ! Horizontal loop extent + ! Inputs + integer, intent(in) :: & + nCol, & ! Horizontal loop extent nLev, & ! Number of vertical layers nDay ! Number of daylit columns integer, intent(in), dimension(nday) :: & idxday ! Index array for daytime points - logical, intent(in) :: & - lsswr, & ! Call SW radiation? - do_sw_clrsky_hr, & ! Output clear-sky SW heating-rate? - save_diag ! Output radiation diagnostics? + logical, intent(in) :: & + lsswr, & ! Call SW radiation? + do_sw_clrsky_hr, & ! Output clear-sky SW heating-rate? + save_diag ! Output radiation diagnostics? real(kind_phys), intent(in) :: & fhswr ! Frequency for SW radiation real(kind_phys), dimension(nCol), intent(in) :: & t_lay, & ! Temperature at model layer centers (K) - coszen, & ! Cosine(SZA) - coszdg ! Cosine(SZA), daytime + coszen, & ! Cosine(SZA) + coszdg ! Cosine(SZA), daytime real(kind_phys), dimension(nCol, nLev+1), intent(in) :: & p_lev ! Pressure @ model layer-interfaces (Pa) real(kind_phys), dimension(sw_gas_props%get_nband(),ncol), intent(in) :: & @@ -65,17 +65,17 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky real(kind_phys), intent(in) :: & raddt ! Radiation time step real(kind_phys), dimension(nCol,NSPC1), intent(in) :: & - aerodp ! Vertical integrated optical depth for various aerosol species + aerodp ! Vertical integrated optical depth for various aerosol species real(kind_phys), dimension(nCol,5), intent(in) :: & - cldsa ! Fraction of clouds for low, middle, high, total and BL + cldsa ! Fraction of clouds for low, middle, high, total and BL integer, dimension(nCol,3), intent(in) ::& mbota, & ! vertical indices for low, middle and high cloud tops mtopa ! vertical indices for low, middle and high cloud bases real(kind_phys), dimension(nCol,nLev), intent(in) :: & cld_frac, & ! Total cloud fraction in each layer cldtausw ! approx .55mu band layer cloud optical depth - - ! Inputs (optional) + + ! Inputs (optional) type(cmpfsw_type), dimension(nCol), intent(inout), optional :: & scmpsw ! 2D surface fluxes, components: ! uvbfc - total sky downward uv-b flux at (W/m2) @@ -83,10 +83,10 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky ! 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) - + ! visdf - downward uv+vis diffused flux (W/m2) + real(kind=kind_phys), dimension(:,:), intent(inout) :: fluxr - + ! Outputs (mandatory) real(kind_phys), dimension(nCol), intent(inout) :: & nirbmdi, & ! sfc nir beam sw downward flux (W/m2) @@ -96,7 +96,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky nirbmui, & ! sfc nir beam sw upward flux (W/m2) nirdfui, & ! sfc nir diff sw upward flux (W/m2) visbmui, & ! sfc uv+vis beam sw upward flux (W/m2) - visdfui, & ! sfc uv+vis diff sw upward flux (W/m2) + visdfui, & ! sfc uv+vis diff sw upward flux (W/m2) sfcnsw, & ! total sky sfc netsw flx into ground sfcdsw ! real(kind_phys), dimension(nCol,nLev), intent(inout) :: & @@ -119,7 +119,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky ! dnfx0 - clear sky dnward flux (W/m2) real(kind_phys),dimension(nCol, nLev),intent(inout),optional :: & htrswc ! Clear-sky heating rate (K/s) - + ! Local variables integer :: i, j, k, iSFC, iTOA, itop, ibtc real(kind_phys) :: tem0d, tem1, tem2 @@ -135,7 +135,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky ! Are any optional outputs requested? l_fluxessw2d = present(flxprf_sw) - + ! Are the components of the surface fluxes provided? l_scmpsw = present(scmpsw) @@ -150,7 +150,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky iSFC = 1 iTOA = nLev+1 endif - + ! ####################################################################################### ! Compute SW heating-rates ! ####################################################################################### @@ -194,10 +194,10 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky flxprf_sw(:,:)%upfx0 = fluxswUP_clrsky(:,:) flxprf_sw(:,:)%dnfx0 = fluxswDOWN_clrsky(:,:) endif - + ! Surface down and up spectral component fluxes ! - Save two spectral bands' surface downward and upward fluxes for output. - if (l_scmpsw) then + if (l_scmpsw) then do i=1,nCol nirbmdi(i) = scmpsw(i)%nirbm nirdfdi(i) = scmpsw(i)%nirdf @@ -209,15 +209,17 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky visdfui(i) = scmpsw(i)%visdf * sfc_alb_uvvis_dif(1,i) enddo else - nirbmdi(:) = 0.0 - nirdfdi(:) = 0.0 - visbmdi(:) = 0.0 - visdfdi(:) = 0.0 - nirbmui(:) = 0.0 - nirdfui(:) = 0.0 - visbmui(:) = 0.0 - visdfui(:) = 0.0 - endif + do i=1,nCol + nirbmdi(i) = 0.0 + nirdfdi(i) = 0.0 + visbmdi(i) = 0.0 + visdfdi(i) = 0.0 + nirbmui(i) = 0.0 + nirdfui(i) = 0.0 + visbmui(i) = 0.0 + visdfui(i) = 0.0 + enddo + endif else ! if_nday_block ! ####################################################################################### ! Dark everywhere @@ -225,15 +227,17 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky htrsw(:,:) = 0.0 sfcfsw = sfcfsw_type( 0.0, 0.0, 0.0, 0.0 ) topfsw = topfsw_type( 0.0, 0.0, 0.0 ) - nirbmdi(:) = 0.0 - nirdfdi(:) = 0.0 - visbmdi(:) = 0.0 - visdfdi(:) = 0.0 - nirbmui(:) = 0.0 - nirdfui(:) = 0.0 - visbmui(:) = 0.0 - visdfui(:) = 0.0 - + do i=1,nCol + nirbmdi(i) = 0.0 + nirdfdi(i) = 0.0 + visbmdi(i) = 0.0 + visdfdi(i) = 0.0 + nirbmui(i) = 0.0 + nirdfui(i) = 0.0 + visbmui(i) = 0.0 + visdfui(i) = 0.0 + enddo + if (do_sw_clrsky_hr) then htrswc(:,:) = 0 endif @@ -279,7 +283,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky fluxr(i,27) = fluxr(i,27) + nirdfdi(i) * tem0d ! nir diff sw dn ! SW clear-sky fluxes fluxr(i,29) = fluxr(i,29) + topfsw(i)%upfx0 * tem0d - fluxr(i,31) = fluxr(i,31) + sfcfsw(i)%upfx0 * tem0d + fluxr(i,31) = fluxr(i,31) + sfcfsw(i)%upfx0 * tem0d fluxr(i,32) = fluxr(i,32) + sfcfsw(i)%dnfx0 * tem0d endif enddo From 5f28eff152d153b12de38fda91e3e5ca426d515e Mon Sep 17 00:00:00 2001 From: Ruiyu Sun Date: Thu, 9 Sep 2021 09:47:53 +0000 Subject: [PATCH 16/98] Add semi-Lagrangian sedimentation of rain to Thompson MP as an option --- physics/module_mp_thompson.F90 | 361 ++++++++++++++++++++++++++++++++- physics/mp_thompson.F90 | 13 ++ physics/mp_thompson.meta | 36 +++- 3 files changed, 399 insertions(+), 11 deletions(-) diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 index f05aa8ba2..f0334deaf 100644 --- a/physics/module_mp_thompson.F90 +++ b/physics/module_mp_thompson.F90 @@ -970,6 +970,8 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & nwfa, nifa, nwfa2d, nifa2d, & tt, th, pii, & p, w, dz, dt_in, dt_inner, & + sedi_semi, sedi_semi_update, & + sedi_semi_decfl, & RAINNC, RAINNCV, & SNOWNC, SNOWNCV, & ICENC, ICENCV, & @@ -1047,6 +1049,7 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & vt_dbz_wt LOGICAL, INTENT(IN) :: first_time_step REAL, INTENT(IN):: dt_in, dt_inner + LOGICAL, INTENT(IN) :: sedi_semi, sedi_semi_update, sedi_semi_decfl ! To support subcycling: current step and maximum number of steps INTEGER, INTENT (IN) :: istep, nsteps LOGICAL, INTENT (IN) :: reset_dBZ @@ -1421,9 +1424,9 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & rainprod1d, evapprod1d, & #endif rand1, rand2, rand3, & - kts, kte, dt, i, j, & - ext_diag, & - !vtsk1, txri1, txrc1, & + kts, kte, dt, i, j, ext_diag, & + sedi_semi, sedi_semi_update, sedi_semi_decfl, & + !vtsk1, txri1, txrc1, & prw_vcdc1, prw_vcde1, & tpri_inu1, tpri_ide1_d, tpri_ide1_s, tprs_ide1, & tprs_sde1_d, tprs_sde1_s, & @@ -1817,8 +1820,9 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & kts, kte, dt, ii, jj, & ! Extended diagnostics, most arrays only ! allocated if ext_diag flag is .true. - ext_diag, & - !vtsk1, txri1, txrc1, & + ext_diag, & + sedi_semi, sedi_semi_update, sedi_semi_decfl, & + !vtsk1, txri1, txrc1, & prw_vcdc1, prw_vcde1, & tpri_inu1, tpri_ide1_d, tpri_ide1_s, tprs_ide1, & tprs_sde1_d, tprs_sde1_s, & @@ -1847,6 +1851,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & REAL, INTENT(IN):: rand1, rand2, rand3 ! Extended diagnostics, most arrays only allocated if ext_diag is true LOGICAL, INTENT(IN) :: ext_diag + LOGICAL, INTENT(IN) :: sedi_semi, sedi_semi_update, sedi_semi_decfl REAL, DIMENSION(:), INTENT(OUT):: & !vtsk1, txri1, txrc1, & prw_vcdc1, & @@ -1902,9 +1907,15 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & prg_rcg, prg_ihm DOUBLE PRECISION, PARAMETER:: zeroD0 = 0.0d0 + REAL, PARAMETER :: decfl = 8.0 + REAL :: dtcfl,precip + INTEGER :: niter REAL, DIMENSION(kts:kte):: temp, pres, qv REAL, DIMENSION(kts:kte):: rc, ri, rr, rs, rg, ni, nr, nc, nwfa, nifa + REAL, DIMENSION(kts:kte):: rr_tmp,vtrk_tmp,nr_tmp,vtnrk_tmp + REAL, DIMENSION(kts:kte):: ri_tmp,vtik_tmp,ni_tmp,vtnik_tmp + REAL, DIMENSION(kts:kte):: rs_tmp,vtsk_tmp,rg_tmp,vtgk_tmp REAL, DIMENSION(kts:kte):: rho, rhof, rhof2 REAL, DIMENSION(kts:kte):: qvs, qvsi, delQvs REAL, DIMENSION(kts:kte):: satw, sati, ssatw, ssati @@ -3888,6 +3899,8 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & if (ANY(L_qr .eqv. .true.)) then nstep = NINT(1./onstep(1)) + + if(.not. sedi_semi) then do n = 1, nstep do k = kte, kts, -1 sed_r(k) = vtrk(k)*rr(k) @@ -3916,6 +3929,54 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & if (rr(kts).gt.R1*10.) & pptrain = pptrain + sed_r(kts)*DT*onstep(1) enddo + else !if(.not. sedi_semi) + niter = 1 + dtcfl = dt + if(sedi_semi_decfl) then + niter = ifix(nstep/decfl) + 1 + dtcfl = dt/niter + endif + do n = 1, niter + rr_tmp(:) = rr(:) + nr_tmp(:) = nr(:) + do k = 1,kte + vtrk_tmp(k) = vtrk(k) + vtnrk_tmp(k) = vtnrk(k) + enddo + call nislfv_rain_ppm(kte,rho,rhof,temp,dzq,vtrk_tmp,rr,precip,dtcfl,1,0,R1) + call nislfv_rain_ppm(kte,rho,rhof,temp,dzq,vtnrk_tmp,nr,vtr,dtcfl,1,0,R2) + do k = kts, kte + qrten(k) = qrten(k) + (rr(k) - rr_tmp(k))/rho(k)/dt + nrten(k) = nrten(k) + (nr(k) - nr_tmp(k))/rho(k)/dt + enddo + pptrain = pptrain + precip + + + if(sedi_semi_update) then + do k = kte+1, kts, -1 + vtrk(k) = 0. + vtnrk(k) = 0. + enddo + do k = kte, kts, -1 + vtr = 0. + if (rr(k).gt. R1) then + lamr = (am_r*crg(3)*org2*nr(k)/rr(k))**obmr + vtr = rhof(k)*av_r*crg(6)*org3 * lamr**cre(3) & + *((lamr+fv_r)**(-cre(6))) + vtrk(k) = vtr + ! First below is technically correct: + ! vtr = rhof(k)*av_r*crg(5)*org2 * lamr**cre(2) & + ! *((lamr+fv_r)**(-cre(5))) + ! Test: make number fall faster (but still slower than mass) + ! Goal: less prominent size sorting + vtr = rhof(k)*av_r*crg(7)/crg(12) * lamr**cre(12) & + *((lamr+fv_r)**(-cre(7))) + vtnrk(k) = vtr + endif + enddo + endif ! if(sedi_semi_update) + enddo + endif! if(.not. sedi_semi) endif !+---+-----------------------------------------------------------------+ @@ -6047,6 +6108,296 @@ subroutine calc_refl10cm (qv1d, qc1d, qr1d, nr1d, qs1d, qg1d, & end subroutine calc_refl10cm ! +!------------------------------------------------------------------- + SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) +! ,oams,a_,b_,Lam0,Lam1,fv_s,Kap0,Kap1,mu_s,csg,cse,av_s,T_0,vts_boost,ii,jj) +! call nislfv_rain_ppm(1,kte,rho,rhof,temp,dzq,vtsk,rs,rs,dt,1,1,& +! R1,oams,a_,b_,Lam0,Lam1,fv_s,Kap0,Kap1,mu_s,csg,cse,av_s,T_0,vts_boost) +!------------------------------------------------------------------- +! +! for non-iteration semi-Lagrangain forward advection for cloud +! with mass conservation and positive definite advection +! 2nd order interpolation with monotonic piecewise parabolic method +! this routine is under assumption of decfl < 1 for semi_Lagrangian +! +! dzl depth of model layer in meter +! wwl terminal velocity at model layer m/s +! rql cloud density*mixing ratio +! precip precipitation +! dt time step +! id kind of precip: 0 test case; 1 raindrop +! iter how many time to guess mean terminal velocity: 0 pure forward. +! 0 : use departure wind for advection +! 1 : use mean wind for advection +! > 1 : use mean wind after iter-1 iterations +! +! author: hann-ming henry juang +! implemented by song-you hong +! + implicit none + integer km,id + real dt + real dzl(km),wwl(km),rql(km),precip + real denl(km),denfacl(km),tkl(km) +! for thompson scheme + real R1 +! real oams,a_,b_,Lam0,Lam1,fv_s,Kap0,Kap1,mu_s,av_s,T_0 +! real xDs,Mrat,ils1,ils2,t1_vts,t2_vts,t3_vts,t4_vts,vts +! real csg(18),cse(18),vts_boost(km),smo2(km),smob(km),smoc(km) +! + integer i,k,n,m,kk,kb,kt,iter,ii,jj + real tl,tl2,qql,dql,qqd + real th,th2,qqh,dqh + real zsum,qsum,dim,dip,c1,con1,fa1,fa2 + real allold, allnew, zz, dzamin, cflmax, decfl + real dz(km), ww(km), qq(km), wd(km), wa(km), was(km) + real den(km), denfac(km), tk(km) + real wi(km+1), zi(km+1), za(km+2) !hmhj + real qn(km), qr(km),tmp(km),tmp1(km),tmp2(km),tmp3(km) + real dza(km+1), qa(km+1), qmi(km+1), qpi(km+1) +! + precip = 0.0 + qa(:) = 0.0 + qq(:) = 0.0 +! smo2(:) = 0.0 +! smob(:) = 0.0 +! smoc(:) = 0.0 +! + !i_loop : do i=1,im +! ----------------------------------- + dz(:) = dzl(:) + ww(:) = wwl(:) + do k = 1,km + if(rql(k).gt.R1) qq(k) = rql(k) + if(qq(k).le.R1) ww(k) = 0.0 + enddo + den(:) = denl(:) + denfac(:) = denfacl(:) + tk(:) = tkl(:) +! skip for no precipitation for all layers + allold = 0.0 + do k=1,km + allold = allold + qq(k) + enddo + if(allold.le.0.0) then +! cycle i_loop + go to 158 + endif +! +! compute interface values + zi(1)=0.0 + do k=1,km + zi(k+1) = zi(k)+dz(k) + enddo +! save departure wind + wd(:) = ww(:) + n=1 + 100 continue +! plm is 2nd order, we can use 2nd order wi or 3rd order wi +! 2nd order interpolation to get wi + wi(1) = ww(1) + wi(km+1) = ww(km) + do k=2,km + wi(k) = (ww(k)*dz(k-1)+ww(k-1)*dz(k))/(dz(k-1)+dz(k)) + enddo +! 3rd order interpolation to get wi + fa1 = 9./16. + fa2 = 1./16. + wi(1) = ww(1) + wi(2) = 0.5*(ww(2)+ww(1)) + do k=3,km-1 + wi(k) = fa1*(ww(k)+ww(k-1))-fa2*(ww(k+1)+ww(k-2)) + enddo + wi(km) = 0.5*(ww(km)+ww(km-1)) + wi(km+1) = ww(km) +! +! terminate of top of raingroup + do k=2,km + if( ww(k).eq.0.0 ) wi(k)=ww(k-1) + enddo +! +! diffusivity of wi + con1 = 0.05 + do k=km,1,-1 + decfl = (wi(k+1)-wi(k))*dt/dz(k) + if( decfl .gt. con1 ) then + wi(k) = wi(k+1) - con1*dz(k)/dt + endif + enddo +! compute arrival point + do k=1,km+1 + za(k) = zi(k) - wi(k)*dt + enddo + za(km+2) = zi(km+1) !hmhj +! + do k=1,km+1 !hmhj + dza(k) = za(k+1)-za(k) + enddo +!hmhj dza(km+1) = zi(km+1) - za(km+1) +! +! computer deformation at arrival point + do k=1,km + qa(k) = qq(k)*dz(k)/dza(k) + qr(k) = qa(k)/den(k) + enddo + qa(km+1) = 0.0 +! call maxmin(km,1,qa,' arrival points ') +! +! compute arrival terminal velocity, and estimate mean terminal velocity +! then back to use mean terminal velocity +! if( n.le.iter ) then +! call slope_wsm3(qr,den,denfac,tk,tmp,tmp1,tmp2,tmp3,wa,1,1,1,km) +! thompson scheme vts, neglect the snow ratio over rain +! do k=1,km +! if (qa(k).gt. R1) then +! smob(k) = qa(k)*oams +! smo2(k) = smob(k) +! smoc(k) = a_ * smo2(k)**b_ +! xDs = smoc(k) / smob(k) +! Mrat = 1./xDs +! ils1 = 1./(Mrat*Lam0 + fv_s) +! ils2 = 1./(Mrat*Lam1 + fv_s) +! t1_vts = Kap0*csg(4)*ils1**cse(4) +! t2_vts = Kap1*Mrat**mu_s*csg(10)*ils2**cse(10) +! ils1 = 1./(Mrat*Lam0) +! ils2 = 1./(Mrat*Lam1) +! t3_vts = Kap0*csg(1)*ils1**cse(1) +! t4_vts = Kap1*Mrat**mu_s*csg(7)*ils2**cse(7) +! vts = denfac(k)*av_s * (t1_vts+t2_vts)/(t3_vts+t4_vts) +! print*,' ils1 ils2 mu_s t1-4 vts +! ',ils1,ils2,mu_s,t1_vts,t2_vts,t3_vts,t4_vts +! print*,' k mrat lam0 lam1 kap0 kap1 boost +! ',k,mrat,lam0,lam1,kap0,kap1,vts_boost(k) +! print*,' tk t_0 qa rr vts ',k,tk(k),t_0,qa(k),vts +! wa(k) = vts*vts_boost(k) +! wa(k) = vts +! endif +! enddo +! end of thompson +! if( n.ge.2 ) wa(1:km)=0.5*(wa(1:km)+was(1:km)) +! do k=1,km +! mean wind is average of departure and new arrival winds +! ww(k) = 0.5* ( wd(k)+wa(k) ) +! enddo +! was(:) = wa(:) +! n=n+1 +! go to 100 +! endif +! +! estimate values at arrival cell interface with monotone + do k=2,km + dip=(qa(k+1)-qa(k))/(dza(k+1)+dza(k)) + dim=(qa(k)-qa(k-1))/(dza(k-1)+dza(k)) + if( dip*dim.le.0.0 ) then + qmi(k)=qa(k) + qpi(k)=qa(k) + else + qpi(k)=qa(k)+0.5*(dip+dim)*dza(k) + qmi(k)=2.0*qa(k)-qpi(k) + if( qpi(k).lt.0.0 .or. qmi(k).lt.0.0 ) then + qpi(k) = qa(k) + qmi(k) = qa(k) + endif + endif + enddo + qpi(1)=qa(1) + qmi(1)=qa(1) + qmi(km+1)=qa(km+1) + qpi(km+1)=qa(km+1) +! +! interpolation to regular point + qn = 0.0 + kb=1 + kt=1 + intp : do k=1,km + kb=max(kb-1,1) + kt=max(kt-1,1) +! find kb and kt + if( zi(k).ge.za(km+1) ) then + exit intp + else + find_kb : do kk=kb,km + if( zi(k).le.za(kk+1) ) then + kb = kk + exit find_kb + else + cycle find_kb + endif + enddo find_kb + find_kt : do kk=kt,km+2 !hmhj + if( zi(k+1).le.za(kk) ) then + kt = kk + exit find_kt + else + cycle find_kt + endif + enddo find_kt + kt = kt - 1 +! compute q with piecewise constant method + if( kt.eq.kb ) then + tl=(zi(k)-za(kb))/dza(kb) + th=(zi(k+1)-za(kb))/dza(kb) + tl2=tl*tl + th2=th*th + qqd=0.5*(qpi(kb)-qmi(kb)) + qqh=qqd*th2+qmi(kb)*th + qql=qqd*tl2+qmi(kb)*tl + qn(k) = (qqh-qql)/(th-tl) + else if( kt.gt.kb ) then + tl=(zi(k)-za(kb))/dza(kb) + tl2=tl*tl + qqd=0.5*(qpi(kb)-qmi(kb)) + qql=qqd*tl2+qmi(kb)*tl + dql = qa(kb)-qql + zsum = (1.-tl)*dza(kb) + qsum = dql*dza(kb) + if( kt-kb.gt.1 ) then + do m=kb+1,kt-1 + zsum = zsum + dza(m) + qsum = qsum + qa(m) * dza(m) + enddo + endif + th=(zi(k+1)-za(kt))/dza(kt) + th2=th*th + qqd=0.5*(qpi(kt)-qmi(kt)) + dqh=qqd*th2+qmi(kt)*th + zsum = zsum + th*dza(kt) + qsum = qsum + dqh*dza(kt) + qn(k) = qsum/zsum + endif + cycle intp + endif +! + enddo intp +! +! rain out + sum_precip: do k=1,km + if( za(k).lt.0.0 .and. za(k+1).le.0.0 ) then +!hmhj + precip = precip + qa(k)*dza(k) + cycle sum_precip + else if ( za(k).lt.0.0 .and. za(k+1).gt.0.0 ) then +!hmhj +!hmhj precip(i) = precip(i) + qa(k)*(0.0-za(k)) + th = (0.0-za(k))/dza(k) !hmhj + th2 = th*th !hmhj + qqd = 0.5*(qpi(k)-qmi(k)) !hmhj + qqh = qqd*th2+qmi(k)*th !hmhj + precip = precip + qqh*dza(k) !hmhj + exit sum_precip + endif + exit sum_precip + enddo sum_precip +! +! replace the new values + rql(:) = max(qn(:),R1) +! + 158 continue +! ---------------------------------- +! enddo i_loop +! + END SUBROUTINE nislfv_rain_ppm +!+---+-----------------------------------------------------------------+ !+---+-----------------------------------------------------------------+ !+---+-----------------------------------------------------------------+ END MODULE module_mp_thompson diff --git a/physics/mp_thompson.F90 b/physics/mp_thompson.F90 index c31d90b09..adfe72eb3 100644 --- a/physics/mp_thompson.F90 +++ b/physics/mp_thompson.F90 @@ -335,6 +335,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & is_aerosol_aware, nc, nwfa, nifa, & nwfa2d, nifa2d, & tgrs, prsl, phii, omega, dt_inner, & + sedi_semi, sedi_semi_update, & + sedi_semi_decfl, & dtp, first_time_step, istep, nsteps, & prcp, rain, graupel, ice, snow, sr, & refl_10cm, reset_dBZ, do_radar_ref, & @@ -390,6 +392,9 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & real(kind_phys), intent( out) :: refl_10cm(:,:) logical, optional, intent(in ) :: do_radar_ref real, intent(in ) :: dt_inner + logical, intent(in) :: sedi_semi + logical, intent(in) :: sedi_semi_update + logical, intent(in) :: sedi_semi_decfl ! Cloud effective radii real(kind_phys), optional, intent( out) :: re_cloud(:,:) real(kind_phys), optional, intent( out) :: re_ice(:,:) @@ -675,6 +680,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & nc=nc, nwfa=nwfa, nifa=nifa, nwfa2d=nwfa2d, nifa2d=nifa2d, & tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtstep, dt_inner=dt_inner, & + sedi_semi=sedi_semi, sedi_semi_update=sedi_semi_update, & + sedi_semi_decfl=sedi_semi_decfl, & rainnc=rain_mp, rainncv=delta_rain_mp, & snownc=snow_mp, snowncv=delta_snow_mp, & icenc=ice_mp, icencv=delta_ice_mp, & @@ -715,6 +722,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & nc=nc, nwfa=nwfa, nifa=nifa, nwfa2d=nwfa2d, nifa2d=nifa2d, & tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtstep, dt_inner=dt_inner, & + sedi_semi=sedi_semi, sedi_semi_update=sedi_semi_update, & + sedi_semi_decfl=sedi_semi_decfl, & rainnc=rain_mp, rainncv=delta_rain_mp, & snownc=snow_mp, snowncv=delta_snow_mp, & icenc=ice_mp, icencv=delta_ice_mp, & @@ -755,6 +764,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & if (do_effective_radii) then call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtstep, dt_inner=dt_inner, & + sedi_semi=sedi_semi, sedi_semi_update=sedi_semi_update, & + sedi_semi_decfl=sedi_semi_decfl, & rainnc=rain_mp, rainncv=delta_rain_mp, & snownc=snow_mp, snowncv=delta_snow_mp, & icenc=ice_mp, icencv=delta_ice_mp, & @@ -794,6 +805,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & else call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtstep, dt_inner=dt_inner, & + sedi_semi=sedi_semi, sedi_semi_update=sedi_semi_update, & + sedi_semi_decfl=sedi_semi_decfl, & rainnc=rain_mp, rainncv=delta_rain_mp, & snownc=snow_mp, snowncv=delta_snow_mp, & icenc=ice_mp, icencv=delta_ice_mp, & diff --git a/physics/mp_thompson.meta b/physics/mp_thompson.meta index ab00e6524..321b26494 100644 --- a/physics/mp_thompson.meta +++ b/physics/mp_thompson.meta @@ -553,18 +553,42 @@ kind = kind_phys intent = in optional = F -[dtp] - standard_name = timestep_for_physics - long_name = physics timestep +[dt_inner] + standard_name = time_step_for_inner_loop + long_name = time step for inner loop units = s dimensions = () type = real kind = kind_phys intent = in optional = F -[dt_inner] - standard_name = time_step_for_inner_loop - long_name = time step for inner loop +[sedi_semi] + standard_name = flag_for_semi_Lagrangian_sedi_rain + long_name = flag for semi Lagrangian sedi of rain + units = flag + dimensions = () + type = logical + intent = in + optional = F +[sedi_semi_update] + standard_name = flag_for_v_update_in_semi_Lagrangian_sedi + long_name = flag for v update in semi Lagrangian sedi of rain + units = flag + dimensions = () + type = logical + intent = in + optional = F +[sedi_semi_decfl] + standard_name = flag_for_iteration_with_semi_Lagrangian_sedi + long_name = flag for interation with semi Lagrangian sedi of rain + units = flag + dimensions = () + type = logical + intent = in + optional = F +[dtp] + standard_name = timestep_for_physics + long_name = physics timestep units = s dimensions = () type = real From 2c6f85a339a818a97d0c1c61b51a73ebf779ffb0 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Thu, 16 Sep 2021 11:22:20 +0000 Subject: [PATCH 17/98] removing interstitial land and ice emissivities --- physics/GFS_surface_composites.F90 | 29 ++++++++++++---------- physics/GFS_surface_composites.meta | 37 ++++------------------------- physics/dcyc2.meta | 8 +++---- physics/radiation_surface.f | 2 +- physics/sfc_drv.meta | 6 ++--- physics/sfc_noah_wrfv4.meta | 6 ++--- physics/sfc_sice.meta | 4 ++-- 7 files changed, 34 insertions(+), 58 deletions(-) diff --git a/physics/GFS_surface_composites.F90 b/physics/GFS_surface_composites.F90 index 966393d03..4880d67c7 100644 --- a/physics/GFS_surface_composites.F90 +++ b/physics/GFS_surface_composites.F90 @@ -34,8 +34,10 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm tprcp_lnd, tprcp_ice, uustar, uustar_wat, uustar_lnd, uustar_ice, & weasd, weasd_lnd, weasd_ice, ep1d_ice, tsfc, tsfco, tsfcl, tsfc_wat, & tsfc_ice, tisfc, tsurf_wat, tsurf_lnd, tsurf_ice, & - gflx_ice, tgice, islmsk, islmsk_cice, slmsk, semis_rad, semis_wat, semis_lnd, semis_ice, & - emis_lnd, emis_ice, qss, qss_wat, qss_lnd, qss_ice, & + gflx_ice, tgice, islmsk, islmsk_cice, slmsk, semis_wat, semis_lnd, semis_ice, & +! gflx_ice, tgice, islmsk, islmsk_cice, slmsk, semis_rad, semis_wat, semis_lnd, semis_ice, & + qss, qss_wat, qss_lnd, qss_ice, & +! emis_lnd, emis_ice, qss, qss_wat, qss_lnd, qss_ice, & min_lakeice, min_seaice, kdt, errmsg, errflg) implicit none @@ -58,9 +60,9 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm qss_wat, qss_lnd, qss_ice, ep1d_ice, gflx_ice real(kind=kind_phys), intent(in ) :: tgice integer, dimension(:), intent(inout) :: islmsk, islmsk_cice - real(kind=kind_phys), dimension(:), intent(in ) :: semis_rad +! real(kind=kind_phys), dimension(:), intent(in ) :: semis_rad real(kind=kind_phys), dimension(:), intent(inout) :: semis_wat, semis_lnd, semis_ice, slmsk - real(kind=kind_phys), dimension(:), intent(inout) :: emis_lnd, emis_ice +! real(kind=kind_phys), dimension(:), intent(inout) :: emis_lnd, emis_ice real(kind=kind_phys), intent(in ) :: min_lakeice, min_seaice ! real(kind=kind_phys), dimension(:), intent(inout) :: zorlo, zorll, zorli @@ -229,12 +231,12 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm uustar_lnd(i) = uustar(i) weasd_lnd(i) = weasd(i) tsurf_lnd(i) = tsfcl(i) - if (iemsflg == 2 .and. .not. flag_init) then - !-- use land emissivity from the LSM - semis_lnd(i) = emis_lnd(i) - else - semis_lnd(i) = semis_rad(i) - endif +! if (iemsflg == 2 .and. .not. flag_init) then +! !-- use land emissivity from the LSM +! semis_lnd(i) = emis_lnd(i) +! else +! semis_lnd(i) = semis_rad(i) +! endif ! DH* else zorll(i) = huge @@ -249,10 +251,11 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm tsurf_ice(i) = tisfc(i) ep1d_ice(i) = zero gflx_ice(i) = zero - if (iemsflg == 2 .and. (.not.flag_init .or. flag_restart) .and. lsm == lsm_ruc) then +! if (iemsflg == 2 .and. (.not.flag_init .or. flag_restart) .and. lsm == lsm_ruc) then !-- use emis_ice from RUC LSM with snow effect - semis_ice(i) = emis_ice(i) - else +! semis_ice(i) = emis_ice(i) +! else + if (lsm /= lsm_ruc) then semis_ice(i) = 0.95_kind_phys endif ! DH* diff --git a/physics/GFS_surface_composites.meta b/physics/GFS_surface_composites.meta index aea0561a8..beba92ae5 100644 --- a/physics/GFS_surface_composites.meta +++ b/physics/GFS_surface_composites.meta @@ -492,15 +492,6 @@ kind = kind_phys intent = inout optional = F -[semis_rad] - standard_name = surface_longwave_emissivity - long_name = surface lw emissivity in fraction - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F [semis_wat] standard_name = surface_longwave_emissivity_over_water long_name = surface lw emissivity in fraction over water @@ -511,24 +502,6 @@ intent = inout optional = F [semis_lnd] - standard_name = surface_longwave_emissivity_over_land_interstitial - long_name = surface lw emissivity in fraction over land (temporary use as interstitial) - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[semis_ice] - standard_name = surface_longwave_emissivity_over_ice_interstitial - long_name = surface lw emissivity in fraction over ice (temporary use as interstitial) - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[emis_lnd] standard_name = surface_longwave_emissivity_over_land long_name = surface lw emissivity in fraction over land units = frac @@ -537,7 +510,7 @@ kind = kind_phys intent = inout optional = F -[emis_ice] +[semis_ice] standard_name = surface_longwave_emissivity_over_ice long_name = surface lw emissivity in fraction over ice units = frac @@ -678,8 +651,8 @@ intent = in optional = F [semis_lnd] - standard_name = surface_longwave_emissivity_over_land_interstitial - long_name = surface lw emissivity in fraction over land (temporary use as interstitial) + standard_name = surface_longwave_emissivity_over_land + long_name = surface lw emissivity in fraction over land units = frac dimensions = (horizontal_loop_extent) type = real @@ -687,8 +660,8 @@ intent = in optional = F [semis_ice] - standard_name = surface_longwave_emissivity_over_ice_interstitial - long_name = surface lw emissivity in fraction over ice (temporary use as interstitial) + standard_name = surface_longwave_emissivity_over_ice + long_name = surface lw emissivity in fraction over ice units = frac dimensions = (horizontal_loop_extent) type = real diff --git a/physics/dcyc2.meta b/physics/dcyc2.meta index 70886e986..0b26d0e53 100644 --- a/physics/dcyc2.meta +++ b/physics/dcyc2.meta @@ -170,8 +170,8 @@ intent = in optional = F [sfcemis_lnd] - standard_name = surface_longwave_emissivity_over_land_interstitial - long_name = surface lw emissivity in fraction over land (temporary use as interstitial) + standard_name = surface_longwave_emissivity_over_land + long_name = surface lw emissivity in fraction over land units = frac dimensions = (horizontal_loop_extent) type = real @@ -179,8 +179,8 @@ intent = in optional = F [sfcemis_ice] - standard_name = surface_longwave_emissivity_over_ice_interstitial - long_name = surface lw emissivity in fraction over ice (temporary use as interstitial) + standard_name = surface_longwave_emissivity_over_ice + long_name = surface lw emissivity in fraction over ice units = frac dimensions = (horizontal_loop_extent) type = real diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 750c54dd6..4b4e92722 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -876,7 +876,7 @@ subroutine setemis & sfcemis(i) = emsref(idx) else sfcemis(i) = fracl(i)*emsref(idx) + fraco(i)*emsref(1) & - & + fraci(i)*emsref(7) + & + fraci(i)*emsref(7) endif semisbase(i) = sfcemis(i) diff --git a/physics/sfc_drv.meta b/physics/sfc_drv.meta index 08ec02be7..11a5aa293 100644 --- a/physics/sfc_drv.meta +++ b/physics/sfc_drv.meta @@ -247,8 +247,8 @@ intent = in optional = F [sfcemis] - standard_name = surface_longwave_emissivity_over_land_interstitial - long_name = surface lw emissivity in fraction over land (temporary use as interstitial) + standard_name = surface_longwave_emissivity_over_land + long_name = surface lw emissivity in fraction over land units = frac dimensions = (horizontal_loop_extent) type = real @@ -646,7 +646,7 @@ optional = F [zorl] standard_name = surface_roughness_length_over_land - long_name = surface roughness length over land (temporary use as interstitial) + long_name = surface roughness length over land units = cm dimensions = (horizontal_loop_extent) type = real diff --git a/physics/sfc_noah_wrfv4.meta b/physics/sfc_noah_wrfv4.meta index e0f2538f6..23415695c 100644 --- a/physics/sfc_noah_wrfv4.meta +++ b/physics/sfc_noah_wrfv4.meta @@ -403,7 +403,7 @@ optional = F [z0k] standard_name = surface_roughness_length_over_land - long_name = surface roughness length over land (temporary use as interstitial) + long_name = surface roughness length over land units = m dimensions = (horizontal_loop_extent) type = real @@ -411,8 +411,8 @@ intent = inout optional = F [emissi] - standard_name = surface_longwave_emissivity_over_land_interstitial - long_name = surface lw emissivity in fraction over land (temporary use as interstitial) + standard_name = surface_longwave_emissivity_over_land + long_name = surface lw emissivity in fraction over land units = frac dimensions = (horizontal_loop_extent) type = real diff --git a/physics/sfc_sice.meta b/physics/sfc_sice.meta index 7d45e7f24..de0e41de0 100644 --- a/physics/sfc_sice.meta +++ b/physics/sfc_sice.meta @@ -150,8 +150,8 @@ intent = in optional = F [sfcemis] - standard_name = surface_longwave_emissivity_over_ice_interstitial - long_name = surface lw emissivity in fraction over ice (temporary use as interstitial) + standard_name = surface_longwave_emissivity_over_ice + long_name = surface lw emissivity in fraction over ice units = frac dimensions = (horizontal_loop_extent) type = real From 12d85af52c95ed36e52d91a5f9549e80a4a8d8cb Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Fri, 17 Sep 2021 17:53:38 +0000 Subject: [PATCH 18/98] improing treatment of emissivity and remove related unnecessary interstitial variables --- physics/GFS_radiation_surface.F90 | 12 +++++--- physics/GFS_surface_composites.F90 | 17 ----------- physics/radiation_surface.f | 49 ++++++++++++++++++++++++------ 3 files changed, 46 insertions(+), 32 deletions(-) diff --git a/physics/GFS_radiation_surface.F90 b/physics/GFS_radiation_surface.F90 index 11703c23c..65cfe1858 100644 --- a/physics/GFS_radiation_surface.F90 +++ b/physics/GFS_radiation_surface.F90 @@ -80,21 +80,23 @@ subroutine GFS_radiation_surface_run ( & real(kind=kind_phys), dimension(:), intent(in) :: xlat, xlon, vtype, slmsk, & sfc_alb_pert, lndp_prt_list, & - landfrac, lakefrac, & + landfrac, lakefrac, & snowd, sncovr, & sncovr_ice, fice, zorl, & hprime, tsfg, tsfa, tisfc, & coszen, alvsf, alnsf, alvwf, & - alnwf, facsf, facwf, & - semis_lnd, semis_ice, snoalb + alnwf, facsf, facwf, snoalb character(len=3) , dimension(:), intent(in) :: lndp_var_list - real(kind=kind_phys), dimension(:), intent(inout) :: albdvis_lnd, albdnir_lnd, & - albivis_lnd, albinir_lnd real(kind=kind_phys), dimension(:), intent(in) :: albdvis_ice, albdnir_ice, & albivis_ice, albinir_ice + + real(kind=kind_phys), dimension(:), intent(inout) :: albdvis_lnd, albdnir_lnd, & + albivis_lnd, albinir_lnd, & + semis_lnd, semis_ice real(kind=kind_phys), dimension(:), intent(inout) :: semisbase, semis real(kind=kind_phys), dimension(:,:), intent(inout) :: sfcalb real(kind=kind_phys), dimension(:), intent(inout) :: sfc_alb_dif + character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg diff --git a/physics/GFS_surface_composites.F90 b/physics/GFS_surface_composites.F90 index 4880d67c7..4a63aa7f5 100644 --- a/physics/GFS_surface_composites.F90 +++ b/physics/GFS_surface_composites.F90 @@ -35,9 +35,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm weasd, weasd_lnd, weasd_ice, ep1d_ice, tsfc, tsfco, tsfcl, tsfc_wat, & tsfc_ice, tisfc, tsurf_wat, tsurf_lnd, tsurf_ice, & gflx_ice, tgice, islmsk, islmsk_cice, slmsk, semis_wat, semis_lnd, semis_ice, & -! gflx_ice, tgice, islmsk, islmsk_cice, slmsk, semis_rad, semis_wat, semis_lnd, semis_ice, & qss, qss_wat, qss_lnd, qss_ice, & -! emis_lnd, emis_ice, qss, qss_wat, qss_lnd, qss_ice, & min_lakeice, min_seaice, kdt, errmsg, errflg) implicit none @@ -60,9 +58,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm qss_wat, qss_lnd, qss_ice, ep1d_ice, gflx_ice real(kind=kind_phys), intent(in ) :: tgice integer, dimension(:), intent(inout) :: islmsk, islmsk_cice -! real(kind=kind_phys), dimension(:), intent(in ) :: semis_rad real(kind=kind_phys), dimension(:), intent(inout) :: semis_wat, semis_lnd, semis_ice, slmsk -! real(kind=kind_phys), dimension(:), intent(inout) :: emis_lnd, emis_ice real(kind=kind_phys), intent(in ) :: min_lakeice, min_seaice ! real(kind=kind_phys), dimension(:), intent(inout) :: zorlo, zorll, zorli @@ -231,12 +227,6 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm uustar_lnd(i) = uustar(i) weasd_lnd(i) = weasd(i) tsurf_lnd(i) = tsfcl(i) -! if (iemsflg == 2 .and. .not. flag_init) then -! !-- use land emissivity from the LSM -! semis_lnd(i) = emis_lnd(i) -! else -! semis_lnd(i) = semis_rad(i) -! endif ! DH* else zorll(i) = huge @@ -251,13 +241,6 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm tsurf_ice(i) = tisfc(i) ep1d_ice(i) = zero gflx_ice(i) = zero -! if (iemsflg == 2 .and. (.not.flag_init .or. flag_restart) .and. lsm == lsm_ruc) then - !-- use emis_ice from RUC LSM with snow effect -! semis_ice(i) = emis_ice(i) -! else - if (lsm /= lsm_ruc) then - semis_ice(i) = 0.95_kind_phys - endif ! DH* else zorli(i) = huge diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 4b4e92722..2d0940faf 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -334,8 +334,7 @@ end subroutine sfc_init subroutine setalb & & ( slmsk,lsm,lsm_noahmp,lsm_ruc,use_cice_alb,snowf, & ! --- inputs: & sncovr,sncovr_ice,snoalb,zorlf,coszf, & - & tsknf,tairf,hprif,frac_grid, lakefrac, & -! & tsknf,tairf,hprif,frac_grid,min_seaice, & + & tsknf,tairf,hprif,frac_grid, lakefrac, & & alvsf,alnsf,alvwf,alnwf,facsf,facwf,fice,tisfc, & & lsmalbdvis, lsmalbdnir, lsmalbivis, lsmalbinir, & & icealbdvis, icealbdnir, icealbivis, icealbinir, & @@ -416,7 +415,6 @@ subroutine setalb & & icealbdvis, icealbdnir, icealbivis, icealbinir, & & sncovr, sncovr_ice, snoalb, albPpert ! sfc-perts, mgehne real (kind=kind_phys), intent(in) :: pertalb ! sfc-perts, mgehne -! real (kind=kind_phys), intent(in) :: min_seaice real (kind=kind_phys), dimension(:), intent(in) :: & & fracl, fraco, fraci real (kind=kind_phys), dimension(:),intent(inout) :: & @@ -728,7 +726,6 @@ end subroutine setalb subroutine setemis & & ( lsm,lsm_noahmp,lsm_ruc,vtype,frac_grid, & ! --- inputs: & xlon,xlat,slmsk,snowf,sncovr,sncovr_ice, & -! & min_seaice,xlon,xlat,slmsk,snowf,sncovr,sncovr_ice, & & zorlf,tsknf,tairf,hprif, & & semis_lnd,semis_ice,IMAX,fracl,fraco,fraci,icy, & & semisbase, sfcemis & ! --- outputs: @@ -785,13 +782,14 @@ subroutine setemis & integer, intent(in) :: lsm, lsm_noahmp, lsm_ruc logical, intent(in) :: frac_grid real (kind=kind_phys), dimension(:), intent(in) :: vtype -! real (kind=kind_phys), intent(in) :: min_seaice real (kind=kind_phys), dimension(:), intent(in) :: & & xlon,xlat, slmsk, snowf,sncovr, sncovr_ice, & - & zorlf, tsknf, tairf, hprif, semis_lnd, semis_ice + & zorlf, tsknf, tairf, hprif real (kind=kind_phys), dimension(:), intent(in) :: & & fracl, fraco, fraci + real (kind=kind_phys), dimension(:), intent(inout) :: & + & semis_lnd, semis_ice logical, dimension(:), intent(in) :: & & icy @@ -829,6 +827,7 @@ subroutine setemis & lab_do_IMAX : do i = 1, IMAX + semis_ice(i) = emsref(7) if (fracl(i) < epsln) then ! no land if ( abs(fraco(i)-f_one) < epsln ) then ! open water point sfcemis(i) = emsref(1) @@ -875,10 +874,11 @@ subroutine setemis & if (abs(fracl(i)-f_one) < epsln) then sfcemis(i) = emsref(idx) else - sfcemis(i) = fracl(i)*emsref(idx) + fraco(i)*emsref(1) & + sfcemis(i) = fracl(i)*emsref(idx) + fraco(i)*emsref(1) & & + fraci(i)*emsref(7) endif semisbase(i) = sfcemis(i) + semis_lnd(i) = emsref(idx) endif ! end if_slmsk_block @@ -887,16 +887,39 @@ subroutine setemis & fsno = sncovr(i) sfcemis(i) = sfcemis(i)*(f_one - fsno) + emsref(8)*fsno + if (fracl(i) > f_zero) then + if (fracl(i) <= fsno) then + semis_lnd(i) = emsref(8) + else + tmp1 = (fracl(i)-fsno) / fracl(i) + semis_lnd(i) = semis_lnd(i) * tmp1 + (f_one-tmp1)*fsno + endif + endif + if (fraci(i) > f_zero) then + semis_ice(i) = emsref(8) + endif else ! compute snow cover from snow depth - if ( snowf(i) > f_zero ) then + if (abs(fraco(i)-f_one) > epsln .and. & + & snowf(i) > f_zero) then asnow = 0.02*snowf(i) argh = min(0.50, max(.025, 0.01*zorlf(i))) hrgh = min(f_one, max(0.20, 1.0577-1.1538e-3*hprif(i) ) ) fsno = asnow / (argh + asnow) * hrgh - if (abs(fraco(i)-f_one) < epsln) fsno = f_zero ! no snow over open water sfcemis(i) = sfcemis(i)*(f_one - fsno) + emsref(8)*fsno + + if (fracl(i) > f_zero) then + if (fracl(i) <= fsno) then + semis_lnd(i) = emsref(8) + else + tmp1 = (fracl(i)-fsno) / fracl(i) + semis_lnd(i) = semis_lnd(i)*tmp1 + (f_one-tmp1)*fsno + endif + endif + if (fraci(i) > f_zero) then + semis_ice(i) = emsref(8) + endif endif endif ! end if_ialbflg @@ -918,8 +941,14 @@ subroutine setemis & argh = min(0.50, max(.025,0.01*zorlf(i))) hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i))) fsno = asnow / (argh + asnow) * hrgh - sfcemis_ice = sfcemis_ice*(f_one-fsno)+emsref(8)*fsno + if (fraci(i) > fsno) then + tmp1 = (fraci(i) - fsno) / fraci(i) + sfcemis_ice = sfcemis_ice*tmp1+emsref(8)*(f_one-tmp1) + else + sfcemis_ice = emsref(8) + endif endif + semis_ice(i) = sfcemis_ice elseif (lsm == lsm_ruc) then sfcemis_ice = semis_ice(i) ! output from lsm (with snow effect) endif ! lsm check From 2dd3ce46a10c4852d854a1b529147c8402aec854 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Tue, 21 Sep 2021 18:56:13 +0000 Subject: [PATCH 19/98] reverting some changes to main version --- physics/GFS_rrtmgp_lw_post.F90 | 99 ++- physics/GFS_rrtmgp_sw_post.F90 | 109 ++- physics/cires_ugwpv1_solv2.F90 | 1033 +++++++++++++------------- physics/cires_ugwpv1_solv2.F90_mine | 1049 --------------------------- physics/cires_ugwpv1_solv2.F90_orig | 1036 -------------------------- 5 files changed, 609 insertions(+), 2717 deletions(-) delete mode 100644 physics/cires_ugwpv1_solv2.F90_mine delete mode 100644 physics/cires_ugwpv1_solv2.F90_orig diff --git a/physics/GFS_rrtmgp_lw_post.F90 b/physics/GFS_rrtmgp_lw_post.F90 index 4bb940547..ff0346fe4 100644 --- a/physics/GFS_rrtmgp_lw_post.F90 +++ b/physics/GFS_rrtmgp_lw_post.F90 @@ -1,4 +1,4 @@ -module GFS_rrtmgp_lw_post +module GFS_rrtmgp_lw_post use machine, only: kind_phys use module_radiation_aerosols, only: NSPC1 use module_radlw_parameters, only: topflw_type, sfcflw_type, proflw_type @@ -6,9 +6,9 @@ module GFS_rrtmgp_lw_post use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp use mo_fluxes_byband, only: ty_fluxes_byband use mo_heating_rates, only: compute_heating_rate - use radiation_tools, only: check_error_msg + use radiation_tools, only: check_error_msg implicit none - + public GFS_rrtmgp_lw_post_init,GFS_rrtmgp_lw_post_run,GFS_rrtmgp_lw_post_finalize contains @@ -29,16 +29,16 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag fluxlwDOWN_clrsky, raddt, aerodp, cldsa, mtopa, mbota, cld_frac, cldtaulw, fluxr, & sfcdlw, sfculw, sfcflw, tsflw, htrlw, topflw, flxprf_lw, htrlwc, errmsg, errflg) - ! Inputs - integer, intent(in) :: & + ! Inputs + integer, intent(in) :: & nCol, & ! Horizontal loop extent nLev ! Number of vertical layers - logical, intent(in) :: & + logical, intent(in) :: & lslwr, & ! Logical flags for lw radiation calls - do_lw_clrsky_hr, & ! Output clear-sky SW heating-rate? - save_diag ! Output radiation diagnostics? + do_lw_clrsky_hr, & ! Output clear-sky SW heating-rate? + save_diag ! Output radiation diagnostics? real(kind_phys), intent(in) :: & - fhlwr ! Frequency for SW radiation + fhlwr ! Frequency for SW radiation real(kind_phys), dimension(nCol), intent(in) :: & tsfa ! Lowest model layer air temperature for radiation (K) real(kind_phys), dimension(nCol, nLev), intent(in) :: & @@ -52,25 +52,25 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag real(kind_phys), intent(in) :: & raddt ! Radiation time step real(kind_phys), dimension(nCol,NSPC1), intent(in) :: & - aerodp ! Vertical integrated optical depth for various aerosol species + aerodp ! Vertical integrated optical depth for various aerosol species real(kind_phys), dimension(nCol,5), intent(in) :: & - cldsa ! Fraction of clouds for low, middle, high, total and BL + cldsa ! Fraction of clouds for low, middle, high, total and BL integer, dimension(nCol,3), intent(in) ::& mbota, & ! vertical indices for low, middle and high cloud tops mtopa ! vertical indices for low, middle and high cloud bases real(kind_phys), dimension(nCol,nLev), intent(in) :: & cld_frac, & ! Total cloud fraction in each layer - cldtaulw ! approx 10.mu band layer cloud optical depth - + cldtaulw ! approx 10.mu band layer cloud optical depth + real(kind=kind_phys), dimension(:,:), intent(inout) :: fluxr - + ! Outputs (mandatory) real(kind_phys), dimension(nCol), intent(inout) :: & sfcdlw, & ! Total sky sfc downward lw flux (W/m2) sfculw, & ! Total sky sfc upward lw flux (W/m2) tsflw ! surface air temp during lw calculation (K) type(sfcflw_type), dimension(nCol), intent(inout) :: & - sfcflw ! LW radiation fluxes at sfc + sfcflw ! LW radiation fluxes at sfc real(kind_phys), dimension(nCol,nLev), intent(inout) :: & htrlw ! LW all-sky heating rate type(topflw_type), dimension(nCol), intent(out) :: & @@ -79,7 +79,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag errmsg integer, intent(out) :: & errflg - + ! Outputs (optional) type(proflw_type), dimension(nCol, nLev+1), optional, intent(inout) :: & flxprf_lw ! 2D radiative fluxes, components: @@ -89,7 +89,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag ! dnfx0 - clear sky dnward flux (W/m2) real(kind_phys),dimension(nCol, nLev),intent(inout),optional :: & htrlwc ! Longwave clear-sky heating-rate (K/sec) - + ! Local variables integer :: i, j, k, iSFC, iTOA, itop, ibtc logical :: l_fluxeslw2d, top_at_1 @@ -118,7 +118,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag endif ! ####################################################################################### - ! Compute LW heating-rates. + ! Compute LW heating-rates. ! ####################################################################################### ! Clear-sky heating-rate (optional) if (do_lw_clrsky_hr) then @@ -128,7 +128,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag p_lev, & ! IN - Pressure @ layer-interfaces (Pa) htrlwc)) ! OUT - Longwave clear-sky heating rate (K/sec) endif - + ! All-sky heating-rate (mandatory) call check_error_msg('GFS_rrtmgp_post',compute_heating_rate( & fluxlwUP_allsky, & ! IN - RRTMGP upward longwave all-sky flux profiles (W/m2) @@ -140,24 +140,14 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag ! Save LW outputs. ! ####################################################################################### ! Copy fluxes from RRTGMP types into model radiation types. - - do i=1,nCol ! Mandatory outputs - topflw(i)%upfxc = fluxlwUP_allsky(i,iTOA) - topflw(i)%upfx0 = fluxlwUP_clrsky(i,iTOA) - sfcflw(i)%upfxc = fluxlwUP_allsky(i,iSFC) - sfcflw(i)%upfx0 = fluxlwUP_clrsky(i,iSFC) - sfcflw(i)%dnfxc = fluxlwDOWN_allsky(i,iSFC) - sfcflw(i)%dnfx0 = fluxlwDOWN_clrsky(i,iSFC) - - ! Save surface air temp for diurnal adjustment at model t-steps - tsflw (i) = tsfa(i) - - ! Radiation fluxes for other physics processes - sfcdlw(i) = sfcflw(i)%dnfxc - sfculw(i) = sfcflw(i)%upfxc - enddo - + topflw(:)%upfxc = fluxlwUP_allsky(:,iTOA) + topflw(:)%upfx0 = fluxlwUP_clrsky(:,iTOA) + sfcflw(:)%upfxc = fluxlwUP_allsky(:,iSFC) + sfcflw(:)%upfx0 = fluxlwUP_clrsky(:,iSFC) + sfcflw(:)%dnfxc = fluxlwDOWN_allsky(:,iSFC) + sfcflw(:)%dnfx0 = fluxlwDOWN_clrsky(:,iSFC) + ! Optional outputs if(l_fluxeslw2d) then flxprf_lw%upfxc = fluxlwUP_allsky @@ -165,11 +155,18 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag flxprf_lw%upfx0 = fluxlwUP_clrsky flxprf_lw%dnfx0 = fluxlwDOWN_clrsky endif + + ! Save surface air temp for diurnal adjustment at model t-steps + tsflw (:) = tsfa(:) + + ! Radiation fluxes for other physics processes + sfcdlw(:) = sfcflw(:)%dnfxc + sfculw(:) = sfcflw(:)%upfxc ! ####################################################################################### ! Save LW diagnostics - ! - For time averaged output quantities (including total-sky and clear-sky SW and LW - ! fluxes at TOA and surface; conventional 3-domain cloud amount, cloud top and base + ! - For time averaged output quantities (including total-sky and clear-sky SW and LW + ! fluxes at TOA and surface; conventional 3-domain cloud amount, cloud top and base ! pressure, and cloud top temperature; aerosols AOD, etc.), store computed results in ! corresponding slots of array fluxr with appropriate time weights. ! - Collect the fluxr data for wrtsfc @@ -185,24 +182,24 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag fluxr(i,30) = fluxr(i,30) + fhlwr * fluxlwDOWN_clrsky(i,iSFC) ! clear sky sfc lw dn fluxr(i,33) = fluxr(i,33) + fhlwr * fluxlwUP_clrsky( i,iSFC) ! clear sky sfc lw up enddo - -! do i=1,nCol -! fluxr(i,17) = fluxr(i,17) + raddt * cldsa(i,4) -! fluxr(i,18) = fluxr(i,18) + raddt * cldsa(i,5) -! enddo + + do i=1,nCol + fluxr(i,17) = fluxr(i,17) + raddt * cldsa(i,4) + fluxr(i,18) = fluxr(i,18) + raddt * cldsa(i,5) + enddo ! Save cld frac,toplyr,botlyr and top temp, note that the order of h,m,l cloud is reversed for ! the fluxr output. save interface pressure (pa) of top/bot do j = 1, 3 do i = 1, nCol -! tem0d = raddt * cldsa(i,j) -! itop = mtopa(i,j) -! ibtc = mbota(i,j) -! fluxr(i, 8-j) = fluxr(i, 8-j) + tem0d -! fluxr(i,11-j) = fluxr(i,11-j) + tem0d * p_lev(i,itop) -! fluxr(i,14-j) = fluxr(i,14-j) + tem0d * p_lev(i,ibtc) -! fluxr(i,17-j) = fluxr(i,17-j) + tem0d * t_lay(i,itop) - + tem0d = raddt * cldsa(i,j) + itop = mtopa(i,j) + ibtc = mbota(i,j) + fluxr(i, 8-j) = fluxr(i, 8-j) + tem0d + fluxr(i,11-j) = fluxr(i,11-j) + tem0d * p_lev(i,itop) + fluxr(i,14-j) = fluxr(i,14-j) + tem0d * p_lev(i,ibtc) + fluxr(i,17-j) = fluxr(i,17-j) + tem0d * t_lay(i,itop) + ! Add optical depth and emissivity output tem2 = 0. do k=ibtc,itop diff --git a/physics/GFS_rrtmgp_sw_post.F90 b/physics/GFS_rrtmgp_sw_post.F90 index 38dbe17d5..23a681826 100644 --- a/physics/GFS_rrtmgp_sw_post.F90 +++ b/physics/GFS_rrtmgp_sw_post.F90 @@ -1,14 +1,14 @@ -module GFS_rrtmgp_sw_post +module GFS_rrtmgp_sw_post use machine, only: kind_phys use module_radiation_aerosols, only: NSPC1 use module_radsw_parameters, only: topfsw_type, sfcfsw_type, profsw_type, cmpfsw_type use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp use mo_fluxes_byband, only: ty_fluxes_byband use mo_heating_rates, only: compute_heating_rate - use radiation_tools, only: check_error_msg + use radiation_tools, only: check_error_msg use rrtmgp_sw_gas_optics, only: sw_gas_props implicit none - + public GFS_rrtmgp_sw_post_init,GFS_rrtmgp_sw_post_run,GFS_rrtmgp_sw_post_finalize contains @@ -33,23 +33,23 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky nirbmdi, nirdfdi, visbmdi, visdfdi, nirbmui, nirdfui, visbmui, visdfui, sfcnsw, & sfcdsw, htrsw, sfcfsw, topfsw, htrswc, flxprf_sw, scmpsw, errmsg, errflg) - ! Inputs - integer, intent(in) :: & - nCol, & ! Horizontal loop extent + ! Inputs + integer, intent(in) :: & + nCol, & ! Horizontal loop extent nLev, & ! Number of vertical layers nDay ! Number of daylit columns integer, intent(in), dimension(nday) :: & idxday ! Index array for daytime points - logical, intent(in) :: & - lsswr, & ! Call SW radiation? - do_sw_clrsky_hr, & ! Output clear-sky SW heating-rate? - save_diag ! Output radiation diagnostics? + logical, intent(in) :: & + lsswr, & ! Call SW radiation? + do_sw_clrsky_hr, & ! Output clear-sky SW heating-rate? + save_diag ! Output radiation diagnostics? real(kind_phys), intent(in) :: & fhswr ! Frequency for SW radiation real(kind_phys), dimension(nCol), intent(in) :: & t_lay, & ! Temperature at model layer centers (K) - coszen, & ! Cosine(SZA) - coszdg ! Cosine(SZA), daytime + coszen, & ! Cosine(SZA) + coszdg ! Cosine(SZA), daytime real(kind_phys), dimension(nCol, nLev+1), intent(in) :: & p_lev ! Pressure @ model layer-interfaces (Pa) real(kind_phys), dimension(sw_gas_props%get_nband(),ncol), intent(in) :: & @@ -65,17 +65,17 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky real(kind_phys), intent(in) :: & raddt ! Radiation time step real(kind_phys), dimension(nCol,NSPC1), intent(in) :: & - aerodp ! Vertical integrated optical depth for various aerosol species + aerodp ! Vertical integrated optical depth for various aerosol species real(kind_phys), dimension(nCol,5), intent(in) :: & - cldsa ! Fraction of clouds for low, middle, high, total and BL + cldsa ! Fraction of clouds for low, middle, high, total and BL integer, dimension(nCol,3), intent(in) ::& mbota, & ! vertical indices for low, middle and high cloud tops mtopa ! vertical indices for low, middle and high cloud bases real(kind_phys), dimension(nCol,nLev), intent(in) :: & cld_frac, & ! Total cloud fraction in each layer cldtausw ! approx .55mu band layer cloud optical depth - - ! Inputs (optional) + + ! Inputs (optional) type(cmpfsw_type), dimension(nCol), intent(inout), optional :: & scmpsw ! 2D surface fluxes, components: ! uvbfc - total sky downward uv-b flux at (W/m2) @@ -83,10 +83,10 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky ! 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) - + ! visdf - downward uv+vis diffused flux (W/m2) + real(kind=kind_phys), dimension(:,:), intent(inout) :: fluxr - + ! Outputs (mandatory) real(kind_phys), dimension(nCol), intent(inout) :: & nirbmdi, & ! sfc nir beam sw downward flux (W/m2) @@ -96,7 +96,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky nirbmui, & ! sfc nir beam sw upward flux (W/m2) nirdfui, & ! sfc nir diff sw upward flux (W/m2) visbmui, & ! sfc uv+vis beam sw upward flux (W/m2) - visdfui, & ! sfc uv+vis diff sw upward flux (W/m2) + visdfui, & ! sfc uv+vis diff sw upward flux (W/m2) sfcnsw, & ! total sky sfc netsw flx into ground sfcdsw ! real(kind_phys), dimension(nCol,nLev), intent(inout) :: & @@ -119,7 +119,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky ! dnfx0 - clear sky dnward flux (W/m2) real(kind_phys),dimension(nCol, nLev),intent(inout),optional :: & htrswc ! Clear-sky heating rate (K/s) - + ! Local variables integer :: i, j, k, iSFC, iTOA, itop, ibtc real(kind_phys) :: tem0d, tem1, tem2 @@ -135,7 +135,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky ! Are any optional outputs requested? l_fluxessw2d = present(flxprf_sw) - + ! Are the components of the surface fluxes provided? l_scmpsw = present(scmpsw) @@ -150,7 +150,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky iSFC = 1 iTOA = nLev+1 endif - + ! ####################################################################################### ! Compute SW heating-rates ! ####################################################################################### @@ -178,17 +178,14 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky ! Save SW outputs ! ####################################################################################### ! Copy fluxes from RRTGMP types into model radiation types. - ! Mandatory outputs - do i=1,nCol - topfsw(i)%upfxc = fluxswUP_allsky(i,iTOA) - topfsw(i)%upfx0 = fluxswUP_clrsky(i,iTOA) - topfsw(i)%dnfxc = fluxswDOWN_allsky(i,iTOA) - sfcfsw(i)%upfxc = fluxswUP_allsky(i,iSFC) - sfcfsw(i)%upfx0 = fluxswUP_clrsky(i,iSFC) - sfcfsw(i)%dnfxc = fluxswDOWN_allsky(i,iSFC) - sfcfsw(i)%dnfx0 = fluxswDOWN_clrsky(i,iSFC) - enddo + topfsw(:)%upfxc = fluxswUP_allsky(:,iTOA) + topfsw(:)%upfx0 = fluxswUP_clrsky(:,iTOA) + topfsw(:)%dnfxc = fluxswDOWN_allsky(:,iTOA) + sfcfsw(:)%upfxc = fluxswUP_allsky(:,iSFC) + sfcfsw(:)%upfx0 = fluxswUP_clrsky(:,iSFC) + sfcfsw(:)%dnfxc = fluxswDOWN_allsky(:,iSFC) + sfcfsw(:)%dnfx0 = fluxswDOWN_clrsky(:,iSFC) ! Optional output if(l_fluxessw2D) then @@ -197,10 +194,10 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky flxprf_sw(:,:)%upfx0 = fluxswUP_clrsky(:,:) flxprf_sw(:,:)%dnfx0 = fluxswDOWN_clrsky(:,:) endif - + ! Surface down and up spectral component fluxes ! - Save two spectral bands' surface downward and upward fluxes for output. - if (l_scmpsw) then + if (l_scmpsw) then do i=1,nCol nirbmdi(i) = scmpsw(i)%nirbm nirdfdi(i) = scmpsw(i)%nirdf @@ -212,17 +209,15 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky visdfui(i) = scmpsw(i)%visdf * sfc_alb_uvvis_dif(1,i) enddo else - do i=1,nCol - nirbmdi(i) = 0.0 - nirdfdi(i) = 0.0 - visbmdi(i) = 0.0 - visdfdi(i) = 0.0 - nirbmui(i) = 0.0 - nirdfui(i) = 0.0 - visbmui(i) = 0.0 - visdfui(i) = 0.0 - enddo - endif + nirbmdi(:) = 0.0 + nirdfdi(:) = 0.0 + visbmdi(:) = 0.0 + visdfdi(:) = 0.0 + nirbmui(:) = 0.0 + nirdfui(:) = 0.0 + visbmui(:) = 0.0 + visdfui(:) = 0.0 + endif else ! if_nday_block ! ####################################################################################### ! Dark everywhere @@ -230,17 +225,15 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky htrsw(:,:) = 0.0 sfcfsw = sfcfsw_type( 0.0, 0.0, 0.0, 0.0 ) topfsw = topfsw_type( 0.0, 0.0, 0.0 ) - do i=1,nCol - nirbmdi(i) = 0.0 - nirdfdi(i) = 0.0 - visbmdi(i) = 0.0 - visdfdi(i) = 0.0 - nirbmui(i) = 0.0 - nirdfui(i) = 0.0 - visbmui(i) = 0.0 - visdfui(i) = 0.0 - enddo - + nirbmdi(:) = 0.0 + nirdfdi(:) = 0.0 + visbmdi(:) = 0.0 + visdfdi(:) = 0.0 + nirbmui(:) = 0.0 + nirdfui(:) = 0.0 + visbmui(:) = 0.0 + visdfui(:) = 0.0 + if (do_sw_clrsky_hr) then htrswc(:,:) = 0 endif @@ -286,7 +279,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky fluxr(i,27) = fluxr(i,27) + nirdfdi(i) * tem0d ! nir diff sw dn ! SW clear-sky fluxes fluxr(i,29) = fluxr(i,29) + topfsw(i)%upfx0 * tem0d - fluxr(i,31) = fluxr(i,31) + sfcfsw(i)%upfx0 * tem0d + fluxr(i,31) = fluxr(i,31) + sfcfsw(i)%upfx0 * tem0d fluxr(i,32) = fluxr(i,32) + sfcfsw(i)%dnfx0 * tem0d endif enddo diff --git a/physics/cires_ugwpv1_solv2.F90 b/physics/cires_ugwpv1_solv2.F90 index 8f417ea1d..afd94ff5c 100644 --- a/physics/cires_ugwpv1_solv2.F90 +++ b/physics/cires_ugwpv1_solv2.F90 @@ -14,7 +14,7 @@ module cires_ugwpv1_solv2 subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & tau_ngw, tm , um, vm, qm, prsl, prsi, zmet, zmeti, prslk, & xlatd, sinlat, coslat, & - pdudt, pdvdt, pdtdt, dked, zngw) + pdudt, pdvdt, pdtdt, dked, zngw) ! !-------------------------------------------------------------------------------- ! nov 2015 alternative gw-solver for nggps-wam @@ -24,7 +24,7 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! oct 2020 Diagnostics of "tauabs, wrms, trms" is taken out ! -------------------------------------------------------------------------------- ! - use machine, only : kind_phys + use machine, only : kind_phys use cires_ugwpv1_module,only : krad, kvg, kion, ktg, iPr_ktgw, Pr_kdis, Pr_kvkt @@ -157,8 +157,7 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! real(kind=kind_phys) :: zdelp, zdelm, taud_min - real(kind=kind_phys) :: tvc, tvm -! real(kind=kind_phys) :: tvc, tvm, ptc, ptm + real(kind=kind_phys) :: tvc, tvm, ptc, ptm real(kind=kind_phys) :: umfp, umfm, umfc, ucrit3 real(kind=kind_phys) :: fmode, expdis, fdis real(kind=kind_phys) :: v_kzi, v_kzw, v_cdp, v_wdp, tx1, fcorsat, dzcrit @@ -182,85 +181,85 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & real(kind=kind_phys) :: dzmetm, dzmetp, dzmetf, bdif, bt_dif, apc, kturp real(kind=kind_phys) :: rstar, rstar2 - real(kind=kind_phys) :: snorm_ener, sigu2, flux_2_sig, ekin_norm - real(kind=kind_phys) :: taub_ch, sigu2_ch - real(kind=kind_phys) :: Pr_kdis_eff, mf_diss_heat, iPr_max - real(kind=kind_phys) :: exp_sponge, mi_sponge, gipr + real(kind=kind_phys) :: snorm_ener, sigu2, flux_2_sig, ekin_norm + real(kind=kind_phys) :: taub_ch, sigu2_ch + real(kind=kind_phys) :: Pr_kdis_eff, mf_diss_heat, iPr_max + real(kind=kind_phys) :: exp_sponge, mi_sponge, gipr !-------------------------------------------------------------------------- ! nslope3 = nslope + 3.0 - Pr_kdis_eff = gw_eff*pr_kdis - iPr_max = max(1.0, iPr_ktgw) - gipr = grav* Ipr_ktgw + Pr_kdis_eff = gw_eff*pr_kdis + iPr_max = max(1.0, iPr_ktgw) + gipr = grav* Ipr_ktgw ! ! test for input fields -! if (mpi_id == master .and. kdt < -2) then -! print *, im, levs, dtp, kdt, ' vay-solv2-v1' -! print *, minval(tm), maxval(tm), ' min-max-tm ' -! print *, minval(vm), maxval(vm), ' min-max-vm ' -! print *, minval(um), maxval(um), ' min-max-um ' -! print *, minval(qm), maxval(qm), ' min-max-qm ' -! print *, minval(prsl), maxval(prsl), ' min-max-Pmid ' -! print *, minval(prsi), maxval(prsi), ' min-max-Pint ' -! print *, minval(zmet), maxval(zmet), ' min-max-Zmid ' -! print *, minval(zmeti), maxval(zmeti), ' min-max-Zint ' -! print *, minval(prslk), maxval(prslk), ' min-max-Exner ' -! print *, minval(tau_ngw), maxval(tau_ngw), ' min-max-taungw ' -! print *, tau_min, ' tau_min ', tamp_mpa, ' tamp_mpa ' -! -! endif - - if (idebug_gwrms == 1) then - tauabs = 0.0 ; wrms = 0.0 ; trms = 0.0 - endif +! if (mpi_id == master .and. kdt < -2) then +! print *, im, levs, dtp, kdt, ' vay-solv2-v1' +! print *, minval(tm), maxval(tm), ' min-max-tm ' +! print *, minval(vm), maxval(vm), ' min-max-vm ' +! print *, minval(um), maxval(um), ' min-max-um ' +! print *, minval(qm), maxval(qm), ' min-max-qm ' +! print *, minval(prsl), maxval(prsl), ' min-max-Pmid ' +! print *, minval(prsi), maxval(prsi), ' min-max-Pint ' +! print *, minval(zmet), maxval(zmet), ' min-max-Zmid ' +! print *, minval(zmeti), maxval(zmeti), ' min-max-Zint ' +! print *, minval(prslk), maxval(prslk), ' min-max-Exner ' +! print *, minval(tau_ngw), maxval(tau_ngw), ' min-max-taungw ' +! print *, tau_min, ' tau_min ', tamp_mpa, ' tamp_mpa ' +! +! endif - rci(:) = 1.0 / zci(:) - rdci(:) = 1.0 / zdci(:) + if (idebug_gwrms == 1) then + tauabs=0.0; wrms =0.0 ; trms =0.0 + endif - rdtp = 1.0 / dtp - rdtp2 = 0.5 * rdtp + rci(:) = 1./zci(:) + rdci(:) = 1./zdci(:) - ksrc = max(ilaunch, 3) - km2 = ksrc - 2 - km1 = ksrc - 1 - kp1 = ksrc + 1 - ktop = levs + 1 + rdtp = 1./dtp + rdtp2 = 0.5*rdtp - suprf(ktop) = kion(levs) + ksrc= max(ilaunch, 3) + km2 = ksrc - 2 + km1 = ksrc - 1 + kp1 = ksrc + 1 + ktop= levs+1 - do k=1,levs - suprf(k) = kion(k) ! approximate 1-st order damping with Fast super-RF of FV3 - pdvdt(:,k) = 0.0 - pdudt(:,k) = 0.0 - pdtdt(:,k) = 0.0 - dked(: ,k) = 0.0 - enddo + suprf(ktop) = kion(levs) + + do k=1,levs + suprf(k) = kion(k) ! approximate 1-st order damping with Fast super-RF of FV3 + pdvdt(:,k) = 0.0 + pdudt(:,k) = 0.0 + pdtdt(:,k) = 0.0 + dked(: ,k) = 0.0 + enddo !----------------------------------------------------------- ! column-based j=1,im pjysics with 1D-arrays !----------------------------------------------------------- - DO j=1, im - jl = j - tx1 = omega2 * sinlat(j) *rv_kxw - cf1 = abs(tx1) - c2f2 = tx1 * tx1 - ucrit_max = max(ucrit, cf1) - ucrit3 = ucrit_max*ucrit_max*ucrit_max + DO j=1, im + jl =j + tx1 = omega2 * sinlat(j) *rv_kxw + cf1 = abs(tx1) + c2f2 = tx1 * tx1 + ucrit_max = max(ucrit, cf1) + ucrit3 = ucrit_max*ucrit_max*ucrit_max ! ! ngw-fluxes at all gridpoints (with tau_min at least) -! - aprsl(1:levs) = prsl(jl,1:levs) +! + aprsl(1:levs) = prsl(jl,1:levs) ! ! ksrc-define "aprsi(1:levs+1) redefine "ilaunch" ! do k=1, levs - if (aprsl(k) < psrc ) exit - enddo - ilaunch = max(k-1, 3) - ksrc = max(ilaunch, 3) + if (aprsl(k) .lt. psrc ) exit + enddo + ilaunch = max(k-1, 3) + ksrc= max(ilaunch, 3) - zngw(j) = zmet(j, ksrc) + zngw(j) = zmet(j, ksrc) km2 = ksrc - 2 km1 = ksrc - 1 @@ -268,340 +267,338 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & !=====ksrc - do k=1, levs - aum(k) = um(jl,k) - avm(k) = vm(jl,k) - atm(k) = tm(jl,k) - aqm(k) = qm(jl,k) - azmet(k) = zmet(jl,k) - aprsi(k) = prsi(jl,k) - azmeti(k) = zmeti(jl,k) - enddo - aprsi(levs+1) = prsi(jl,levs+1) - azmeti(levs+1) = zmeti(jl,levs+1) + aum(1:levs) = um(jl,1:levs) + avm(1:levs) = vm(jl,1:levs) + atm(1:levs) = tm(jl,1:levs) + aqm(1:levs) = qm(jl,1:levs) + azmet(1:levs) = zmet(jl,1:levs) + aprsi(1:levs+1) = prsi(jl,1:levs+1) + azmeti(1:levs+1) = zmeti(jl,1:levs+1) - rho_src = aprsl(ksrc)*rdi/atm(ksrc) - taub_ch = max(tau_ngw(jl), tau_min) - taub_src = taub_ch + rho_src = aprsl(ksrc)*rdi/atm(ksrc) + taub_ch = max(tau_ngw(jl), tau_min) + taub_src = taub_ch - sigu2 = zms * taub_src / (rho_src*v_kxw) - sig_u2az(1:nazd) = sigu2 + sigu2 = taub_src/rho_src/v_kxw * zms + sig_u2az(1:nazd) = sigu2 ! ! compute diffusion-based arrays km2:levs ! - do jk = km2, levs - dz_meti(jk) = azmeti(jk+1) - azmeti(jk) - dz_met(jk) = azmet(jk) - azmeti(jk-1) - enddo + do jk = km2, levs + dz_meti(jk) = azmeti(jk+1)-azmeti(jk) + dz_met(jk) = azmet(jk)-azmeti(jk-1) + enddo ! --------------------------------------------- ! interface mean flow parameters launch -> levs+1 ! --------------------------------------------- - do jk= km1,levs - tvc = atm(jk) * (1.0 + fv*aqm(jk)) - tvm = atm(jk-1) * (1.0 + fv*aqm(jk-1)) -! ptc = tvc / prslk(jl,jk) ! not used -! ptm = tvm / prslk(jl,jk-1) ! notused -! - zthm = 2.0 / (tvc+tvm) - rhp_wam = zthm*gor + do jk= km1,levs + tvc = atm(jk)*(1. +fv*aqm(jk)) + tvm = atm(jk-1)*(1. +fv*aqm(jk-1)) + ptc = tvc/ prslk(jl, jk) + ptm = tvm/prslk(jl,jk-1) +! + zthm = 2.0/(tvc+tvm) + rhp_wam = zthm*gor !interface - uint(jk) = 0.5*(aum(jk-1)+aum(jk)) - vint(jk) = 0.5*(avm(jk-1)+avm(jk)) - tint(jk) = 0.5*(tvc+tvm) - rhomid(jk) = aprsl(jk)*rdi/atm(jk) - rhoint(jk) = aprsi(jk)*rdi*zthm ! rho = p/(RTv) - zdelp = dz_meti(jk) ! >0 ...... dz-meters - v_zmet(jk) = zdelp + zdelp ! 2*kzi*[Z_int(k+1)-Z_int(k)] - zdelm = 1.0 / dz_met(jk) ! 1/dz ...... 1/meters + uint(jk) = 0.5*(aum(jk-1)+aum(jk)) + vint(jk) = 0.5*(avm(jk-1)+avm(jk)) + tint(jk) = 0.5*(tvc+tvm) + rhomid(jk) = aprsl(jk)*rdi/atm(jk) + rhoint(jk) = aprsi(jk)*rdi*zthm ! rho = p/(RTv) + zdelp = dz_meti(jk) ! >0 ...... dz-meters + v_zmet(jk) = 2.*zdelp ! 2*kzi*[Z_int(k+1)-Z_int(k)] + zdelm = 1./dz_met(jk) ! 1/dz ...... 1/meters ! -! bvf2 = grav2*zdelm*(ptc-ptm) / (ptc + ptm) ! N2=[g/PT]*(dPT/dz) +! bvf2 = grav2*zdelm*(ptc-ptm)/(ptc + ptm) ! N2=[g/PT]*(dPT/dz) ! - bn2(jk) = grav2cpd*zthm*(1.0+rcpdl*(tvc-tvm)*zdelm) - bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) - bn(jk) = sqrt(bn2(jk)) + bn2(jk) = grav2cpd*zthm*(1.0+rcpdl*(tvc-tvm)*zdelm) + bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) + bn(jk) = sqrt(bn2(jk)) - wrk3(jk) = 1.0 / (zdelp*rhomid(jk)) ! 1/rho_mid(k)/[Z_int(k+1)-Z_int(k)] - irhodz_mid(jk) = rdtp*zdelp*rhomid(jk)/rho_src + wrk3(jk)= 1./zdelp/rhomid(jk) ! 1/rho_mid(k)/[Z_int(k+1)-Z_int(k)] + irhodz_mid(jk) = rdtp*zdelp*rhomid(jk)/rho_src ! ! ! diagnostics -Kzz above PBL ! - uz = aum(jk) - aum(jk-1) - vz = avm(jk) - avm(jk-1) - shr2 = max(uz*uz+vz*vz, dw2min) * zdelm *zdelm + uz = aum(jk) - aum(jk-1) + vz = avm(jk) - avm(jk-1) + shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm - zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 - zgrow = exp(zmetk) - ritur = bn2(jk) / shr2 - kamp = sqrt(shr2) * sc2 * zgrow - w1 = 1.0 / (1.0 + 5*ritur) - ktur = min(max(kamp * w1 * w1, dked_min), dked_max) - zmetk = azmet(jk)* rhp - vueff(jk) = ktur + kvg(jk) + zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 + zgrow = exp(zmetk) + ritur = bn2(jk)/shr2 + kamp = sqrt(shr2)*sc2 *zgrow + w1 = 1./(1. + 5*ritur) + ktur= min(max(kamp * w1 * w1, dked_min), dked_max) + zmetk = azmet(jk)* rhp + vueff(jk) = ktur + kvg(jk) - akt(jk) = gipr / tvc - enddo + akt(jk) = gipr/tvc + enddo if (idebug_gwrms == 1) then - do jk= km1,levs - wrk1(jk) = rv_kxw/rhoint(jk) - wrk2(jk) = rgrav2*zthm*zthm*bn2(jk) ! dimension [K*K]*(c2/m2) + do jk= km1,levs + wrk1(jk) = rv_kxw/rhoint(jk) + wrk2(jk)= rgrav2*zthm*zthm*bn2(jk) ! dimension [K*K]*(c2/m2) enddo endif ! ! extrapolating values for ktop = levs+1 (lev-interface for prsi(levs+1) =/= 0) ! - jk = levs + jk = levs - rhoint(ktop) = 0.5*aprsi(levs)*rdi/atm(jk) - tint(ktop) = atm(jk)*(1. +fv*aqm(jk)) - uint(ktop) = aum(jk) - vint(ktop) = avm(jk) + rhoint(ktop) = 0.5*aprsi(levs)*rdi/atm(jk) + tint(ktop) = atm(jk)*(1. +fv*aqm(jk)) + uint(ktop) = aum(jk) + vint(ktop) = avm(jk) - v_zmet(ktop) = v_zmet(jk) - vueff(ktop) = vueff(jk) - bn2(ktop) = bn2(jk) - bn(ktop) = bn(jk) + v_zmet(ktop) = v_zmet(jk) + vueff(ktop) = vueff(jk) + bn2(ktop) = bn2(jk) + bn(ktop) = bn(jk) ! ! akt_mid *KT = -g*(1/H + 1/T*dT/dz)*KT ... grav/tvc for eddy heat conductivity ! - do jk=km1, levs - akt(jk) = -akt(jk)*(gor + (tint(jk+1)-tint(jk))/dz_meti(jk) ) - enddo + do jk=km1, levs + akt(jk) = -akt(jk)*(gor + (tint(jk+1)-tint(jk))/dz_meti(jk) ) + enddo - bvi = bn(ksrc); bvi2 = bvi * bvi; - bvi3 = bvi2*bvi; bvi4 = bvi2 * bvi2; rcms = zms/bvi + bvi = bn(ksrc); bvi2 = bvi * bvi; + bvi3 = bvi2*bvi; bvi4 = bvi2 * bvi2; rcms = zms/bvi ! ! project winds at ksrc ! do iaz=1, nazd - ul(iaz) = zcosang(iaz) *uint(ksrc) + zsinang(iaz) *vint(ksrc) + ul(iaz) = zcosang(iaz) *uint(ksrc) + zsinang(iaz) *vint(ksrc) enddo ! - do jk=ksrc, ktop - cstar(jk) = bn(jk)/zms - cstar2(jk) = cstar(jk)*cstar(jk) - - fden_lsat(jk) = rhoint(jk)/bn(jk)*v_kxw*Linsat2 + do jk=ksrc, ktop + cstar(jk) = bn(jk)/zms + cstar2(jk) = cstar(jk)*cstar(jk) - do iaz=1, nazd - zu = zcosang(iaz)*uint(jk) + zsinang(iaz)*vint(jk) - ui(iaz, jk) = zu !- ul(iaz)*0. + fden_lsat(jk) = rhoint(jk)/bn(jk)*v_kxw*Linsat2 + + do iaz=1, nazd + zu = zcosang(iaz)*uint(jk) + zsinang(iaz)*vint(jk) + ui(iaz, jk) = zu !- ul(iaz)*0. + enddo enddo - enddo - rstar = 1.0 / cstar(ksrc) - rstar2 = rstar*rstar + rstar = 1./cstar(ksrc) + rstar2 = rstar*rstar ! ----------------------------------------- ! set launch momentum flux spectral density ! ----------------------------------------- - fpu(1:nazd, km2:ktop) = 0. + fpu(1:nazd, km2:ktop) =0. - do inc=1,nwav + do inc=1,nwav - zcin = zci(inc)*rstar + zcin = zci(inc)*rstar ! ! integrate (flux(cin) x dcin ) old tau-flux and normalization ! - flux(inc,1) = rstar*(zcin*zcin)/(1.+ zcin**nslope3) + flux(inc,1) = rstar*(zcin*zcin)/(1.+ zcin**nslope3) ! -! fsat = rstar*(zcin*zcin) * taub_src / SN * [rho/rho_src *N_src/N] +! fsat = rstar*(zcin*zcin) * taub_src / SN * [rho/rho_src *N_src/N] ! - fpu(1,ksrc) = fpu(1,ksrc) + flux(inc,1)*zdci(inc) ! dc/cstar = dim-less - - do iaz=1,nazd - akzw(inc, iaz, ksrc) = bvi*rci(inc) - enddo + fpu(1,ksrc) = fpu(1,ksrc) + flux(inc,1)*zdci(inc) ! dc/cstar = dim-less + + do iaz=1,nazd + akzw(inc, iaz, ksrc) = bvi*rci(inc) + enddo - enddo + enddo ! ! adjust rho/bn vertical factors for saturated fluxes (E(m) ~m^-3) - flux_norm = taub_src / fpu(1, ksrc) ! [Pa * dc/cstar *dim_less] - ze1 = flux_norm * bvi/rhoint(ksrc) *rstar *rstar2 - do jk=ksrc, ktop - fden_bn(jk) = ze1* rhoint(jk) / bn(jk) ! [Pa]/[m/s] * rstar2 - enddo + flux_norm = taub_src / fpu(1, ksrc) ! [Pa * dc/cstar *dim_less] + ze1 = flux_norm * bvi/rhoint(ksrc) *rstar *rstar2 + do jk=ksrc, ktop + fden_bn(jk) = ze1* rhoint(jk) / bn(jk) ! [Pa]/[m/s] * rstar2 + enddo ! - do inc=1, nwav - flux(inc,1) = flux_norm*flux(inc,1) - enddo + do inc=1, nwav + flux(inc,1) = flux_norm*flux(inc,1) + enddo - if (ener_norm == 1) then - snorm_ener = 0. - do inc=1,nwav - zcin = zci(inc)*rstar - ze2 = zcin / (1.0 + zcin**nslope3) - snorm_ener = snorm_ener + ze2*zdci(inc)*rstar !dim-less - flux(inc,1) = ze2 * zcin - enddo - ekin_norm = 1.0 / snorm_ener + if (ener_norm == 1) then + snorm_ener = 0. + do inc=1,nwav + zcin = zci(inc)*rstar + + ze2 = zcin /(1.+ zcin**nslope3) + + snorm_ener = snorm_ener + ze2*zdci(inc)*rstar !dim-less + flux(inc,1) = ze2 * zcin + enddo + ekin_norm = 1./snorm_ener + ! taub_src = sigu2 * rho_src * [v_kxw / zms ] ! sigu2 = taub_src*zms/(rho_src/v_kxw) ! ze1 = sigu2*ks*dens/Ns = taub*zms/Ns - ze1 = taub_src*zms/bvi * ekin_norm + ze1 = taub_src*zms/bvi * ekin_norm taub_src = 0. - - do inc=1,nwav - flux(inc,1) = ze1* flux(inc,1) - taub_src = taub_src + flux(inc,1)*zdci(inc) - enddo - ze1 = ekin_norm * v_kxw * rstar2 - do jk=ksrc, ktop - fden_bnen(jk) = rhoint(jk) / bn(jk) * ze1 ! mult on => sigu2(z)*cdf2 => flux_sat - enddo - - endif + + do inc=1,nwav + flux(inc,1) = ze1* flux(inc,1) + taub_src = taub_src + flux(inc,1)*zdci(inc) + enddo + ze1 = ekin_norm * v_kxw * rstar2 + do jk=ksrc, ktop + fden_bnen(jk) = rhoint(jk) / bn(jk) *ze1 ! mult on => sigu2(z)*cdf2 => flux_sat + enddo + + endif ! - do iaz=1,nazd - fpu(iaz, ksrc) = taub_src - fpu(iaz, km1) = taub_src - enddo + do iaz=1,nazd + fpu(iaz, ksrc) = taub_src + fpu(iaz, km1) = taub_src + enddo ! copy flux-1 into other azimuths ! -------------------------------- - do iaz=2, nazd - do inc=1,nwav - flux(inc,iaz) = flux(inc,1) - enddo + do iaz=2, nazd + do inc=1,nwav + flux(inc,iaz) = flux(inc,1) enddo + enddo -! if (mpi_id == master .and. ener_norm == 1) then -! print * -! print *, 'vay_norm: ', taub_src, taub_ch, sigu2, flux_norm, ekin_norm -! print * -! endif - - if (idebug_gwrms == 1) then - pwrms = 0. - ptrms = 0. - tx1 = real(nazd)/rhoint(ksrc)*rv_kxw - ze2 = wrk2(ksrc) ! (bvi*atm(ksrc)*rgrav)**2 - do inc=1, nwav - v_kzw = bvi*rci(inc) - ze1 = flux(inc,1)*zdci(inc)*tx1*v_kzw - pwrms = pwrms + ze1 - ptrms = ptrms + ze1 * ze2 - enddo - wrms(jl, ksrc) = pwrms - trms(jl, ksrc) = ptrms - endif +! if (mpi_id == master .and. ener_norm == 1) then +! print * +! print *, 'vay_norm: ', taub_src, taub_ch, sigu2, flux_norm, ekin_norm +! print * +! endif + + if (idebug_gwrms == 1) then + pwrms =0. + ptrms =0. + tx1 = real(nazd)/rhoint(ksrc)*rv_kxw + ze2 = wrk2(ksrc) ! (bvi*atm(ksrc)*rgrav)**2 + do inc=1, nwav + v_kzw = bvi*rci(inc) + ze1 = flux(inc,1)*zdci(inc)*tx1*v_kzw + pwrms = pwrms + ze1 + ptrms = ptrms + ze1 * ze2 + enddo + wrms(jl, ksrc) = pwrms + trms(jl, ksrc) = ptrms + endif ! -------------------------------- - wave_act(:,:) = 1.0 + wave_act(:,:) = 1.0 ! vertical do-loop - do jk=ksrc, levs + do jk=ksrc, levs - jkp = jk+1 + jkp = jk+1 ! azimuth do-loop - do iaz=1, nazd + do iaz=1, nazd - sig_u2az_m(iaz) = sig_u2az(iaz) + sig_u2az_m(iaz) = sig_u2az(iaz) - umfp = ui(iaz, jkp) - umfm = ui(iaz, jk) - umfc = .5*(umfm + umfp) + umfp = ui(iaz, jkp) + umfm = ui(iaz, jk) + umfc = .5*(umfm + umfp) ! wave-cin loop - dfdz_v(iaz, jk) = 0.0 - dfdz_heat(iaz, jk) = 0.0 - fpu(iaz, jkp) = 0.0 - sig_u2az(iaz) = 0.0 + dfdz_v(iaz, jk) = 0.0 + dfdz_heat(iaz, jk) = 0.0 + fpu(iaz, jkp) = 0.0 + sig_u2az(iaz) =0.0 ! ! wave_dis(iaz, :) = vueff(jk) - do inc=1, nwav - flux_m(inc, iaz) = flux(inc, iaz) + do inc=1, nwav + flux_m(inc, iaz) = flux(inc, iaz) - zcin = zci(inc) ! zcin =/0 by definition - zcinc = rci(inc) + zcin = zci(inc) ! zcin =/0 by definition + zcinc = rci(inc) - if (wave_act(inc,iaz) == 1.0) then + if(wave_act(inc,iaz) == 1.0) then !======================================================================= ! discrete mode ! saturated limit wfit = kzw*kzw*kt; wfdt = wfit/(kxw*cx)*betat ! & dissipative kzi = 2.*kzw*(wfdm+wfdt)*dzpi(k) !======================================================================= - v_cdp = zcin - umfp - v_cdp2=v_cdp*v_cdp - cdf2 = v_cdp2 - c2f2 - if (v_cdp .le. ucrit_max .or. cdf2 .le. 0.0) then + v_cdp = zcin - umfp + v_cdp2=v_cdp*v_cdp + cdf2 = v_cdp2 - c2f2 + if (v_cdp .le. ucrit_max .or. cdf2 .le. 0.0) then ! ! between layer [k-1,k or jk-jkp] (Chi - Uk) -> ucrit_max, wave's absorption ! - wave_act(inc,iaz) = 0. - akzw(inc, iaz, jkp) = pi/dz_meti(jk) ! pi2/dzmet - fluxs = 0.0 !max(0., rhobnk(jkp)*ucrit3)*rdci(inc) - flux(inc,iaz) = fluxs + wave_act(inc,iaz) =0. + akzw(inc, iaz, jkp) = pi/dz_meti(jk) ! pi2/dzmet + fluxs = 0.0 !max(0., rhobnk(jkp)*ucrit3)*rdci(inc) + flux(inc,iaz) = fluxs - else + else - v_wdp = v_kxw * v_cdp - wdop2 = v_wdp * v_wdp + v_wdp = v_kxw*v_cdp + wdop2 = v_wdp* v_wdp ! ! rotational cut-off ! - kzw2 = (bn2(jkp)-wdop2)/Cdf2 + kzw2 = (bn2(jkp)-wdop2)/Cdf2 ! !cires_ugwp_initialize.F90: real, parameter :: mkzmin = pi2/80.0e3 ! - if ( kzw2 > mkz2min ) then - v_kzw = sqrt(kzw2) - akzw(inc, iaz, jkp) = v_kzw + if ( kzw2 > mkz2min ) then + v_kzw = sqrt(kzw2) + akzw(inc, iaz, jkp) = v_kzw ! !linsatdis: kzw2, kzw3, kdsat, c2f2, cdf2, cdf1 ! !kzw2 = (bn2(k)-wdop2)/Cdf2 - rhp4 - v_kx2w ! full lin DS-NGW (N2-wd2)*k2=(m2+k2+[1/2H]^2)*(wd2-f2) ! Kds_sat = kxw*Cdf1*rhp2/kzw3 !krad, kvg, kion, ktg - v_cdp = sqrt( cdf2 ) - v_wdp = v_kxw * v_cdp - v_wdi = kzw2*vueff(jk) + kion(jk) ! supRF-diss due for "all" vars - v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) - v_kzi = v_kzw*v_wdi/v_wdpc + v_cdp = sqrt( cdf2 ) + v_wdp = v_kxw * v_cdp + v_wdi = kzw2*vueff(jk) + kion(jk) ! supRF-diss due for "all" vars + v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) + v_kzi = v_kzw*v_wdi/v_wdpc ! - ze1 = v_kzi*v_zmet(jk) + ze1 = v_kzi*v_zmet(jk) - if (ze1 .ge. 1.e-2) then - expdis = max(exp(-ze1), 0.01) - else - expdis = 1.0 / (1.0 + ze1) - endif + if (ze1 .ge. 1.e-2) then + expdis = max(exp(-ze1), 0.01) + else + expdis = 1./(1.+ ze1) + endif ! - wave_act(inc,iaz) = 1.0 - fmode = flux(inc,iaz) - - flux_2_sig = v_kzw / (v_kxw*rhoint(jkp)) - w1 = v_wdpc / (kzw2*v_kzw*v_zmet(jk)) - else ! kzw2 <= mkz2min large "Lz"-reflection + wave_act(inc,iaz) = 1.0 + fmode = flux(inc,iaz) - expdis = 1.0 - v_kzw = mkzmin + flux_2_sig = v_kzw/v_kxw/rhoint(jkp) + w1 = v_wdpc/kzw2/v_kzw/v_zmet(jk) + else ! kzw2 <= mkz2min large "Lz"-reflection - v_cdp = 0. ! no effects of reflected waves - wave_act(inc,iaz) = 0.0 - akzw(inc, iaz, jkp) = v_kzw - fmode = 0. - w1 = 0. - endif + expdis = 1.0 + v_kzw = mkzmin -! expdis =1.0 + v_cdp = 0. ! no effects of reflected waves + wave_act(inc,iaz) = 0.0 + akzw(inc, iaz, jkp) = v_kzw + fmode = 0. + w1 =0. + endif +! expdis =1.0 - fdis = fmode*expdis*wave_act(inc,iaz) + fdis = fmode*expdis*wave_act(inc,iaz) !============================================================================== ! ! Saturated Fluxes and Energy: Spectral and Dicrete Modes @@ -615,7 +612,7 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! fluxs= fden_bn(jkp)*cdf2*zcinc*wave_act(inc,iaz) ! new sat fluxs= fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) ! -! fluxs = fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) +! fluxs= fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) ! ! @@ -624,136 +621,131 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! [fden_bn(jkp)] = Pa/dc ! fsat = rstar*(zcin*zcin) * [taub_src / SN * [ rstar3*rho/rho_src *N_src/N] = fden_bn ] - if (ener_norm == 0) fluxs= fden_bn(jkp)*cdf2*wave_act(inc,iaz) ! dim-n: Pa/[m/s] + if (ener_norm == 0) fluxs= fden_bn(jkp)*cdf2*wave_act(inc,iaz) ! dim-n: Pa/[m/s] ! ! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc ! - if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) + if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) - if (ener_norm == 1) then + if (ener_norm == 1) then ! spectral saturation limit - - if (ener_lsat == 0) fluxs= fden_bnen(jk)*cdf2*wave_act(inc,iaz)*sig_u2az_m(iaz) + + if (ener_lsat == 0) fluxs= fden_bnen(jk)*cdf2*wave_act(inc,iaz)*sig_u2az_m(iaz) ! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc - if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) + if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) ! - endif + endif !---------------------------------------------------------------------------- ! dicrete mode saturation fden_sat(jkp) = rhoint(jkp)/bn(jkp)*v_kxw -! fluxs = fden_sat(jkp)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat -! fluxs_src = fden_sat(ksrc)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat +! fluxs = fden_sat(jkp)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat +! fluxs_src = fden_sat(ksrc)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat !---------------------------------------------------------------------------- - zdep = fdis-fluxs ! dimension [Pa/dc] *dc = Pa - if (zdep > 0.0 ) then + zdep = fdis-fluxs ! dimension [Pa/dc] *dc = Pa + if(zdep > 0.0 ) then ! subs on sat-limit - ze1 = flux(inc,iaz) - flux(inc,iaz) = fluxs - ze2 = log(ze1/fluxs)*w1 ! Kdsat-compute damping of mode =>df = f-fluxs - ! here we can add extra-dissip for the next layer -!Moorthi the above ze2 is not used it appears! - - else + ze1 = flux(inc,iaz) + flux(inc,iaz) = fluxs + ze2 = log(ze1/fluxs)*w1 ! Kdsat-compute damping of mode =>df = f-fluxs + ! here we can add extra-dissip for the next layer + else ! assign dis-ve flux - flux(inc,iaz) = fdis - endif + flux(inc,iaz) = fdis + endif - dtau = flux_m(inc,iaz)-flux(inc,iaz) - if (dtau .lt. 0) then - flux(inc,iaz) = flux_m(inc,iaz) - endif + dtau = flux_m(inc,iaz)-flux(inc,iaz) + if (dtau .lt. 0) then + flux(inc,iaz) = flux_m(inc,iaz) + endif ! ! GW-sponge domain: saturate all "GW"-modes above "zsp_gw" ! - if ( azmeti(jkp) >= zsp_gw) then -! mi_sponge = 0.5 / dz_meti(jk) -! ze2 = v_wdp / v_kzw * mi_sponge ! Ksat*v_kzw2 = [mi_sat*wdp/kzw] -! v_wdi = ze2 + v_wdi*0.25 ! diss-sat GW-sponge - - v_wdi = 0.5 * v_wdp / (v_kzw *dz_meti(jk)) + v_wdi*0.25 ! diss-sat GW-sponge - v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) - v_kzi = v_kzw*v_wdi/v_wdpc + if ( azmeti(jkp) .ge. zsp_gw) then + mi_sponge = .5/dz_meti(jk) + ze2 = v_wdp /v_kzw * mi_sponge ! Ksat*v_kzw2 = [mi_sat*wdp/kzw] + v_wdi = ze2 + v_wdi*0.25 ! diss-sat GW-sponge + v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) + v_kzi = v_kzw*v_wdi/v_wdpc ! -! ze1 = v_kzi*v_zmet(jk) -! exp_sponge = exp(-ze1) - exp_sponge = exp(-v_kzi*v_zmet(jk)) + ze1 = v_kzi*v_zmet(jk) + exp_sponge = exp(-ze1) ! ! additional sponge ! - flux(inc,iaz) = flux(inc,iaz) *exp_sponge - endif + flux(inc,iaz) = flux(inc,iaz) *exp_sponge + endif - endif ! coriolis or CL condition-checkif => (v_cdp .le. ucrit_max) then - endif ! only for waves w/o CL-absorption wave_act=1 + endif ! coriolis or CL condition-checkif => (v_cdp .le. ucrit_max) then + endif ! only for waves w/o CL-absorption wave_act=1 ! ! sum for given (jk, iaz) all active "wave" contributions ! - if (wave_act(inc,iaz) == 1) then + if (wave_act(inc,iaz) == 1) then - zcinc = zdci(inc) - vc_zflx_mode = flux(inc,iaz) - vmdiff = max(0., flux_m(inc,iaz)-vc_zflx_mode) - if (vmdiff <= 0. ) vc_zflx_mode = flux_m(inc,iaz) - ze1 = vc_zflx_mode*zcinc - fpu(iaz, jkp) = fpu(iaz,jkp) + ze1 ! flux (pa) at - sig_u2az(iaz) = sig_u2az(iaz) + ze1*flux_2_sig ! ekin(m2/s2) at z+dz + zcinc =zdci(inc) + vc_zflx_mode = flux(inc,iaz) + vmdiff = max(0., flux_m(inc,iaz)-vc_zflx_mode) + if (vmdiff <= 0. ) vc_zflx_mode = flux_m(inc,iaz) + ze1 = vc_zflx_mode*zcinc + fpu(iaz, jkp) = fpu(iaz,jkp) + ze1 ! flux (pa) at + sig_u2az(iaz) = sig_u2az(iaz) + ze1*flux_2_sig ! ekin(m2/s2) at z+dz !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! (heat deposition integration over spectral mode for each azimuth ! later sum over selected azimuths as "non-negative" scalars) ! cdf1 = sqrt( (zci(inc)-umfc)**2-c2f2) !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -! zdelp = wrk3(jk)*cdf1 *zcinc +! zdelp = wrk3(jk)*cdf1 *zcinc - zdelp = wrk3(jk) * v_cdp * zcinc * vmdiff + zdelp = wrk3(jk)* v_cdp *zcinc * vmdiff -! zcool = 1. ! COOL=(-3.5 + Pr)/Pr -! zcool = [Kv/Pr]*N2*(Pr-Cp/R)/cp -! edis = (c-u)*ax/cp = Kv_dis*N2/cp -! cool = -Kt*N2/R +! zcool = 1. ! COOL=(-3.5 + Pr)/Pr +! zcool = [Kv/Pr]*N2*(Pr-Cp/R)/cp +! edis = (c-u)*ax/cp = Kv_dis*N2/cp +! cool = -Kt*N2/R ! add heat-conduction "bulk" impact: 1/Pr*(g*g*rho)* d [rho*Kv(dT/dp- R/Cp *T/p)] ! - dfdz_v(iaz, jk) = dfdz_v(iaz,jk) + zdelp ! +cool !heating & simple cooling < 0 - dfdz_heat(iaz, jk) = dfdz_heat(iaz,jk) + zdelp ! heating -only > 0 - endif !wave_act(inc,iaz) == 1) + dfdz_v(iaz, jk) = dfdz_v(iaz,jk) + zdelp ! +cool !heating & simple cooling < 0 + dfdz_heat(iaz, jk) = dfdz_heat(iaz,jk) + zdelp ! heating -only > 0 + endif !wave_act(inc,iaz) == 1) ! - enddo ! wave-inc-loop + enddo ! wave-inc-loop - ze1 = fpu(iaz, jk) - if (fpu(iaz, jkp) > ze1 ) fpu(iaz, jkp) = ze1 + ze1 =fpu(iaz, jk) + if (fpu(iaz, jkp) > ze1 ) fpu(iaz, jkp) = ze1 ! ! compute wind and temp-re rms ! - if (idebug_gwrms == 1) then - pwrms = 0. - ptrms = 0. - do inc=1, nwav - if (wave_act(inc,iaz) > 0.) then - v_kzw = akzw(inc, iaz, jk) - ze1 = flux(inc,iaz)*v_kzw*zdci(inc)*wrk1(jk) - pwrms = pwrms + ze1 - ptrms = ptrms + ze1*wrk2(jk) - endif - enddo - Awrms(iaz, jk) = pwrms - Atrms(iaz, jk) = ptrms - endif + if (idebug_gwrms == 1) then + pwrms =0. + ptrms =0. + do inc=1, nwav + if (wave_act(inc,iaz) > 0.) then + v_kzw =akzw(inc, iaz, jk) + ze1 = flux(inc,iaz)*v_kzw*zdci(inc)*wrk1(jk) + pwrms = pwrms + ze1 + ptrms = ptrms + ze1*wrk2(jk) + endif + enddo + Awrms(iaz, jk) = pwrms + Atrms(iaz, jk) = ptrms + endif ! -------------- - enddo ! end Azimuth do-loop + enddo ! end Azimuth do-loop ! ! eddy wave dissipation to limit GW-rms ! - tx1 = sum(abs(dfdz_heat(1:nazd, jk))) / bn2(jk) - ze1 = max(dked_min, tx1) - ze2 = min(dked_max, ze1) - vueff(jkp) = ze2 + vueff(jkp) + tx1 = sum(abs(dfdz_heat(1:nazd, jk)))/bn2(jk) + ze1=max(dked_min, tx1) + ze2=min(dked_max, ze1) + vueff(jkp) = ze2 + vueff(jkp) ! - enddo ! end Vertical do-loop + enddo ! end Vertical do-loop ! ! top-layers constant interface-fluxes and zero-heat ! we allow non-zero momentum fluxes and thermal effects @@ -769,38 +761,38 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! at the source level and below taux = 0 (taux_E=-taux_W by assumption) !======================================================================== - do jk=ksrc, levs + do jk=ksrc, levs taux(jk) = 0.0 tauy(jk) = 0.0 - do iaz=1,nazd - taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) - tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) - pdtdt(jl,jk) = pdtdt(jl,jk) + dfdz_v(iaz,jk) - dked(jl,jk) = dked(jl,jk) + dfdz_heat(iaz,jk) - enddo + do iaz=1,nazd + taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) + tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) + pdtdt(jl,jk) = pdtdt(jl,jk) + dfdz_v(iaz,jk) + dked(jl,jk) = dked(jl,jk) + dfdz_heat(iaz,jk) enddo - jk = ktop ; taux(jk) = 0. ; tauy(jk) = 0. + enddo + jk = ktop; taux(jk)=0.; tauy(jk)=0. do iaz=1,nazd - taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) - tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) + taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) + tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) enddo - if (idebug_gwrms == 1) then - do jk=kp1, levs - do iaz=1,nazd - wrms(jl,jk) = wrms(jl,jk) + Awrms(iaz,jk) - trms(jl,jk) = trms(jl,jk) + Atrms(iaz,jk) - tauabs(jl,jk) = tauabs(jl,jk) + fpu(iaz,jk) - enddo - enddo - endif + if (idebug_gwrms == 1) then + do jk=kp1, levs + do iaz=1,nazd + wrms(jl,jk) =wrms(jl,jk) + Awrms(iaz,jk) + trms(jl,jk) =trms(jl,jk) + Atrms(iaz,jk) + tauabs(jl,jk)=tauabs(jl,jk) + fpu(iaz,jk) + enddo + enddo + endif ! - do jk=ksrc+1,levs - jkp = jk + 1 + do jk=ksrc+1,levs + jkp = jk + 1 zdelp = wrk3(jk)*gw_eff - ze1 = (taux(jkp)-taux(jk)) * zdelp - ze2 = (tauy(jkp)-tauy(jk)) * zdelp + ze1 = (taux(jkp)-taux(jk))* zdelp + ze2 = (tauy(jkp)-tauy(jk))* zdelp if (abs(ze1) >= maxdudt ) then ze1 = sign(maxdudt, ze1) @@ -815,235 +807,230 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & ! Cx =0 based Cx=/= 0. above ! ! - if (knob_ugwp_doheat == 1) then + if (knob_ugwp_doheat == 1) then ! -! maxdtdt= dked_max * bnfix2 +!maxdtdt= dked_max * bnfix2 ! - pdtdt(jl,jk) = pdtdt(jl,jk)*gw_eff - ze2 = pdtdt(jl,jk) - if (abs(ze2) >= max_eps ) pdtdt(jl,jk) = sign(max_eps, ze2) + pdtdt(jl,jk) = pdtdt(jl,jk)*gw_eff + ze2 = pdtdt(jl,jk) + if (abs(ze2) >= max_eps ) pdtdt(jl,jk) = sign(max_eps, ze2) - dked(jl,jk) = dked(jl,jk) / bn2(jk) - ze1 = max(dked_min, dked(jl,jk)) - dked(jl,jk) = min(dked_max, ze1) - qmid(jk) = pdtdt(j,jk) - endif - enddo + dked(jl,jk) = dked(jl,jk)/bn2(jk) + ze1 = max(dked_min, dked(jl,jk)) + dked(jl,jk) = min(dked_max, ze1) + qmid(jk) = pdtdt(j,jk) + endif + enddo !---------------------------------------------------------------------------------- ! Update heat = ek_diss/cp and aply 1-2-1 smoother for "dked" => dktur ! here with "u_new = u +dtp*dudt ; vnew = v + v +dtp*dvdt ! can check "stability" in the column and "add" ktur-estimation ! to suppress instability as needed so dked = dked_gw + ktur_ric !---------------------------------------------------------------------------------- - - dktur(1:levs) = dked(jl,1:levs) + + dktur(1:levs) = dked(jl,1:levs) ! - do ist= 1, nstdif - do jk=ksrc,levs-1 - adif(jk) =.25*(dktur(jk-1)+ dktur(jk+1)) + .5*dktur(jk) - enddo - dktur(ksrc:levs-1) = adif(ksrc:levs-1) - enddo - dktur(levs) = .5*( dked(jl,levs)+ dked(jl,levs-1)) - dktur(levs+1) = dktur(levs) + do ist= 1, nstdif + do jk=ksrc,levs-1 + adif(jk) =.25*(dktur(jk-1)+ dktur(jk+1)) + .5*dktur(jk) + enddo + dktur(ksrc:levs-1) = adif(ksrc:levs-1) + enddo + dktur(levs) = .5*( dked(jl,levs)+ dked(jl,levs-1)) + dktur(levs+1) = dktur(levs) - do jk=ksrc,levs+1 - ze1 = .5*( dktur(jk) +dktur(jk-1) ) - kvint(jk) = ze1 - ktint(jk) = ze1*iPr_ktgw - enddo + do jk=ksrc,levs+1 + ze1 = .5*( dktur(jk) +dktur(jk-1) ) + kvint(jk) = ze1 + ktint(jk) = ze1*iPr_ktgw + enddo ! ! Thermal budget qmid = qheat + qcool ! - do jk=ksrc+1,levs + do jk=ksrc+1,levs ze2 = qmid(jk) + dktur(jk)*Akt(jk) + grav*(ktint(jk+1)-ktint(jk))/dz_meti(jk) - qmid(jk) = ze2 - if (abs(ze2) >= max_eps ) qmid(jk) = sign(max_eps, ze2) + qmid(jk) = ze2 + if (abs(ze2) >= max_eps ) qmid(jk) = sign(max_eps, ze2) pdtdt(jl,jk) = qmid(jk)*rcpd - dked(jl, jk) = dktur(jk) + dked(jl, jk) = dktur(jk) enddo ! ! perform explicit eddy "diffusive" 3-point smoothing of "u-v-t" ! from the surface/launch-gw to the "top" ! ! - do jk=km2,levs ! update by source function X(t+dt) = X(t) + dtp * dXdt ! - uold(jk) = aum(jk) + pdudt(jl,jk) * dtp - vold(jk) = avm(jk) + pdvdt(jl,jk) * dtp - told(jk) = atm(jk) + pdtdt(jl,jk) * dtp + uold(km2:levs) = aum(km2:levs)+pdudt(jl,km2:levs)*dtp + vold(km2:levs) = avm(km2:levs)+pdvdt(jl,km2:levs)*dtp + told(km2:levs) = atm(km2:levs)+pdtdt(jl,km2:levs)*dtp ! ! diagnose turb-profile using "stability-check" relying on the free-atm diffusion ! sc2 = 30m x 30m ! - dktur(jk) = dked_min - enddo + dktur(km2:levs) = dked_min - do jk=km1,levs - uz = uold(jk) - uold(jk-1) - vz = vold(jk) - vold(jk-1) - ze1 = dz_met(jk) - zdelm = 1.0 / ze1 + do jk=km1,levs + uz = uold(jk) - uold(jk-1) + vz = vold(jk) - vold(jk-1) + ze1 = dz_met(jk) + zdelm = 1./ze1 - tvc = told(jk) * (1. +fv*aqm(jk)) - tvm = told(jk-1) * (1. +fv*aqm(jk-1)) - zthm = 2.0 / (tvc+tvm) - shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm + tvc = told(jk) * (1. +fv*aqm(jk)) + tvm = told(jk-1) * (1. +fv*aqm(jk-1)) + zthm = 2.0 / (tvc+tvm) + shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm - bn2(jk) = grav2cpd*zthm * (1.0+rcpdl*(tvc-tvm)*zdelm) + bn2(jk) = grav2cpd*zthm * (1.0+rcpdl*(tvc-tvm)*zdelm) - bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) - zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 - zgrow = exp(zmetk) - ritur = bn2(jk)/shr2 - w1 = 1.0 / (1.0 + 5*ritur) - ze2 = min( sc2 *zgrow, 4.*ze1*ze1) + bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) + zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 + zgrow = exp(zmetk) + ritur = bn2(jk)/shr2 + w1 = 1./(1. + 5*ritur) + ze2 = min( sc2 *zgrow, 4.*ze1*ze1) ! ! Smag-type of eddy diffusion K_smag = Sqrt(Deformation - N2/Pr)* L2 *const ! - kamp = sqrt(shr2)* ze2 * w1 * w1 - ktur = min(max(kamp, dked_min), dked_max) - dktur(jk) = ktur + kamp = sqrt(shr2)* ze2 * w1 * w1 + ktur= min(max(kamp, dked_min), dked_max) + dktur(jk) = ktur ! ! update of dked = dked_gw + k_turb_mf -! - dked(jl, jk) = dked(jl, jk) +ktur +! + dked(jl, jk) = dked(jl, jk) +ktur - enddo + enddo ! ! apply eddy effects due to GWs: explicit scheme Kzz*dt/dz2 < 0.5 stability ! - if (knob_ugwp_dokdis == 2) then + if (knob_ugwp_dokdis == 2) then - do jk=ksrc,levs - ze1 = min(.5*(dktur(jk)+dktur(jk-1)), dturb_max) - kvint(jk) = kvint(jk) + ze1 -! ktint(jk) = ktint(jk) + ze1*iPr_ktgw - enddo - kvint(km1) = kvint(ksrc) - kvint(ktop) = kvint(levs) + do jk=ksrc,levs + ze1 = min(.5*(dktur(jk) +dktur(jk-1)), dturb_max) + kvint(jk) = kvint(jk) + ze1 +! ktint(jk) = ktint(jk) + ze1*iPr_ktgw + enddo + kvint(km1) = kvint(ksrc) + kvint(ktop) = kvint(levs) - dzmetm = 1./dz_met(km1) - Adif(km1:levs) = 0. - Cdif(km1:levs) = 0. + dzmetm = 1./dz_met(km1) + Adif(km1:levs) = 0. + Cdif(km1:levs) = 0. do jk=km1,levs-1 - dzmetp = 1.0 / dz_met(jk+1) - dzmetf = 1.0 / (dz_meti(jk)*rhomid(jk)) + dzmetp = 1./dz_met(jk+1) + dzmetf = 1./(dz_meti(jk)*rhomid(jk)) - ktur = kvint(jk) * rhoint(jk) * dzmetf - kturp = Kvint(jk+1) * rhoint(jk+1) * dzmetf - - Adif(jk) = ktur * dzmetm - Cdif(jk) = kturp * dzmetp - ApC = adif(jk) + cdif(jk) - ACdif(jk) = ApC + ktur = kvint(jk) *rhoint(jk) * dzmetf + kturp =Kvint(jk+1)*rhoint(jk+1) * dzmetf + + Adif(jk) = ktur * dzmetm + Cdif(jk) = kturp * dzmetp + ApC = adif(jk)+cdif(jk) + ACdif(jk) = ApC - w1 = ApC*iPr_max - if (rdtp < w1 ) then - Anstab(jk) = floor(w1*dtp) + 1 - else - Anstab(jk) = 1 - endif - dzmetm = dzmetp - enddo + w1 = ApC*iPr_max + if (rdtp < w1 ) then + Anstab(jk) = floor(w1*dtp) + 1 + else + Anstab(jk) = 1 + endif + dzmetm = dzmetp + enddo - nstab = maxval( Anstab(ksrc:levs-1)) + nstab = maxval( Anstab(ksrc:levs-1)) -! if (nstab .ge. 3) print *, 'nstab ', nstab +! if (nstab .ge. 3) print *, 'nstab ', nstab ! ! k instead Jk ! - dtdif = dtp/real(nstab) - ze1 = 1./dtdif + dtdif = dtp/real(nstab) + ze1 = 1./dtdif - do ist= 1, nstab - do k=ksrc,levs-1 - Bdif = ze1 - ACdif(k) - Bt_dif = ze1 - ACdif(k)* iPr_ktgw ! ipr_Ktgw = 1./Pr <1 - unew(k) = uold(k)*Bdif + uold(k-1)*Adif(k) + uold(k+1)*Cdif(k) - vnew(k) = vold(k)*Bdif + vold(k-1)*Adif(k) + vold(k+1)*Cdif(k) - tnew(k) = told(k)*Bt_dif+(told(k-1)*Adif(k) + told(k+1)*Cdif(k))*iPr_ktgw - enddo + do ist= 1, nstab + do k=ksrc,levs-1 + Bdif = ze1 - ACdif(k) + Bt_dif = ze1 - ACdif(k)* iPr_ktgw ! ipr_Ktgw = 1./Pr <1 + unew(k) = uold(k)*Bdif + uold(k-1)*Adif(k) + uold(k+1)*Cdif(k) + vnew(k) = vold(k)*Bdif + vold(k-1)*Adif(k) + vold(k+1)*Cdif(k) + tnew(k) = told(k)*Bt_dif+(told(k-1)*Adif(k) + told(k+1)*Cdif(k))*iPr_ktgw + enddo - do k=ksrc,levs-1 - uold(k) = unew(k) * dtdif ! value du/dtp *dtp = du - vold(k) = vnew(k) * dtdif - told(k) = tnew(k) * dtdif - enddo + uold(ksrc:levs-1) = unew(ksrc:levs-1)*dtdif ! value du/dtp *dtp = du + vold(ksrc:levs-1) = vnew(ksrc:levs-1)*dtdif + told(ksrc:levs-1) = tnew(ksrc:levs-1)*dtdif ! ! smoothing the boundary points: "k-1" = ksrc-1 and "k+1" = levs ! - uold(levs) = uold(levs-1) - vold(levs) = vold(levs-1) - told(levs) = told(levs-1) - enddo + uold(levs) = uold(levs-1) + vold(levs) = vold(levs-1) + told(levs) = told(levs-1) + enddo ! ! compute "smoothed" tendencies by molecular + GW-eddy diffusions ! - do k=ksrc,levs-1 -! + do k=ksrc,levs-1 +! ! final updates of tendencies and diffusion ! - ze2 = rdtp * (uold(k) - aum(k)) - ze1 = rdtp * (vold(k) - avm(k)) - pdtdt(jl,k) = rdtp * (told(k) - atm(k)) - - if (abs(pdtdt(jl,k)) >= maxdtdt ) pdtdt(jl,k) = sign(maxdtdt,pdtdt(jl,k) ) - if (abs(ze1) >= maxdudt ) then - ze1 = sign(maxdudt, ze1) - endif - if (abs(ze2) >= maxdudt ) then - ze2 = sign(maxdudt, ze2) - endif + ze2 = rdtp*(uold(k) - aum(k)) + ze1 = rdtp*(vold(k) - avm(k)) + pdtdt(jl,k)= rdtp*( told(k) - atm(k) ) - pdudt(jl, k) = ze2 - pdvdt(jl, k) = ze1 - uz = uold(k+1) - uold(k-1) - vz = vold(k+1) - vold(k-1) - ze2 = 1.0 / (dz_met(k+1)+dz_met(k) ) + if (abs(pdtdt(jl,k)) >= maxdtdt ) pdtdt(jl,k) = sign(maxdtdt,pdtdt(jl,k) ) + if (abs(ze1) >= maxdudt ) then + ze1 = sign(maxdudt, ze1) + endif + if (abs(ze2) >= maxdudt ) then + ze2 = sign(maxdudt, ze2) + endif - mf_diss_heat = rcpd*kvint(k)*(uz*uz +vz*vz)*ze2*ze2 ! vert grad heat - pdtdt(jl,k) = pdtdt(jl,k) + mf_diss_heat ! extra heat due to eddy viscosity + pdudt(jl, k) = ze2 + pdvdt(jl, k) = ze1 + uz = uold(k+1) - uold(k-1) + vz = vold(k+1) - vold(k-1) + ze2 = 1./(dz_met(k+1)+dz_met(k) ) + mf_diss_heat = rcpd*kvint(k)*(uz*uz +vz*vz)*ze2*ze2 ! vert grad heat + pdtdt(jl,k)= pdtdt(jl,k) + mf_diss_heat ! extra heat due to eddy viscosity - enddo + enddo - ENDIF ! dissipative IF-loop for vertical eddy difusion u-v-t + ENDIF ! dissipative IF-loop for vertical eddy difusion u-v-t - enddo ! J-loop + enddo ! J-loop ! - RETURN + RETURN !================================= diag print after "return" ====================== - if (kdt ==1 .and. mpi_id == master) then + if (kdt ==1 .and. mpi_id == master) then ! - print *, ' ugwpv1: nazd-nw-ilaunch=', nazd, nwav,ilaunch, maxval(kvg), ' kvg ' - print *, 'ugwpv1: zdci(inc)=' , maxval(zdci), minval(zdci) - print *, 'ugwpv1: zcimax=' , maxval(zci) ,' zcimin=' , minval(zci) -! print *, 'ugwpv1: tau_ngw=' , maxval(taub_src)*1.e3, minval(taub_src)*1.e3, tau_min + print *, ' ugwpv1: nazd-nw-ilaunch=', nazd, nwav,ilaunch, maxval(kvg), ' kvg ' + print *, 'ugwpv1: zdci(inc)=' , maxval(zdci), minval(zdci) + print *, 'ugwpv1: zcimax=' , maxval(zci) ,' zcimin=' , minval(zci) +! print *, 'ugwpv1: tau_ngw=' , maxval(taub_src)*1.e3, minval(taub_src)*1.e3, tau_min - print * + print * - endif + endif - if (kdt == 1 .and. mpi_id == master) then - print *, 'vgw done nstab ', nstab + if (kdt == 1 .and. mpi_id == master) then + print *, 'vgw done nstab ', nstab ! - print *, maxval(pdudt)*86400., minval(pdudt)*86400, 'vgw ax ugwp' - print *, maxval(pdvdt)*86400., minval(pdvdt)*86400, 'vgw ay ugwp' - print *, maxval(dked)*1., minval(dked)*1, 'vgw keddy m2/sec ugwp' - print *, maxval(pdtdt)*86400., minval(pdtdt)*86400,'vgw eps ugwp' + print *, maxval(pdudt)*86400., minval(pdudt)*86400, 'vgw ax ugwp' + print *, maxval(pdvdt)*86400., minval(pdvdt)*86400, 'vgw ay ugwp' + print *, maxval(dked)*1., minval(dked)*1, 'vgw keddy m2/sec ugwp' + print *, maxval(pdtdt)*86400., minval(pdtdt)*86400,'vgw eps ugwp' ! -! print *, ' ugwp -heating rates ' - endif +! print *, ' ugwp -heating rates ' + endif !================================= - return - end subroutine cires_ugwpv1_ngw_solv2 + return + end subroutine cires_ugwpv1_ngw_solv2 end module cires_ugwpv1_solv2 diff --git a/physics/cires_ugwpv1_solv2.F90_mine b/physics/cires_ugwpv1_solv2.F90_mine deleted file mode 100644 index 8f417ea1d..000000000 --- a/physics/cires_ugwpv1_solv2.F90_mine +++ /dev/null @@ -1,1049 +0,0 @@ -module cires_ugwpv1_solv2 - - -contains - - -!--------------------------------------------------- -! Broad spectrum FVS-1993, mkz^nSlope with nSlope = 0, 1,2 -! dissipative solver with NonHyd/ROT-effects -! reflected GWs treated as waves with "negligible" flux, -! they are out of given column -!--------------------------------------------------- - - subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & - tau_ngw, tm , um, vm, qm, prsl, prsi, zmet, zmeti, prslk, & - xlatd, sinlat, coslat, & - pdudt, pdvdt, pdtdt, dked, zngw) -! -!-------------------------------------------------------------------------------- -! nov 2015 alternative gw-solver for nggps-wam -! nov 2017 nh/rotational gw-modes for nh-fv3gfs -! oct 2019 adding empirical satellite-based -! source function and *F90 CIRES-style of the code -! oct 2020 Diagnostics of "tauabs, wrms, trms" is taken out -! -------------------------------------------------------------------------------- -! - use machine, only : kind_phys - - use cires_ugwpv1_module,only : krad, kvg, kion, ktg, iPr_ktgw, Pr_kdis, Pr_kvkt - - use cires_ugwpv1_module,only : knob_ugwp_doheat, knob_ugwp_dokdis, idebug_gwrms - - use cires_ugwpv1_module,only : psrc => knob_ugwp_palaunch - - use cires_ugwpv1_module,only : maxdudt, maxdtdt, max_eps, dked_min, dked_max - - use ugwp_common , only : rgrav, grav, cpd, rd, rv, rcpdl, grav2cpd, & - omega2, rcpd, rcpd2, pi, pi2, fv, & - rad_to_deg, deg_to_rad, & - rdi, gor, grcp, gocp, & - bnv2min, bnv2max, dw2min, velmin, gr2, & - hpscale, rhp, rh4, grav2, rgrav2, mkzmin, mkz2min -! - use ugwp_wmsdis_init, only : v_kxw, rv_kxw, v_kxw2, tamp_mpa, tau_min, ucrit, & - gw_eff, & - nslope, ilaunch, zms, & - zci, zdci, zci4, zci3, zci2, & - zaz_fct, zcosang, zsinang, nwav, nazd, & - zcimin, zcimax, rimin, sc2, sc2u, ric -! - implicit none -! - real(kind=kind_phys), parameter :: zsp_gw = 106.5e3 ! sponge for GWs above the model top - real(kind=kind_phys), parameter :: linsat2 = 1.0, dturb_max = 100.0 - integer, parameter :: ener_norm =0 - integer, parameter :: ener_lsat=0 - integer, parameter :: nstdif = 1 - integer, parameter :: wave_sponge = 1 - - integer, intent(in) :: levs ! vertical level - integer, intent(in) :: im ! horiz tiles - integer, intent(in) :: mpi_id, master, kdt - - real(kind=kind_phys) ,intent(in) :: dtp ! model time step - real(kind=kind_phys) ,intent(in) :: tau_ngw(im) - - real(kind=kind_phys) ,intent(in) :: vm(im,levs) ! meridional wind - real(kind=kind_phys) ,intent(in) :: um(im,levs) ! zonal wind - real(kind=kind_phys) ,intent(in) :: qm(im,levs) ! spec. humidity - real(kind=kind_phys) ,intent(in) :: tm(im,levs) ! kinetic temperature - - real(kind=kind_phys) ,intent(in) :: prsl(im,levs) ! mid-layer pressure - real(kind=kind_phys) ,intent(in) :: prslk(im,levs) ! mid-layer exner function - real(kind=kind_phys) ,intent(in) :: zmet(im,levs) ! meters now !!!!! phil =philg/grav - real(kind=kind_phys) ,intent(in) :: prsi(im,levs+1) ! interface pressure - real(kind=kind_phys) ,intent(in) :: zmeti(im,levs+1) ! interface geopi/meters - real(kind=kind_phys) ,intent(in) :: xlatd(im) ! xlat_d in degrees - real(kind=kind_phys) ,intent(in) :: sinlat(im) - real(kind=kind_phys) ,intent(in) :: coslat(im) -! -! out-gw effects -! - real(kind=kind_phys) ,intent(out) :: pdudt(im,levs) ! zonal momentum tendency - real(kind=kind_phys) ,intent(out) :: pdvdt(im,levs) ! meridional momentum tendency - real(kind=kind_phys) ,intent(out) :: pdtdt(im,levs) ! gw-heating (u*ax+v*ay)/cp and cooling - real(kind=kind_phys) ,intent(out) :: dked(im,levs) ! gw-eddy diffusion - real(kind=kind_phys) ,intent(out) :: zngw(im) ! launch height -! -! -! -! local =========================================================================================== - - real(kind=kind_phys) :: tauabs(im,levs) ! - real(kind=kind_phys) :: wrms(im,levs) ! - real(kind=kind_phys) :: trms(im,levs) ! - - real(kind=kind_phys) :: zwrms(nwav,nazd), wrk1(levs), wrk2(levs) - real(kind=kind_phys) :: atrms(nazd, levs),awrms(nazd, levs), akzw(nwav,nazd, levs+1) -! -! local =========================================================================================== - real(kind=kind_phys) :: taux(levs+1) ! EW component of vertical momentum flux (pa) - real(kind=kind_phys) :: tauy(levs+1) ! NS component of vertical momentum flux (pa) - real(kind=kind_phys) :: fpu(nazd, levs+1) ! az-momentum flux - real(kind=kind_phys) :: ui(nazd, levs+1) ! azimuthal wind - - real(kind=kind_phys) :: fden_bn(levs+1) ! density/brent - real(kind=kind_phys) :: flux (nwav, nazd) , flux_m (nwav, nazd) -! - real(kind=kind_phys) :: bn(levs+1) ! interface BV-frequency - real(kind=kind_phys) :: bn2(levs+1) ! interface BV*BV-frequency - real(kind=kind_phys) :: rhoint(levs+1) ! interface density - real(kind=kind_phys) :: uint(levs+1) ! interface zonal wind - real(kind=kind_phys) :: vint(levs+1) ! meridional wind - real(kind=kind_phys) :: tint(levs+1) ! temp-re - - real(kind=kind_phys) :: irhodz_mid(levs) - real(kind=kind_phys) :: suprf(levs+1) ! RF-super linear dissipation - real(kind=kind_phys) :: cstar(levs+1) ,cstar2(levs+1) - real(kind=kind_phys) :: v_zmet(levs+1) - real(kind=kind_phys) :: vueff(levs+1) - real(kind=kind_phys) :: dfdz_v(nazd, levs), dfdz_heat(nazd, levs) ! axj = -df*rho/dz directional Ax - - real(kind=kind_phys), dimension(levs) :: atm , aum, avm, aqm, aprsl, azmet, dz_met - real(kind=kind_phys), dimension(levs+1) :: aprsi, azmeti, dz_meti - - real(kind=kind_phys), dimension(levs) :: wrk3 - real(kind=kind_phys), dimension(levs) :: uold, vold, told, unew, vnew, tnew - real(kind=kind_phys), dimension(levs) :: rho, rhomid, adif, cdif, acdif - real(kind=kind_phys), dimension(levs) :: Qmid, AKT - real(kind=kind_phys), dimension(levs+1) :: dktur, Ktint, Kvint - real(kind=kind_phys), dimension(levs+1) :: fden_lsat, fden_bnen - - integer, dimension(levs) :: Anstab - - real(kind=kind_phys) :: sig_u2az(nazd), sig_u2az_m(nazd) - real(kind=kind_phys) :: wave_dis(nwav, nazd), wave_disaz(nazd) - real(kind=kind_phys) :: rdci(nwav), rci(nwav) - real(kind=kind_phys) :: wave_act(nwav, nazd) ! active waves at given vert-level - real(kind=kind_phys) :: ul(nazd) ! velocity in azimuthal direction at launch level -! -! scalars -! - real(kind=kind_phys) :: bvi, bvi2, bvi3, bvi4, rcms ! BV at launch level - real(kind=kind_phys) :: c2f2, cf1, wave_distot - - - real(kind=kind_phys) :: flux_norm ! norm-factor - real(kind=kind_phys) :: taub_src, rho_src, zcool, vmdiff -! - real(kind=kind_phys) :: zthm, dtau, cgz, ucrit_maxdc - real(kind=kind_phys) :: vm_zflx_mode, vc_zflx_mode - real(kind=kind_phys) :: kzw2, kzw3, kdsat, cdf2, cdf1, wdop2,v_cdp2 - real(kind=kind_phys) :: ucrit_max - real(kind=kind_phys) :: pwrms, ptrms - real(kind=kind_phys) :: zu, zcin, zcin2, zcin3, zcin4, zcinc - real(kind=kind_phys) :: zatmp, fluxs, zdep, ze1, ze2 - -! - real(kind=kind_phys) :: zdelp, zdelm, taud_min - real(kind=kind_phys) :: tvc, tvm -! real(kind=kind_phys) :: tvc, tvm, ptc, ptm - real(kind=kind_phys) :: umfp, umfm, umfc, ucrit3 - real(kind=kind_phys) :: fmode, expdis, fdis - real(kind=kind_phys) :: v_kzi, v_kzw, v_cdp, v_wdp, tx1, fcorsat, dzcrit - real(kind=kind_phys) :: v_wdi, v_wdpc - real(kind=kind_phys) :: ugw, vgw, ek1, ek2, rdtp, rdtp2, rhp_wam - - integer :: j, jj, k, kk, inc, jk, jkp, jl, iaz - integer :: ksrc, km2, km1, kp1, ktop -! -! Kturb-part -! - real(kind=kind_phys) :: uz, vz, shr2 , ritur, ktur - - real(kind=kind_phys) :: kamp, zmetk, zgrow - real(kind=kind_phys) :: stab, stab_dt, dtstab - real(kind=kind_phys) :: nslope3 -! - integer :: nstab, ist - real(kind=kind_phys) :: w1, w2, w3, dtdif - - real(kind=kind_phys) :: dzmetm, dzmetp, dzmetf, bdif, bt_dif, apc, kturp - real(kind=kind_phys) :: rstar, rstar2 - - real(kind=kind_phys) :: snorm_ener, sigu2, flux_2_sig, ekin_norm - real(kind=kind_phys) :: taub_ch, sigu2_ch - real(kind=kind_phys) :: Pr_kdis_eff, mf_diss_heat, iPr_max - real(kind=kind_phys) :: exp_sponge, mi_sponge, gipr - -!-------------------------------------------------------------------------- -! - nslope3 = nslope + 3.0 - Pr_kdis_eff = gw_eff*pr_kdis - iPr_max = max(1.0, iPr_ktgw) - gipr = grav* Ipr_ktgw -! -! test for input fields -! if (mpi_id == master .and. kdt < -2) then -! print *, im, levs, dtp, kdt, ' vay-solv2-v1' -! print *, minval(tm), maxval(tm), ' min-max-tm ' -! print *, minval(vm), maxval(vm), ' min-max-vm ' -! print *, minval(um), maxval(um), ' min-max-um ' -! print *, minval(qm), maxval(qm), ' min-max-qm ' -! print *, minval(prsl), maxval(prsl), ' min-max-Pmid ' -! print *, minval(prsi), maxval(prsi), ' min-max-Pint ' -! print *, minval(zmet), maxval(zmet), ' min-max-Zmid ' -! print *, minval(zmeti), maxval(zmeti), ' min-max-Zint ' -! print *, minval(prslk), maxval(prslk), ' min-max-Exner ' -! print *, minval(tau_ngw), maxval(tau_ngw), ' min-max-taungw ' -! print *, tau_min, ' tau_min ', tamp_mpa, ' tamp_mpa ' -! -! endif - - if (idebug_gwrms == 1) then - tauabs = 0.0 ; wrms = 0.0 ; trms = 0.0 - endif - - rci(:) = 1.0 / zci(:) - rdci(:) = 1.0 / zdci(:) - - rdtp = 1.0 / dtp - rdtp2 = 0.5 * rdtp - - ksrc = max(ilaunch, 3) - km2 = ksrc - 2 - km1 = ksrc - 1 - kp1 = ksrc + 1 - ktop = levs + 1 - - suprf(ktop) = kion(levs) - - do k=1,levs - suprf(k) = kion(k) ! approximate 1-st order damping with Fast super-RF of FV3 - pdvdt(:,k) = 0.0 - pdudt(:,k) = 0.0 - pdtdt(:,k) = 0.0 - dked(: ,k) = 0.0 - enddo - -!----------------------------------------------------------- -! column-based j=1,im pjysics with 1D-arrays -!----------------------------------------------------------- - DO j=1, im - jl = j - tx1 = omega2 * sinlat(j) *rv_kxw - cf1 = abs(tx1) - c2f2 = tx1 * tx1 - ucrit_max = max(ucrit, cf1) - ucrit3 = ucrit_max*ucrit_max*ucrit_max -! -! ngw-fluxes at all gridpoints (with tau_min at least) -! - aprsl(1:levs) = prsl(jl,1:levs) -! -! ksrc-define "aprsi(1:levs+1) redefine "ilaunch" -! - do k=1, levs - if (aprsl(k) < psrc ) exit - enddo - ilaunch = max(k-1, 3) - ksrc = max(ilaunch, 3) - - zngw(j) = zmet(j, ksrc) - - km2 = ksrc - 2 - km1 = ksrc - 1 - kp1 = ksrc + 1 - -!=====ksrc - - do k=1, levs - aum(k) = um(jl,k) - avm(k) = vm(jl,k) - atm(k) = tm(jl,k) - aqm(k) = qm(jl,k) - azmet(k) = zmet(jl,k) - aprsi(k) = prsi(jl,k) - azmeti(k) = zmeti(jl,k) - enddo - aprsi(levs+1) = prsi(jl,levs+1) - azmeti(levs+1) = zmeti(jl,levs+1) - - rho_src = aprsl(ksrc)*rdi/atm(ksrc) - taub_ch = max(tau_ngw(jl), tau_min) - taub_src = taub_ch - - - sigu2 = zms * taub_src / (rho_src*v_kxw) - sig_u2az(1:nazd) = sigu2 -! -! compute diffusion-based arrays km2:levs -! - do jk = km2, levs - dz_meti(jk) = azmeti(jk+1) - azmeti(jk) - dz_met(jk) = azmet(jk) - azmeti(jk-1) - enddo -! --------------------------------------------- -! interface mean flow parameters launch -> levs+1 -! --------------------------------------------- - do jk= km1,levs - tvc = atm(jk) * (1.0 + fv*aqm(jk)) - tvm = atm(jk-1) * (1.0 + fv*aqm(jk-1)) -! ptc = tvc / prslk(jl,jk) ! not used -! ptm = tvm / prslk(jl,jk-1) ! notused -! - zthm = 2.0 / (tvc+tvm) - rhp_wam = zthm*gor -!interface - uint(jk) = 0.5*(aum(jk-1)+aum(jk)) - vint(jk) = 0.5*(avm(jk-1)+avm(jk)) - tint(jk) = 0.5*(tvc+tvm) - rhomid(jk) = aprsl(jk)*rdi/atm(jk) - rhoint(jk) = aprsi(jk)*rdi*zthm ! rho = p/(RTv) - zdelp = dz_meti(jk) ! >0 ...... dz-meters - v_zmet(jk) = zdelp + zdelp ! 2*kzi*[Z_int(k+1)-Z_int(k)] - zdelm = 1.0 / dz_met(jk) ! 1/dz ...... 1/meters -! -! bvf2 = grav2*zdelm*(ptc-ptm) / (ptc + ptm) ! N2=[g/PT]*(dPT/dz) -! - bn2(jk) = grav2cpd*zthm*(1.0+rcpdl*(tvc-tvm)*zdelm) - bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) - bn(jk) = sqrt(bn2(jk)) - - - wrk3(jk) = 1.0 / (zdelp*rhomid(jk)) ! 1/rho_mid(k)/[Z_int(k+1)-Z_int(k)] - irhodz_mid(jk) = rdtp*zdelp*rhomid(jk)/rho_src -! -! -! diagnostics -Kzz above PBL -! - uz = aum(jk) - aum(jk-1) - vz = avm(jk) - avm(jk-1) - shr2 = max(uz*uz+vz*vz, dw2min) * zdelm *zdelm - - zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 - zgrow = exp(zmetk) - ritur = bn2(jk) / shr2 - kamp = sqrt(shr2) * sc2 * zgrow - w1 = 1.0 / (1.0 + 5*ritur) - ktur = min(max(kamp * w1 * w1, dked_min), dked_max) - zmetk = azmet(jk)* rhp - vueff(jk) = ktur + kvg(jk) - - akt(jk) = gipr / tvc - enddo - - if (idebug_gwrms == 1) then - do jk= km1,levs - wrk1(jk) = rv_kxw/rhoint(jk) - wrk2(jk) = rgrav2*zthm*zthm*bn2(jk) ! dimension [K*K]*(c2/m2) - enddo - endif - -! -! extrapolating values for ktop = levs+1 (lev-interface for prsi(levs+1) =/= 0) -! - jk = levs - - rhoint(ktop) = 0.5*aprsi(levs)*rdi/atm(jk) - tint(ktop) = atm(jk)*(1. +fv*aqm(jk)) - uint(ktop) = aum(jk) - vint(ktop) = avm(jk) - - v_zmet(ktop) = v_zmet(jk) - vueff(ktop) = vueff(jk) - bn2(ktop) = bn2(jk) - bn(ktop) = bn(jk) -! -! akt_mid *KT = -g*(1/H + 1/T*dT/dz)*KT ... grav/tvc for eddy heat conductivity -! - do jk=km1, levs - akt(jk) = -akt(jk)*(gor + (tint(jk+1)-tint(jk))/dz_meti(jk) ) - enddo - - - bvi = bn(ksrc); bvi2 = bvi * bvi; - bvi3 = bvi2*bvi; bvi4 = bvi2 * bvi2; rcms = zms/bvi -! -! project winds at ksrc -! - do iaz=1, nazd - ul(iaz) = zcosang(iaz) *uint(ksrc) + zsinang(iaz) *vint(ksrc) - enddo -! - - do jk=ksrc, ktop - cstar(jk) = bn(jk)/zms - cstar2(jk) = cstar(jk)*cstar(jk) - - fden_lsat(jk) = rhoint(jk)/bn(jk)*v_kxw*Linsat2 - - do iaz=1, nazd - zu = zcosang(iaz)*uint(jk) + zsinang(iaz)*vint(jk) - ui(iaz, jk) = zu !- ul(iaz)*0. - enddo - enddo - - rstar = 1.0 / cstar(ksrc) - rstar2 = rstar*rstar -! ----------------------------------------- -! set launch momentum flux spectral density -! ----------------------------------------- - - fpu(1:nazd, km2:ktop) = 0. - - do inc=1,nwav - - zcin = zci(inc)*rstar - -! -! integrate (flux(cin) x dcin ) old tau-flux and normalization -! - flux(inc,1) = rstar*(zcin*zcin)/(1.+ zcin**nslope3) -! -! fsat = rstar*(zcin*zcin) * taub_src / SN * [rho/rho_src *N_src/N] -! - fpu(1,ksrc) = fpu(1,ksrc) + flux(inc,1)*zdci(inc) ! dc/cstar = dim-less - - do iaz=1,nazd - akzw(inc, iaz, ksrc) = bvi*rci(inc) - enddo - - enddo -! -! adjust rho/bn vertical factors for saturated fluxes (E(m) ~m^-3) - - flux_norm = taub_src / fpu(1, ksrc) ! [Pa * dc/cstar *dim_less] - ze1 = flux_norm * bvi/rhoint(ksrc) *rstar *rstar2 - do jk=ksrc, ktop - fden_bn(jk) = ze1* rhoint(jk) / bn(jk) ! [Pa]/[m/s] * rstar2 - enddo -! - do inc=1, nwav - flux(inc,1) = flux_norm*flux(inc,1) - enddo - - if (ener_norm == 1) then - snorm_ener = 0. - do inc=1,nwav - zcin = zci(inc)*rstar - ze2 = zcin / (1.0 + zcin**nslope3) - snorm_ener = snorm_ener + ze2*zdci(inc)*rstar !dim-less - flux(inc,1) = ze2 * zcin - enddo - - ekin_norm = 1.0 / snorm_ener - -! taub_src = sigu2 * rho_src * [v_kxw / zms ] -! sigu2 = taub_src*zms/(rho_src/v_kxw) -! ze1 = sigu2*ks*dens/Ns = taub*zms/Ns - - ze1 = taub_src*zms/bvi * ekin_norm - taub_src = 0. - - do inc=1,nwav - flux(inc,1) = ze1* flux(inc,1) - taub_src = taub_src + flux(inc,1)*zdci(inc) - enddo - ze1 = ekin_norm * v_kxw * rstar2 - do jk=ksrc, ktop - fden_bnen(jk) = rhoint(jk) / bn(jk) * ze1 ! mult on => sigu2(z)*cdf2 => flux_sat - enddo - - endif -! - do iaz=1,nazd - fpu(iaz, ksrc) = taub_src - fpu(iaz, km1) = taub_src - enddo - -! copy flux-1 into other azimuths -! -------------------------------- - - - do iaz=2, nazd - do inc=1,nwav - flux(inc,iaz) = flux(inc,1) - enddo - enddo - -! if (mpi_id == master .and. ener_norm == 1) then -! print * -! print *, 'vay_norm: ', taub_src, taub_ch, sigu2, flux_norm, ekin_norm -! print * -! endif - - if (idebug_gwrms == 1) then - pwrms = 0. - ptrms = 0. - tx1 = real(nazd)/rhoint(ksrc)*rv_kxw - ze2 = wrk2(ksrc) ! (bvi*atm(ksrc)*rgrav)**2 - do inc=1, nwav - v_kzw = bvi*rci(inc) - ze1 = flux(inc,1)*zdci(inc)*tx1*v_kzw - pwrms = pwrms + ze1 - ptrms = ptrms + ze1 * ze2 - enddo - wrms(jl, ksrc) = pwrms - trms(jl, ksrc) = ptrms - endif - -! -------------------------------- - wave_act(:,:) = 1.0 -! vertical do-loop - do jk=ksrc, levs - - jkp = jk+1 -! azimuth do-loop - do iaz=1, nazd - - sig_u2az_m(iaz) = sig_u2az(iaz) - - umfp = ui(iaz, jkp) - umfm = ui(iaz, jk) - umfc = .5*(umfm + umfp) -! wave-cin loop - dfdz_v(iaz, jk) = 0.0 - dfdz_heat(iaz, jk) = 0.0 - fpu(iaz, jkp) = 0.0 - sig_u2az(iaz) = 0.0 -! -! wave_dis(iaz, :) = vueff(jk) - do inc=1, nwav - flux_m(inc, iaz) = flux(inc, iaz) - - zcin = zci(inc) ! zcin =/0 by definition - zcinc = rci(inc) - - if (wave_act(inc,iaz) == 1.0) then -!======================================================================= -! discrete mode -! saturated limit wfit = kzw*kzw*kt; wfdt = wfit/(kxw*cx)*betat -! & dissipative kzi = 2.*kzw*(wfdm+wfdt)*dzpi(k) -!======================================================================= - - v_cdp = zcin - umfp - v_cdp2=v_cdp*v_cdp - cdf2 = v_cdp2 - c2f2 - if (v_cdp .le. ucrit_max .or. cdf2 .le. 0.0) then -! -! between layer [k-1,k or jk-jkp] (Chi - Uk) -> ucrit_max, wave's absorption -! - wave_act(inc,iaz) = 0. - akzw(inc, iaz, jkp) = pi/dz_meti(jk) ! pi2/dzmet - fluxs = 0.0 !max(0., rhobnk(jkp)*ucrit3)*rdci(inc) - flux(inc,iaz) = fluxs - - else - - v_wdp = v_kxw * v_cdp - wdop2 = v_wdp * v_wdp - -! -! rotational cut-off -! - kzw2 = (bn2(jkp)-wdop2)/Cdf2 -! -!cires_ugwp_initialize.F90: real, parameter :: mkzmin = pi2/80.0e3 -! - if ( kzw2 > mkz2min ) then - v_kzw = sqrt(kzw2) - akzw(inc, iaz, jkp) = v_kzw -! -!linsatdis: kzw2, kzw3, kdsat, c2f2, cdf2, cdf1 -! -!kzw2 = (bn2(k)-wdop2)/Cdf2 - rhp4 - v_kx2w ! full lin DS-NGW (N2-wd2)*k2=(m2+k2+[1/2H]^2)*(wd2-f2) -! Kds_sat = kxw*Cdf1*rhp2/kzw3 -!krad, kvg, kion, ktg - v_cdp = sqrt( cdf2 ) - v_wdp = v_kxw * v_cdp - v_wdi = kzw2*vueff(jk) + kion(jk) ! supRF-diss due for "all" vars - v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) - v_kzi = v_kzw*v_wdi/v_wdpc - -! - ze1 = v_kzi*v_zmet(jk) - - if (ze1 .ge. 1.e-2) then - expdis = max(exp(-ze1), 0.01) - else - expdis = 1.0 / (1.0 + ze1) - endif - -! - wave_act(inc,iaz) = 1.0 - fmode = flux(inc,iaz) - - flux_2_sig = v_kzw / (v_kxw*rhoint(jkp)) - w1 = v_wdpc / (kzw2*v_kzw*v_zmet(jk)) - else ! kzw2 <= mkz2min large "Lz"-reflection - - expdis = 1.0 - v_kzw = mkzmin - - v_cdp = 0. ! no effects of reflected waves - wave_act(inc,iaz) = 0.0 - akzw(inc, iaz, jkp) = v_kzw - fmode = 0. - w1 = 0. - endif - -! expdis =1.0 - - fdis = fmode*expdis*wave_act(inc,iaz) -!============================================================================== -! -! Saturated Fluxes and Energy: Spectral and Dicrete Modes -! -! S2003 fluxs= fden_bn(jk)*(zcin-ui(jk,iaz))**2/zcin -! WM2001 fluxs= fden_bn(jk)*(zcin-ui(jk,iaz)) -! saturated flux + wave dissipation - Keddy_gwsat in UGWP-V1 -! linsatdis = 1.0 , here: u'^2 ~ linsatdis* [v_cdp*v_cdp] -! -! old-sat fluxs= fden_bn(jkp)*cdf2*zcinc*wave_act(inc,iaz) -! fluxs= fden_bn(jkp)*cdf2*zcinc*wave_act(inc,iaz) -! new sat fluxs= fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) -! -! fluxs = fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) - -! -! -! old spectral sat-limit with "mapping to source-level" sp_tau(cd) = fden_bn(jkp)*sqrt(cdf2) -! new spectral sat-limit with "mapping to source-level" sp_tau(cd) = fden_bn(jkp)*cdf2*rstar2 -! [fden_bn(jkp)] = Pa/dc -! fsat = rstar*(zcin*zcin) * [taub_src / SN * [ rstar3*rho/rho_src *N_src/N] = fden_bn ] - - if (ener_norm == 0) fluxs= fden_bn(jkp)*cdf2*wave_act(inc,iaz) ! dim-n: Pa/[m/s] -! -! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc -! - if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) - - if (ener_norm == 1) then - -! spectral saturation limit - - if (ener_lsat == 0) fluxs= fden_bnen(jk)*cdf2*wave_act(inc,iaz)*sig_u2az_m(iaz) - -! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc - - if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) -! - endif -!---------------------------------------------------------------------------- -! dicrete mode saturation fden_sat(jkp) = rhoint(jkp)/bn(jkp)*v_kxw -! fluxs = fden_sat(jkp)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat -! fluxs_src = fden_sat(ksrc)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat -!---------------------------------------------------------------------------- - zdep = fdis-fluxs ! dimension [Pa/dc] *dc = Pa - if (zdep > 0.0 ) then -! subs on sat-limit - ze1 = flux(inc,iaz) - flux(inc,iaz) = fluxs - ze2 = log(ze1/fluxs)*w1 ! Kdsat-compute damping of mode =>df = f-fluxs - ! here we can add extra-dissip for the next layer -!Moorthi the above ze2 is not used it appears! - - else -! assign dis-ve flux - flux(inc,iaz) = fdis - endif - - dtau = flux_m(inc,iaz)-flux(inc,iaz) - if (dtau .lt. 0) then - flux(inc,iaz) = flux_m(inc,iaz) - endif -! -! GW-sponge domain: saturate all "GW"-modes above "zsp_gw" -! - if ( azmeti(jkp) >= zsp_gw) then -! mi_sponge = 0.5 / dz_meti(jk) -! ze2 = v_wdp / v_kzw * mi_sponge ! Ksat*v_kzw2 = [mi_sat*wdp/kzw] -! v_wdi = ze2 + v_wdi*0.25 ! diss-sat GW-sponge - - v_wdi = 0.5 * v_wdp / (v_kzw *dz_meti(jk)) + v_wdi*0.25 ! diss-sat GW-sponge - v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) - v_kzi = v_kzw*v_wdi/v_wdpc -! -! ze1 = v_kzi*v_zmet(jk) -! exp_sponge = exp(-ze1) - exp_sponge = exp(-v_kzi*v_zmet(jk)) -! -! additional sponge -! - flux(inc,iaz) = flux(inc,iaz) *exp_sponge - endif - - endif ! coriolis or CL condition-checkif => (v_cdp .le. ucrit_max) then - endif ! only for waves w/o CL-absorption wave_act=1 -! -! sum for given (jk, iaz) all active "wave" contributions -! - if (wave_act(inc,iaz) == 1) then - - zcinc = zdci(inc) - vc_zflx_mode = flux(inc,iaz) - vmdiff = max(0., flux_m(inc,iaz)-vc_zflx_mode) - if (vmdiff <= 0. ) vc_zflx_mode = flux_m(inc,iaz) - ze1 = vc_zflx_mode*zcinc - fpu(iaz, jkp) = fpu(iaz,jkp) + ze1 ! flux (pa) at - sig_u2az(iaz) = sig_u2az(iaz) + ze1*flux_2_sig ! ekin(m2/s2) at z+dz - -!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -! (heat deposition integration over spectral mode for each azimuth -! later sum over selected azimuths as "non-negative" scalars) -! cdf1 = sqrt( (zci(inc)-umfc)**2-c2f2) -!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -! zdelp = wrk3(jk)*cdf1 *zcinc - - zdelp = wrk3(jk) * v_cdp * zcinc * vmdiff - - -! zcool = 1. ! COOL=(-3.5 + Pr)/Pr -! zcool = [Kv/Pr]*N2*(Pr-Cp/R)/cp -! edis = (c-u)*ax/cp = Kv_dis*N2/cp -! cool = -Kt*N2/R -! add heat-conduction "bulk" impact: 1/Pr*(g*g*rho)* d [rho*Kv(dT/dp- R/Cp *T/p)] -! - dfdz_v(iaz, jk) = dfdz_v(iaz,jk) + zdelp ! +cool !heating & simple cooling < 0 - dfdz_heat(iaz, jk) = dfdz_heat(iaz,jk) + zdelp ! heating -only > 0 - endif !wave_act(inc,iaz) == 1) -! - enddo ! wave-inc-loop - - ze1 = fpu(iaz, jk) - if (fpu(iaz, jkp) > ze1 ) fpu(iaz, jkp) = ze1 -! -! compute wind and temp-re rms -! - if (idebug_gwrms == 1) then - pwrms = 0. - ptrms = 0. - do inc=1, nwav - if (wave_act(inc,iaz) > 0.) then - v_kzw = akzw(inc, iaz, jk) - ze1 = flux(inc,iaz)*v_kzw*zdci(inc)*wrk1(jk) - pwrms = pwrms + ze1 - ptrms = ptrms + ze1*wrk2(jk) - endif - enddo - Awrms(iaz, jk) = pwrms - Atrms(iaz, jk) = ptrms - endif - -! -------------- - enddo ! end Azimuth do-loop - -! -! eddy wave dissipation to limit GW-rms -! - tx1 = sum(abs(dfdz_heat(1:nazd, jk))) / bn2(jk) - ze1 = max(dked_min, tx1) - ze2 = min(dked_max, ze1) - vueff(jkp) = ze2 + vueff(jkp) -! - enddo ! end Vertical do-loop -! -! top-layers constant interface-fluxes and zero-heat -! we allow non-zero momentum fluxes and thermal effects -! fpu(1:nazd,levs+1) = fpu(1:nazd, levs) -! dfdz_v(1:nazd, levs) = 0.0 - -! --------------------------------------------------------------------- -! sum contribution for total zonal and meridional fluxes + -! energy dissipation -! --------------------------------------------------- -! -!======================================================================== -! at the source level and below taux = 0 (taux_E=-taux_W by assumption) -!======================================================================== - - do jk=ksrc, levs - taux(jk) = 0.0 - tauy(jk) = 0.0 - do iaz=1,nazd - taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) - tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) - pdtdt(jl,jk) = pdtdt(jl,jk) + dfdz_v(iaz,jk) - dked(jl,jk) = dked(jl,jk) + dfdz_heat(iaz,jk) - enddo - enddo - jk = ktop ; taux(jk) = 0. ; tauy(jk) = 0. - do iaz=1,nazd - taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) - tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) - enddo - - if (idebug_gwrms == 1) then - do jk=kp1, levs - do iaz=1,nazd - wrms(jl,jk) = wrms(jl,jk) + Awrms(iaz,jk) - trms(jl,jk) = trms(jl,jk) + Atrms(iaz,jk) - tauabs(jl,jk) = tauabs(jl,jk) + fpu(iaz,jk) - enddo - enddo - endif -! - - do jk=ksrc+1,levs - jkp = jk + 1 - zdelp = wrk3(jk)*gw_eff - ze1 = (taux(jkp)-taux(jk)) * zdelp - ze2 = (tauy(jkp)-tauy(jk)) * zdelp - - if (abs(ze1) >= maxdudt ) then - ze1 = sign(maxdudt, ze1) - endif - if (abs(ze2) >= maxdudt ) then - ze2 = sign(maxdudt, ze2) - endif - - pdudt(jl,jk) = -ze1 - pdvdt(jl,jk) = -ze2 -! -! Cx =0 based Cx=/= 0. above -! -! - if (knob_ugwp_doheat == 1) then -! -! maxdtdt= dked_max * bnfix2 -! - pdtdt(jl,jk) = pdtdt(jl,jk)*gw_eff - ze2 = pdtdt(jl,jk) - if (abs(ze2) >= max_eps ) pdtdt(jl,jk) = sign(max_eps, ze2) - - dked(jl,jk) = dked(jl,jk) / bn2(jk) - ze1 = max(dked_min, dked(jl,jk)) - dked(jl,jk) = min(dked_max, ze1) - qmid(jk) = pdtdt(j,jk) - endif - enddo -!---------------------------------------------------------------------------------- -! Update heat = ek_diss/cp and aply 1-2-1 smoother for "dked" => dktur -! here with "u_new = u +dtp*dudt ; vnew = v + v +dtp*dvdt -! can check "stability" in the column and "add" ktur-estimation -! to suppress instability as needed so dked = dked_gw + ktur_ric -!---------------------------------------------------------------------------------- - - dktur(1:levs) = dked(jl,1:levs) -! - do ist= 1, nstdif - do jk=ksrc,levs-1 - adif(jk) =.25*(dktur(jk-1)+ dktur(jk+1)) + .5*dktur(jk) - enddo - dktur(ksrc:levs-1) = adif(ksrc:levs-1) - enddo - dktur(levs) = .5*( dked(jl,levs)+ dked(jl,levs-1)) - dktur(levs+1) = dktur(levs) - - do jk=ksrc,levs+1 - ze1 = .5*( dktur(jk) +dktur(jk-1) ) - kvint(jk) = ze1 - ktint(jk) = ze1*iPr_ktgw - enddo - -! -! Thermal budget qmid = qheat + qcool -! - do jk=ksrc+1,levs - ze2 = qmid(jk) + dktur(jk)*Akt(jk) + grav*(ktint(jk+1)-ktint(jk))/dz_meti(jk) - qmid(jk) = ze2 - if (abs(ze2) >= max_eps ) qmid(jk) = sign(max_eps, ze2) - pdtdt(jl,jk) = qmid(jk)*rcpd - dked(jl, jk) = dktur(jk) - enddo -! -! perform explicit eddy "diffusive" 3-point smoothing of "u-v-t" -! from the surface/launch-gw to the "top" -! -! - do jk=km2,levs -! update by source function X(t+dt) = X(t) + dtp * dXdt -! - uold(jk) = aum(jk) + pdudt(jl,jk) * dtp - vold(jk) = avm(jk) + pdvdt(jl,jk) * dtp - told(jk) = atm(jk) + pdtdt(jl,jk) * dtp -! -! diagnose turb-profile using "stability-check" relying on the free-atm diffusion -! sc2 = 30m x 30m -! - dktur(jk) = dked_min - enddo - - do jk=km1,levs - uz = uold(jk) - uold(jk-1) - vz = vold(jk) - vold(jk-1) - ze1 = dz_met(jk) - zdelm = 1.0 / ze1 - - tvc = told(jk) * (1. +fv*aqm(jk)) - tvm = told(jk-1) * (1. +fv*aqm(jk-1)) - zthm = 2.0 / (tvc+tvm) - shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm - - bn2(jk) = grav2cpd*zthm * (1.0+rcpdl*(tvc-tvm)*zdelm) - - bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) - zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 - zgrow = exp(zmetk) - ritur = bn2(jk)/shr2 - w1 = 1.0 / (1.0 + 5*ritur) - ze2 = min( sc2 *zgrow, 4.*ze1*ze1) -! -! Smag-type of eddy diffusion K_smag = Sqrt(Deformation - N2/Pr)* L2 *const -! - kamp = sqrt(shr2)* ze2 * w1 * w1 - ktur = min(max(kamp, dked_min), dked_max) - dktur(jk) = ktur -! -! update of dked = dked_gw + k_turb_mf -! - dked(jl, jk) = dked(jl, jk) +ktur - - enddo - -! -! apply eddy effects due to GWs: explicit scheme Kzz*dt/dz2 < 0.5 stability -! - if (knob_ugwp_dokdis == 2) then - - do jk=ksrc,levs - ze1 = min(.5*(dktur(jk)+dktur(jk-1)), dturb_max) - kvint(jk) = kvint(jk) + ze1 -! ktint(jk) = ktint(jk) + ze1*iPr_ktgw - enddo - kvint(km1) = kvint(ksrc) - kvint(ktop) = kvint(levs) - - dzmetm = 1./dz_met(km1) - Adif(km1:levs) = 0. - Cdif(km1:levs) = 0. - do jk=km1,levs-1 - - dzmetp = 1.0 / dz_met(jk+1) - dzmetf = 1.0 / (dz_meti(jk)*rhomid(jk)) - - - ktur = kvint(jk) * rhoint(jk) * dzmetf - kturp = Kvint(jk+1) * rhoint(jk+1) * dzmetf - - Adif(jk) = ktur * dzmetm - Cdif(jk) = kturp * dzmetp - ApC = adif(jk) + cdif(jk) - ACdif(jk) = ApC - - w1 = ApC*iPr_max - if (rdtp < w1 ) then - Anstab(jk) = floor(w1*dtp) + 1 - else - Anstab(jk) = 1 - endif - dzmetm = dzmetp - enddo - - nstab = maxval( Anstab(ksrc:levs-1)) - -! if (nstab .ge. 3) print *, 'nstab ', nstab -! -! k instead Jk -! - dtdif = dtp/real(nstab) - ze1 = 1./dtdif - - do ist= 1, nstab - do k=ksrc,levs-1 - Bdif = ze1 - ACdif(k) - Bt_dif = ze1 - ACdif(k)* iPr_ktgw ! ipr_Ktgw = 1./Pr <1 - unew(k) = uold(k)*Bdif + uold(k-1)*Adif(k) + uold(k+1)*Cdif(k) - vnew(k) = vold(k)*Bdif + vold(k-1)*Adif(k) + vold(k+1)*Cdif(k) - tnew(k) = told(k)*Bt_dif+(told(k-1)*Adif(k) + told(k+1)*Cdif(k))*iPr_ktgw - enddo - - do k=ksrc,levs-1 - uold(k) = unew(k) * dtdif ! value du/dtp *dtp = du - vold(k) = vnew(k) * dtdif - told(k) = tnew(k) * dtdif - enddo -! -! smoothing the boundary points: "k-1" = ksrc-1 and "k+1" = levs -! - uold(levs) = uold(levs-1) - vold(levs) = vold(levs-1) - told(levs) = told(levs-1) - enddo -! -! compute "smoothed" tendencies by molecular + GW-eddy diffusions -! - do k=ksrc,levs-1 -! -! final updates of tendencies and diffusion -! - ze2 = rdtp * (uold(k) - aum(k)) - ze1 = rdtp * (vold(k) - avm(k)) - pdtdt(jl,k) = rdtp * (told(k) - atm(k)) - - if (abs(pdtdt(jl,k)) >= maxdtdt ) pdtdt(jl,k) = sign(maxdtdt,pdtdt(jl,k) ) - if (abs(ze1) >= maxdudt ) then - ze1 = sign(maxdudt, ze1) - endif - if (abs(ze2) >= maxdudt ) then - ze2 = sign(maxdudt, ze2) - endif - - pdudt(jl, k) = ze2 - pdvdt(jl, k) = ze1 - uz = uold(k+1) - uold(k-1) - vz = vold(k+1) - vold(k-1) - ze2 = 1.0 / (dz_met(k+1)+dz_met(k) ) - - mf_diss_heat = rcpd*kvint(k)*(uz*uz +vz*vz)*ze2*ze2 ! vert grad heat - pdtdt(jl,k) = pdtdt(jl,k) + mf_diss_heat ! extra heat due to eddy viscosity - - enddo - - - ENDIF ! dissipative IF-loop for vertical eddy difusion u-v-t - - enddo ! J-loop -! - RETURN - -!================================= diag print after "return" ====================== - if (kdt ==1 .and. mpi_id == master) then -! - print *, ' ugwpv1: nazd-nw-ilaunch=', nazd, nwav,ilaunch, maxval(kvg), ' kvg ' - print *, 'ugwpv1: zdci(inc)=' , maxval(zdci), minval(zdci) - print *, 'ugwpv1: zcimax=' , maxval(zci) ,' zcimin=' , minval(zci) -! print *, 'ugwpv1: tau_ngw=' , maxval(taub_src)*1.e3, minval(taub_src)*1.e3, tau_min - - print * - - endif - - if (kdt == 1 .and. mpi_id == master) then - print *, 'vgw done nstab ', nstab -! - print *, maxval(pdudt)*86400., minval(pdudt)*86400, 'vgw ax ugwp' - print *, maxval(pdvdt)*86400., minval(pdvdt)*86400, 'vgw ay ugwp' - print *, maxval(dked)*1., minval(dked)*1, 'vgw keddy m2/sec ugwp' - print *, maxval(pdtdt)*86400., minval(pdtdt)*86400,'vgw eps ugwp' -! -! print *, ' ugwp -heating rates ' - endif -!================================= - return - end subroutine cires_ugwpv1_ngw_solv2 - - -end module cires_ugwpv1_solv2 diff --git a/physics/cires_ugwpv1_solv2.F90_orig b/physics/cires_ugwpv1_solv2.F90_orig deleted file mode 100644 index afd94ff5c..000000000 --- a/physics/cires_ugwpv1_solv2.F90_orig +++ /dev/null @@ -1,1036 +0,0 @@ -module cires_ugwpv1_solv2 - - -contains - - -!--------------------------------------------------- -! Broad spectrum FVS-1993, mkz^nSlope with nSlope = 0, 1,2 -! dissipative solver with NonHyd/ROT-effects -! reflected GWs treated as waves with "negligible" flux, -! they are out of given column -!--------------------------------------------------- - - subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, & - tau_ngw, tm , um, vm, qm, prsl, prsi, zmet, zmeti, prslk, & - xlatd, sinlat, coslat, & - pdudt, pdvdt, pdtdt, dked, zngw) -! -!-------------------------------------------------------------------------------- -! nov 2015 alternative gw-solver for nggps-wam -! nov 2017 nh/rotational gw-modes for nh-fv3gfs -! oct 2019 adding empirical satellite-based -! source function and *F90 CIRES-style of the code -! oct 2020 Diagnostics of "tauabs, wrms, trms" is taken out -! -------------------------------------------------------------------------------- -! - use machine, only : kind_phys - - use cires_ugwpv1_module,only : krad, kvg, kion, ktg, iPr_ktgw, Pr_kdis, Pr_kvkt - - use cires_ugwpv1_module,only : knob_ugwp_doheat, knob_ugwp_dokdis, idebug_gwrms - - use cires_ugwpv1_module,only : psrc => knob_ugwp_palaunch - - use cires_ugwpv1_module,only : maxdudt, maxdtdt, max_eps, dked_min, dked_max - - use ugwp_common , only : rgrav, grav, cpd, rd, rv, rcpdl, grav2cpd, & - omega2, rcpd, rcpd2, pi, pi2, fv, & - rad_to_deg, deg_to_rad, & - rdi, gor, grcp, gocp, & - bnv2min, bnv2max, dw2min, velmin, gr2, & - hpscale, rhp, rh4, grav2, rgrav2, mkzmin, mkz2min -! - use ugwp_wmsdis_init, only : v_kxw, rv_kxw, v_kxw2, tamp_mpa, tau_min, ucrit, & - gw_eff, & - nslope, ilaunch, zms, & - zci, zdci, zci4, zci3, zci2, & - zaz_fct, zcosang, zsinang, nwav, nazd, & - zcimin, zcimax, rimin, sc2, sc2u, ric -! - implicit none -! - real(kind=kind_phys), parameter :: zsp_gw = 106.5e3 ! sponge for GWs above the model top - real(kind=kind_phys), parameter :: linsat2 = 1.0, dturb_max = 100.0 - integer, parameter :: ener_norm =0 - integer, parameter :: ener_lsat=0 - integer, parameter :: nstdif = 1 - integer, parameter :: wave_sponge = 1 - - integer, intent(in) :: levs ! vertical level - integer, intent(in) :: im ! horiz tiles - integer, intent(in) :: mpi_id, master, kdt - - real(kind=kind_phys) ,intent(in) :: dtp ! model time step - real(kind=kind_phys) ,intent(in) :: tau_ngw(im) - - real(kind=kind_phys) ,intent(in) :: vm(im,levs) ! meridional wind - real(kind=kind_phys) ,intent(in) :: um(im,levs) ! zonal wind - real(kind=kind_phys) ,intent(in) :: qm(im,levs) ! spec. humidity - real(kind=kind_phys) ,intent(in) :: tm(im,levs) ! kinetic temperature - - real(kind=kind_phys) ,intent(in) :: prsl(im,levs) ! mid-layer pressure - real(kind=kind_phys) ,intent(in) :: prslk(im,levs) ! mid-layer exner function - real(kind=kind_phys) ,intent(in) :: zmet(im,levs) ! meters now !!!!! phil =philg/grav - real(kind=kind_phys) ,intent(in) :: prsi(im,levs+1) ! interface pressure - real(kind=kind_phys) ,intent(in) :: zmeti(im,levs+1) ! interface geopi/meters - real(kind=kind_phys) ,intent(in) :: xlatd(im) ! xlat_d in degrees - real(kind=kind_phys) ,intent(in) :: sinlat(im) - real(kind=kind_phys) ,intent(in) :: coslat(im) -! -! out-gw effects -! - real(kind=kind_phys) ,intent(out) :: pdudt(im,levs) ! zonal momentum tendency - real(kind=kind_phys) ,intent(out) :: pdvdt(im,levs) ! meridional momentum tendency - real(kind=kind_phys) ,intent(out) :: pdtdt(im,levs) ! gw-heating (u*ax+v*ay)/cp and cooling - real(kind=kind_phys) ,intent(out) :: dked(im,levs) ! gw-eddy diffusion - real(kind=kind_phys) ,intent(out) :: zngw(im) ! launch height -! -! -! -! local =========================================================================================== - - real(kind=kind_phys) :: tauabs(im,levs) ! - real(kind=kind_phys) :: wrms(im,levs) ! - real(kind=kind_phys) :: trms(im,levs) ! - - real(kind=kind_phys) :: zwrms(nwav,nazd), wrk1(levs), wrk2(levs) - real(kind=kind_phys) :: atrms(nazd, levs),awrms(nazd, levs), akzw(nwav,nazd, levs+1) -! -! local =========================================================================================== - real(kind=kind_phys) :: taux(levs+1) ! EW component of vertical momentum flux (pa) - real(kind=kind_phys) :: tauy(levs+1) ! NS component of vertical momentum flux (pa) - real(kind=kind_phys) :: fpu(nazd, levs+1) ! az-momentum flux - real(kind=kind_phys) :: ui(nazd, levs+1) ! azimuthal wind - - real(kind=kind_phys) :: fden_bn(levs+1) ! density/brent - real(kind=kind_phys) :: flux (nwav, nazd) , flux_m (nwav, nazd) -! - real(kind=kind_phys) :: bn(levs+1) ! interface BV-frequency - real(kind=kind_phys) :: bn2(levs+1) ! interface BV*BV-frequency - real(kind=kind_phys) :: rhoint(levs+1) ! interface density - real(kind=kind_phys) :: uint(levs+1) ! interface zonal wind - real(kind=kind_phys) :: vint(levs+1) ! meridional wind - real(kind=kind_phys) :: tint(levs+1) ! temp-re - - real(kind=kind_phys) :: irhodz_mid(levs) - real(kind=kind_phys) :: suprf(levs+1) ! RF-super linear dissipation - real(kind=kind_phys) :: cstar(levs+1) ,cstar2(levs+1) - real(kind=kind_phys) :: v_zmet(levs+1) - real(kind=kind_phys) :: vueff(levs+1) - real(kind=kind_phys) :: dfdz_v(nazd, levs), dfdz_heat(nazd, levs) ! axj = -df*rho/dz directional Ax - - real(kind=kind_phys), dimension(levs) :: atm , aum, avm, aqm, aprsl, azmet, dz_met - real(kind=kind_phys), dimension(levs+1) :: aprsi, azmeti, dz_meti - - real(kind=kind_phys), dimension(levs) :: wrk3 - real(kind=kind_phys), dimension(levs) :: uold, vold, told, unew, vnew, tnew - real(kind=kind_phys), dimension(levs) :: rho, rhomid, adif, cdif, acdif - real(kind=kind_phys), dimension(levs) :: Qmid, AKT - real(kind=kind_phys), dimension(levs+1) :: dktur, Ktint, Kvint - real(kind=kind_phys), dimension(levs+1) :: fden_lsat, fden_bnen - - integer, dimension(levs) :: Anstab - - real(kind=kind_phys) :: sig_u2az(nazd), sig_u2az_m(nazd) - real(kind=kind_phys) :: wave_dis(nwav, nazd), wave_disaz(nazd) - real(kind=kind_phys) :: rdci(nwav), rci(nwav) - real(kind=kind_phys) :: wave_act(nwav, nazd) ! active waves at given vert-level - real(kind=kind_phys) :: ul(nazd) ! velocity in azimuthal direction at launch level -! -! scalars -! - real(kind=kind_phys) :: bvi, bvi2, bvi3, bvi4, rcms ! BV at launch level - real(kind=kind_phys) :: c2f2, cf1, wave_distot - - - real(kind=kind_phys) :: flux_norm ! norm-factor - real(kind=kind_phys) :: taub_src, rho_src, zcool, vmdiff -! - real(kind=kind_phys) :: zthm, dtau, cgz, ucrit_maxdc - real(kind=kind_phys) :: vm_zflx_mode, vc_zflx_mode - real(kind=kind_phys) :: kzw2, kzw3, kdsat, cdf2, cdf1, wdop2,v_cdp2 - real(kind=kind_phys) :: ucrit_max - real(kind=kind_phys) :: pwrms, ptrms - real(kind=kind_phys) :: zu, zcin, zcin2, zcin3, zcin4, zcinc - real(kind=kind_phys) :: zatmp, fluxs, zdep, ze1, ze2 - -! - real(kind=kind_phys) :: zdelp, zdelm, taud_min - real(kind=kind_phys) :: tvc, tvm, ptc, ptm - real(kind=kind_phys) :: umfp, umfm, umfc, ucrit3 - real(kind=kind_phys) :: fmode, expdis, fdis - real(kind=kind_phys) :: v_kzi, v_kzw, v_cdp, v_wdp, tx1, fcorsat, dzcrit - real(kind=kind_phys) :: v_wdi, v_wdpc - real(kind=kind_phys) :: ugw, vgw, ek1, ek2, rdtp, rdtp2, rhp_wam - - integer :: j, jj, k, kk, inc, jk, jkp, jl, iaz - integer :: ksrc, km2, km1, kp1, ktop -! -! Kturb-part -! - real(kind=kind_phys) :: uz, vz, shr2 , ritur, ktur - - real(kind=kind_phys) :: kamp, zmetk, zgrow - real(kind=kind_phys) :: stab, stab_dt, dtstab - real(kind=kind_phys) :: nslope3 -! - integer :: nstab, ist - real(kind=kind_phys) :: w1, w2, w3, dtdif - - real(kind=kind_phys) :: dzmetm, dzmetp, dzmetf, bdif, bt_dif, apc, kturp - real(kind=kind_phys) :: rstar, rstar2 - - real(kind=kind_phys) :: snorm_ener, sigu2, flux_2_sig, ekin_norm - real(kind=kind_phys) :: taub_ch, sigu2_ch - real(kind=kind_phys) :: Pr_kdis_eff, mf_diss_heat, iPr_max - real(kind=kind_phys) :: exp_sponge, mi_sponge, gipr - -!-------------------------------------------------------------------------- -! - nslope3 = nslope + 3.0 - Pr_kdis_eff = gw_eff*pr_kdis - iPr_max = max(1.0, iPr_ktgw) - gipr = grav* Ipr_ktgw -! -! test for input fields -! if (mpi_id == master .and. kdt < -2) then -! print *, im, levs, dtp, kdt, ' vay-solv2-v1' -! print *, minval(tm), maxval(tm), ' min-max-tm ' -! print *, minval(vm), maxval(vm), ' min-max-vm ' -! print *, minval(um), maxval(um), ' min-max-um ' -! print *, minval(qm), maxval(qm), ' min-max-qm ' -! print *, minval(prsl), maxval(prsl), ' min-max-Pmid ' -! print *, minval(prsi), maxval(prsi), ' min-max-Pint ' -! print *, minval(zmet), maxval(zmet), ' min-max-Zmid ' -! print *, minval(zmeti), maxval(zmeti), ' min-max-Zint ' -! print *, minval(prslk), maxval(prslk), ' min-max-Exner ' -! print *, minval(tau_ngw), maxval(tau_ngw), ' min-max-taungw ' -! print *, tau_min, ' tau_min ', tamp_mpa, ' tamp_mpa ' -! -! endif - - if (idebug_gwrms == 1) then - tauabs=0.0; wrms =0.0 ; trms =0.0 - endif - - rci(:) = 1./zci(:) - rdci(:) = 1./zdci(:) - - rdtp = 1./dtp - rdtp2 = 0.5*rdtp - - ksrc= max(ilaunch, 3) - km2 = ksrc - 2 - km1 = ksrc - 1 - kp1 = ksrc + 1 - ktop= levs+1 - - suprf(ktop) = kion(levs) - - do k=1,levs - suprf(k) = kion(k) ! approximate 1-st order damping with Fast super-RF of FV3 - pdvdt(:,k) = 0.0 - pdudt(:,k) = 0.0 - pdtdt(:,k) = 0.0 - dked(: ,k) = 0.0 - enddo - -!----------------------------------------------------------- -! column-based j=1,im pjysics with 1D-arrays -!----------------------------------------------------------- - DO j=1, im - jl =j - tx1 = omega2 * sinlat(j) *rv_kxw - cf1 = abs(tx1) - c2f2 = tx1 * tx1 - ucrit_max = max(ucrit, cf1) - ucrit3 = ucrit_max*ucrit_max*ucrit_max -! -! ngw-fluxes at all gridpoints (with tau_min at least) -! - aprsl(1:levs) = prsl(jl,1:levs) -! -! ksrc-define "aprsi(1:levs+1) redefine "ilaunch" -! - do k=1, levs - if (aprsl(k) .lt. psrc ) exit - enddo - ilaunch = max(k-1, 3) - ksrc= max(ilaunch, 3) - - zngw(j) = zmet(j, ksrc) - - km2 = ksrc - 2 - km1 = ksrc - 1 - kp1 = ksrc + 1 - -!=====ksrc - - aum(1:levs) = um(jl,1:levs) - avm(1:levs) = vm(jl,1:levs) - atm(1:levs) = tm(jl,1:levs) - aqm(1:levs) = qm(jl,1:levs) - azmet(1:levs) = zmet(jl,1:levs) - aprsi(1:levs+1) = prsi(jl,1:levs+1) - azmeti(1:levs+1) = zmeti(jl,1:levs+1) - - rho_src = aprsl(ksrc)*rdi/atm(ksrc) - taub_ch = max(tau_ngw(jl), tau_min) - taub_src = taub_ch - - - sigu2 = taub_src/rho_src/v_kxw * zms - sig_u2az(1:nazd) = sigu2 -! -! compute diffusion-based arrays km2:levs -! - do jk = km2, levs - dz_meti(jk) = azmeti(jk+1)-azmeti(jk) - dz_met(jk) = azmet(jk)-azmeti(jk-1) - enddo -! --------------------------------------------- -! interface mean flow parameters launch -> levs+1 -! --------------------------------------------- - do jk= km1,levs - tvc = atm(jk)*(1. +fv*aqm(jk)) - tvm = atm(jk-1)*(1. +fv*aqm(jk-1)) - ptc = tvc/ prslk(jl, jk) - ptm = tvm/prslk(jl,jk-1) -! - zthm = 2.0/(tvc+tvm) - rhp_wam = zthm*gor -!interface - uint(jk) = 0.5*(aum(jk-1)+aum(jk)) - vint(jk) = 0.5*(avm(jk-1)+avm(jk)) - tint(jk) = 0.5*(tvc+tvm) - rhomid(jk) = aprsl(jk)*rdi/atm(jk) - rhoint(jk) = aprsi(jk)*rdi*zthm ! rho = p/(RTv) - zdelp = dz_meti(jk) ! >0 ...... dz-meters - v_zmet(jk) = 2.*zdelp ! 2*kzi*[Z_int(k+1)-Z_int(k)] - zdelm = 1./dz_met(jk) ! 1/dz ...... 1/meters -! -! bvf2 = grav2*zdelm*(ptc-ptm)/(ptc + ptm) ! N2=[g/PT]*(dPT/dz) -! - bn2(jk) = grav2cpd*zthm*(1.0+rcpdl*(tvc-tvm)*zdelm) - bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) - bn(jk) = sqrt(bn2(jk)) - - - wrk3(jk)= 1./zdelp/rhomid(jk) ! 1/rho_mid(k)/[Z_int(k+1)-Z_int(k)] - irhodz_mid(jk) = rdtp*zdelp*rhomid(jk)/rho_src -! -! -! diagnostics -Kzz above PBL -! - uz = aum(jk) - aum(jk-1) - vz = avm(jk) - avm(jk-1) - shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm - - zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 - zgrow = exp(zmetk) - ritur = bn2(jk)/shr2 - kamp = sqrt(shr2)*sc2 *zgrow - w1 = 1./(1. + 5*ritur) - ktur= min(max(kamp * w1 * w1, dked_min), dked_max) - zmetk = azmet(jk)* rhp - vueff(jk) = ktur + kvg(jk) - - akt(jk) = gipr/tvc - enddo - - if (idebug_gwrms == 1) then - do jk= km1,levs - wrk1(jk) = rv_kxw/rhoint(jk) - wrk2(jk)= rgrav2*zthm*zthm*bn2(jk) ! dimension [K*K]*(c2/m2) - enddo - endif - -! -! extrapolating values for ktop = levs+1 (lev-interface for prsi(levs+1) =/= 0) -! - jk = levs - - rhoint(ktop) = 0.5*aprsi(levs)*rdi/atm(jk) - tint(ktop) = atm(jk)*(1. +fv*aqm(jk)) - uint(ktop) = aum(jk) - vint(ktop) = avm(jk) - - v_zmet(ktop) = v_zmet(jk) - vueff(ktop) = vueff(jk) - bn2(ktop) = bn2(jk) - bn(ktop) = bn(jk) -! -! akt_mid *KT = -g*(1/H + 1/T*dT/dz)*KT ... grav/tvc for eddy heat conductivity -! - do jk=km1, levs - akt(jk) = -akt(jk)*(gor + (tint(jk+1)-tint(jk))/dz_meti(jk) ) - enddo - - - bvi = bn(ksrc); bvi2 = bvi * bvi; - bvi3 = bvi2*bvi; bvi4 = bvi2 * bvi2; rcms = zms/bvi -! -! project winds at ksrc -! - do iaz=1, nazd - ul(iaz) = zcosang(iaz) *uint(ksrc) + zsinang(iaz) *vint(ksrc) - enddo -! - - do jk=ksrc, ktop - cstar(jk) = bn(jk)/zms - cstar2(jk) = cstar(jk)*cstar(jk) - - fden_lsat(jk) = rhoint(jk)/bn(jk)*v_kxw*Linsat2 - - do iaz=1, nazd - zu = zcosang(iaz)*uint(jk) + zsinang(iaz)*vint(jk) - ui(iaz, jk) = zu !- ul(iaz)*0. - enddo - enddo - - rstar = 1./cstar(ksrc) - rstar2 = rstar*rstar -! ----------------------------------------- -! set launch momentum flux spectral density -! ----------------------------------------- - - fpu(1:nazd, km2:ktop) =0. - - do inc=1,nwav - - zcin = zci(inc)*rstar - -! -! integrate (flux(cin) x dcin ) old tau-flux and normalization -! - flux(inc,1) = rstar*(zcin*zcin)/(1.+ zcin**nslope3) -! -! fsat = rstar*(zcin*zcin) * taub_src / SN * [rho/rho_src *N_src/N] -! - fpu(1,ksrc) = fpu(1,ksrc) + flux(inc,1)*zdci(inc) ! dc/cstar = dim-less - - do iaz=1,nazd - akzw(inc, iaz, ksrc) = bvi*rci(inc) - enddo - - enddo -! -! adjust rho/bn vertical factors for saturated fluxes (E(m) ~m^-3) - - flux_norm = taub_src / fpu(1, ksrc) ! [Pa * dc/cstar *dim_less] - ze1 = flux_norm * bvi/rhoint(ksrc) *rstar *rstar2 - do jk=ksrc, ktop - fden_bn(jk) = ze1* rhoint(jk) / bn(jk) ! [Pa]/[m/s] * rstar2 - enddo -! - do inc=1, nwav - flux(inc,1) = flux_norm*flux(inc,1) - enddo - - - if (ener_norm == 1) then - snorm_ener = 0. - do inc=1,nwav - zcin = zci(inc)*rstar - - ze2 = zcin /(1.+ zcin**nslope3) - - snorm_ener = snorm_ener + ze2*zdci(inc)*rstar !dim-less - flux(inc,1) = ze2 * zcin - enddo - - ekin_norm = 1./snorm_ener - -! taub_src = sigu2 * rho_src * [v_kxw / zms ] -! sigu2 = taub_src*zms/(rho_src/v_kxw) -! ze1 = sigu2*ks*dens/Ns = taub*zms/Ns - - ze1 = taub_src*zms/bvi * ekin_norm - taub_src = 0. - - do inc=1,nwav - flux(inc,1) = ze1* flux(inc,1) - taub_src = taub_src + flux(inc,1)*zdci(inc) - enddo - ze1 = ekin_norm * v_kxw * rstar2 - do jk=ksrc, ktop - fden_bnen(jk) = rhoint(jk) / bn(jk) *ze1 ! mult on => sigu2(z)*cdf2 => flux_sat - enddo - - endif -! - do iaz=1,nazd - fpu(iaz, ksrc) = taub_src - fpu(iaz, km1) = taub_src - enddo - -! copy flux-1 into other azimuths -! -------------------------------- - - - do iaz=2, nazd - do inc=1,nwav - flux(inc,iaz) = flux(inc,1) - enddo - enddo - -! if (mpi_id == master .and. ener_norm == 1) then -! print * -! print *, 'vay_norm: ', taub_src, taub_ch, sigu2, flux_norm, ekin_norm -! print * -! endif - - if (idebug_gwrms == 1) then - pwrms =0. - ptrms =0. - tx1 = real(nazd)/rhoint(ksrc)*rv_kxw - ze2 = wrk2(ksrc) ! (bvi*atm(ksrc)*rgrav)**2 - do inc=1, nwav - v_kzw = bvi*rci(inc) - ze1 = flux(inc,1)*zdci(inc)*tx1*v_kzw - pwrms = pwrms + ze1 - ptrms = ptrms + ze1 * ze2 - enddo - wrms(jl, ksrc) = pwrms - trms(jl, ksrc) = ptrms - endif - -! -------------------------------- - wave_act(:,:) = 1.0 -! vertical do-loop - do jk=ksrc, levs - - jkp = jk+1 -! azimuth do-loop - do iaz=1, nazd - - sig_u2az_m(iaz) = sig_u2az(iaz) - - umfp = ui(iaz, jkp) - umfm = ui(iaz, jk) - umfc = .5*(umfm + umfp) -! wave-cin loop - dfdz_v(iaz, jk) = 0.0 - dfdz_heat(iaz, jk) = 0.0 - fpu(iaz, jkp) = 0.0 - sig_u2az(iaz) =0.0 -! -! wave_dis(iaz, :) = vueff(jk) - do inc=1, nwav - flux_m(inc, iaz) = flux(inc, iaz) - - zcin = zci(inc) ! zcin =/0 by definition - zcinc = rci(inc) - - if(wave_act(inc,iaz) == 1.0) then -!======================================================================= -! discrete mode -! saturated limit wfit = kzw*kzw*kt; wfdt = wfit/(kxw*cx)*betat -! & dissipative kzi = 2.*kzw*(wfdm+wfdt)*dzpi(k) -!======================================================================= - - v_cdp = zcin - umfp - v_cdp2=v_cdp*v_cdp - cdf2 = v_cdp2 - c2f2 - if (v_cdp .le. ucrit_max .or. cdf2 .le. 0.0) then -! -! between layer [k-1,k or jk-jkp] (Chi - Uk) -> ucrit_max, wave's absorption -! - wave_act(inc,iaz) =0. - akzw(inc, iaz, jkp) = pi/dz_meti(jk) ! pi2/dzmet - fluxs = 0.0 !max(0., rhobnk(jkp)*ucrit3)*rdci(inc) - flux(inc,iaz) = fluxs - - else - - v_wdp = v_kxw*v_cdp - wdop2 = v_wdp* v_wdp - -! -! rotational cut-off -! - kzw2 = (bn2(jkp)-wdop2)/Cdf2 -! -!cires_ugwp_initialize.F90: real, parameter :: mkzmin = pi2/80.0e3 -! - if ( kzw2 > mkz2min ) then - v_kzw = sqrt(kzw2) - akzw(inc, iaz, jkp) = v_kzw -! -!linsatdis: kzw2, kzw3, kdsat, c2f2, cdf2, cdf1 -! -!kzw2 = (bn2(k)-wdop2)/Cdf2 - rhp4 - v_kx2w ! full lin DS-NGW (N2-wd2)*k2=(m2+k2+[1/2H]^2)*(wd2-f2) -! Kds_sat = kxw*Cdf1*rhp2/kzw3 -!krad, kvg, kion, ktg - v_cdp = sqrt( cdf2 ) - v_wdp = v_kxw * v_cdp - v_wdi = kzw2*vueff(jk) + kion(jk) ! supRF-diss due for "all" vars - v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) - v_kzi = v_kzw*v_wdi/v_wdpc - -! - ze1 = v_kzi*v_zmet(jk) - - if (ze1 .ge. 1.e-2) then - expdis = max(exp(-ze1), 0.01) - else - expdis = 1./(1.+ ze1) - endif - -! - wave_act(inc,iaz) = 1.0 - fmode = flux(inc,iaz) - - flux_2_sig = v_kzw/v_kxw/rhoint(jkp) - w1 = v_wdpc/kzw2/v_kzw/v_zmet(jk) - else ! kzw2 <= mkz2min large "Lz"-reflection - - expdis = 1.0 - v_kzw = mkzmin - - v_cdp = 0. ! no effects of reflected waves - wave_act(inc,iaz) = 0.0 - akzw(inc, iaz, jkp) = v_kzw - fmode = 0. - w1 =0. - endif -! expdis =1.0 - - fdis = fmode*expdis*wave_act(inc,iaz) -!============================================================================== -! -! Saturated Fluxes and Energy: Spectral and Dicrete Modes -! -! S2003 fluxs= fden_bn(jk)*(zcin-ui(jk,iaz))**2/zcin -! WM2001 fluxs= fden_bn(jk)*(zcin-ui(jk,iaz)) -! saturated flux + wave dissipation - Keddy_gwsat in UGWP-V1 -! linsatdis = 1.0 , here: u'^2 ~ linsatdis* [v_cdp*v_cdp] -! -! old-sat fluxs= fden_bn(jkp)*cdf2*zcinc*wave_act(inc,iaz) -! fluxs= fden_bn(jkp)*cdf2*zcinc*wave_act(inc,iaz) -! new sat fluxs= fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) -! -! fluxs= fden_bn(jkp)*sqrt(cdf2)*wave_act(inc,iaz) - -! -! -! old spectral sat-limit with "mapping to source-level" sp_tau(cd) = fden_bn(jkp)*sqrt(cdf2) -! new spectral sat-limit with "mapping to source-level" sp_tau(cd) = fden_bn(jkp)*cdf2*rstar2 -! [fden_bn(jkp)] = Pa/dc -! fsat = rstar*(zcin*zcin) * [taub_src / SN * [ rstar3*rho/rho_src *N_src/N] = fden_bn ] - - if (ener_norm == 0) fluxs= fden_bn(jkp)*cdf2*wave_act(inc,iaz) ! dim-n: Pa/[m/s] -! -! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc -! - if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) - - if (ener_norm == 1) then - -! spectral saturation limit - - if (ener_lsat == 0) fluxs= fden_bnen(jk)*cdf2*wave_act(inc,iaz)*sig_u2az_m(iaz) - -! single mode saturation limit: [rho(z)/bn(z)*kx *linsat2* cd^3] /dc - - if (ener_lsat == 1) fluxs= fden_Lsat(jkp)*cdf2*sqrt(cdf2)*rdci(inc)*wave_act(inc,iaz) -! - endif -!---------------------------------------------------------------------------- -! dicrete mode saturation fden_sat(jkp) = rhoint(jkp)/bn(jkp)*v_kxw -! fluxs = fden_sat(jkp)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat -! fluxs_src = fden_sat(ksrc)*cdf2*sqrt(cdf2)/zdci(inc)*L2sat -!---------------------------------------------------------------------------- - zdep = fdis-fluxs ! dimension [Pa/dc] *dc = Pa - if(zdep > 0.0 ) then -! subs on sat-limit - ze1 = flux(inc,iaz) - flux(inc,iaz) = fluxs - ze2 = log(ze1/fluxs)*w1 ! Kdsat-compute damping of mode =>df = f-fluxs - ! here we can add extra-dissip for the next layer - else -! assign dis-ve flux - flux(inc,iaz) = fdis - endif - - dtau = flux_m(inc,iaz)-flux(inc,iaz) - if (dtau .lt. 0) then - flux(inc,iaz) = flux_m(inc,iaz) - endif -! -! GW-sponge domain: saturate all "GW"-modes above "zsp_gw" -! - if ( azmeti(jkp) .ge. zsp_gw) then - mi_sponge = .5/dz_meti(jk) - ze2 = v_wdp /v_kzw * mi_sponge ! Ksat*v_kzw2 = [mi_sat*wdp/kzw] - v_wdi = ze2 + v_wdi*0.25 ! diss-sat GW-sponge - v_wdpc = sqrt(v_wdp*v_wdp +v_wdi*v_wdi) - v_kzi = v_kzw*v_wdi/v_wdpc -! - ze1 = v_kzi*v_zmet(jk) - exp_sponge = exp(-ze1) -! -! additional sponge -! - flux(inc,iaz) = flux(inc,iaz) *exp_sponge - endif - - endif ! coriolis or CL condition-checkif => (v_cdp .le. ucrit_max) then - endif ! only for waves w/o CL-absorption wave_act=1 -! -! sum for given (jk, iaz) all active "wave" contributions -! - if (wave_act(inc,iaz) == 1) then - - zcinc =zdci(inc) - vc_zflx_mode = flux(inc,iaz) - vmdiff = max(0., flux_m(inc,iaz)-vc_zflx_mode) - if (vmdiff <= 0. ) vc_zflx_mode = flux_m(inc,iaz) - ze1 = vc_zflx_mode*zcinc - fpu(iaz, jkp) = fpu(iaz,jkp) + ze1 ! flux (pa) at - sig_u2az(iaz) = sig_u2az(iaz) + ze1*flux_2_sig ! ekin(m2/s2) at z+dz - -!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -! (heat deposition integration over spectral mode for each azimuth -! later sum over selected azimuths as "non-negative" scalars) -! cdf1 = sqrt( (zci(inc)-umfc)**2-c2f2) -!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -! zdelp = wrk3(jk)*cdf1 *zcinc - - zdelp = wrk3(jk)* v_cdp *zcinc * vmdiff - - -! zcool = 1. ! COOL=(-3.5 + Pr)/Pr -! zcool = [Kv/Pr]*N2*(Pr-Cp/R)/cp -! edis = (c-u)*ax/cp = Kv_dis*N2/cp -! cool = -Kt*N2/R -! add heat-conduction "bulk" impact: 1/Pr*(g*g*rho)* d [rho*Kv(dT/dp- R/Cp *T/p)] -! - dfdz_v(iaz, jk) = dfdz_v(iaz,jk) + zdelp ! +cool !heating & simple cooling < 0 - dfdz_heat(iaz, jk) = dfdz_heat(iaz,jk) + zdelp ! heating -only > 0 - endif !wave_act(inc,iaz) == 1) -! - enddo ! wave-inc-loop - - ze1 =fpu(iaz, jk) - if (fpu(iaz, jkp) > ze1 ) fpu(iaz, jkp) = ze1 -! -! compute wind and temp-re rms -! - if (idebug_gwrms == 1) then - pwrms =0. - ptrms =0. - do inc=1, nwav - if (wave_act(inc,iaz) > 0.) then - v_kzw =akzw(inc, iaz, jk) - ze1 = flux(inc,iaz)*v_kzw*zdci(inc)*wrk1(jk) - pwrms = pwrms + ze1 - ptrms = ptrms + ze1*wrk2(jk) - endif - enddo - Awrms(iaz, jk) = pwrms - Atrms(iaz, jk) = ptrms - endif - -! -------------- - enddo ! end Azimuth do-loop - -! -! eddy wave dissipation to limit GW-rms -! - tx1 = sum(abs(dfdz_heat(1:nazd, jk)))/bn2(jk) - ze1=max(dked_min, tx1) - ze2=min(dked_max, ze1) - vueff(jkp) = ze2 + vueff(jkp) -! - enddo ! end Vertical do-loop -! -! top-layers constant interface-fluxes and zero-heat -! we allow non-zero momentum fluxes and thermal effects -! fpu(1:nazd,levs+1) = fpu(1:nazd, levs) -! dfdz_v(1:nazd, levs) = 0.0 - -! --------------------------------------------------------------------- -! sum contribution for total zonal and meridional fluxes + -! energy dissipation -! --------------------------------------------------- -! -!======================================================================== -! at the source level and below taux = 0 (taux_E=-taux_W by assumption) -!======================================================================== - - do jk=ksrc, levs - taux(jk) = 0.0 - tauy(jk) = 0.0 - do iaz=1,nazd - taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) - tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) - pdtdt(jl,jk) = pdtdt(jl,jk) + dfdz_v(iaz,jk) - dked(jl,jk) = dked(jl,jk) + dfdz_heat(iaz,jk) - enddo - enddo - jk = ktop; taux(jk)=0.; tauy(jk)=0. - do iaz=1,nazd - taux(jk) = taux(jk) + fpu(iaz,jk)*zcosang(iaz) - tauy(jk) = tauy(jk) + fpu(iaz,jk)*zsinang(iaz) - enddo - - if (idebug_gwrms == 1) then - do jk=kp1, levs - do iaz=1,nazd - wrms(jl,jk) =wrms(jl,jk) + Awrms(iaz,jk) - trms(jl,jk) =trms(jl,jk) + Atrms(iaz,jk) - tauabs(jl,jk)=tauabs(jl,jk) + fpu(iaz,jk) - enddo - enddo - endif -! - - do jk=ksrc+1,levs - jkp = jk + 1 - zdelp = wrk3(jk)*gw_eff - ze1 = (taux(jkp)-taux(jk))* zdelp - ze2 = (tauy(jkp)-tauy(jk))* zdelp - - if (abs(ze1) >= maxdudt ) then - ze1 = sign(maxdudt, ze1) - endif - if (abs(ze2) >= maxdudt ) then - ze2 = sign(maxdudt, ze2) - endif - - pdudt(jl,jk) = -ze1 - pdvdt(jl,jk) = -ze2 -! -! Cx =0 based Cx=/= 0. above -! -! - if (knob_ugwp_doheat == 1) then -! -!maxdtdt= dked_max * bnfix2 -! - pdtdt(jl,jk) = pdtdt(jl,jk)*gw_eff - ze2 = pdtdt(jl,jk) - if (abs(ze2) >= max_eps ) pdtdt(jl,jk) = sign(max_eps, ze2) - - dked(jl,jk) = dked(jl,jk)/bn2(jk) - ze1 = max(dked_min, dked(jl,jk)) - dked(jl,jk) = min(dked_max, ze1) - qmid(jk) = pdtdt(j,jk) - endif - enddo -!---------------------------------------------------------------------------------- -! Update heat = ek_diss/cp and aply 1-2-1 smoother for "dked" => dktur -! here with "u_new = u +dtp*dudt ; vnew = v + v +dtp*dvdt -! can check "stability" in the column and "add" ktur-estimation -! to suppress instability as needed so dked = dked_gw + ktur_ric -!---------------------------------------------------------------------------------- - - dktur(1:levs) = dked(jl,1:levs) -! - do ist= 1, nstdif - do jk=ksrc,levs-1 - adif(jk) =.25*(dktur(jk-1)+ dktur(jk+1)) + .5*dktur(jk) - enddo - dktur(ksrc:levs-1) = adif(ksrc:levs-1) - enddo - dktur(levs) = .5*( dked(jl,levs)+ dked(jl,levs-1)) - dktur(levs+1) = dktur(levs) - - do jk=ksrc,levs+1 - ze1 = .5*( dktur(jk) +dktur(jk-1) ) - kvint(jk) = ze1 - ktint(jk) = ze1*iPr_ktgw - enddo - -! -! Thermal budget qmid = qheat + qcool -! - do jk=ksrc+1,levs - ze2 = qmid(jk) + dktur(jk)*Akt(jk) + grav*(ktint(jk+1)-ktint(jk))/dz_meti(jk) - qmid(jk) = ze2 - if (abs(ze2) >= max_eps ) qmid(jk) = sign(max_eps, ze2) - pdtdt(jl,jk) = qmid(jk)*rcpd - dked(jl, jk) = dktur(jk) - enddo -! -! perform explicit eddy "diffusive" 3-point smoothing of "u-v-t" -! from the surface/launch-gw to the "top" -! -! -! update by source function X(t+dt) = X(t) + dtp * dXdt -! - uold(km2:levs) = aum(km2:levs)+pdudt(jl,km2:levs)*dtp - vold(km2:levs) = avm(km2:levs)+pdvdt(jl,km2:levs)*dtp - told(km2:levs) = atm(km2:levs)+pdtdt(jl,km2:levs)*dtp -! -! diagnose turb-profile using "stability-check" relying on the free-atm diffusion -! sc2 = 30m x 30m -! - dktur(km2:levs) = dked_min - - do jk=km1,levs - uz = uold(jk) - uold(jk-1) - vz = vold(jk) - vold(jk-1) - ze1 = dz_met(jk) - zdelm = 1./ze1 - - tvc = told(jk) * (1. +fv*aqm(jk)) - tvm = told(jk-1) * (1. +fv*aqm(jk-1)) - zthm = 2.0 / (tvc+tvm) - shr2 = (max(uz*uz+vz*vz, dw2min)) * zdelm *zdelm - - bn2(jk) = grav2cpd*zthm * (1.0+rcpdl*(tvc-tvm)*zdelm) - - bn2(jk) = max(min(bn2(jk), bnv2max), bnv2min) - zmetk = azmet(jk)* rh4 ! mid-layer height k_int => k_int+1 - zgrow = exp(zmetk) - ritur = bn2(jk)/shr2 - w1 = 1./(1. + 5*ritur) - ze2 = min( sc2 *zgrow, 4.*ze1*ze1) -! -! Smag-type of eddy diffusion K_smag = Sqrt(Deformation - N2/Pr)* L2 *const -! - kamp = sqrt(shr2)* ze2 * w1 * w1 - ktur= min(max(kamp, dked_min), dked_max) - dktur(jk) = ktur -! -! update of dked = dked_gw + k_turb_mf -! - dked(jl, jk) = dked(jl, jk) +ktur - - enddo - -! -! apply eddy effects due to GWs: explicit scheme Kzz*dt/dz2 < 0.5 stability -! - if (knob_ugwp_dokdis == 2) then - - do jk=ksrc,levs - ze1 = min(.5*(dktur(jk) +dktur(jk-1)), dturb_max) - kvint(jk) = kvint(jk) + ze1 -! ktint(jk) = ktint(jk) + ze1*iPr_ktgw - enddo - kvint(km1) = kvint(ksrc) - kvint(ktop) = kvint(levs) - - dzmetm = 1./dz_met(km1) - Adif(km1:levs) = 0. - Cdif(km1:levs) = 0. - do jk=km1,levs-1 - - dzmetp = 1./dz_met(jk+1) - dzmetf = 1./(dz_meti(jk)*rhomid(jk)) - - - ktur = kvint(jk) *rhoint(jk) * dzmetf - kturp =Kvint(jk+1)*rhoint(jk+1) * dzmetf - - Adif(jk) = ktur * dzmetm - Cdif(jk) = kturp * dzmetp - ApC = adif(jk)+cdif(jk) - ACdif(jk) = ApC - - w1 = ApC*iPr_max - if (rdtp < w1 ) then - Anstab(jk) = floor(w1*dtp) + 1 - else - Anstab(jk) = 1 - endif - dzmetm = dzmetp - enddo - - nstab = maxval( Anstab(ksrc:levs-1)) - -! if (nstab .ge. 3) print *, 'nstab ', nstab -! -! k instead Jk -! - dtdif = dtp/real(nstab) - ze1 = 1./dtdif - - do ist= 1, nstab - do k=ksrc,levs-1 - Bdif = ze1 - ACdif(k) - Bt_dif = ze1 - ACdif(k)* iPr_ktgw ! ipr_Ktgw = 1./Pr <1 - unew(k) = uold(k)*Bdif + uold(k-1)*Adif(k) + uold(k+1)*Cdif(k) - vnew(k) = vold(k)*Bdif + vold(k-1)*Adif(k) + vold(k+1)*Cdif(k) - tnew(k) = told(k)*Bt_dif+(told(k-1)*Adif(k) + told(k+1)*Cdif(k))*iPr_ktgw - enddo - - uold(ksrc:levs-1) = unew(ksrc:levs-1)*dtdif ! value du/dtp *dtp = du - vold(ksrc:levs-1) = vnew(ksrc:levs-1)*dtdif - told(ksrc:levs-1) = tnew(ksrc:levs-1)*dtdif -! -! smoothing the boundary points: "k-1" = ksrc-1 and "k+1" = levs -! - uold(levs) = uold(levs-1) - vold(levs) = vold(levs-1) - told(levs) = told(levs-1) - enddo -! -! compute "smoothed" tendencies by molecular + GW-eddy diffusions -! - do k=ksrc,levs-1 -! -! final updates of tendencies and diffusion -! - ze2 = rdtp*(uold(k) - aum(k)) - ze1 = rdtp*(vold(k) - avm(k)) - pdtdt(jl,k)= rdtp*( told(k) - atm(k) ) - - if (abs(pdtdt(jl,k)) >= maxdtdt ) pdtdt(jl,k) = sign(maxdtdt,pdtdt(jl,k) ) - if (abs(ze1) >= maxdudt ) then - ze1 = sign(maxdudt, ze1) - endif - if (abs(ze2) >= maxdudt ) then - ze2 = sign(maxdudt, ze2) - endif - - pdudt(jl, k) = ze2 - pdvdt(jl, k) = ze1 - uz = uold(k+1) - uold(k-1) - vz = vold(k+1) - vold(k-1) - ze2 = 1./(dz_met(k+1)+dz_met(k) ) - mf_diss_heat = rcpd*kvint(k)*(uz*uz +vz*vz)*ze2*ze2 ! vert grad heat - pdtdt(jl,k)= pdtdt(jl,k) + mf_diss_heat ! extra heat due to eddy viscosity - - enddo - - - ENDIF ! dissipative IF-loop for vertical eddy difusion u-v-t - - enddo ! J-loop -! - RETURN - -!================================= diag print after "return" ====================== - if (kdt ==1 .and. mpi_id == master) then -! - print *, ' ugwpv1: nazd-nw-ilaunch=', nazd, nwav,ilaunch, maxval(kvg), ' kvg ' - print *, 'ugwpv1: zdci(inc)=' , maxval(zdci), minval(zdci) - print *, 'ugwpv1: zcimax=' , maxval(zci) ,' zcimin=' , minval(zci) -! print *, 'ugwpv1: tau_ngw=' , maxval(taub_src)*1.e3, minval(taub_src)*1.e3, tau_min - - print * - - endif - - if (kdt == 1 .and. mpi_id == master) then - print *, 'vgw done nstab ', nstab -! - print *, maxval(pdudt)*86400., minval(pdudt)*86400, 'vgw ax ugwp' - print *, maxval(pdvdt)*86400., minval(pdvdt)*86400, 'vgw ay ugwp' - print *, maxval(dked)*1., minval(dked)*1, 'vgw keddy m2/sec ugwp' - print *, maxval(pdtdt)*86400., minval(pdtdt)*86400,'vgw eps ugwp' -! -! print *, ' ugwp -heating rates ' - endif -!================================= - return - end subroutine cires_ugwpv1_ngw_solv2 - - -end module cires_ugwpv1_solv2 From fc0eb087bd0011aafecf698c3f2f85bed92467d9 Mon Sep 17 00:00:00 2001 From: Ruiyu Sun Date: Thu, 23 Sep 2021 16:01:19 +0000 Subject: [PATCH 20/98] remove comments in semi-lagrangian routine in the module_mp_thompson.F90 --- physics/module_mp_thompson.F90 | 58 +--------------------------------- 1 file changed, 1 insertion(+), 57 deletions(-) diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 index f0334deaf..46ec5aa56 100644 --- a/physics/module_mp_thompson.F90 +++ b/physics/module_mp_thompson.F90 @@ -6110,9 +6110,6 @@ end subroutine calc_refl10cm ! !------------------------------------------------------------------- SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) -! ,oams,a_,b_,Lam0,Lam1,fv_s,Kap0,Kap1,mu_s,csg,cse,av_s,T_0,vts_boost,ii,jj) -! call nislfv_rain_ppm(1,kte,rho,rhof,temp,dzq,vtsk,rs,rs,dt,1,1,& -! R1,oams,a_,b_,Lam0,Lam1,fv_s,Kap0,Kap1,mu_s,csg,cse,av_s,T_0,vts_boost) !------------------------------------------------------------------- ! ! for non-iteration semi-Lagrangain forward advection for cloud @@ -6141,10 +6138,6 @@ SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) real denl(km),denfacl(km),tkl(km) ! for thompson scheme real R1 -! real oams,a_,b_,Lam0,Lam1,fv_s,Kap0,Kap1,mu_s,av_s,T_0 -! real xDs,Mrat,ils1,ils2,t1_vts,t2_vts,t3_vts,t4_vts,vts -! real csg(18),cse(18),vts_boost(km),smo2(km),smob(km),smoc(km) -! integer i,k,n,m,kk,kb,kt,iter,ii,jj real tl,tl2,qql,dql,qqd real th,th2,qqh,dqh @@ -6159,11 +6152,7 @@ SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) precip = 0.0 qa(:) = 0.0 qq(:) = 0.0 -! smo2(:) = 0.0 -! smob(:) = 0.0 -! smoc(:) = 0.0 -! - !i_loop : do i=1,im + ! ----------------------------------- dz(:) = dzl(:) ww(:) = wwl(:) @@ -6192,7 +6181,6 @@ SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) ! save departure wind wd(:) = ww(:) n=1 - 100 continue ! plm is 2nd order, we can use 2nd order wi or 3rd order wi ! 2nd order interpolation to get wi wi(1) = ww(1) @@ -6233,7 +6221,6 @@ SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) do k=1,km+1 !hmhj dza(k) = za(k+1)-za(k) enddo -!hmhj dza(km+1) = zi(km+1) - za(km+1) ! ! computer deformation at arrival point do k=1,km @@ -6241,48 +6228,6 @@ SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) qr(k) = qa(k)/den(k) enddo qa(km+1) = 0.0 -! call maxmin(km,1,qa,' arrival points ') -! -! compute arrival terminal velocity, and estimate mean terminal velocity -! then back to use mean terminal velocity -! if( n.le.iter ) then -! call slope_wsm3(qr,den,denfac,tk,tmp,tmp1,tmp2,tmp3,wa,1,1,1,km) -! thompson scheme vts, neglect the snow ratio over rain -! do k=1,km -! if (qa(k).gt. R1) then -! smob(k) = qa(k)*oams -! smo2(k) = smob(k) -! smoc(k) = a_ * smo2(k)**b_ -! xDs = smoc(k) / smob(k) -! Mrat = 1./xDs -! ils1 = 1./(Mrat*Lam0 + fv_s) -! ils2 = 1./(Mrat*Lam1 + fv_s) -! t1_vts = Kap0*csg(4)*ils1**cse(4) -! t2_vts = Kap1*Mrat**mu_s*csg(10)*ils2**cse(10) -! ils1 = 1./(Mrat*Lam0) -! ils2 = 1./(Mrat*Lam1) -! t3_vts = Kap0*csg(1)*ils1**cse(1) -! t4_vts = Kap1*Mrat**mu_s*csg(7)*ils2**cse(7) -! vts = denfac(k)*av_s * (t1_vts+t2_vts)/(t3_vts+t4_vts) -! print*,' ils1 ils2 mu_s t1-4 vts -! ',ils1,ils2,mu_s,t1_vts,t2_vts,t3_vts,t4_vts -! print*,' k mrat lam0 lam1 kap0 kap1 boost -! ',k,mrat,lam0,lam1,kap0,kap1,vts_boost(k) -! print*,' tk t_0 qa rr vts ',k,tk(k),t_0,qa(k),vts -! wa(k) = vts*vts_boost(k) -! wa(k) = vts -! endif -! enddo -! end of thompson -! if( n.ge.2 ) wa(1:km)=0.5*(wa(1:km)+was(1:km)) -! do k=1,km -! mean wind is average of departure and new arrival winds -! ww(k) = 0.5* ( wd(k)+wa(k) ) -! enddo -! was(:) = wa(:) -! n=n+1 -! go to 100 -! endif ! ! estimate values at arrival cell interface with monotone do k=2,km @@ -6394,7 +6339,6 @@ SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) ! 158 continue ! ---------------------------------- -! enddo i_loop ! END SUBROUTINE nislfv_rain_ppm !+---+-----------------------------------------------------------------+ From 38a637eb34059d4414234ea213ed98b45fb684f5 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Thu, 23 Sep 2021 17:30:22 +0000 Subject: [PATCH 21/98] fixing a bug as pointed out by Tanya Smirnova --- physics/radiation_surface.f | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 2d0940faf..1c93e5d92 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -892,7 +892,7 @@ subroutine setemis & semis_lnd(i) = emsref(8) else tmp1 = (fracl(i)-fsno) / fracl(i) - semis_lnd(i) = semis_lnd(i) * tmp1 + (f_one-tmp1)*fsno + semis_lnd(i) = semis_lnd(i) * tmp1 + (f_one-tmp1)*fsno*emsref(8) endif endif if (fraci(i) > f_zero) then @@ -914,7 +914,7 @@ subroutine setemis & semis_lnd(i) = emsref(8) else tmp1 = (fracl(i)-fsno) / fracl(i) - semis_lnd(i) = semis_lnd(i)*tmp1 + (f_one-tmp1)*fsno + semis_lnd(i) = semis_lnd(i)*tmp1 + (f_one-tmp1)*fsno*emsref(8) endif endif if (fraci(i) > f_zero) then From 70f84bd027e77e3d71a57a69d8dee29b76415c18 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Thu, 23 Sep 2021 17:39:13 +0000 Subject: [PATCH 22/98] fixing the error in my last fix --- physics/radiation_surface.f | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 1c93e5d92..7437ca203 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -892,7 +892,8 @@ subroutine setemis & semis_lnd(i) = emsref(8) else tmp1 = (fracl(i)-fsno) / fracl(i) - semis_lnd(i) = semis_lnd(i) * tmp1 + (f_one-tmp1)*fsno*emsref(8) + semis_lnd(i) = semis_lnd(i) * tmp1 & + & + emsref(8) *(f_one-tmp1) endif endif if (fraci(i) > f_zero) then @@ -914,7 +915,8 @@ subroutine setemis & semis_lnd(i) = emsref(8) else tmp1 = (fracl(i)-fsno) / fracl(i) - semis_lnd(i) = semis_lnd(i)*tmp1 + (f_one-tmp1)*fsno*emsref(8) + semis_lnd(i) = semis_lnd(i) * tmp1 & + & + emsref(8) * (f_one-tmp1) endif endif if (fraci(i) > f_zero) then From 8eae6225d50d736a4e56341df484a7f61f68b5fa Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Thu, 23 Sep 2021 17:53:02 +0000 Subject: [PATCH 23/98] reverting a change that happened while merging with PR branch --- physics/GFS_rrtmgp_lw_post.F90 | 99 +++++++++++++++--------------- physics/GFS_rrtmgp_sw_post.F90 | 109 ++++++++++++++++++--------------- 2 files changed, 109 insertions(+), 99 deletions(-) diff --git a/physics/GFS_rrtmgp_lw_post.F90 b/physics/GFS_rrtmgp_lw_post.F90 index ff0346fe4..4bb940547 100644 --- a/physics/GFS_rrtmgp_lw_post.F90 +++ b/physics/GFS_rrtmgp_lw_post.F90 @@ -1,4 +1,4 @@ -module GFS_rrtmgp_lw_post +module GFS_rrtmgp_lw_post use machine, only: kind_phys use module_radiation_aerosols, only: NSPC1 use module_radlw_parameters, only: topflw_type, sfcflw_type, proflw_type @@ -6,9 +6,9 @@ module GFS_rrtmgp_lw_post use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp use mo_fluxes_byband, only: ty_fluxes_byband use mo_heating_rates, only: compute_heating_rate - use radiation_tools, only: check_error_msg + use radiation_tools, only: check_error_msg implicit none - + public GFS_rrtmgp_lw_post_init,GFS_rrtmgp_lw_post_run,GFS_rrtmgp_lw_post_finalize contains @@ -29,16 +29,16 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag fluxlwDOWN_clrsky, raddt, aerodp, cldsa, mtopa, mbota, cld_frac, cldtaulw, fluxr, & sfcdlw, sfculw, sfcflw, tsflw, htrlw, topflw, flxprf_lw, htrlwc, errmsg, errflg) - ! Inputs - integer, intent(in) :: & + ! Inputs + integer, intent(in) :: & nCol, & ! Horizontal loop extent nLev ! Number of vertical layers - logical, intent(in) :: & + logical, intent(in) :: & lslwr, & ! Logical flags for lw radiation calls - do_lw_clrsky_hr, & ! Output clear-sky SW heating-rate? - save_diag ! Output radiation diagnostics? + do_lw_clrsky_hr, & ! Output clear-sky SW heating-rate? + save_diag ! Output radiation diagnostics? real(kind_phys), intent(in) :: & - fhlwr ! Frequency for SW radiation + fhlwr ! Frequency for SW radiation real(kind_phys), dimension(nCol), intent(in) :: & tsfa ! Lowest model layer air temperature for radiation (K) real(kind_phys), dimension(nCol, nLev), intent(in) :: & @@ -52,25 +52,25 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag real(kind_phys), intent(in) :: & raddt ! Radiation time step real(kind_phys), dimension(nCol,NSPC1), intent(in) :: & - aerodp ! Vertical integrated optical depth for various aerosol species + aerodp ! Vertical integrated optical depth for various aerosol species real(kind_phys), dimension(nCol,5), intent(in) :: & - cldsa ! Fraction of clouds for low, middle, high, total and BL + cldsa ! Fraction of clouds for low, middle, high, total and BL integer, dimension(nCol,3), intent(in) ::& mbota, & ! vertical indices for low, middle and high cloud tops mtopa ! vertical indices for low, middle and high cloud bases real(kind_phys), dimension(nCol,nLev), intent(in) :: & cld_frac, & ! Total cloud fraction in each layer - cldtaulw ! approx 10.mu band layer cloud optical depth - + cldtaulw ! approx 10.mu band layer cloud optical depth + real(kind=kind_phys), dimension(:,:), intent(inout) :: fluxr - + ! Outputs (mandatory) real(kind_phys), dimension(nCol), intent(inout) :: & sfcdlw, & ! Total sky sfc downward lw flux (W/m2) sfculw, & ! Total sky sfc upward lw flux (W/m2) tsflw ! surface air temp during lw calculation (K) type(sfcflw_type), dimension(nCol), intent(inout) :: & - sfcflw ! LW radiation fluxes at sfc + sfcflw ! LW radiation fluxes at sfc real(kind_phys), dimension(nCol,nLev), intent(inout) :: & htrlw ! LW all-sky heating rate type(topflw_type), dimension(nCol), intent(out) :: & @@ -79,7 +79,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag errmsg integer, intent(out) :: & errflg - + ! Outputs (optional) type(proflw_type), dimension(nCol, nLev+1), optional, intent(inout) :: & flxprf_lw ! 2D radiative fluxes, components: @@ -89,7 +89,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag ! dnfx0 - clear sky dnward flux (W/m2) real(kind_phys),dimension(nCol, nLev),intent(inout),optional :: & htrlwc ! Longwave clear-sky heating-rate (K/sec) - + ! Local variables integer :: i, j, k, iSFC, iTOA, itop, ibtc logical :: l_fluxeslw2d, top_at_1 @@ -118,7 +118,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag endif ! ####################################################################################### - ! Compute LW heating-rates. + ! Compute LW heating-rates. ! ####################################################################################### ! Clear-sky heating-rate (optional) if (do_lw_clrsky_hr) then @@ -128,7 +128,7 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag p_lev, & ! IN - Pressure @ layer-interfaces (Pa) htrlwc)) ! OUT - Longwave clear-sky heating rate (K/sec) endif - + ! All-sky heating-rate (mandatory) call check_error_msg('GFS_rrtmgp_post',compute_heating_rate( & fluxlwUP_allsky, & ! IN - RRTMGP upward longwave all-sky flux profiles (W/m2) @@ -140,14 +140,24 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag ! Save LW outputs. ! ####################################################################################### ! Copy fluxes from RRTGMP types into model radiation types. + + do i=1,nCol ! Mandatory outputs - topflw(:)%upfxc = fluxlwUP_allsky(:,iTOA) - topflw(:)%upfx0 = fluxlwUP_clrsky(:,iTOA) - sfcflw(:)%upfxc = fluxlwUP_allsky(:,iSFC) - sfcflw(:)%upfx0 = fluxlwUP_clrsky(:,iSFC) - sfcflw(:)%dnfxc = fluxlwDOWN_allsky(:,iSFC) - sfcflw(:)%dnfx0 = fluxlwDOWN_clrsky(:,iSFC) - + topflw(i)%upfxc = fluxlwUP_allsky(i,iTOA) + topflw(i)%upfx0 = fluxlwUP_clrsky(i,iTOA) + sfcflw(i)%upfxc = fluxlwUP_allsky(i,iSFC) + sfcflw(i)%upfx0 = fluxlwUP_clrsky(i,iSFC) + sfcflw(i)%dnfxc = fluxlwDOWN_allsky(i,iSFC) + sfcflw(i)%dnfx0 = fluxlwDOWN_clrsky(i,iSFC) + + ! Save surface air temp for diurnal adjustment at model t-steps + tsflw (i) = tsfa(i) + + ! Radiation fluxes for other physics processes + sfcdlw(i) = sfcflw(i)%dnfxc + sfculw(i) = sfcflw(i)%upfxc + enddo + ! Optional outputs if(l_fluxeslw2d) then flxprf_lw%upfxc = fluxlwUP_allsky @@ -155,18 +165,11 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag flxprf_lw%upfx0 = fluxlwUP_clrsky flxprf_lw%dnfx0 = fluxlwDOWN_clrsky endif - - ! Save surface air temp for diurnal adjustment at model t-steps - tsflw (:) = tsfa(:) - - ! Radiation fluxes for other physics processes - sfcdlw(:) = sfcflw(:)%dnfxc - sfculw(:) = sfcflw(:)%upfxc ! ####################################################################################### ! Save LW diagnostics - ! - For time averaged output quantities (including total-sky and clear-sky SW and LW - ! fluxes at TOA and surface; conventional 3-domain cloud amount, cloud top and base + ! - For time averaged output quantities (including total-sky and clear-sky SW and LW + ! fluxes at TOA and surface; conventional 3-domain cloud amount, cloud top and base ! pressure, and cloud top temperature; aerosols AOD, etc.), store computed results in ! corresponding slots of array fluxr with appropriate time weights. ! - Collect the fluxr data for wrtsfc @@ -182,24 +185,24 @@ subroutine GFS_rrtmgp_lw_post_run (nCol, nLev, lslwr, do_lw_clrsky_hr, save_diag fluxr(i,30) = fluxr(i,30) + fhlwr * fluxlwDOWN_clrsky(i,iSFC) ! clear sky sfc lw dn fluxr(i,33) = fluxr(i,33) + fhlwr * fluxlwUP_clrsky( i,iSFC) ! clear sky sfc lw up enddo - - do i=1,nCol - fluxr(i,17) = fluxr(i,17) + raddt * cldsa(i,4) - fluxr(i,18) = fluxr(i,18) + raddt * cldsa(i,5) - enddo + +! do i=1,nCol +! fluxr(i,17) = fluxr(i,17) + raddt * cldsa(i,4) +! fluxr(i,18) = fluxr(i,18) + raddt * cldsa(i,5) +! enddo ! Save cld frac,toplyr,botlyr and top temp, note that the order of h,m,l cloud is reversed for ! the fluxr output. save interface pressure (pa) of top/bot do j = 1, 3 do i = 1, nCol - tem0d = raddt * cldsa(i,j) - itop = mtopa(i,j) - ibtc = mbota(i,j) - fluxr(i, 8-j) = fluxr(i, 8-j) + tem0d - fluxr(i,11-j) = fluxr(i,11-j) + tem0d * p_lev(i,itop) - fluxr(i,14-j) = fluxr(i,14-j) + tem0d * p_lev(i,ibtc) - fluxr(i,17-j) = fluxr(i,17-j) + tem0d * t_lay(i,itop) - +! tem0d = raddt * cldsa(i,j) +! itop = mtopa(i,j) +! ibtc = mbota(i,j) +! fluxr(i, 8-j) = fluxr(i, 8-j) + tem0d +! fluxr(i,11-j) = fluxr(i,11-j) + tem0d * p_lev(i,itop) +! fluxr(i,14-j) = fluxr(i,14-j) + tem0d * p_lev(i,ibtc) +! fluxr(i,17-j) = fluxr(i,17-j) + tem0d * t_lay(i,itop) + ! Add optical depth and emissivity output tem2 = 0. do k=ibtc,itop diff --git a/physics/GFS_rrtmgp_sw_post.F90 b/physics/GFS_rrtmgp_sw_post.F90 index 23a681826..38dbe17d5 100644 --- a/physics/GFS_rrtmgp_sw_post.F90 +++ b/physics/GFS_rrtmgp_sw_post.F90 @@ -1,14 +1,14 @@ -module GFS_rrtmgp_sw_post +module GFS_rrtmgp_sw_post use machine, only: kind_phys use module_radiation_aerosols, only: NSPC1 use module_radsw_parameters, only: topfsw_type, sfcfsw_type, profsw_type, cmpfsw_type use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp use mo_fluxes_byband, only: ty_fluxes_byband use mo_heating_rates, only: compute_heating_rate - use radiation_tools, only: check_error_msg + use radiation_tools, only: check_error_msg use rrtmgp_sw_gas_optics, only: sw_gas_props implicit none - + public GFS_rrtmgp_sw_post_init,GFS_rrtmgp_sw_post_run,GFS_rrtmgp_sw_post_finalize contains @@ -33,23 +33,23 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky nirbmdi, nirdfdi, visbmdi, visdfdi, nirbmui, nirdfui, visbmui, visdfui, sfcnsw, & sfcdsw, htrsw, sfcfsw, topfsw, htrswc, flxprf_sw, scmpsw, errmsg, errflg) - ! Inputs - integer, intent(in) :: & - nCol, & ! Horizontal loop extent + ! Inputs + integer, intent(in) :: & + nCol, & ! Horizontal loop extent nLev, & ! Number of vertical layers nDay ! Number of daylit columns integer, intent(in), dimension(nday) :: & idxday ! Index array for daytime points - logical, intent(in) :: & - lsswr, & ! Call SW radiation? - do_sw_clrsky_hr, & ! Output clear-sky SW heating-rate? - save_diag ! Output radiation diagnostics? + logical, intent(in) :: & + lsswr, & ! Call SW radiation? + do_sw_clrsky_hr, & ! Output clear-sky SW heating-rate? + save_diag ! Output radiation diagnostics? real(kind_phys), intent(in) :: & fhswr ! Frequency for SW radiation real(kind_phys), dimension(nCol), intent(in) :: & t_lay, & ! Temperature at model layer centers (K) - coszen, & ! Cosine(SZA) - coszdg ! Cosine(SZA), daytime + coszen, & ! Cosine(SZA) + coszdg ! Cosine(SZA), daytime real(kind_phys), dimension(nCol, nLev+1), intent(in) :: & p_lev ! Pressure @ model layer-interfaces (Pa) real(kind_phys), dimension(sw_gas_props%get_nband(),ncol), intent(in) :: & @@ -65,17 +65,17 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky real(kind_phys), intent(in) :: & raddt ! Radiation time step real(kind_phys), dimension(nCol,NSPC1), intent(in) :: & - aerodp ! Vertical integrated optical depth for various aerosol species + aerodp ! Vertical integrated optical depth for various aerosol species real(kind_phys), dimension(nCol,5), intent(in) :: & - cldsa ! Fraction of clouds for low, middle, high, total and BL + cldsa ! Fraction of clouds for low, middle, high, total and BL integer, dimension(nCol,3), intent(in) ::& mbota, & ! vertical indices for low, middle and high cloud tops mtopa ! vertical indices for low, middle and high cloud bases real(kind_phys), dimension(nCol,nLev), intent(in) :: & cld_frac, & ! Total cloud fraction in each layer cldtausw ! approx .55mu band layer cloud optical depth - - ! Inputs (optional) + + ! Inputs (optional) type(cmpfsw_type), dimension(nCol), intent(inout), optional :: & scmpsw ! 2D surface fluxes, components: ! uvbfc - total sky downward uv-b flux at (W/m2) @@ -83,10 +83,10 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky ! 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) - + ! visdf - downward uv+vis diffused flux (W/m2) + real(kind=kind_phys), dimension(:,:), intent(inout) :: fluxr - + ! Outputs (mandatory) real(kind_phys), dimension(nCol), intent(inout) :: & nirbmdi, & ! sfc nir beam sw downward flux (W/m2) @@ -96,7 +96,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky nirbmui, & ! sfc nir beam sw upward flux (W/m2) nirdfui, & ! sfc nir diff sw upward flux (W/m2) visbmui, & ! sfc uv+vis beam sw upward flux (W/m2) - visdfui, & ! sfc uv+vis diff sw upward flux (W/m2) + visdfui, & ! sfc uv+vis diff sw upward flux (W/m2) sfcnsw, & ! total sky sfc netsw flx into ground sfcdsw ! real(kind_phys), dimension(nCol,nLev), intent(inout) :: & @@ -119,7 +119,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky ! dnfx0 - clear sky dnward flux (W/m2) real(kind_phys),dimension(nCol, nLev),intent(inout),optional :: & htrswc ! Clear-sky heating rate (K/s) - + ! Local variables integer :: i, j, k, iSFC, iTOA, itop, ibtc real(kind_phys) :: tem0d, tem1, tem2 @@ -135,7 +135,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky ! Are any optional outputs requested? l_fluxessw2d = present(flxprf_sw) - + ! Are the components of the surface fluxes provided? l_scmpsw = present(scmpsw) @@ -150,7 +150,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky iSFC = 1 iTOA = nLev+1 endif - + ! ####################################################################################### ! Compute SW heating-rates ! ####################################################################################### @@ -178,14 +178,17 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky ! Save SW outputs ! ####################################################################################### ! Copy fluxes from RRTGMP types into model radiation types. + ! Mandatory outputs - topfsw(:)%upfxc = fluxswUP_allsky(:,iTOA) - topfsw(:)%upfx0 = fluxswUP_clrsky(:,iTOA) - topfsw(:)%dnfxc = fluxswDOWN_allsky(:,iTOA) - sfcfsw(:)%upfxc = fluxswUP_allsky(:,iSFC) - sfcfsw(:)%upfx0 = fluxswUP_clrsky(:,iSFC) - sfcfsw(:)%dnfxc = fluxswDOWN_allsky(:,iSFC) - sfcfsw(:)%dnfx0 = fluxswDOWN_clrsky(:,iSFC) + do i=1,nCol + topfsw(i)%upfxc = fluxswUP_allsky(i,iTOA) + topfsw(i)%upfx0 = fluxswUP_clrsky(i,iTOA) + topfsw(i)%dnfxc = fluxswDOWN_allsky(i,iTOA) + sfcfsw(i)%upfxc = fluxswUP_allsky(i,iSFC) + sfcfsw(i)%upfx0 = fluxswUP_clrsky(i,iSFC) + sfcfsw(i)%dnfxc = fluxswDOWN_allsky(i,iSFC) + sfcfsw(i)%dnfx0 = fluxswDOWN_clrsky(i,iSFC) + enddo ! Optional output if(l_fluxessw2D) then @@ -194,10 +197,10 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky flxprf_sw(:,:)%upfx0 = fluxswUP_clrsky(:,:) flxprf_sw(:,:)%dnfx0 = fluxswDOWN_clrsky(:,:) endif - + ! Surface down and up spectral component fluxes ! - Save two spectral bands' surface downward and upward fluxes for output. - if (l_scmpsw) then + if (l_scmpsw) then do i=1,nCol nirbmdi(i) = scmpsw(i)%nirbm nirdfdi(i) = scmpsw(i)%nirdf @@ -209,15 +212,17 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky visdfui(i) = scmpsw(i)%visdf * sfc_alb_uvvis_dif(1,i) enddo else - nirbmdi(:) = 0.0 - nirdfdi(:) = 0.0 - visbmdi(:) = 0.0 - visdfdi(:) = 0.0 - nirbmui(:) = 0.0 - nirdfui(:) = 0.0 - visbmui(:) = 0.0 - visdfui(:) = 0.0 - endif + do i=1,nCol + nirbmdi(i) = 0.0 + nirdfdi(i) = 0.0 + visbmdi(i) = 0.0 + visdfdi(i) = 0.0 + nirbmui(i) = 0.0 + nirdfui(i) = 0.0 + visbmui(i) = 0.0 + visdfui(i) = 0.0 + enddo + endif else ! if_nday_block ! ####################################################################################### ! Dark everywhere @@ -225,15 +230,17 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky htrsw(:,:) = 0.0 sfcfsw = sfcfsw_type( 0.0, 0.0, 0.0, 0.0 ) topfsw = topfsw_type( 0.0, 0.0, 0.0 ) - nirbmdi(:) = 0.0 - nirdfdi(:) = 0.0 - visbmdi(:) = 0.0 - visdfdi(:) = 0.0 - nirbmui(:) = 0.0 - nirdfui(:) = 0.0 - visbmui(:) = 0.0 - visdfui(:) = 0.0 - + do i=1,nCol + nirbmdi(i) = 0.0 + nirdfdi(i) = 0.0 + visbmdi(i) = 0.0 + visdfdi(i) = 0.0 + nirbmui(i) = 0.0 + nirdfui(i) = 0.0 + visbmui(i) = 0.0 + visdfui(i) = 0.0 + enddo + if (do_sw_clrsky_hr) then htrswc(:,:) = 0 endif @@ -279,7 +286,7 @@ subroutine GFS_rrtmgp_sw_post_run (nCol, nLev, nDay, idxday, lsswr, do_sw_clrsky fluxr(i,27) = fluxr(i,27) + nirdfdi(i) * tem0d ! nir diff sw dn ! SW clear-sky fluxes fluxr(i,29) = fluxr(i,29) + topfsw(i)%upfx0 * tem0d - fluxr(i,31) = fluxr(i,31) + sfcfsw(i)%upfx0 * tem0d + fluxr(i,31) = fluxr(i,31) + sfcfsw(i)%upfx0 * tem0d fluxr(i,32) = fluxr(i,32) + sfcfsw(i)%dnfx0 * tem0d endif enddo From 32af5e9862fcd89fa3d1da9774ec20b71f7edb12 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Thu, 23 Sep 2021 18:33:33 +0000 Subject: [PATCH 24/98] just adding ablank --- physics/radiation_surface.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 7437ca203..02aa601a3 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -893,7 +893,7 @@ subroutine setemis & else tmp1 = (fracl(i)-fsno) / fracl(i) semis_lnd(i) = semis_lnd(i) * tmp1 & - & + emsref(8) *(f_one-tmp1) + & + emsref(8) * (f_one-tmp1) endif endif if (fraci(i) > f_zero) then From f506e4d2cb9d5e62f166d6f08ec4493cd17d03b3 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Fri, 24 Sep 2021 14:23:58 +0000 Subject: [PATCH 25/98] some cimin bug fix --- physics/GFS_radiation_surface.F90 | 11 +++++------ physics/radiation_surface.f | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/physics/GFS_radiation_surface.F90 b/physics/GFS_radiation_surface.F90 index 65cfe1858..fa62a67e3 100644 --- a/physics/GFS_radiation_surface.F90 +++ b/physics/GFS_radiation_surface.F90 @@ -103,8 +103,7 @@ subroutine GFS_radiation_surface_run ( & ! Local variables integer :: i real(kind=kind_phys) :: lndp_alb - real(kind=kind_phys) :: cimin - real(kind=kind_phys), dimension(im) :: fracl, fraci, fraco + real(kind=kind_phys), dimension(im) :: fracl, fraci, fraco, cimin logical, dimension(im) :: icy ! Initialize CCPP error handling variables @@ -116,9 +115,9 @@ subroutine GFS_radiation_surface_run ( & do i=1,im if (lakefrac(i) > f_zero) then - cimin = min_lakeice + cimin(i) = min_lakeice else - cimin = min_seaice + cimin(i) = min_seaice endif enddo @@ -133,7 +132,7 @@ subroutine GFS_radiation_surface_run ( & else fracl(i) = f_zero fraco(i) = f_one - if(fice(i) < cimin) then + if(fice(i) < cimin(i)) then fraci(i) = f_zero icy(i) = .false. else @@ -147,7 +146,7 @@ subroutine GFS_radiation_surface_run ( & do i=1,im fracl(i) = landfrac(i) fraco(i) = max(f_zero, f_one - fracl(i)) - if(fice(i) < cimin) then + if(fice(i) < cimin(i)) then fraci(i) = f_zero icy(i) = .false. else diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 7437ca203..02aa601a3 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -893,7 +893,7 @@ subroutine setemis & else tmp1 = (fracl(i)-fsno) / fracl(i) semis_lnd(i) = semis_lnd(i) * tmp1 & - & + emsref(8) *(f_one-tmp1) + & + emsref(8) * (f_one-tmp1) endif endif if (fraci(i) > f_zero) then From bec03dfa425c87a3f03205836afb99e442ca03e5 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 24 Sep 2021 09:49:47 -0600 Subject: [PATCH 26/98] Bug fix in physics/module_mp_thompson.F90: use correct time step for adding aerosol surface emissions, credits @tanyasmirnova --- physics/module_mp_thompson.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 index f05aa8ba2..8bf4a249d 100644 --- a/physics/module_mp_thompson.F90 +++ b/physics/module_mp_thompson.F90 @@ -1469,8 +1469,8 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & !.. Changed 13 May 2013 to fake emissions in which nwfa2d is aerosol !.. number tendency (number per kg per second). if (is_aerosol_aware) then - nwfa1d(kts) = nwfa1d(kts) + nwfa2d(i,j)*dt_in - nifa1d(kts) = nifa1d(kts) + nifa2d(i,j)*dt_in + nwfa1d(kts) = nwfa1d(kts) + nwfa2d(i,j)*dt + nifa1d(kts) = nifa1d(kts) + nifa2d(i,j)*dt do k = kts, kte nc(i,k,j) = nc1d(k) From c4e975c224c3193a2dd437ec5dc75d388f6c3156 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 24 Sep 2021 12:40:32 -0600 Subject: [PATCH 27/98] Remove Noah WRFv4 --- physics/gfdl_sfc_layer.F90 | 9 +- physics/gfdl_sfc_layer.meta | 8 - physics/sfc_noah_wrfv4.F90 | 262 ----- physics/sfc_noah_wrfv4.meta | 770 --------------- physics/sfc_noah_wrfv4_interstitial.F90 | 758 --------------- physics/sfc_noah_wrfv4_interstitial.meta | 1110 ---------------------- 6 files changed, 2 insertions(+), 2915 deletions(-) delete mode 100644 physics/sfc_noah_wrfv4.F90 delete mode 100644 physics/sfc_noah_wrfv4.meta delete mode 100644 physics/sfc_noah_wrfv4_interstitial.F90 delete mode 100644 physics/sfc_noah_wrfv4_interstitial.meta diff --git a/physics/gfdl_sfc_layer.F90 b/physics/gfdl_sfc_layer.F90 index a9dc3fe98..379c9c856 100644 --- a/physics/gfdl_sfc_layer.F90 +++ b/physics/gfdl_sfc_layer.F90 @@ -100,7 +100,7 @@ end subroutine gfdl_sfc_layer_finalize !! \htmlinclude gfdl_sfc_layer_run.html !! subroutine gfdl_sfc_layer_run (im, nsoil, km, xlat, xlon, flag_iter, lsm, & - lsm_noah, lsm_noahmp, lsm_ruc, lsm_noah_wrfv4, icoef_sf, cplwav, karman,& + lsm_noah, lsm_noahmp, lsm_ruc, icoef_sf, cplwav, karman, & cplwav2atm, lcurr_sf, pert_Cd, ntsflg, sfenth, z1, shdmax, ivegsrc, & vegtype, sigmaf, dt, wet, dry, icy, isltyp, rd, grav, ep1, ep2, smois, & psfc, prsl1, q1, t1, u1, v1, wspd, u10, v10, gsw, glw, tsurf_wat, & @@ -118,15 +118,13 @@ subroutine gfdl_sfc_layer_run (im, nsoil, km, xlat, xlon, flag_iter, lsm, & use namelist_soilveg, only: maxsmc_noah => maxsmc, drysmc_noah => drysmc use namelist_soilveg_ruc, only: maxsmc_ruc => maxsmc, drysmc_ruc => drysmc use noahmp_tables, only: maxsmc_noahmp => smcmax_table, drysmc_noahmp => smcdry_table - use module_sf_noahlsm, only: maxsmc_noah_wrfv4 => maxsmc, drysmc_noah_wrfv4 => drysmc !################################################################################################ implicit none integer, intent(in) :: im, nsoil, km, ivegsrc integer, intent(in) :: lsm, lsm_noah, lsm_noahmp, & - lsm_ruc, lsm_noah_wrfv4, icoef_sf,& - ntsflg + lsm_ruc, icoef_sf, ntsflg logical, intent(in) :: cplwav, cplwav2atm !GJF: this scheme has not been tested with these on logical, intent(in) :: lcurr_sf !GJF: this scheme has not been tested with this option turned on; the variables scurx and scury need to be input in order to use this logical, intent(in) :: pert_Cd !GJF: this scheme has not been tested with this option turned on; the variables ens_random_seed and ens_Cdamp need to be input in order to use this @@ -195,9 +193,6 @@ subroutine gfdl_sfc_layer_run (im, nsoil, km, xlat, xlon, flag_iter, lsm, & else if (lsm == lsm_ruc) then maxsmc = maxsmc_ruc drysmc = drysmc_ruc - else if (lsm == lsm_noah_wrfv4) then - maxsmc = maxsmc_noah_wrfv4 - drysmc = drysmc_noah_wrfv4 else !GJF: These data were from the original GFDL surface layer scheme, but ! rather than being hard-coded here, they should be shared with the diff --git a/physics/gfdl_sfc_layer.meta b/physics/gfdl_sfc_layer.meta index 653860705..88a9ffddc 100644 --- a/physics/gfdl_sfc_layer.meta +++ b/physics/gfdl_sfc_layer.meta @@ -167,14 +167,6 @@ type = integer intent = in optional = F -[lsm_noah_wrfv4] - standard_name = identifier_for_noah_wrfv4_land_surface_scheme - long_name = flag for NOAH WRFv4 land surface model - units = flag - dimensions = () - type = integer - intent = in - optional = F [icoef_sf] standard_name = flag_for_surface_roughness_option_over_water long_name = surface roughness options over water diff --git a/physics/sfc_noah_wrfv4.F90 b/physics/sfc_noah_wrfv4.F90 deleted file mode 100644 index 038adf1c6..000000000 --- a/physics/sfc_noah_wrfv4.F90 +++ /dev/null @@ -1,262 +0,0 @@ -!> \file sfc_noah_wrfv4.F90 -!! This file contains the Noah land surface scheme driver for the version of the scheme found in WRF v4.0. - -!> This module contains the CCPP-compliant Noah land surface scheme driver for -!! the version found in WRF v4.0. - module sfc_noah_wrfv4 - - implicit none - - private - - public :: sfc_noah_wrfv4_init, sfc_noah_wrfv4_run, sfc_noah_wrfv4_finalize - - contains - -!> \ingroup NOAH_LSM_WRFv4 -!! \section arg_table_sfc_noah_wrfv4_init Argument Table -!! \htmlinclude sfc_noah_wrfv4_init.html -!! - subroutine sfc_noah_wrfv4_init(lsm, lsm_noah_wrfv4, nsoil, ua_phys, fasdas, restart, errmsg, errflg) - - use machine, only : kind_phys - - implicit none - - integer, intent(in) :: lsm, lsm_noah_wrfv4, nsoil, fasdas - logical, intent(in) :: ua_phys, restart - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! Initialize CCPP error handling variables - errmsg = '' - errflg = 0 - - if (lsm/=lsm_noah_wrfv4) then - write(errmsg,'(*(a))') "Logic error: namelist choice of LSM is different from NOAH WRFv4" - errflg = 1 - return - end if - - if (nsoil < 2) then - write(errmsg,'(*(a))') "The NOAH WRFv4 scheme expects at least 2 soil layers." - errflg = 1 - return - end if - - if (ua_phys) then - write(errmsg,'(*(a))') "The NOAH WRFv4 scheme has not been tested with ua_phys = T" - errflg = 1 - return - end if - - - if (fasdas > 0) then - write(errmsg,'(*(a))') "The NOAH WRFv4 scheme has not been tested with fasdas > 0" - errflg = 1 - return - end if - - if (restart) then - !GJF: for restart functionality, the host model will need to write/read snotime (time_since_last_snowfall (s)) - write(errmsg,'(*(a))') "The NOAH WRFv4 scheme has not been configured for restarts." - errflg = 1 - return - end if - - !GJF: check for rdlai != F? - !GJF: check for usemonalb != T? - - end subroutine sfc_noah_wrfv4_init - - -!! \section arg_table_sfc_noah_wrfv4_finalize Argument Table -!! \htmlinclude sfc_noah_wrfv4_finalize.html -!! - subroutine sfc_noah_wrfv4_finalize(errmsg, errflg) - - implicit none - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! Initialize CCPP error handling variables - errmsg = '' - errflg = 0 - - end subroutine sfc_noah_wrfv4_finalize - - -!> \defgroup NOAH_LSM_WRFv4 Noah LSM Model from WRF v4.0 -!! \section arg_table_sfc_noah_wrfv4_run Argument Table -!! \htmlinclude sfc_noah_wrfv4_run.html -!! -!> \section general_noah_wrfv4_drv NOAH LSM WRFv4 General Algorithm -!> @{ - subroutine sfc_noah_wrfv4_run ( & - im, isice, flag_lsm, flag_lsm_glacier, srflag, isurban, rdlai, & - ua_phys, usemonalb, aoasis, fasdas, dt, zlvl, & - nsoil, sthick, lwdn, soldn, solnet, sfcprs, prcp, sfctmp, q1k, & - th1, qs1, dqsdt2, vegtyp, soiltyp, slopetyp, shdfac, shmin, & - shmax, albbrd, snoalb, tbot, z0brd, z0k, emissi, embrd, cmc, t1,& - stc, smc, swc, snowhk, sneqv, chk, cp, rd, sigma, cph2o, cpice, & - lsubf, sheat, eta, ec, edir, ett, esnow, etp, ssoil, & - flx1, flx2, flx3, sncovr, runoff1, runoff2, soilm, qsurf, ribb, & - smcwlt, smcref, smcmax, opt_thcnd, snotime, errmsg, errflg) - - use machine , only : kind_phys - use module_sf_noahlsm, only: sflx, lutype, sltype - use module_sf_noahlsm_glacial_only, only: sflx_glacial - - implicit none - - integer, intent(in) :: im, isice, isurban, nsoil, opt_thcnd, fasdas - logical, intent(in) :: rdlai, ua_phys, usemonalb - !GJF: usemonalb = True if the surface diffused shortwave albedo is EITHER read from input OR - ! provided by a previous scheme (like radiation: as is done in GFS_rrtmgp_sw_pre) - real(kind=kind_phys), intent(in) :: aoasis - - real(kind=kind_phys), intent(in) :: dt, cp, rd, sigma, cph2o, cpice, lsubf - - integer, dimension(:), intent(in) :: vegtyp, soiltyp, slopetyp - logical, dimension(:), intent(in) :: flag_lsm, flag_lsm_glacier - real(kind=kind_phys), dimension(:), intent(in) :: srflag, zlvl, lwdn, soldn, solnet, & - sfcprs, prcp, sfctmp, q1k, th1, qs1, & - dqsdt2, shmin, shmax, snoalb, tbot - real(kind=kind_phys), dimension(:), intent(in) :: sthick - - real(kind=kind_phys), dimension(:), intent(inout) :: shdfac, albbrd, z0brd, z0k, emissi, & - cmc, t1, snowhk, sneqv, chk, flx1, & - flx2, flx3, ribb, snotime - real(kind=kind_phys), dimension(:,:), intent(inout) :: stc, smc, swc - - !variables that are intent(out) in module_sf_noahlsm, but are inout here due to being set within an IF statement - real(kind=kind_phys), dimension(:), intent(inout) :: embrd, sheat, eta, ec, & - edir, ett, esnow, etp, ssoil, sncovr, & - runoff1, runoff2, soilm, qsurf, smcwlt, & - smcref, smcmax - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - !GJF: There is some confusion regarding specific humidities vs mixing ratios in NOAH LSM. - ! Looking at module_sf_noahlsm.F, sometimes the comments say mixing ratio and sometimes - ! specific humidity. The WRF code (module_sf_noahdrv.F) specifically converts from mixing - ! ratio to specific humidity in preparation for calling SFLX, so I am assuming that - ! all inputs/outputs into SFLX should be specific humidities, despite some comments in - ! module_sf_noahdrv.F describing arguments saying "mixing ratios". This applies to many - ! arguments into SFLX (q1k, qs1, dqsdt2, eta, qsurf, etc.). - -! local Variables - integer :: i, k - logical, parameter :: local = .false. !(not actually used in SFLX) described in module_sf_noahlsm as: - ! Flag for local-site simulation (where there is no maps for albedo, veg fraction, and roughness - ! true: all LSM parameters (inluding albedo, veg fraction and roughness length) will be defined by three tables - - real(kind=kind_phys) :: dummy - - !GJF: The following variables are part of the interface to SFLX but not required as diagnostic - ! output or otherwise outside of this subroutine (at least as part of a GFS-based suite). - ! If any of these variables are needed by other schemes or diagnostics, one needs to add it to - ! the host model and CCPP metadata. Alternatively, none of these variables NEED to be allocated - ! and one could also just pass in dummy arguments. - ! - ! The variables descriptions are from module_sf_noahlsm.F: - ! - ! albedok (output from SFLX): surface albedo including snow effect (unitless fraction) - ! =snow-free albedo (alb) when sneqv=0, or - ! =fct(msnoalb,alb,vegtyp,shdfac,shdmin) when sneqv>0 - ! eta_kinematic (output from SFLX), eta is what is passed out instead of eta_kinematic - ! fdown (output from SFLX) : Radiation forcing at the surface (W m-2) = SOLDN*(1-alb)+LWDN - ! et (output from SFLX): plant transpiration from a particular root (soil) layer (W m-2) - ! drip (output from SFLX): through-fall of precip and/or dew in excess of canopy water-holding capacity (m) - ! dew (output from SFLX): dewfall (or frostfall for t<273.15) (m) - ! beta (output from SFLX): ratio of actual/potential evap (dimensionless) - ! snomlt (output from SFLX): snow melt (m) (water equivalent) - ! runoff3 (output from SFLX): numerical trunctation in excess of porosity (smcmax) for a given soil layer at the end of a time step (m s-1). - ! rc (output from SFLX): canopy resistance (s m-1) - ! pc (output from SFLX): plant coefficient (unitless fraction, 0-1) where pc*etp = actual transp - ! rsmin (output from SFLX): minimum canopy resistance (s m-1) - ! xlai (output from SFLX): leaf area index (dimensionless) - ! rcs (output from SFLX): incoming solar rc factor (dimensionless) - ! rct (output from SFLX): air temperature rc factor (dimensionless) - ! rcq (output from SFLX): atmos vapor pressure deficit rc factor (dimensionless) - ! rcsoil (output from SFLX): soil moisture rc factor (dimensionless) - ! soilw (output from SFLX): available soil moisture in root zone (unitless fraction between smcwlt and smcmax) - ! smav (output from SFLX): soil moisture availability for each layer, as a fraction between smcwlt and smcmax. - ! smcdry (output from SFLX): dry soil moisture threshold where direct evap frm top layer ends (volumetric) - ! smcmax (output from SFLX): porosity, i.e. saturated value of soil moisture (volumetric) - ! nroot (output from SFLX): number of root layers, a function of veg type, determined in subroutine redprm. - - integer :: nroot - real(kind=kind_phys) :: albedok, eta_kinematic, fdown, drip, dew, beta, snomlt, & - runoff3, rc, pc, rsmin, xlai, rcs, rct, rcq, & - rcsoil, soilw, smcdry - real (kind=kind_phys), dimension(nsoil) :: et, smav - real(kind=kind_phys) :: sfcheadrt, infxsrt, etpnd1 !don't appear to be used unless WRF_HYDRO preprocessor directive is defined and no documentation - real(kind=kind_phys) :: xsda_qfx, hfx_phy, qfx_phy, xqnorm, hcpct_fasdas !only used if fasdas = 1 - - !variables associated with UA_PHYS (not used for now) - real(kind=kind_phys) :: flx4, fvb, fbur, fgsn - - errmsg = '' - errflg = 0 - - do i=1, im - if (flag_lsm(i)) then - !GJF: Why do LSMs want the dynamics time step instead of the physics time step? - call sflx (i, 1, srflag(i), & - isurban, dt, zlvl(i), nsoil, sthick, & !c - local, & !L - lutype, sltype, & !CL - lwdn(i), soldn(i), solnet(i), sfcprs(i), prcp(i), & !F - sfctmp(i), q1k(i), dummy, dummy, dummy, dummy, & !F - th1(i), qs1(i), dqsdt2(i), & !I - vegtyp(i), soiltyp(i), slopetyp(i), shdfac(i), & !I - shmin(i), shmax(i), & !I - albbrd(i), snoalb(i), tbot(i), z0brd(i), z0k(i), & !S - emissi(i), embrd(i), & !S - cmc(i), t1(i), stc(i,:), smc(i,:), swc(i,:), & !H - snowhk(i), sneqv(i), albedok, chk(i), dummy, & !H - cp, rd, sigma, cph2o, cpice, lsubf, & - eta(i), sheat(i), eta_kinematic, fdown, & !O - ec(i), edir(i), et, ett(i), esnow(i), drip, dew, & !O - beta, etp(i), ssoil(i), flx1(i), flx2(i), flx3(i),& !O - flx4, fvb, fbur, fgsn, ua_phys, & !UA - snomlt, sncovr(i), runoff1(i), runoff2(i),runoff3,& !O - rc, pc, rsmin, xlai, rcs, rct, rcq, rcsoil, & !O - soilw, soilm(i), qsurf(i), smav, & !D - rdlai, usemonalb, snotime(i), ribb(i), & - smcwlt(i), smcdry, smcref(i), smcmax(i), nroot, & - sfcheadrt, infxsrt, etpnd1, opt_thcnd, aoasis, & - xsda_qfx, hfx_phy, qfx_phy, xqnorm, fasdas, & !fasdas - hcpct_fasdas, & !fasdas - errflg, errmsg) - if (errflg > 0) return - else if (flag_lsm_glacier(i)) then - !set values that sflx updates, but sflx_glacial does not - soilm(i) = 0.0 - runoff2(i) = 0.0 - swc(i,:) = 1.0 - smc(i,:) = 1.0 - - call sflx_glacial (i, 1, isice, srflag(i), dt, zlvl(i), & - nsoil, sthick, lwdn(i), solnet(i), sfcprs(i), & - prcp(i), sfctmp(i), q1k(i), th1(i), qs1(i), & - dqsdt2(i), albbrd(i), snoalb(i), tbot(i), & - z0brd(i), z0k(i), emissi(i), embrd(i), t1(i), & - stc(i,:), snowhk(i), sneqv(i), albedok, chk(i), & - cp, rd, sigma, cph2o, cpice, lsubf, & - eta(i), sheat(i), eta_kinematic, fdown, esnow(i), & - dew, etp(i), ssoil(i), flx1(i), flx2(i), flx3(i), & - snomlt, sncovr(i), runoff1(i), qsurf(i), & - snotime(i), ribb(i), errflg, errmsg) - if (errflg > 0) return - end if - end do - - end subroutine sfc_noah_wrfv4_run -!> @} - -end module sfc_noah_wrfv4 diff --git a/physics/sfc_noah_wrfv4.meta b/physics/sfc_noah_wrfv4.meta deleted file mode 100644 index e0f2538f6..000000000 --- a/physics/sfc_noah_wrfv4.meta +++ /dev/null @@ -1,770 +0,0 @@ -[ccpp-table-properties] - name = sfc_noah_wrfv4 - type = scheme - dependencies = machine.F,module_sf_noahlsm_glacial_only.F90,module_sf_noahlsm.F90 - -######################################################################## -[ccpp-arg-table] - name = sfc_noah_wrfv4_init - type = scheme -[lsm] - standard_name = control_for_land_surface_scheme - long_name = flag for land surface model - units = flag - dimensions = () - type = integer - intent = in - optional = F -[lsm_noah_wrfv4] - standard_name = identifier_for_noah_wrfv4_land_surface_scheme - long_name = flag for NOAH WRFv4 land surface model - units = flag - dimensions = () - type = integer - intent = in - optional = F -[nsoil] - standard_name = vertical_dimension_of_soil - long_name = soil vertical layer dimension - units = count - dimensions = () - type = integer - intent = in - optional = F -[ua_phys] - standard_name = flag_for_noah_lsm_ua_extension - long_name = flag for using University of Arizona(?) extension for NOAH LSM (see module_sf_noahlsm.F) - units = flag - dimensions = () - type = logical - intent = in - optional = F -[fasdas] - standard_name = control_for_flux_adjusting_surface_data_assimilation_system - long_name = flag to use the flux adjusting surface data assimilation system for NOAH LSM WRFv4 (see module_sf_noahlsm.F) - units = flag - dimensions = () - type = integer - intent = in - optional = F -[restart] - standard_name = flag_for_restart - long_name = flag for restart (warmstart) or coldstart - units = flag - dimensions = () - type = logical - intent = in - optional = F -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out - optional = F -[errflg] - standard_name = ccpp_error_flag - long_name = error flag for error handling in CCPP - units = flag - dimensions = () - type = integer - intent = out - optional = F - -######################################################################## -[ccpp-arg-table] - name = sfc_noah_wrfv4_finalize - type = scheme -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out - optional = F -[errflg] - standard_name = ccpp_error_flag - long_name = error flag for error handling in CCPP - units = flag - dimensions = () - type = integer - intent = out - optional = F - -######################################################################## -[ccpp-arg-table] - name = sfc_noah_wrfv4_run - type = scheme -[im] - standard_name = horizontal_loop_extent - long_name = horizontal loop extent - units = count - dimensions = () - type = integer - intent = in - optional = F -[isice] - standard_name = index_of_ice_vegetation_category - long_name = index of the permanent snow/ice category in the chosen vegetation dataset - units = index - dimensions = () - type = integer - intent = in - optional = F -[flag_lsm] - standard_name = flag_for_calling_land_surface_model - long_name = flag for calling land surface model - units = flag - dimensions = (horizontal_loop_extent) - type = logical - intent = in - optional = F -[flag_lsm_glacier] - standard_name = flag_for_calling_land_surface_model_glacier - long_name = flag for calling land surface model over glacier - units = flag - dimensions = (horizontal_loop_extent) - type = logical - intent = in - optional = F -[srflag] - standard_name = precipitation_type - long_name = flag for snow or rain precipitation - units = flag - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[isurban] - standard_name = index_of_urban_vegetation_category - long_name = index of the urban vegetation category in the chosen vegetation dataset - units = index - dimensions = () - type = integer - intent = in - optional = F -[rdlai] - standard_name = flag_for_reading_leaf_area_index_from_input - long_name = flag for reading leaf area index from initial conditions - units = flag - dimensions = () - type = logical - intent = in - optional = F -[ua_phys] - standard_name = flag_for_noah_lsm_ua_extension - long_name = flag for using University of Arizona(?) extension for NOAH LSM (see module_sf_noahlsm.F) - units = flag - dimensions = () - type = logical - intent = in - optional = F -[usemonalb] - standard_name = flag_for_reading_surface_albedo_for_diffused_shortwave_from_input - long_name = flag for reading surface diffused shortwave albedo for NOAH LSM WRFv4 (see module_sf_noahlsm.F) - units = flag - dimensions = () - type = logical - intent = in - optional = F -[aoasis] - standard_name = multiplicative_tuning_parameter_for_potential_evaporation - long_name = potential evaporation multiplicative factor for NOAH LSM WRFv4 (see module_sf_noahlsm.F) - units = none - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[fasdas] - standard_name = control_for_flux_adjusting_surface_data_assimilation_system - long_name = flag to use the flux adjusting surface data assimilation system for NOAH LSM WRFv4 (see module_sf_noahlsm.F) - units = flag - dimensions = () - type = integer - intent = in - optional = F -[dt] - standard_name = timestep_for_dynamics - long_name = dynamics timestep - units = s - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[zlvl] - standard_name = height_above_ground_at_lowest_model_layer - long_name = height above ground at 1st model layer - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[nsoil] - standard_name = vertical_dimension_of_soil - long_name = soil vertical layer dimension - units = count - dimensions = () - type = integer - intent = in - optional = F -[sthick] - standard_name = thickness_of_soil_layers_for_land_surface_model - long_name = soil layer thickness - units = m - dimensions = (vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = in - optional = F -[lwdn] - standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_land - long_name = total sky surface downward longwave flux absorbed by the ground over land - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[soldn] - standard_name = surface_downwelling_shortwave_flux - long_name = total sky surface downward shortwave flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[solnet] - standard_name = surface_net_downwelling_shortwave_flux - long_name = total sky surface net shortwave flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[sfcprs] - standard_name = air_pressure_at_surface_adjacent_layer - long_name = Model layer 1 mean pressure - units = Pa - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[prcp] - standard_name = total_precipitation_rate_on_dynamics_timestep_over_land - long_name = total precipitation rate in each time step over land - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[sfctmp] - standard_name = air_temperature_at_surface_adjacent_layer - long_name = 1st model layer air temperature - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[q1k] - standard_name = bounded_specific_humidity_at_lowest_model_layer_over_land - long_name = specific humidity at lowest model layer over land bounded between a nonzero epsilon and saturation - units = kg kg-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[th1] - standard_name = potential_temperature_at_lowest_model_layer - long_name = potential_temperature_at_lowest_model_layer - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[qs1] - standard_name = saturation_specific_humidity_at_lowest_model_layer - long_name = saturation specific humidity at lowest model layer - units = kg kg-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[dqsdt2] - standard_name = saturation_specific_humidity_slope - long_name = saturation specific humidity slope at lowest model layer - units = K-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[vegtyp] - standard_name = vegetation_type_classification - long_name = vegetation type at each grid cell - units = index - dimensions = (horizontal_loop_extent) - type = integer - intent = in - optional = F -[soiltyp] - standard_name = soil_type_classification - long_name = soil type at each grid cell - units = index - dimensions = (horizontal_loop_extent) - type = integer - intent = in - optional = F -[slopetyp] - standard_name = surface_slope_classification - long_name = surface slope type at each grid cell - units = index - dimensions = (horizontal_loop_extent) - type = integer - intent = in - optional = F -[shdfac] - standard_name = bounded_vegetation_area_fraction - long_name = areal fractional cover of green vegetation bounded on the bottom - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[shmin] - standard_name = min_vegetation_area_fraction - long_name = min fractional coverage of green vegetation - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[shmax] - standard_name = max_vegetation_area_fraction - long_name = max fractional coverage of green vegetation - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[albbrd] - standard_name = surface_albedo_for_diffused_shortwave_on_radiation_timestep - long_name = mean surface diffused shortwave albedo - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[snoalb] - standard_name = upper_bound_of_max_albedo_assuming_deep_snow - long_name = maximum snow albedo - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[tbot] - standard_name = deep_soil_temperature - long_name = bottom soil temperature - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[z0brd] - standard_name = baseline_surface_roughness_length - long_name = baseline surface roughness length for momentum in meter - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[z0k] - standard_name = surface_roughness_length_over_land - long_name = surface roughness length over land (temporary use as interstitial) - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[emissi] - standard_name = surface_longwave_emissivity_over_land_interstitial - long_name = surface lw emissivity in fraction over land (temporary use as interstitial) - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[embrd] - standard_name = baseline_surface_longwave_emissivity - long_name = baseline surface lw emissivity in fraction - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[cmc] - standard_name = canopy_water_amount_in_m - long_name = canopy water amount in m - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[t1] - standard_name = surface_skin_temperature_after_iteration_over_land - long_name = surface skin temperature after iteration over land - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[stc] - standard_name = soil_temperature - long_name = soil temperature - units = K - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = inout - optional = F -[smc] - standard_name = volume_fraction_of_condensed_water_in_soil - long_name = volumetric fraction of soil moisture - units = frac - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = inout - optional = F -[swc] - standard_name = volume_fraction_of_unfrozen_water_in_soil - long_name = volume fraction of unfrozen soil moisture - units = frac - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = inout - optional = F -[snowhk] - standard_name = actual_snow_depth - long_name = actual snow depth - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[sneqv] - standard_name = water_equivalent_accumulated_snow_depth_over_land - long_name = water equiv of acc snow depth over land - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[chk] - standard_name = surface_conductance_for_heat_and_moisture_in_air_over_land - long_name = surface conductance for heat & moisture over land - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[cp] - standard_name = specific_heat_of_dry_air_at_constant_pressure - long_name = specific heat of dry air at constant pressure - units = J kg-1 K-1 - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[rd] - standard_name = gas_constant_of_dry_air - long_name = ideal gas constant for dry air - units = J kg-1 K-1 - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[sigma] - standard_name = stefan_boltzmann_constant - long_name = Steffan-Boltzmann constant - units = W m-2 K-4 - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[cph2o] - standard_name = specific_heat_of_liquid_water_at_constant_pressure - long_name = specific heat of liquid water at constant pressure - units = J kg-1 K-1 - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[cpice] - standard_name = specific_heat_of_ice_at_constant_pressure - long_name = specific heat of ice at constant pressure - units = J kg-1 K-1 - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[lsubf] - standard_name = latent_heat_of_fusion_of_water_at_0C - long_name = latent heat of fusion - units = J kg-1 - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[sheat] - standard_name = instantaneous_surface_upward_sensible_heat_flux - long_name = surface upward sensible heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[eta] - standard_name = instantaneous_surface_upward_latent_heat_flux - long_name = surface upward latent heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[ec] - standard_name = canopy_upward_latent_heat_flux - long_name = canopy upward latent heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[edir] - standard_name = soil_upward_latent_heat_flux - long_name = soil upward latent heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[ett] - standard_name = transpiration_flux - long_name = total plant transpiration rate - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[esnow] - standard_name = snow_deposition_sublimation_upward_latent_heat_flux - long_name = latent heat flux from snow depo/subl - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[etp] - standard_name = surface_upward_potential_latent_heat_flux_over_land - long_name = surface upward potential latent heat flux over land - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[ssoil] - standard_name = upward_heat_flux_in_soil_over_land - long_name = soil heat flux over land - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[flx1] - standard_name = latent_heat_flux_from_precipitating_snow - long_name = latent heat flux due to precipitating snow - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[flx2] - standard_name = latent_heat_flux_from_freezing_rain - long_name = latent heat flux due to freezing rain - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[flx3] - standard_name = latent_heat_flux_due_to_snowmelt - long_name = latent heat flux due to snowmelt phase change - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[sncovr] - standard_name = surface_snow_area_fraction_over_land - long_name = surface snow area fraction - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[runoff1] - standard_name = surface_runoff_flux_in_m_sm1 - long_name = surface runoff flux in m s-1 - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[runoff2] - standard_name = subsurface_runoff_flux_in_m_sm1 - long_name = subsurface runoff flux in m s-1 - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[soilm] - standard_name = soil_moisture_content_in_m - long_name = soil moisture in meters - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[qsurf] - standard_name = surface_specific_humidity_over_land - long_name = surface air saturation specific humidity over land - units = kg kg-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[ribb] - standard_name = bulk_richardson_number_at_lowest_model_level_over_land - long_name = bulk Richardson number at the surface over land - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[smcwlt] - standard_name = volume_fraction_of_condensed_water_in_soil_at_wilting_point - long_name = soil water fraction at wilting point - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[smcref] - standard_name = threshold_volume_fraction_of_condensed_water_in_soil - long_name = soil moisture threshold - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[smcmax] - standard_name = soil_porosity - long_name = volumetric soil porosity - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[opt_thcnd] - standard_name = control_for_land_surface_scheme_thermal_conductivity_option - long_name = choice for thermal conductivity option (see module_sf_noahlsm) - units = index - dimensions = () - type = integer - intent = in - optional = F -[snotime] - standard_name = time_since_last_snowfall - long_name = elapsed time since last snowfall - units = s - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out - optional = F -[errflg] - standard_name = ccpp_error_flag - long_name = error flag for error handling in CCPP - units = flag - dimensions = () - type = integer - intent = out - optional = F diff --git a/physics/sfc_noah_wrfv4_interstitial.F90 b/physics/sfc_noah_wrfv4_interstitial.F90 deleted file mode 100644 index 7b37de568..000000000 --- a/physics/sfc_noah_wrfv4_interstitial.F90 +++ /dev/null @@ -1,758 +0,0 @@ -!> \file sfc_noah_wrfv4_interstitial.F90 -!! This file contains data preparation for the WRFv4 version of Noah LSM as part of a GFS-based suite. - -!> This module contains the CCPP-compliant data preparation for the WRFv4 version of Noah LSM. - module sfc_noah_wrfv4_pre - - implicit none - - public :: sfc_noah_wrfv4_pre_init, sfc_noah_wrfv4_pre_run, sfc_noah_wrfv4_pre_finalize - - private - - logical :: is_initialized = .false. - - contains - -!> \ingroup NOAH_LSM_WRFv4 -!! \section arg_table_sfc_noah_wrfv4_pre_init Argument Table -!! \htmlinclude sfc_noah_wrfv4_pre_init.html -!! - subroutine sfc_noah_wrfv4_pre_init(lsm, lsm_noah_wrfv4, veg_data_choice, & - soil_data_choice, isurban, isice, iswater, errmsg, errflg) - - use machine, only : kind_phys - - implicit none - - integer, intent(in) :: lsm, lsm_noah_wrfv4, & - veg_data_choice, soil_data_choice - - integer, intent(inout) :: isurban, isice, iswater - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! Local variables - - character(len=256) :: mminlu, mminsl - - ! Initialize CCPP error handling variables - errmsg = '' - errflg = 0 - - if (is_initialized) return - - if (lsm/=lsm_noah_wrfv4) then - write(errmsg,'(*(a))') "Logic error: namelist choice of LSM is different from NOAH WRFv4" - errflg = 1 - return - end if - - select case (veg_data_choice) - case (0) - mminlu = 'USGS' - isurban = 1 - isice = 24 - iswater = 16 - case (1) - mminlu = 'MODIFIED_IGBP_MODIS_NOAH' - isurban = 13 - isice = 15 - iswater = 17 - case (3) - mminlu = 'NLCD40' - isurban = 13 - isice = 15 !or 22? - iswater = 17 !or 21? - case (4) - mminlu = 'USGS-RUC' - isurban = 1 - isice = 24 - iswater = 16 - case (5) - mminlu = 'MODI-RUC' - isurban = 13 - isice = 15 - iswater = 17 - case default - errmsg = 'The value of the ivegsrc physics namelist parameter is incompatible with this version of NOAH LSM' - errflg = 1 - return - end select - - select case (soil_data_choice) - case (1) - mminsl = 'STAS' - case (2) - mminsl = 'STAS-RUC' - case default - errmsg = 'The value of the isot physics namelist parameter is incompatible with this version of NOAH LSM' - errflg = 1 - return - end select - - call soil_veg_gen_parm(trim(mminlu), trim(mminsl), errmsg, errflg) - - is_initialized = .true. - - end subroutine sfc_noah_wrfv4_pre_init - - -!! \section arg_table_sfc_noah_wrfv4_pre_finalize Argument Table -!! \htmlinclude sfc_noah_wrfv4_pre_finalize.html -!! - subroutine sfc_noah_wrfv4_pre_finalize(errmsg, errflg) - - implicit none - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! Initialize CCPP error handling variables - errmsg = '' - errflg = 0 - - end subroutine sfc_noah_wrfv4_pre_finalize - - -!> \ingroup NOAH_LSM_WRFv4 Noah LSM from WRFv4 pre-scheme data preparation -!! \section arg_table_sfc_noah_wrfv4_pre_run Argument Table -!! \htmlinclude sfc_noah_wrfv4_pre_run.html -!! -!> \section general_noah_wrfv4_pre NOAH LSM WRFv4 pre-scheme data preparation General Algorithm -!> @{ - subroutine sfc_noah_wrfv4_pre_run (im, nsoil, ialb, isice, land, & - flag_guess, flag_iter, restart, first_time_step, flag_lsm, & - flag_lsm_glacier, dt, rhowater, rd, rvrdm1, eps, epsm1, sfcprs, tprcp, & - sfctmp, q1, prslki, wind, snwdph, cm, ch, weasd, tsfc, vtype, smc, & - stc, slc, snoalb, prcp, q2k, rho1, qs1, th1, dqsdt2, canopy, cmc, & - snowhk, chk, cmm, chh, weasd_save, snwdph_save, tsfc_save, canopy_save,& - smc_save, stc_save, slc_save, ep, evap, hflx, gflux, drain, evbs, evcw,& - trans, sbsno, snowc, snohf, sthick, errmsg, errflg) - - use machine , only : kind_phys - use funcphys, only : fpvs - use module_sf_noahlsm, only: maxalb - - implicit none - - !GJF: Data preparation and output preparation from SFLX follows the GFS physics code (sfc_drv.F) - ! rather than the WRF code (module_sf_noahdrv.F) in order to "fit in" with other GFS physics-based - ! suites. Another version of this scheme (and the associated post) could potentially be - ! created from the WRF version. No attempt was made to test sensitivities to either approach. - ! Note that the version of NOAH LSM expected here is "generic" - there are no urban, fasdas, or - ! or University of Arizona(?) additions. - - integer, intent(in) :: im, nsoil, ialb, isice - logical, intent(in) :: restart, first_time_step - real(kind=kind_phys), intent(in) :: dt, rhowater, rd, rvrdm1, eps, epsm1 - - logical, dimension(:), intent(in) :: flag_guess, flag_iter, land - real(kind=kind_phys), dimension(:), intent(in) :: sfcprs, tprcp, sfctmp, q1, prslki, wind, cm, ch, snwdph - real(kind=kind_phys), dimension(:), intent(in) :: weasd, tsfc, vtype - real(kind=kind_phys), dimension(:,:), intent(in) :: smc, stc, slc - - logical, dimension(:), intent(inout) :: flag_lsm, flag_lsm_glacier - real(kind=kind_phys), dimension(:), intent(inout) :: snoalb, prcp, q2k, rho1, qs1, th1, dqsdt2, canopy, cmc, snowhk, chk, cmm, chh - real(kind=kind_phys), dimension(:), intent(inout) :: weasd_save, snwdph_save, tsfc_save, canopy_save - real(kind=kind_phys), dimension(:,:), intent(inout) :: smc_save, stc_save, slc_save - real(kind=kind_phys), dimension(:), intent(inout) :: ep, evap, hflx, gflux, drain, evbs, evcw, trans, sbsno, snowc, snohf - real(kind=kind_phys), dimension(:), intent(inout) :: sthick - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - -! local Variables - integer :: i, k - real(kind=kind_phys) :: sneqv - - REAL, PARAMETER :: A2=17.67,A3=273.15,A4=29.65, & - A23M4=A2*(A3-A4) - real(kind=kind_phys), parameter, dimension(4) :: zsoil = (/ -0.1,-0.4,-1.0,-2.0/) !what if nsoil /= 4? - -!> - Initialize CCPP error handling variables - - errmsg = '' - errflg = 0 - - !from module_sf_noahdrv.F/lsminit - if (.not. restart .and. first_time_step .and. ialb == 0) then - do i = 1, im - snoalb(i) = maxalb(int(0.5 + vtype(i)))*0.01 - end do - end if - - do i=1, im - if (land(i) .and. flag_guess(i)) then - weasd_save(i) = weasd(i) - snwdph_save(i) = snwdph(i) - tsfc_save(i) = tsfc(i) - canopy_save(i) = canopy(i) - - do k=1,nsoil - smc_save(i,k) = smc(i,k) - stc_save(i,k) = stc(i,k) - slc_save(i,k) = slc(i,k) - end do - end if - end do - - sthick(1) = - zsoil(1) - do k = 2, nsoil - sthick(k) = zsoil(k-1) - zsoil(k) - enddo - - flag_lsm(:) = .false. - flag_lsm_glacier(:) = .false. - do i=1, im - if (flag_iter(i) .and. land(i)) then - if (vtype(i) == isice) then - flag_lsm_glacier(i) = .true. - else - flag_lsm(i) = .true. - end if - !GJF: module_sf_noahdrv.F from WRF has hardcoded slopetyp = 1; why? replicate here? - !GJF: shdfac is zeroed out for particular combinations of vegetation table source and vegetation types; replicate here? - - ep(i) = 0.0 - evap (i) = 0.0 - hflx (i) = 0.0 - gflux(i) = 0.0 - drain(i) = 0.0 - - evbs (i) = 0.0 - evcw (i) = 0.0 - trans(i) = 0.0 - sbsno(i) = 0.0 - snowc(i) = 0.0 - snohf(i) = 0.0 - - !GJF: could potentially pass in pre-calculated rates instead of calculating here - prcp(i) = rhowater * tprcp(i) / dt - - !GJF: The GFS version of NOAH prepares the specific humidity in sfc_drv.f as follows: - q2k(i) = max(q1(i), 1.e-8) - rho1(i) = sfcprs(i) / (rd*sfctmp(i)*(1.0+rvrdm1*q2k(i))) - - qs1(i) = fpvs( sfctmp(i) ) - qs1(i) = max(eps*qs1(i) / (sfcprs(i)+epsm1*qs1(i)), 1.e-8) - q2k(i) = min(qs1(i), q2k(i)) - - !GJF: could potentially pass in pre-calcualted potential temperature if other schemes also need it (to avoid redundant calculation) - th1(i) = sfctmp(i) * prslki(i) - - !GJF: module_sf_noahdrv.F from WRF modifies dqsdt2 if the surface has snow. - dqsdt2(i)=qs1(i)*a23m4/(sfctmp(i)-a4)**2 - - !GJF: convert canopy moisture from kg m-2 to m - canopy(i) = max(canopy(i), 0.0) !check for positive values in sfc_drv.f - cmc(i) = canopy(i)/rhowater - - !GJF: snow depth passed in to NOAH is conditionally modified differently in GFS and WRF: - sneqv = weasd(i) * 0.001 - snowhk(i) = snwdph(i) * 0.001 - if ( (sneqv /= 0.0 .and. snowhk(i) == 0.) .or. (snowhk(i) <= sneqv) ) then - snowhk(i) = 5.*sneqv - end if - !GJF: GFS version: - ! if (sneqv(i) /= 0.0 .and. snwdph(i) == 0.0) then - ! snowhk(i) = 10.0 * sneqv(i) - ! endif - - !GJF: calculate conductance from surface exchange coefficient - chk(i) = ch(i) * wind(i) - - chh(i) = chk(i) * rho1(i) - cmm(i) = cm(i) * wind(i) - - -!GJF: If the perturbations of vegetation fraction is desired, one could uncomment this code -! and add appropriate arguments to make this work. This is from the GFS version of NOAH LSM -! in sfc_drv.f. - -!> - Call surface_perturbation::ppfbet() to perturb vegetation fraction that goes into gsflx(). -! perturb vegetation fraction that goes into sflx, use the same -! perturbation strategy as for albedo (percentile matching) -!! Following Gehne et al. (2018) \cite gehne_et_al_2018, a perturbation of vegetation -!! fraction is added to account for the uncertainty. A percentile matching technique -!! is applied to guarantee the perturbed vegetation fraction is bounded between 0 and -!! 1. The standard deviation of the perturbations is 0.25 for vegetation fraction of -!! 0.5 and the perturbations go to zero as vegetation fraction approaches its upper -!! or lower bound. - ! vegfp = vegfpert(i) ! sfc-perts, mgehne - ! if (pertvegf(1)>0.0) then - ! ! compute beta distribution parameters for vegetation fraction - ! mv = shdfac - ! sv = pertvegf(1)*mv*(1.-mv) - ! alphav = mv*mv*(1.0-mv)/(sv*sv)-mv - ! betav = alphav*(1.0-mv)/mv - ! ! compute beta distribution value corresponding - ! ! to the given percentile albPpert to use as new albedo - ! call ppfbet(vegfp,alphav,betav,iflag,vegftmp) - ! shdfac = vegftmp - ! endif -! *** sfc-perts, mgehne - endif - end do - - - end subroutine sfc_noah_wrfv4_pre_run - - subroutine soil_veg_gen_parm( mminlu, mminsl, errmsg, errflg) - !this routine is mostly taken from module_sf_noahdrv.F in WRF - use module_sf_noahlsm, only: shdtbl, nrotbl, rstbl, rgltbl, hstbl, snuptbl, & ! begin land use / vegetation variables - maxalb, laimintbl, laimaxtbl, z0mintbl, z0maxtbl, & - albedomintbl, albedomaxtbl, ztopvtbl,zbotvtbl, & - emissmintbl, emissmaxtbl, topt_data, cmcmax_data, & - cfactr_data, rsmax_data, bare, natural, & - low_density_residential, high_density_residential, & - high_intensity_industrial, lucats, lutype, & !end land use / vegetation variables - bb,drysmc,f11, & ! begin soil variables - maxsmc, refsmc,satpsi,satdk,satdw, wltsmc,qtz,& - slcats, sltype, & ! end soil variables - slope_data, sbeta_data,fxexp_data,csoil_data,salp_data,refdk_data, & ! begin NOAH "general" variables - refkdt_data,frzk_data,zbot_data, smlow_data,smhigh_data, & - czil_data, lvcoef_data, slpcats ! end NOAH "general" variables - implicit none - - character(len=*), intent(in) :: mminlu, mminsl - character(len=*), intent(inout) :: errmsg - integer, intent(inout) :: errflg - - integer :: lumatch, iindex, lc, num_slope, iunit_noah - integer :: ierr - integer , parameter :: open_ok = 0 - logical :: opened - - character*128 :: mess , message - character*256 :: a_string - integer , parameter :: loop_max = 10 - integer :: loop_count, i - -!-----SPECIFY VEGETATION RELATED CHARACTERISTICS : -! ALBBCK: SFC albedo (in percentage) -! Z0: Roughness length (m) -! SHDFAC: Green vegetation fraction (in percentage) -! Note: The ALBEDO, Z0, and SHDFAC values read from the following table -! ALBEDO, amd Z0 are specified in LAND-USE TABLE; and SHDFAC is -! the monthly green vegetation data -! CMXTBL: MAX CNPY Capacity (m) -! NROTBL: Rooting depth (layer) -! RSMIN: Mimimum stomatal resistance (s m-1) -! RSMAX: Max. stomatal resistance (s m-1) -! RGL: Parameters used in radiation stress function -! HS: Parameter used in vapor pressure deficit functio -! TOPT: Optimum transpiration air temperature. (K) -! CMCMAX: Maximum canopy water capacity -! CFACTR: Parameter used in the canopy inteception calculati -! SNUP: Threshold snow depth (in water equivalent m) that -! implies 100% snow cover -! LAI: Leaf area index (dimensionless) -! MAXALB: Upper bound on maximum albedo over deep snow -! -!-----READ IN VEGETAION PROPERTIES FROM VEGPARM.TBL -! - iunit_noah = -1 - do i = 20,99 - inquire ( i , opened = opened ) - if ( .not. opened ) then - iunit_noah = i - exit - endif - enddo - - if ( iunit_noah < 0 ) then - errflg = 1 - errmsg = 'sfc_noah_wrfv4_interstitial: set_soil_veg_parm: '// & - 'can not find unused fortran unit to read.' - return - endif - - open(iunit_noah, file='VEGPARM.TBL',form='formatted',status='old',iostat=ierr) - if(ierr .ne. open_ok ) then - errflg = 1 - errmsg = 'sfc_noah_wrfv4_interstitial: set_soil_veg_parm: failure opening VEGPARM.TBL' - return - end if - - lumatch=0 - - loop_count = 0 - read (iunit_noah,fmt='(a)',end=2002) a_string - find_lutype : do while (lumatch == 0) - read (iunit_noah,*,end=2002)lutype - read (iunit_noah,*)lucats,iindex - if(lutype.eq.mminlu)then - !write( mess , * ) 'landuse type = ' // trim ( lutype ) // ' found', lucats,' categories' - !call wrf_message( mess ) - lumatch=1 - else - loop_count = loop_count+1 - !call wrf_message ( "skipping over lutype = " // trim ( lutype ) ) - find_vegetation_parameter_flag : do - read (iunit_noah,fmt='(a)', end=2002) a_string - if ( a_string(1:21) .eq. 'Vegetation Parameters' ) then - exit find_vegetation_parameter_flag - else if ( loop_count .ge. loop_max ) then - errflg = 1 - errmsg = 'sfc_noah_wrfv4_interstitial: set_soil_veg_parm: too many loops in VEGPARM.TBL' - return - endif - enddo find_vegetation_parameter_flag - endif - enddo find_lutype - -! prevent possible array overwrite, Bill Bovermann, IBM, May 6, 2008 - if ( size(shdtbl) < lucats .or. & - size(nrotbl) < lucats .or. & - size(rstbl) < lucats .or. & - size(rgltbl) < lucats .or. & - size(hstbl) < lucats .or. & - size(snuptbl) < lucats .or. & - size(maxalb) < lucats .or. & - size(laimintbl) < lucats .or. & - size(laimaxtbl) < lucats .or. & - size(z0mintbl) < lucats .or. & - size(z0maxtbl) < lucats .or. & - size(albedomintbl) < lucats .or. & - size(albedomaxtbl) < lucats .or. & - size(ztopvtbl) < lucats .or. & - size(zbotvtbl) < lucats .or. & - size(emissmintbl ) < lucats .or. & - size(emissmaxtbl ) < lucats ) then - errflg = 1 - errmsg = 'sfc_noah_wrfv4_interstitial: set_soil_veg_parm: table sizes too small for value of lucats' - return - endif - - if(lutype.eq.mminlu)then - do lc=1,lucats - read (iunit_noah,*)iindex,shdtbl(lc), & - nrotbl(lc),rstbl(lc),rgltbl(lc),hstbl(lc), & - snuptbl(lc),maxalb(lc), laimintbl(lc), & - laimaxtbl(lc),emissmintbl(lc), & - emissmaxtbl(lc), albedomintbl(lc), & - albedomaxtbl(lc), z0mintbl(lc), z0maxtbl(lc),& - ztopvtbl(lc), zbotvtbl(lc) - enddo - - read (iunit_noah,*) - read (iunit_noah,*)topt_data - read (iunit_noah,*) - read (iunit_noah,*)cmcmax_data - read (iunit_noah,*) - read (iunit_noah,*)cfactr_data - read (iunit_noah,*) - read (iunit_noah,*)rsmax_data - read (iunit_noah,*) - read (iunit_noah,*)bare - read (iunit_noah,*) - read (iunit_noah,*)natural - read (iunit_noah,*) - read (iunit_noah,*) - read (iunit_noah,fmt='(a)') a_string - if ( a_string(1:21) .eq. 'Vegetation Parameters' ) then - errflg = 1 - errmsg = 'sfc_noah_wrfv4_interstitial: set_soil_veg_parm: expected low and high density residential, and high density industrial information in VEGPARM.TBL' - return - endif - read (iunit_noah,*)low_density_residential - read (iunit_noah,*) - read (iunit_noah,*)high_density_residential - read (iunit_noah,*) - read (iunit_noah,*)high_intensity_industrial - endif - -2002 continue - - close (iunit_noah) - if (lumatch == 0) then - errflg = 1 - errmsg = 'sfc_noah_wrfv4_interstitial: set_soil_veg_parm: land use dataset '//mminlu//' not found in VEGPARM.TBL.' - return - endif - - - !CALL wrf_dm_bcast_string ( LUTYPE , 4 ) - !CALL wrf_dm_bcast_integer ( LUCATS , 1 ) - !CALL wrf_dm_bcast_integer ( IINDEX , 1 ) - !CALL wrf_dm_bcast_integer ( LUMATCH , 1 ) - !CALL wrf_dm_bcast_real ( SHDTBL , NLUS ) - !CALL wrf_dm_bcast_real ( NROTBL , NLUS ) - !CALL wrf_dm_bcast_real ( RSTBL , NLUS ) - !CALL wrf_dm_bcast_real ( RGLTBL , NLUS ) - !CALL wrf_dm_bcast_real ( HSTBL , NLUS ) - !CALL wrf_dm_bcast_real ( SNUPTBL , NLUS ) - !CALL wrf_dm_bcast_real ( LAIMINTBL , NLUS ) - !CALL wrf_dm_bcast_real ( LAIMAXTBL , NLUS ) - !CALL wrf_dm_bcast_real ( Z0MINTBL , NLUS ) - !CALL wrf_dm_bcast_real ( Z0MAXTBL , NLUS ) - !CALL wrf_dm_bcast_real ( EMISSMINTBL , NLUS ) - !CALL wrf_dm_bcast_real ( EMISSMAXTBL , NLUS ) - !CALL wrf_dm_bcast_real ( ALBEDOMINTBL , NLUS ) - !CALL wrf_dm_bcast_real ( ALBEDOMAXTBL , NLUS ) - !CALL wrf_dm_bcast_real ( ZTOPVTBL , NLUS ) - !CALL wrf_dm_bcast_real ( ZBOTVTBL , NLUS ) - !CALL wrf_dm_bcast_real ( MAXALB , NLUS ) - !CALL wrf_dm_bcast_real ( TOPT_DATA , 1 ) - !CALL wrf_dm_bcast_real ( CMCMAX_DATA , 1 ) - !CALL wrf_dm_bcast_real ( CFACTR_DATA , 1 ) - !CALL wrf_dm_bcast_real ( RSMAX_DATA , 1 ) - !CALL wrf_dm_bcast_integer ( BARE , 1 ) - !CALL wrf_dm_bcast_integer ( NATURAL , 1 ) - !CALL wrf_dm_bcast_integer ( LOW_DENSITY_RESIDENTIAL , 1 ) - !CALL wrf_dm_bcast_integer ( HIGH_DENSITY_RESIDENTIAL , 1 ) - !CALL wrf_dm_bcast_integer ( HIGH_INTENSITY_INDUSTRIAL , 1 ) - -! -!-----READ IN SOIL PROPERTIES FROM SOILPARM.TBL -! - - open(iunit_noah, file='SOILPARM.TBL',form='formatted',status='old',iostat=ierr) - if(ierr .ne. open_ok ) then - errflg = 1 - errmsg = 'sfc_noah_wrfv4_interstitial: set_soil_veg_parm: failure opening SOILPARM.TBL' - return - end if - - !write(mess,*) 'input soil texture classification = ', trim ( mminsl ) - !call wrf_message( mess ) - - lumatch=0 - - read (iunit_noah,*) - read (iunit_noah,2000,end=2003)sltype -2000 format (a4) - read (iunit_noah,*)slcats,iindex - if(sltype.eq.mminsl)then - !write( mess , * ) 'soil texture classification = ', trim ( sltype ) , ' found', & - ! slcats,' categories' - !call wrf_message ( mess ) - lumatch=1 - endif -! prevent possible array overwrite, bill bovermann, ibm, may 6, 2008 - if ( size(bb ) < slcats .or. & - size(drysmc) < slcats .or. & - size(f11 ) < slcats .or. & - size(maxsmc) < slcats .or. & - size(refsmc) < slcats .or. & - size(satpsi) < slcats .or. & - size(satdk ) < slcats .or. & - size(satdw ) < slcats .or. & - size(wltsmc) < slcats .or. & - size(qtz ) < slcats ) then - errflg = 1 - errmsg = 'sfc_noah_wrfv4_interstitial: set_soil_veg_parm: table sizes too small for value of slcats' - return - endif - if(sltype.eq.mminsl)then - do lc=1,slcats - read (iunit_noah,*) iindex,bb(lc),drysmc(lc),f11(lc),maxsmc(lc),& - refsmc(lc),satpsi(lc),satdk(lc), satdw(lc), & - wltsmc(lc), qtz(lc) - enddo - endif - -2003 continue - - close (iunit_noah) - - - ! CALL wrf_dm_bcast_integer ( LUMATCH , 1 ) - ! CALL wrf_dm_bcast_string ( SLTYPE , 4 ) - ! CALL wrf_dm_bcast_string ( MMINSL , 4 ) ! since this is reset above, see oct2 ^ - ! CALL wrf_dm_bcast_integer ( SLCATS , 1 ) - ! CALL wrf_dm_bcast_integer ( IINDEX , 1 ) - ! CALL wrf_dm_bcast_real ( BB , NSLTYPE ) - ! CALL wrf_dm_bcast_real ( DRYSMC , NSLTYPE ) - ! CALL wrf_dm_bcast_real ( F11 , NSLTYPE ) - ! CALL wrf_dm_bcast_real ( MAXSMC , NSLTYPE ) - ! CALL wrf_dm_bcast_real ( REFSMC , NSLTYPE ) - ! CALL wrf_dm_bcast_real ( SATPSI , NSLTYPE ) - ! CALL wrf_dm_bcast_real ( SATDK , NSLTYPE ) - ! CALL wrf_dm_bcast_real ( SATDW , NSLTYPE ) - ! CALL wrf_dm_bcast_real ( WLTSMC , NSLTYPE ) - ! CALL wrf_dm_bcast_real ( QTZ , NSLTYPE ) - - if(lumatch.eq.0)then - errflg = 1 - errmsg = 'sfc_noah_wrfv4_interstitial: set_soil_veg_parm: soil texture dataset '//mminsl//' not found in SOILPARM.TBL.' - return - endif - -! -!-----READ IN GENERAL PARAMETERS FROM GENPARM.TBL -! - - open(iunit_noah, file='GENPARM.TBL',form='formatted',status='old',iostat=ierr) - if(ierr .ne. open_ok ) then - errflg = 1 - errmsg = 'sfc_noah_wrfv4_interstitial: set_soil_veg_parm: failure opening GENPARM.TBL' - return - end if - - read (iunit_noah,*) - read (iunit_noah,*) - read (iunit_noah,*) num_slope - - slpcats=num_slope -! prevent possible array overwrite, bill bovermann, ibm, may 6, 2008 - if ( size(slope_data) < num_slope ) then - errflg = 1 - errmsg = 'sfc_noah_wrfv4_interstitial: set_soil_veg_parm: num_slope too large for slope_data array' - return - endif - - do lc=1,slpcats - read (iunit_noah,*)slope_data(lc) - enddo - - read (iunit_noah,*) - read (iunit_noah,*)sbeta_data - read (iunit_noah,*) - read (iunit_noah,*)fxexp_data - read (iunit_noah,*) - read (iunit_noah,*)csoil_data - read (iunit_noah,*) - read (iunit_noah,*)salp_data - read (iunit_noah,*) - read (iunit_noah,*)refdk_data - read (iunit_noah,*) - read (iunit_noah,*)refkdt_data - read (iunit_noah,*) - read (iunit_noah,*)frzk_data - read (iunit_noah,*) - read (iunit_noah,*)zbot_data - read (iunit_noah,*) - read (iunit_noah,*)czil_data - read (iunit_noah,*) - read (iunit_noah,*)smlow_data - read (iunit_noah,*) - read (iunit_noah,*)smhigh_data - read (iunit_noah,*) - read (iunit_noah,*)lvcoef_data - close (iunit_noah) - - - ! call wrf_dm_bcast_integer ( num_slope , 1 ) - ! call wrf_dm_bcast_integer ( slpcats , 1 ) - ! call wrf_dm_bcast_real ( slope_data , nslope ) - ! call wrf_dm_bcast_real ( sbeta_data , 1 ) - ! call wrf_dm_bcast_real ( fxexp_data , 1 ) - ! call wrf_dm_bcast_real ( csoil_data , 1 ) - ! call wrf_dm_bcast_real ( salp_data , 1 ) - ! call wrf_dm_bcast_real ( refdk_data , 1 ) - ! call wrf_dm_bcast_real ( refkdt_data , 1 ) - ! call wrf_dm_bcast_real ( frzk_data , 1 ) - ! call wrf_dm_bcast_real ( zbot_data , 1 ) - ! call wrf_dm_bcast_real ( czil_data , 1 ) - ! call wrf_dm_bcast_real ( smlow_data , 1 ) - ! call wrf_dm_bcast_real ( smhigh_data , 1 ) - ! call wrf_dm_bcast_real ( lvcoef_data , 1 ) - - end subroutine soil_veg_gen_parm -!----------------------------- -!> @} - - end module sfc_noah_wrfv4_pre - - module sfc_noah_wrfv4_post - - implicit none - - private - - public :: sfc_noah_wrfv4_post_init, sfc_noah_wrfv4_post_run, sfc_noah_wrfv4_post_finalize - - contains - - subroutine sfc_noah_wrfv4_post_init () - end subroutine sfc_noah_wrfv4_post_init - - subroutine sfc_noah_wrfv4_post_finalize () - end subroutine sfc_noah_wrfv4_post_finalize - -!! \section arg_table_sfc_noah_wrfv4_post_run Argument Table -!! \htmlinclude sfc_noah_wrfv4_post_run.html -!! - subroutine sfc_noah_wrfv4_post_run (im, nsoil, land, flag_guess, flag_lsm, & - rhowater, cp, hvap, cmc, rho1, sheat, eta, flx1, flx2, flx3, sncovr, runoff1,& - runoff2, soilm, snowhk, weasd_save, snwdph_save, tsfc_save, tsurf, & - canopy_save, smc_save, stc_save, slc_save, smcmax, canopy, shflx, & - lhflx, snohf, snowc, runoff, drain, stm, weasd, snwdph, tsfc, smc, stc,& - slc, wet1, errmsg, errflg) - - use machine, only : kind_phys - - implicit none - - integer, intent(in) :: im, nsoil - logical, dimension(:), intent(in) :: land, flag_guess, flag_lsm - real(kind=kind_phys), intent(in) :: rhowater, cp, hvap - real(kind=kind_phys), dimension(:), intent(in) :: cmc, rho1, sheat, eta, & - flx1, flx2, flx3, sncovr, runoff1, runoff2, soilm, snowhk - real(kind=kind_phys), dimension(:), intent(in) :: weasd_save, snwdph_save, tsfc_save, tsurf, canopy_save, smcmax - real(kind=kind_phys), dimension(:,:), intent(in) :: smc_save, stc_save, slc_save - - real(kind=kind_phys), dimension(:), intent(inout) :: canopy, shflx, lhflx, & - snohf, snowc, runoff, drain, stm, wet1 - real(kind=kind_phys), dimension(:), intent(inout) :: weasd, snwdph, tsfc - real(kind=kind_phys), dimension(:,:), intent(inout) :: smc, stc, slc - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - !local variables - integer :: i, k - - ! Initialize CCPP error handling variables - errmsg = '' - errflg = 0 - - do i=1, im - if (flag_lsm(i)) then - canopy(i) = cmc(i)*rhowater - snwdph(i) = 1000.0*snowhk(i) - - shflx(i) = sheat(i) / (cp*rho1(i)) - lhflx(i) = eta(i) / (hvap*rho1(i)) - - !aggregating several outputs into one like GFS sfc_drv.F - snohf(i) = flx1(i) + flx2(i) + flx3(i) - - snowc(i) = sncovr(i) !GJF: redundant? - - !convert from m s-1 to kg m-2 s-1 by multiplying by rhowater - runoff(i) = runoff1(i) * rhowater - drain(i) = runoff2(i) * rhowater - - stm(i) = soilm(i) * rhowater - - wet1(i) = smc(i,1) / smcmax(i) !Sarah Lu added 09/09/2010 (for GOCART) - end if - end do - - do i=1, im - if (land(i)) then - if (flag_guess(i)) then - weasd(i) = weasd_save(i) - snwdph(i) = snwdph_save(i) - tsfc(i) = tsfc_save(i) - canopy(i) = canopy_save(i) - - do k=1,nsoil - smc(i,k) = smc_save(i,k) - stc(i,k) = stc_save(i,k) - slc(i,k) = slc_save(i,k) - end do - - else - tsfc(i) = tsurf(i) - end if - end if - end do - - end subroutine sfc_noah_wrfv4_post_run - - end module sfc_noah_wrfv4_post diff --git a/physics/sfc_noah_wrfv4_interstitial.meta b/physics/sfc_noah_wrfv4_interstitial.meta deleted file mode 100644 index bff028fdc..000000000 --- a/physics/sfc_noah_wrfv4_interstitial.meta +++ /dev/null @@ -1,1110 +0,0 @@ -[ccpp-table-properties] - name = sfc_noah_wrfv4_pre - type = scheme - dependencies = machine.F - -######################################################################## -[ccpp-arg-table] - name = sfc_noah_wrfv4_pre_init - type = scheme -[lsm] - standard_name = control_for_land_surface_scheme - long_name = flag for land surface model - units = flag - dimensions = () - type = integer - intent = in - optional = F -[lsm_noah_wrfv4] - standard_name = identifier_for_noah_wrfv4_land_surface_scheme - long_name = flag for NOAH WRFv4 land surface model - units = flag - dimensions = () - type = integer - intent = in - optional = F -[veg_data_choice] - standard_name = control_for_vegetation_dataset - long_name = land use dataset choice - units = index - dimensions = () - type = integer - intent = in - optional = F -[soil_data_choice] - standard_name = control_for_soil_type_dataset - long_name = soil type dataset choice - units = index - dimensions = () - type = integer - intent = in - optional = F -[isurban] - standard_name = index_of_urban_vegetation_category - long_name = index of the urban vegetation category in the chosen vegetation dataset - units = index - dimensions = () - type = integer - intent = inout - optional = F -[isice] - standard_name = index_of_ice_vegetation_category - long_name = index of the permanent snow/ice category in the chosen vegetation dataset - units = index - dimensions = () - type = integer - intent = inout - optional = F -[iswater] - standard_name = index_of_water_vegetation_category - long_name = index of the water body vegetation category in the chosen vegetation dataset - units = index - dimensions = () - type = integer - intent = inout - optional = F -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out - optional = F -[errflg] - standard_name = ccpp_error_flag - long_name = error flag for error handling in CCPP - units = flag - dimensions = () - type = integer - intent = out - optional = F - -######################################################################## -[ccpp-arg-table] - name = sfc_noah_wrfv4_pre_finalize - type = scheme -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out - optional = F -[errflg] - standard_name = ccpp_error_flag - long_name = error flag for error handling in CCPP - units = flag - dimensions = () - type = integer - intent = out - optional = F - -######################################################################## -[ccpp-arg-table] - name = sfc_noah_wrfv4_pre_run - type = scheme -[im] - standard_name = horizontal_loop_extent - long_name = horizontal loop extent - units = count - dimensions = () - type = integer - intent = in - optional = F -[nsoil] - standard_name = vertical_dimension_of_soil - long_name = soil vertical layer dimension - units = count - dimensions = () - type = integer - intent = in - optional = F -[ialb] - standard_name = control_for_surface_albedo - long_name = flag for using climatology alb, based on sfc type - units = flag - dimensions = () - type = integer - intent = in - optional = F -[isice] - standard_name = index_of_ice_vegetation_category - long_name = index of the permanent snow/ice category in the chosen vegetation dataset - units = index - dimensions = () - type = integer - intent = in - optional = F -[land] - standard_name = flag_nonzero_land_surface_fraction - long_name = flag indicating presence of some land surface area fraction - units = flag - dimensions = (horizontal_loop_extent) - type = logical - intent = in - optional = F -[flag_guess] - standard_name = flag_for_guess_run - long_name = flag for guess run - units = flag - dimensions = (horizontal_loop_extent) - type = logical - intent = in - optional = F -[flag_iter] - standard_name = flag_for_iteration - long_name = flag for iteration - units = flag - dimensions = (horizontal_loop_extent) - type = logical - intent = in - optional = F -[restart] - standard_name = flag_for_restart - long_name = flag for restart (warmstart) or coldstart - units = flag - dimensions = () - type = logical - intent = in - optional = F -[first_time_step] - standard_name = flag_for_first_timestep - long_name = flag for first time step for time integration loop (cold/warmstart) - units = flag - dimensions = () - type = logical - intent = in - optional = F -[flag_lsm] - standard_name = flag_for_calling_land_surface_model - long_name = flag for calling land surface model - units = flag - dimensions = (horizontal_loop_extent) - type = logical - intent = inout - optional = F -[flag_lsm_glacier] - standard_name = flag_for_calling_land_surface_model_glacier - long_name = flag for calling land surface model over glacier - units = flag - dimensions = (horizontal_loop_extent) - type = logical - intent = inout - optional = F -[dt] - standard_name = timestep_for_dynamics - long_name = dynamics timestep - units = s - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[rhowater] - standard_name = fresh_liquid_water_density_at_0c - long_name = density of liquid water - units = kg m-3 - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[rd] - standard_name = gas_constant_of_dry_air - long_name = ideal gas constant for dry air - units = J kg-1 K-1 - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[rvrdm1] - standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one - long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) - units = none - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[eps] - standard_name = ratio_of_dry_air_to_water_vapor_gas_constants - long_name = rd/rv - units = none - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[epsm1] - standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one - long_name = (rd/rv) - 1 - units = none - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[sfcprs] - standard_name = air_pressure_at_surface_adjacent_layer - long_name = Model layer 1 mean pressure - units = Pa - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[tprcp] - standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_land - long_name = total precipitation amount in each time step over land - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[sfctmp] - standard_name = air_temperature_at_surface_adjacent_layer - long_name = 1st model layer air temperature - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[q1] - standard_name = specific_humidity_at_surface_adjacent_layer - long_name = 1st model layer specific humidity - units = kg kg-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[prslki] - standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer - long_name = Exner function ratio bt midlayer and interface at 1st layer - units = ratio - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[wind] - standard_name = wind_speed_at_lowest_model_layer - long_name = wind speed at lowest model level - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[snwdph] - standard_name = surface_snow_thickness_water_equivalent_over_land - long_name = water equivalent snow depth over land - units = mm - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[cm] - standard_name = surface_drag_coefficient_for_momentum_in_air_over_land - long_name = surface exchange coeff for momentum over land - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[ch] - standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land - long_name = surface exchange coeff heat & moisture over land - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[weasd] - standard_name = water_equivalent_accumulated_snow_depth_over_land - long_name = water equiv of acc snow depth over land - units = mm - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[tsfc] - standard_name = surface_skin_temperature_over_land - long_name = surface skin temperature over land - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[vtype] - standard_name = vegetation_type_classification_real - long_name = vegetation type for lsm - units = index - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[smc] - standard_name = volume_fraction_of_condensed_water_in_soil - long_name = volumetric fraction of soil moisture - units = frac - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = in - optional = F -[stc] - standard_name = soil_temperature - long_name = soil temperature - units = K - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = in - optional = F -[slc] - standard_name = volume_fraction_of_unfrozen_water_in_soil - long_name = liquid soil moisture - units = frac - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = in - optional = F -[snoalb] - standard_name = upper_bound_of_max_albedo_assuming_deep_snow - long_name = maximum snow albedo - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[prcp] - standard_name = total_precipitation_rate_on_dynamics_timestep_over_land - long_name = total precipitation rate in each time step over land - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[q2k] - standard_name = bounded_specific_humidity_at_lowest_model_layer_over_land - long_name = specific humidity at lowest model layer over land bounded between a nonzero epsilon and saturation - units = kg kg-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[rho1] - standard_name = air_density_at_lowest_model_layer - long_name = air density at lowest model layer - units = kg m-3 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[qs1] - standard_name = saturation_specific_humidity_at_lowest_model_layer - long_name = saturation specific humidity at lowest model layer - units = kg kg-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[th1] - standard_name = potential_temperature_at_lowest_model_layer - long_name = potential_temperature_at_lowest_model_layer - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[dqsdt2] - standard_name = saturation_specific_humidity_slope - long_name = saturation specific humidity slope at lowest model layer - units = K-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[canopy] - standard_name = canopy_water_amount - long_name = canopy moisture content - units = kg m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[cmc] - standard_name = canopy_water_amount_in_m - long_name = canopy water amount in m - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[snowhk] - standard_name = actual_snow_depth - long_name = actual snow depth - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[chk] - standard_name = surface_conductance_for_heat_and_moisture_in_air_over_land - long_name = surface conductance for heat & moisture over land - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[cmm] - standard_name = surface_drag_wind_speed_for_momentum_in_air_over_land - long_name = momentum exchange coefficient over land - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[chh] - standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_land - long_name = thermal exchange coefficient over land - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[weasd_save] - standard_name = water_equivalent_accumulated_snow_depth_over_land_save - long_name = water equiv of acc snow depth over land before entering a physics scheme - units = mm - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[snwdph_save] - standard_name = surface_snow_thickness_water_equivalent_over_land_save - long_name = water equivalent snow depth over land before entering a physics scheme - units = mm - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[tsfc_save] - standard_name = surface_skin_temperature_over_land_save - long_name = surface skin temperature over land before entering a physics scheme - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[canopy_save] - standard_name = canopy_water_amount_save - long_name = canopy water amount before entering a physics scheme - units = kg m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[smc_save] - standard_name = volume_fraction_of_soil_moisture_save - long_name = total soil moisture before entering a physics scheme - units = frac - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = inout - optional = F -[stc_save] - standard_name = soil_temperature_save - long_name = soil temperature before entering a physics scheme - units = K - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = inout - optional = F -[slc_save] - standard_name = volume_fraction_of_unfrozen_soil_moisture_save - long_name = liquid soil moisture before entering a physics scheme - units = frac - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = inout - optional = F -[ep] - standard_name = surface_upward_potential_latent_heat_flux_over_land - long_name = surface upward potential latent heat flux over land - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[evap] - standard_name = kinematic_surface_upward_latent_heat_flux_over_land - long_name = kinematic surface upward latent heat flux over land - units = kg kg-1 m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[hflx] - standard_name = kinematic_surface_upward_sensible_heat_flux_over_land - long_name = kinematic surface upward sensible heat flux over land - units = K m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[gflux] - standard_name = upward_heat_flux_in_soil_over_land - long_name = soil heat flux over land - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[drain] - standard_name = subsurface_runoff_flux - long_name = subsurface runoff flux - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[evbs] - standard_name = soil_upward_latent_heat_flux - long_name = soil upward latent heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[evcw] - standard_name = canopy_upward_latent_heat_flux - long_name = canopy upward latent heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[trans] - standard_name = transpiration_flux - long_name = total plant transpiration rate - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[sbsno] - standard_name = snow_deposition_sublimation_upward_latent_heat_flux - long_name = latent heat flux from snow depo/subl - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[snowc] - standard_name = surface_snow_area_fraction - long_name = surface snow area fraction - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[snohf] - standard_name = snow_freezing_rain_upward_latent_heat_flux - long_name = latent heat flux due to snow and frz rain - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[sthick] - standard_name = thickness_of_soil_layers_for_land_surface_model - long_name = soil layer thickness - units = m - dimensions = (vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = inout - optional = F -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out - optional = F -[errflg] - standard_name = ccpp_error_flag - long_name = error flag for error handling in CCPP - units = flag - dimensions = () - type = integer - intent = out - optional = F - -######################################################################## -[ccpp-table-properties] - name = sfc_noah_wrfv4_post - type = scheme - dependencies = machine.F - -######################################################################## -[ccpp-arg-table] - name = sfc_noah_wrfv4_post_run - type = scheme -[im] - standard_name = horizontal_loop_extent - long_name = horizontal loop extent - units = count - dimensions = () - type = integer - intent = in - optional = F -[nsoil] - standard_name = vertical_dimension_of_soil - long_name = soil vertical layer dimension - units = count - dimensions = () - type = integer - intent = in - optional = F -[land] - standard_name = flag_nonzero_land_surface_fraction - long_name = flag indicating presence of some land surface area fraction - units = flag - dimensions = (horizontal_loop_extent) - type = logical - intent = in - optional = F -[flag_guess] - standard_name = flag_for_guess_run - long_name = flag for guess run - units = flag - dimensions = (horizontal_loop_extent) - type = logical - intent = in - optional = F -[flag_lsm] - standard_name = flag_for_calling_land_surface_model - long_name = flag for calling land surface model - units = flag - dimensions = (horizontal_loop_extent) - type = logical - intent = in - optional = F -[rhowater] - standard_name = fresh_liquid_water_density_at_0c - long_name = density of liquid water - units = kg m-3 - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[cp] - standard_name = specific_heat_of_dry_air_at_constant_pressure - long_name = specific heat of dry air at constant pressure - units = J kg-1 K-1 - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[hvap] - standard_name = latent_heat_of_vaporization_of_water_at_0C - long_name = latent heat of evaporation/sublimation - units = J kg-1 - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F -[cmc] - standard_name = canopy_water_amount_in_m - long_name = canopy water amount in m - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[rho1] - standard_name = air_density_at_lowest_model_layer - long_name = air density at lowest model layer - units = kg m-3 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[sheat] - standard_name = instantaneous_surface_upward_sensible_heat_flux - long_name = surface upward sensible heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[eta] - standard_name = instantaneous_surface_upward_latent_heat_flux - long_name = surface upward latent heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[flx1] - standard_name = latent_heat_flux_from_precipitating_snow - long_name = latent heat flux due to precipitating snow - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[flx2] - standard_name = latent_heat_flux_from_freezing_rain - long_name = latent heat flux due to freezing rain - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[flx3] - standard_name = latent_heat_flux_due_to_snowmelt - long_name = latent heat flux due to snowmelt phase change - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[sncovr] - standard_name = surface_snow_area_fraction_over_land - long_name = surface snow area fraction - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[runoff1] - standard_name = surface_runoff_flux_in_m_sm1 - long_name = surface runoff flux in m s-1 - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[runoff2] - standard_name = subsurface_runoff_flux_in_m_sm1 - long_name = subsurface runoff flux in m s-1 - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[soilm] - standard_name = soil_moisture_content_in_m - long_name = soil moisture in meters - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[snowhk] - standard_name = actual_snow_depth - long_name = actual snow depth - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[weasd_save] - standard_name = water_equivalent_accumulated_snow_depth_over_land_save - long_name = water equiv of acc snow depth over land before entering a physics scheme - units = mm - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[snwdph_save] - standard_name = surface_snow_thickness_water_equivalent_over_land_save - long_name = water equivalent snow depth over land before entering a physics scheme - units = mm - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[tsfc_save] - standard_name = surface_skin_temperature_over_land_save - long_name = surface skin temperature over land before entering a physics scheme (temporary use as interstitial) - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[tsurf] - standard_name = surface_skin_temperature_after_iteration_over_land - long_name = surface skin temperature after iteration over land - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[canopy_save] - standard_name = canopy_water_amount_save - long_name = canopy water amount before entering a physics scheme - units = kg m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[smc_save] - standard_name = volume_fraction_of_soil_moisture_save - long_name = total soil moisture before entering a physics scheme - units = frac - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = in - optional = F -[stc_save] - standard_name = soil_temperature_save - long_name = soil temperature before entering a physics scheme - units = K - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = in - optional = F -[slc_save] - standard_name = volume_fraction_of_unfrozen_soil_moisture_save - long_name = liquid soil moisture before entering a physics scheme - units = frac - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = in - optional = F -[smcmax] - standard_name = soil_porosity - long_name = volumetric soil porosity - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[canopy] - standard_name = canopy_water_amount - long_name = canopy moisture content - units = kg m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[shflx] - standard_name = kinematic_surface_upward_sensible_heat_flux_over_land - long_name = kinematic surface upward sensible heat flux over land - units = K m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[lhflx] - standard_name = kinematic_surface_upward_latent_heat_flux_over_land - long_name = kinematic surface upward latent heat flux over land - units = kg kg-1 m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[snohf] - standard_name = snow_freezing_rain_upward_latent_heat_flux - long_name = latent heat flux due to snow and frz rain - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[snowc] - standard_name = surface_snow_area_fraction - long_name = surface snow area fraction - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[runoff] - standard_name = surface_runoff_flux - long_name = surface runoff flux - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[drain] - standard_name = subsurface_runoff_flux - long_name = subsurface runoff flux - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[stm] - standard_name = soil_moisture_content - long_name = soil moisture - units = kg m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[weasd] - standard_name = water_equivalent_accumulated_snow_depth_over_land - long_name = water equiv of acc snow depth over land - units = mm - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[snwdph] - standard_name = surface_snow_thickness_water_equivalent_over_land - long_name = water equivalent snow depth over land - units = mm - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[tsfc] - standard_name = surface_skin_temperature_over_land - long_name = surface skin temperature over land - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[smc] - standard_name = volume_fraction_of_condensed_water_in_soil - long_name = volumetric fraction of soil moisture - units = frac - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = inout - optional = F -[stc] - standard_name = soil_temperature - long_name = soil temperature - units = K - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = inout - optional = F -[slc] - standard_name = volume_fraction_of_unfrozen_water_in_soil - long_name = liquid soil moisture - units = frac - dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) - type = real - kind = kind_phys - intent = inout - optional = F -[wet1] - standard_name = normalized_soil_wetness - long_name = normalized soil wetness - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out - optional = F -[errflg] - standard_name = ccpp_error_flag - long_name = error flag for error handling in CCPP - units = flag - dimensions = () - type = integer - intent = out - optional = F From 1d3e762159044c0beebea987654f03aa78abc8e4 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Sat, 25 Sep 2021 01:15:16 +0000 Subject: [PATCH 28/98] updating radiation_surface.f --- physics/radiation_surface.f | 87 ++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 39 deletions(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 02aa601a3..d8231e16a 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -802,7 +802,7 @@ subroutine setemis & integer :: ivgtyp real (kind=kind_phys) :: dltg, hdlt, tmp1, tmp2, & - & asnow, argh, hrgh, fsno + & asnow, argh, hrgh, fsno, fsnol, fsnoi real (kind=kind_phys) :: sfcemis_land, sfcemis_ice ! --- reference emiss value for diff surface emiss index @@ -883,22 +883,21 @@ subroutine setemis & endif ! end if_slmsk_block !> - Check for snow covered area. - if ( sncovr(i) > f_zero ) then ! input land/ice area snow cover + if ( sncovr(i)+sncovr_ice(i) > f_zero ) then ! input land/ice area snow cover - fsno = sncovr(i) - sfcemis(i) = sfcemis(i)*(f_one - fsno) + emsref(8)*fsno - if (fracl(i) > f_zero) then - if (fracl(i) <= fsno) then - semis_lnd(i) = emsref(8) - else - tmp1 = (fracl(i)-fsno) / fracl(i) - semis_lnd(i) = semis_lnd(i) * tmp1 & - & + emsref(8) * (f_one-tmp1) - endif +! it is assume here that "snocovr" is the fraction of land covered by snow +! and "snocovr_ice" is the fraction of ice coverd by snow + + if (sncovr(i) > f_zero) then + semis_lnd(i) = semis_lnd(i) * (f_one - sncovr(i)) & + & + emsref(8) * sncovr(i) endif - if (fraci(i) > f_zero) then - semis_ice(i) = emsref(8) + if (sncovr_ice(i) > f_zero) then + semis_ice(i) = semis_ice(i) * (f_one - sncovr_ice(i)) & + & + emsref(8) * sncovr_ice(i) endif + sfcemis(i) = fracl(i)*semis_lnd(i) + fraco(i)*emsref(1) & + & + fraci(i)*semis_ice(i) else ! compute snow cover from snow depth if (abs(fraco(i)-f_one) > epsln .and. & @@ -906,23 +905,36 @@ subroutine setemis & asnow = 0.02*snowf(i) argh = min(0.50, max(.025, 0.01*zorlf(i))) hrgh = min(f_one, max(0.20, 1.0577-1.1538e-3*hprif(i) ) ) - fsno = asnow / (argh + asnow) * hrgh - - sfcemis(i) = sfcemis(i)*(f_one - fsno) + emsref(8)*fsno - - if (fracl(i) > f_zero) then - if (fracl(i) <= fsno) then - semis_lnd(i) = emsref(8) - else - tmp1 = (fracl(i)-fsno) / fracl(i) - semis_lnd(i) = semis_lnd(i) * tmp1 & - & + emsref(8) * (f_one-tmp1) + tmp1 = fracl(i) + fraci(i) + if (tmp1 > f_zero) then + fsno = min(tmp1, asnow / (argh + asnow) * hrgh) + tmp2 = fsno / tmp1 + fsnol = fracl(i) * tmp2 + fsnoi = fraci(i) * tmp2 + + + if (fracl(i) > f_zero) then + if (fracl(i) <= fsnol) then + semis_lnd(i) = emsref(8) + else + tmp1 = (fracl(i)-fsnol) / fracl(i) + semis_lnd(i) = semis_lnd(i) * tmp1 & + & + emsref(8) * (f_one-tmp1) + endif + endif + if (fraci(i) > f_zero) then + if (fraci(i) <= fsnoi) then + semis_ice(i) = emsref(8) + else + tmp1 = (fraci(i)-fsnoi) / fraci(i) + semis_ice(i) = semis_ice(i) * tmp1 & + & + emsref(8) * (f_one-tmp1) + endif endif - endif - if (fraci(i) > f_zero) then - semis_ice(i) = emsref(8) endif endif + sfcemis(i) = fracl(i)*semis_lnd(i) + fraco(i)*emsref(1) & + & + fraci(i)*semis_ice(i) endif ! end if_ialbflg @@ -932,23 +944,20 @@ subroutine setemis & do i = 1, IMAX - !-- ice emissivity - sfcemis_ice = emsref(7) + if ( icy(i) ) then !-- ice emissivity - if ( icy(i) ) then !-- complete or fractional ice if (lsm == lsm_noahmp) then - if ( snowf(i) > f_zero ) then + if (sncovr_ice(i) > f_zero) then + sfcemis_ice = emsref(7) * (f_one-sncovr_ice(i)) & + & + emsref(8) * sncovr_ice(i) + elseif (snowf(i) > f_zero) then asnow = 0.02*snowf(i) argh = min(0.50, max(.025,0.01*zorlf(i))) hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i))) fsno = asnow / (argh + asnow) * hrgh - if (fraci(i) > fsno) then - tmp1 = (fraci(i) - fsno) / fraci(i) - sfcemis_ice = sfcemis_ice*tmp1+emsref(8)*(f_one-tmp1) - else - sfcemis_ice = emsref(8) - endif + fsnoi = min(f_one, fsno / (fraci(i)+fracl(i))) + sfcemis_ice = emsref(7)*(f_one-fsnoi) + emsref(8)*fsnoi endif semis_ice(i) = sfcemis_ice elseif (lsm == lsm_ruc) then @@ -961,7 +970,7 @@ subroutine setemis & sfcemis_land = semis_lnd(i) ! albedo with snow effect from LSM !-- Composite emissivity from land, water and ice fractions. - sfcemis(i) = fracl(i)*sfcemis_land + fraco(i)*emsref(1) & + sfcemis(i) = fracl(i)*sfcemis_land + fraco(i)*emsref(1) & & + fraci(i)*sfcemis_ice enddo ! i From 34aa8c885682f8b67a2c608275398bbaaf340783 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Sat, 25 Sep 2021 01:26:00 +0000 Subject: [PATCH 29/98] updating radiation_surface.f --- physics/radiation_surface.f | 87 ++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 39 deletions(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 02aa601a3..d8231e16a 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -802,7 +802,7 @@ subroutine setemis & integer :: ivgtyp real (kind=kind_phys) :: dltg, hdlt, tmp1, tmp2, & - & asnow, argh, hrgh, fsno + & asnow, argh, hrgh, fsno, fsnol, fsnoi real (kind=kind_phys) :: sfcemis_land, sfcemis_ice ! --- reference emiss value for diff surface emiss index @@ -883,22 +883,21 @@ subroutine setemis & endif ! end if_slmsk_block !> - Check for snow covered area. - if ( sncovr(i) > f_zero ) then ! input land/ice area snow cover + if ( sncovr(i)+sncovr_ice(i) > f_zero ) then ! input land/ice area snow cover - fsno = sncovr(i) - sfcemis(i) = sfcemis(i)*(f_one - fsno) + emsref(8)*fsno - if (fracl(i) > f_zero) then - if (fracl(i) <= fsno) then - semis_lnd(i) = emsref(8) - else - tmp1 = (fracl(i)-fsno) / fracl(i) - semis_lnd(i) = semis_lnd(i) * tmp1 & - & + emsref(8) * (f_one-tmp1) - endif +! it is assume here that "snocovr" is the fraction of land covered by snow +! and "snocovr_ice" is the fraction of ice coverd by snow + + if (sncovr(i) > f_zero) then + semis_lnd(i) = semis_lnd(i) * (f_one - sncovr(i)) & + & + emsref(8) * sncovr(i) endif - if (fraci(i) > f_zero) then - semis_ice(i) = emsref(8) + if (sncovr_ice(i) > f_zero) then + semis_ice(i) = semis_ice(i) * (f_one - sncovr_ice(i)) & + & + emsref(8) * sncovr_ice(i) endif + sfcemis(i) = fracl(i)*semis_lnd(i) + fraco(i)*emsref(1) & + & + fraci(i)*semis_ice(i) else ! compute snow cover from snow depth if (abs(fraco(i)-f_one) > epsln .and. & @@ -906,23 +905,36 @@ subroutine setemis & asnow = 0.02*snowf(i) argh = min(0.50, max(.025, 0.01*zorlf(i))) hrgh = min(f_one, max(0.20, 1.0577-1.1538e-3*hprif(i) ) ) - fsno = asnow / (argh + asnow) * hrgh - - sfcemis(i) = sfcemis(i)*(f_one - fsno) + emsref(8)*fsno - - if (fracl(i) > f_zero) then - if (fracl(i) <= fsno) then - semis_lnd(i) = emsref(8) - else - tmp1 = (fracl(i)-fsno) / fracl(i) - semis_lnd(i) = semis_lnd(i) * tmp1 & - & + emsref(8) * (f_one-tmp1) + tmp1 = fracl(i) + fraci(i) + if (tmp1 > f_zero) then + fsno = min(tmp1, asnow / (argh + asnow) * hrgh) + tmp2 = fsno / tmp1 + fsnol = fracl(i) * tmp2 + fsnoi = fraci(i) * tmp2 + + + if (fracl(i) > f_zero) then + if (fracl(i) <= fsnol) then + semis_lnd(i) = emsref(8) + else + tmp1 = (fracl(i)-fsnol) / fracl(i) + semis_lnd(i) = semis_lnd(i) * tmp1 & + & + emsref(8) * (f_one-tmp1) + endif + endif + if (fraci(i) > f_zero) then + if (fraci(i) <= fsnoi) then + semis_ice(i) = emsref(8) + else + tmp1 = (fraci(i)-fsnoi) / fraci(i) + semis_ice(i) = semis_ice(i) * tmp1 & + & + emsref(8) * (f_one-tmp1) + endif endif - endif - if (fraci(i) > f_zero) then - semis_ice(i) = emsref(8) endif endif + sfcemis(i) = fracl(i)*semis_lnd(i) + fraco(i)*emsref(1) & + & + fraci(i)*semis_ice(i) endif ! end if_ialbflg @@ -932,23 +944,20 @@ subroutine setemis & do i = 1, IMAX - !-- ice emissivity - sfcemis_ice = emsref(7) + if ( icy(i) ) then !-- ice emissivity - if ( icy(i) ) then !-- complete or fractional ice if (lsm == lsm_noahmp) then - if ( snowf(i) > f_zero ) then + if (sncovr_ice(i) > f_zero) then + sfcemis_ice = emsref(7) * (f_one-sncovr_ice(i)) & + & + emsref(8) * sncovr_ice(i) + elseif (snowf(i) > f_zero) then asnow = 0.02*snowf(i) argh = min(0.50, max(.025,0.01*zorlf(i))) hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i))) fsno = asnow / (argh + asnow) * hrgh - if (fraci(i) > fsno) then - tmp1 = (fraci(i) - fsno) / fraci(i) - sfcemis_ice = sfcemis_ice*tmp1+emsref(8)*(f_one-tmp1) - else - sfcemis_ice = emsref(8) - endif + fsnoi = min(f_one, fsno / (fraci(i)+fracl(i))) + sfcemis_ice = emsref(7)*(f_one-fsnoi) + emsref(8)*fsnoi endif semis_ice(i) = sfcemis_ice elseif (lsm == lsm_ruc) then @@ -961,7 +970,7 @@ subroutine setemis & sfcemis_land = semis_lnd(i) ! albedo with snow effect from LSM !-- Composite emissivity from land, water and ice fractions. - sfcemis(i) = fracl(i)*sfcemis_land + fraco(i)*emsref(1) & + sfcemis(i) = fracl(i)*sfcemis_land + fraco(i)*emsref(1) & & + fraci(i)*sfcemis_ice enddo ! i From e39d4e6bf80944a9329c8eaacce7206a90a435fa Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Sat, 25 Sep 2021 23:54:35 +0000 Subject: [PATCH 30/98] fixing a typo in a comment line --- physics/radiation_surface.f | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index d8231e16a..3c50df6ef 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -885,8 +885,8 @@ subroutine setemis & !> - Check for snow covered area. if ( sncovr(i)+sncovr_ice(i) > f_zero ) then ! input land/ice area snow cover -! it is assume here that "snocovr" is the fraction of land covered by snow -! and "snocovr_ice" is the fraction of ice coverd by snow +! it is assume here that "sncovr" is the fraction of land covered by snow +! and "sncovr_ice" is the fraction of ice coverd by snow if (sncovr(i) > f_zero) then semis_lnd(i) = semis_lnd(i) * (f_one - sncovr(i)) & From f7d43950524f8cffe8a2698091196f419de3adbe Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Sun, 26 Sep 2021 00:14:12 +0000 Subject: [PATCH 31/98] removing some blanks and fixing a typo in comment lines --- physics/radiation_surface.f | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index d8231e16a..036e2597b 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -96,9 +96,9 @@ !! !!\version NCEP-Radiation_surface v5.1 Nov 2012 -!> This module sets up surface albedo for SW radiation and surface +!> This module sets up surface albedo for SW radiation and surface !! emissivity for LW radiation. - module module_radiation_surface + module module_radiation_surface ! !! \section arg_table_module_radiation_surface !! \htmlinclude module_radiation_surface.html @@ -631,7 +631,7 @@ subroutine setalb & ! direct asevb_ice = asevd_ice asenb_ice = asend_ice - + if (fsno0 > f_zero) then ! Snow on ice dtgd = max(f_zero, min(5.0, (con_ttp-tisfc(i)) )) @@ -647,7 +647,7 @@ subroutine setalb & asnvb = asnvd asnnb = asnnd endif - + ! composite ice and snow albedos asevd_ice = asevd_ice * (1. - fsno0) + asnvd * fsno0 asend_ice = asend_ice * (1. - fsno0) + asnnd * fsno0 @@ -885,8 +885,8 @@ subroutine setemis & !> - Check for snow covered area. if ( sncovr(i)+sncovr_ice(i) > f_zero ) then ! input land/ice area snow cover -! it is assume here that "snocovr" is the fraction of land covered by snow -! and "snocovr_ice" is the fraction of ice coverd by snow +! it is assume here that "sncovr" is the fraction of land covered by snow +! and "sncovr_ice" is the fraction of ice coverd by snow if (sncovr(i) > f_zero) then semis_lnd(i) = semis_lnd(i) * (f_one - sncovr(i)) & @@ -911,7 +911,6 @@ subroutine setemis & tmp2 = fsno / tmp1 fsnol = fracl(i) * tmp2 fsnoi = fraci(i) * tmp2 - if (fracl(i) > f_zero) then if (fracl(i) <= fsnol) then From 9e14237c5cc973a4561149cbb57faae6d18cdf54 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Sun, 26 Sep 2021 00:16:28 +0000 Subject: [PATCH 32/98] remove some blanks in radiation_surface --- physics/radiation_surface.f | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 3c50df6ef..036e2597b 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -96,9 +96,9 @@ !! !!\version NCEP-Radiation_surface v5.1 Nov 2012 -!> This module sets up surface albedo for SW radiation and surface +!> This module sets up surface albedo for SW radiation and surface !! emissivity for LW radiation. - module module_radiation_surface + module module_radiation_surface ! !! \section arg_table_module_radiation_surface !! \htmlinclude module_radiation_surface.html @@ -631,7 +631,7 @@ subroutine setalb & ! direct asevb_ice = asevd_ice asenb_ice = asend_ice - + if (fsno0 > f_zero) then ! Snow on ice dtgd = max(f_zero, min(5.0, (con_ttp-tisfc(i)) )) @@ -647,7 +647,7 @@ subroutine setalb & asnvb = asnvd asnnb = asnnd endif - + ! composite ice and snow albedos asevd_ice = asevd_ice * (1. - fsno0) + asnvd * fsno0 asend_ice = asend_ice * (1. - fsno0) + asnnd * fsno0 @@ -911,7 +911,6 @@ subroutine setemis & tmp2 = fsno / tmp1 fsnol = fracl(i) * tmp2 fsnoi = fraci(i) * tmp2 - if (fracl(i) > f_zero) then if (fracl(i) <= fsnol) then From bb59e9646a411f9da7ffc20ad1f164621c7a353d Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Mon, 27 Sep 2021 18:14:36 +0000 Subject: [PATCH 33/98] fix typo in comments --- physics/radiation_surface.f | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 036e2597b..32682453e 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -885,8 +885,8 @@ subroutine setemis & !> - Check for snow covered area. if ( sncovr(i)+sncovr_ice(i) > f_zero ) then ! input land/ice area snow cover -! it is assume here that "sncovr" is the fraction of land covered by snow -! and "sncovr_ice" is the fraction of ice coverd by snow +! it is assumed here that "sncovr" is the fraction of land covered by snow +! and "sncovr_ice" is the fraction of ice covered by snow if (sncovr(i) > f_zero) then semis_lnd(i) = semis_lnd(i) * (f_one - sncovr(i)) & From 3618e665523f3fb41bb68347e806ac787907873c Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Tue, 28 Sep 2021 16:05:16 +0000 Subject: [PATCH 34/98] updating to use estimated emissivity from the ice model when coupled --- physics/GFS_phys_time_vary.fv3.meta | 4 +- physics/GFS_radiation_surface.F90 | 6 +-- physics/GFS_radiation_surface.meta | 12 +++++- physics/GFS_surface_composites.F90 | 62 +++++++++++++---------------- physics/GFS_surface_composites.meta | 30 +------------- physics/radiation_surface.f | 55 +++++++++++++++---------- physics/sfc_drv_ruc.F90 | 8 ++-- physics/sfc_drv_ruc.meta | 13 +----- physics/sfc_sice.f | 51 ++++++++++++++---------- physics/sfc_sice.meta | 51 ++++++++++++++++++------ 10 files changed, 156 insertions(+), 136 deletions(-) diff --git a/physics/GFS_phys_time_vary.fv3.meta b/physics/GFS_phys_time_vary.fv3.meta index 3fb2473bd..b55ecda4d 100644 --- a/physics/GFS_phys_time_vary.fv3.meta +++ b/physics/GFS_phys_time_vary.fv3.meta @@ -1746,8 +1746,8 @@ intent = inout optional = F [tisfc] - standard_name = sea_ice_temperature - long_name = sea ice surface skin temperature + standard_name = surface_skin_temperature_over_ice + long_name = surface skin temperature over ice units = K dimensions = (horizontal_dimension) type = real diff --git a/physics/GFS_radiation_surface.F90 b/physics/GFS_radiation_surface.F90 index 680d1e3e5..cddcd85dd 100644 --- a/physics/GFS_radiation_surface.F90 +++ b/physics/GFS_radiation_surface.F90 @@ -60,7 +60,7 @@ subroutine GFS_radiation_surface_run ( & vtype, xlat, xlon, slmsk, lndp_type, n_var_lndp, sfc_alb_pert, & lndp_var_list, lndp_prt_list, landfrac, snowd, sncovr, & sncovr_ice, fice, zorl, hprime, tsfg, tsfa, tisfc, coszen, & - min_seaice, min_lakeice, lakefrac, & + cplice, min_seaice, min_lakeice, lakefrac, & alvsf, alnsf, alvwf, alnwf, facsf, facwf, & semis_lnd, semis_ice, snoalb, use_cice_alb, & albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, & @@ -74,7 +74,7 @@ subroutine GFS_radiation_surface_run ( & implicit none integer, intent(in) :: im - logical, intent(in) :: frac_grid, lslwr, lsswr, use_cice_alb + logical, intent(in) :: frac_grid, lslwr, lsswr, use_cice_alb, cplice integer, intent(in) :: lsm, lsm_noahmp, lsm_ruc, lndp_type, n_var_lndp real(kind=kind_phys), intent(in) :: min_seaice, min_lakeice @@ -161,7 +161,7 @@ subroutine GFS_radiation_surface_run ( & !> - Call module_radiation_surface::setemis(),to set up surface !! emissivity for LW radiation. call setemis (lsm, lsm_noahmp, lsm_ruc, vtype, & - frac_grid, xlon, xlat, slmsk, & + frac_grid,cplice,lakefrac, xlon, xlat, slmsk,& ! frac_grid, min_seaice, xlon, xlat, slmsk, & snowd, sncovr, sncovr_ice, zorl, tsfg, tsfa, & hprime, semis_lnd, semis_ice, im, & diff --git a/physics/GFS_radiation_surface.meta b/physics/GFS_radiation_surface.meta index f021cfe4d..2bfe12658 100644 --- a/physics/GFS_radiation_surface.meta +++ b/physics/GFS_radiation_surface.meta @@ -279,8 +279,8 @@ intent = in optional = F [tisfc] - standard_name = sea_ice_temperature - long_name = sea ice surface skin temperature + standard_name = surface_skin_temperature_over_ice + long_name = surface_skin_temperature_over_ice units = K dimensions = (horizontal_loop_extent) type = real @@ -296,6 +296,14 @@ kind = kind_phys intent = in optional = F +[cplice] + standard_name = flag_for_sea_ice_coupling + long_name = flag controlling cplice collection (default on) + units = flag + dimensions = () + type = logical + intent = in + optional = F [min_seaice] standard_name = min_sea_ice_area_fraction long_name = minimum sea ice value diff --git a/physics/GFS_surface_composites.F90 b/physics/GFS_surface_composites.F90 index 76da96a4c..ea67cbd43 100644 --- a/physics/GFS_surface_composites.F90 +++ b/physics/GFS_surface_composites.F90 @@ -33,7 +33,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra snowd, snowd_lnd, snowd_ice, tprcp, tprcp_wat, & tprcp_lnd, tprcp_ice, uustar, uustar_wat, uustar_lnd, uustar_ice, & weasd, weasd_lnd, weasd_ice, ep1d_ice, tsfc, tsfco, tsfcl, tsfc_wat, & - tsfc_ice, tisfc, tsurf_wat, tsurf_lnd, tsurf_ice, & + tisfc, tsurf_wat, tsurf_lnd, tsurf_ice, & gflx_ice, tgice, islmsk, islmsk_cice, slmsk, semis_wat, semis_lnd, semis_ice, & qss, qss_wat, qss_lnd, qss_ice, & min_lakeice, min_seaice, kdt, errmsg, errflg) @@ -52,7 +52,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra real(kind=kind_phys), dimension(:), intent(inout) :: tsfc, tsfco, tsfcl, tisfc real(kind=kind_phys), dimension(:), intent(inout) :: snowd_lnd, snowd_ice, tprcp_wat, & - tprcp_lnd, tprcp_ice, tsfc_wat, tsfc_ice, tsurf_wat,tsurf_lnd, tsurf_ice, & + tprcp_lnd, tprcp_ice, tsfc_wat, tsurf_wat,tsurf_lnd, tsurf_ice, & uustar_wat, uustar_lnd, uustar_ice, weasd_lnd, weasd_ice, & qss_wat, qss_lnd, qss_ice, ep1d_ice, gflx_ice real(kind=kind_phys), intent(in ) :: tgice @@ -236,7 +236,6 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra if (icy(i)) then ! Ice uustar_ice(i) = uustar(i) weasd_ice(i) = weasd(i) - tsfc_ice(i) = tisfc(i) tsurf_ice(i) = tisfc(i) ep1d_ice(i) = zero gflx_ice(i) = zero @@ -417,7 +416,8 @@ subroutine GFS_surface_composites_post_run ( 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, tsfc_ice, tisfc, hice, cice, min_seaice, tiice, & + qss_ice, tsfc, tsfco, tsfcl, tsfc_wat, tisfc, hice, cice, tiice, & +! qss_ice, tsfc, tsfco, tsfcl, tsfc_wat, tisfc, hice, cice, min_seaice, tiice, & sigmaf, zvfun, lheatstrg, h0facu, h0facs, hflxq, hffac, stc, & grav, prsik1, prslk1, prslki, z1, ztmax_wat, ztmax_lnd, ztmax_ice, errmsg, errflg) @@ -434,7 +434,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, tsfc_ice, zorlo, zorll, zorli, garea + hflx_ice, 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 @@ -442,7 +442,7 @@ subroutine GFS_surface_composites_post_run ( real(kind=kind_phys), dimension(:), intent(inout) :: hice, cice real(kind=kind_phys), dimension(:), intent(inout) :: sigmaf, zvfun, hflxq, hffac real(kind=kind_phys), intent(in ) :: h0facu, h0facs - real(kind=kind_phys), intent(in ) :: min_seaice +! real(kind=kind_phys), intent(in ) :: min_seaice real(kind=kind_phys), intent(in ) :: rd, rvrdm1 real(kind=kind_phys), dimension(:,:), intent(in ) :: tiice @@ -491,24 +491,24 @@ subroutine GFS_surface_composites_post_run ( ! sigmaf(i) = txl*sigmaf(i) - if (.not. flag_cice(i)) then - if (islmsk(i) == 2) then - evap(i) = txl*evap_lnd(i) + wfrac*evap_ice(i) - hflx(i) = txl*hflx_lnd(i) + wfrac*hflx_ice(i) - qss(i) = txl*qss_lnd(i) + wfrac*qss_ice(i) - gflx(i) = txl*gflx_lnd(i) + wfrac*gflx_ice(i) - else - evap(i) = txl*evap_lnd(i) + wfrac*evap_wat(i) - hflx(i) = txl*hflx_lnd(i) + wfrac*hflx_wat(i) - qss(i) = txl*qss_lnd(i) + wfrac*qss_wat(i) - gflx(i) = txl*gflx_lnd(i) + wfrac*gflx_wat(i) - endif - else +! if (.not. flag_cice(i)) then +! if (islmsk(i) == 2) then +! evap(i) = txl*evap_lnd(i) + wfrac*evap_ice(i) +! hflx(i) = txl*hflx_lnd(i) + wfrac*hflx_ice(i) +! qss(i) = txl*qss_lnd(i) + wfrac*qss_ice(i) +! gflx(i) = txl*gflx_lnd(i) + wfrac*gflx_ice(i) +! else +! evap(i) = txl*evap_lnd(i) + wfrac*evap_wat(i) +! hflx(i) = txl*hflx_lnd(i) + wfrac*hflx_wat(i) +! qss(i) = txl*qss_lnd(i) + wfrac*qss_wat(i) +! gflx(i) = txl*gflx_lnd(i) + wfrac*gflx_wat(i) +! endif +! else evap(i) = txl*evap_lnd(i) + txi*evap_ice(i) + txo*evap_wat(i) hflx(i) = txl*hflx_lnd(i) + txi*hflx_ice(i) + txo*hflx_wat(i) qss(i) = txl*qss_lnd(i) + txi*qss_ice(i) + txo*qss_wat(i) gflx(i) = txl*gflx_lnd(i) + txi*gflx_ice(i) + txo*gflx_wat(i) - endif +! endif !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Call stability for consistent surface properties. Currently this comes from ! @@ -631,12 +631,6 @@ subroutine GFS_surface_composites_post_run ( tisfc(i) = tsfcl(i) ! over land endif ! for coupled model ocean will replace this -! if (icy(i)) tisfc(i) = tsfc_ice(i) ! over ice when uncoupled -! if (icy(i)) tisfc(i) = tice(i) ! over ice when uncoupled - -! if (wet(i) .and. .not. cplflx) then -! tsfco(i) = tsfc_wat(i) ! over lake or ocean when uncoupled -! tisfc(i) = tsfc_ice(i) ! over ice when uncoupled ! endif ! if (.not. flag_cice(i)) then @@ -728,23 +722,23 @@ subroutine GFS_surface_composites_post_run ( qss(i) = qss_ice(i) evap(i) = evap_ice(i) hflx(i) = hflx_ice(i) - tsfc(i) = tsfc_ice(i) ! over lake (and ocean when uncoupled) +! tsfc(i) = tisfc(i) ! over lake (and ocean when uncoupled) ! - if (flag_cice(i)) then - if (wet(i) .and. cice(i) >= min_seaice) then ! this was already done for lake ice in sfc_sice +! if (flag_cice(i)) then +! if (wet(i) .and. cice(i) >= min_seaice) then ! this was already done for lake ice in sfc_sice txi = cice(i) txo = one - txi evap(i) = txi * evap_ice(i) + txo * evap_wat(i) hflx(i) = txi * hflx_ice(i) + txo * hflx_wat(i) - tsfc(i) = txi * tsfc_ice(i) + txo * tsfc_wat(i) + tsfc(i) = txi * tisfc(i) + txo * tsfc_wat(i) stress(i) = txi * stress_ice(i) + txo * stress_wat(i) qss(i) = txi * qss_ice(i) + txo * qss_wat(i) ep1d(i) = txi * ep1d_ice(i) + txo * ep1d_wat(i) zorl(i) = exp(txi*log(zorli(i)) + txo*log(zorlo(i))) - endif - elseif (wet(i)) then ! return updated lake ice thickness & concentration to global array - zorl(i) = exp(cice(i)*log(zorli(i)) + (one-cice(i))*log(zorlo(i))) - endif +! endif +! elseif (wet(i)) then ! return updated lake ice thickness & concentration to global array +! zorl(i) = exp(cice(i)*log(zorli(i)) + (one-cice(i))*log(zorlo(i))) +! endif ! if (wet(i)) then tsfco(i) = tsfc_wat(i) diff --git a/physics/GFS_surface_composites.meta b/physics/GFS_surface_composites.meta index 1462edfb7..dfe7e5261 100644 --- a/physics/GFS_surface_composites.meta +++ b/physics/GFS_surface_composites.meta @@ -380,7 +380,7 @@ kind = kind_phys intent = inout optional = F -[tsfc_ice] +[tisfc] standard_name = surface_skin_temperature_over_ice long_name = surface skin temperature over ice units = K @@ -389,15 +389,6 @@ kind = kind_phys intent = inout optional = F -[tisfc] - standard_name = sea_ice_temperature - long_name = sea ice surface skin temperature - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F [tsurf_wat] standard_name = surface_skin_temperature_after_iteration_over_water long_name = surface skin temperature after iteration over water @@ -1677,22 +1668,13 @@ kind = kind_phys intent = in optional = F -[tsfc_ice] +[tisfc] standard_name = surface_skin_temperature_over_ice long_name = surface skin temperature over ice units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = in - optional = F -[tisfc] - standard_name = sea_ice_temperature - long_name = sea ice surface skin temperature - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys intent = inout optional = F [hice] @@ -1713,14 +1695,6 @@ kind = kind_phys intent = inout optional = F -[min_seaice] - standard_name = min_sea_ice_area_fraction - long_name = minimum sea ice value - units = frac - dimensions = () - type = real - kind = kind_phys - intent = in [tiice] standard_name = temperature_in_ice_layer long_name = sea ice internal temperature diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 036e2597b..0cfd9d30d 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -724,8 +724,8 @@ end subroutine setalb !! @{ !----------------------------------- subroutine setemis & - & ( lsm,lsm_noahmp,lsm_ruc,vtype,frac_grid, & ! --- inputs: - & xlon,xlat,slmsk,snowf,sncovr,sncovr_ice, & + & ( lsm,lsm_noahmp,lsm_ruc,vtype,frac_grid,cplice, & ! --- inputs: + & lakefrac,xlon,xlat,slmsk,snowf,sncovr,sncovr_ice, & & zorlf,tsknf,tairf,hprif, & & semis_lnd,semis_ice,IMAX,fracl,fraco,fraci,icy, & & semisbase, sfcemis & ! --- outputs: @@ -742,6 +742,7 @@ subroutine setemis & ! ==================== defination of variables ==================== ! ! ! ! inputs: ! +! cplice - logical, ".true." when coupled to an ice model ! ! xlon (IMAX) - longitude in radiance, ok for both 0->2pi or ! ! -pi -> +pi ranges ! ! xlat (IMAX) - latitude in radiance, default to pi/2 -> -pi/2 ! @@ -754,7 +755,8 @@ subroutine setemis & ! tsknf (IMAX) - ground surface temperature in k ! ! tairf (IMAX) - lowest model layer air temperature in k ! ! hprif (IMAX) - topographic sdv in m ! -! semis_lnd (IMAX) - emissivity from lsm ! +! semis_lnd (IMAX) - land emissivity ! +! semis_ice (IMAX) - ice emissivity ! ! IMAX - array horizontal dimension ! ! ! ! outputs: ! @@ -780,8 +782,9 @@ subroutine setemis & ! --- inputs integer, intent(in) :: IMAX integer, intent(in) :: lsm, lsm_noahmp, lsm_ruc - logical, intent(in) :: frac_grid - real (kind=kind_phys), dimension(:), intent(in) :: vtype + logical, intent(in) :: frac_grid, cplice + real (kind=kind_phys), dimension(:), intent(in) :: vtype, & + ^ lakefrac real (kind=kind_phys), dimension(:), intent(in) :: & & xlon,xlat, slmsk, snowf,sncovr, sncovr_ice, & @@ -802,7 +805,7 @@ subroutine setemis & integer :: ivgtyp real (kind=kind_phys) :: dltg, hdlt, tmp1, tmp2, & - & asnow, argh, hrgh, fsno, fsnol, fsnoi + & asnow, argh, hrgh, fsno, fsnol, fsnoi, snowc real (kind=kind_phys) :: sfcemis_land, sfcemis_ice ! --- reference emiss value for diff surface emiss index @@ -827,7 +830,11 @@ subroutine setemis & lab_do_IMAX : do i = 1, IMAX - semis_ice(i) = emsref(7) + snowc = sncovr(i) + if (.not. cplice .or. lakefrac(i) > f_zero) then + semis_ice(i) = emsref(7) + snowc = sncovr(i) + sncovr_ice(i) + endif if (fracl(i) < epsln) then ! no land if ( abs(fraco(i)-f_one) < epsln ) then ! open water point sfcemis(i) = emsref(1) @@ -883,7 +890,8 @@ subroutine setemis & endif ! end if_slmsk_block !> - Check for snow covered area. - if ( sncovr(i)+sncovr_ice(i) > f_zero ) then ! input land/ice area snow cover + + if (snowc > f_zero) then ! input land/ice area snow cover ! it is assume here that "sncovr" is the fraction of land covered by snow ! and "sncovr_ice" is the fraction of ice coverd by snow @@ -892,7 +900,7 @@ subroutine setemis & semis_lnd(i) = semis_lnd(i) * (f_one - sncovr(i)) & & + emsref(8) * sncovr(i) endif - if (sncovr_ice(i) > f_zero) then + if (sncovr_ice(i) > f_zero .and. .not. cplice) then semis_ice(i) = semis_ice(i) * (f_one - sncovr_ice(i)) & & + emsref(8) * sncovr_ice(i) endif @@ -921,7 +929,8 @@ subroutine setemis & & + emsref(8) * (f_one-tmp1) endif endif - if (fraci(i) > f_zero) then + if (fraci(i) > f_zero .and. & + & (lakefrac(i) > f_zero .or. .not. cplice)) then if (fraci(i) <= fsnoi) then semis_ice(i) = emsref(8) else @@ -947,18 +956,22 @@ subroutine setemis & !-- complete or fractional ice if (lsm == lsm_noahmp) then - if (sncovr_ice(i) > f_zero) then - sfcemis_ice = emsref(7) * (f_one-sncovr_ice(i)) & - & + emsref(8) * sncovr_ice(i) - elseif (snowf(i) > f_zero) then - asnow = 0.02*snowf(i) - argh = min(0.50, max(.025,0.01*zorlf(i))) - hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i))) - fsno = asnow / (argh + asnow) * hrgh - fsnoi = min(f_one, fsno / (fraci(i)+fracl(i))) - sfcemis_ice = emsref(7)*(f_one-fsnoi) + emsref(8)*fsnoi + if (.not. cplice .or. lakefrac(i) > f_zero) then + if (sncovr_ice(i) > f_zero) then + sfcemis_ice = emsref(7) * (f_one-sncovr_ice(i)) & + & + emsref(8) * sncovr_ice(i) + elseif (snowf(i) > f_zero) then + asnow = 0.02*snowf(i) + argh = min(0.50, max(.025,0.01*zorlf(i))) + hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i))) + fsno = asnow / (argh + asnow) * hrgh + fsnoi = min(f_one, fsno / (fraci(i)+fracl(i))) + sfcemis_ice = emsref(7)*(f_one-fsnoi) + emsref(8)*fsnoi + endif + semis_ice(i) = sfcemis_ice + else + sfcemis_ice = semis_ice(i) ! output from CICE endif - semis_ice(i) = sfcemis_ice elseif (lsm == lsm_ruc) then sfcemis_ice = semis_ice(i) ! output from lsm (with snow effect) endif ! lsm check diff --git a/physics/sfc_drv_ruc.F90 b/physics/sfc_drv_ruc.F90 index 3cfd314ff..01d692985 100644 --- a/physics/sfc_drv_ruc.F90 +++ b/physics/sfc_drv_ruc.F90 @@ -370,7 +370,8 @@ subroutine lsm_ruc_run & ! inputs & albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, & ! for ice & sfcqc_ice, sfcqv_ice, & - & tice, tsurf_ice, tsnow_ice, z0rl_ice, & + & tsurf_ice, tsnow_ice, z0rl_ice, & +! & tice, tsurf_ice, tsnow_ice, z0rl_ice, & & qsurf_ice, gflux_ice, evap_ice, ep1d_ice, hflx_ice, & & cm_ice, ch_ice, snowfallac_ice, & & albdvis_ice, albdnir_ice, albivis_ice, albinir_ice, & @@ -432,7 +433,8 @@ subroutine lsm_ruc_run & ! inputs ! for ice & weasd_ice, snwdph_ice, tskin_ice, & & tsurf_ice, z0rl_ice, tsnow_ice, & - & sfcqc_ice, sfcqv_ice, fice, tice + & sfcqc_ice, sfcqv_ice, fice +! & sfcqc_ice, sfcqv_ice, fice, tice ! --- in real (kind=kind_phys), dimension(:), intent(in) :: & @@ -1466,7 +1468,7 @@ subroutine lsm_ruc_run & ! inputs if(debug_print) write (0,*)'iter run', i,j, tskin_ice(i),tsurf_ice(i) tskin_lnd(i) = tsurf_lnd(i) tskin_ice(i) = tsurf_ice(i) - tice(i) = tsurf_ice(i) +! tice(i) = tsurf_ice(i) endif ! flag_guess endif ! flag enddo ! i diff --git a/physics/sfc_drv_ruc.meta b/physics/sfc_drv_ruc.meta index bdb058343..a0a3768f5 100644 --- a/physics/sfc_drv_ruc.meta +++ b/physics/sfc_drv_ruc.meta @@ -192,8 +192,8 @@ intent = in optional = F [tsfc_ice] - standard_name = sea_ice_temperature - long_name = sea ice surface skin temperature + standard_name = surface_skin_temperature_over_ice + long_name = surface skin temperature over ice units = K dimensions = (horizontal_dimension) type = real @@ -1543,15 +1543,6 @@ kind = kind_phys intent = inout optional = F -[tice] - standard_name = sea_ice_temperature - long_name = sea ice surface skin temperature - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F [tsurf_ice] standard_name = surface_skin_temperature_after_iteration_over_ice long_name = surface skin temperature after iteration over ice diff --git a/physics/sfc_sice.f b/physics/sfc_sice.f index 176a3e8de..312c35dfa 100644 --- a/physics/sfc_sice.f +++ b/physics/sfc_sice.f @@ -46,9 +46,9 @@ subroutine sfc_sice_run & & sfcemis, dlwflx, sfcnsw, sfcdsw, srflag, & & cm, ch, prsl1, prslki, prsik1, prslk1, wind, & & flag_iter, use_flake, lprnt, ipr, thsfc_loc, & - & hice, fice, tice, weasd, tskin, tprcp, tiice, ep, & ! --- input/outputs: - & snwdph, qsurf, snowmt, gflux, cmm, chh, evap, hflx, & - & islmsk, & + & hice, fice, tice, weasd, tsfc_wat, tprcp, tiice, ep, & ! --- input/outputs: + & snwdph, qss_i, qss_w, snowmt, gflux, cmm, chh, & + & evapi, evapw, hflxi, hflxw, islmsk, & & errmsg, errflg & ) @@ -64,9 +64,10 @@ subroutine sfc_sice_run & ! cm, ch, prsl1, prslki, prsik1, prslk1, wind, ! ! flag_iter, ! ! input/outputs: ! -! hice, fice, tice, weasd, tskin, tprcp, tiice, ep, ! +! hice, fice, tice, weasd, tsfc_wat, tprcp, tiice, ep, ! ! outputs: ! -! snwdph, qsurf, snowmt, gflux, cmm, chh, evap, hflx ) ! +! snwdph, qsurf, snowmt, gflux, cmm, chh, evapi, evapw, ! +! hflxi, hflxw, ) ! ! ! ! subprogram called: ice3lay. ! ! ! @@ -170,26 +171,27 @@ subroutine sfc_sice_run & ! --- input/outputs: real (kind=kind_phys), dimension(:), intent(inout) :: hice, & - & fice, tice, weasd, tskin, tprcp, ep + & fice, tice, weasd, tsfc_wat, tprcp, ep real (kind=kind_phys), dimension(:,:), intent(inout) :: tiice ! --- outputs: real (kind=kind_phys), dimension(:), intent(inout) :: snwdph, & - & qsurf, snowmt, gflux, cmm, chh, evap, hflx + & snowmt, gflux, cmm, chh, evapi, evapw, hflxi, hflxw, & + & qss_i, qss_w character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg ! --- locals: - real (kind=kind_phys), dimension(im) :: ffw, evapi, evapw, & + real (kind=kind_phys), dimension(im) :: ffw, & & sneti, hfd, hfi, & ! & hflxi, hflxw, sneti, snetw, qssi, qssw, hfd, hfi, hfw, & & focn, snof, rch, rho, & & snowd, theta1 real (kind=kind_phys) :: t12, t14, tem, stsice(im,kice) - &, hflxi, hflxw, q0, qs1, qssi, qssw + &, q0, qs1, qssi, qssw real (kind=kind_phys) :: cpinv, hvapi, elocp, snetw ! real (kind=kind_phys) :: cpinv, hvapi, elocp, snetw, cimin logical do_sice @@ -300,7 +302,6 @@ subroutine sfc_sice_run & evapi(i) = elocp * rch(i) * (qssi - q0) evapw(i) = elocp * rch(i) * (qssw - q0) -! evap(i) = fice(i)*evapi(i) + ffw(i)*evapw(i) snetw = sfcdsw(i) * (one - albfw) snetw = min(3.0_kind_phys*sfcnsw(i) & @@ -394,20 +395,25 @@ subroutine sfc_sice_run & ! --- ... calculate sensible heat flux (& evap over sea ice) if(thsfc_loc) then ! Use local potential temperature - hflxi = rch(i) * (tice(i) - theta1(i)) - hflxw = rch(i) * (tgice - theta1(i)) + hflxi(i) = rch(i) * (tice(i) - theta1(i)) + hflxw(i) = rch(i) * (tgice - theta1(i)) else ! Use potential temperature referenced to 1000 hPa - hflxi = rch(i) * (tice(i)/prsik1(i) - theta1(i)) - hflxw = rch(i) * (tgice / prsik1(i) - theta1(i)) + tem = one / prsik1(i) + hflxi(i) = rch(i) * (tice(i)*tem - theta1(i)) + hflxw(i) = rch(i) * (tgice*tem - theta1(i)) endif + tsfc_wat(i) = tgice - hflx(i) = fice(i)*hflxi + ffw(i)*hflxw - evap(i) = fice(i)*evapi(i) + ffw(i)*evapw(i) - tskin(i) = fice(i)*tice(i) + ffw(i)*tgice +! hflx(i) = fice(i)*hflxi + ffw(i)*hflxw +! evap(i) = fice(i)*evapi(i) + ffw(i)*evapw(i) +! tskin(i) = fice(i)*tice(i) + ffw(i)*tgice ! ! --- ... the rest of the output - qsurf(i) = q1(i) + evap(i) / (elocp*rch(i)) + qss_i(i) = q1(i) + evapi(i) / (elocp*rch(i)) + qss_w(i) = q1(i) + evapw(i) / (elocp*rch(i)) + +! qsurf(i) = q1(i) + evap(i) / (elocp*rch(i)) ! --- ... convert snow depth back to mm of water equivalent @@ -415,8 +421,13 @@ subroutine sfc_sice_run & snwdph(i) = weasd(i) * dsi ! snow depth in mm tem = one / rho(i) - hflx(i) = hflx(i) * tem * cpinv - evap(i) = evap(i) * tem * hvapi + hflxi(i) = hflxi(i) * tem * cpinv + hflxw(i) = hflxw(i) * tem * cpinv + evapi(i) = evapi(i) * tem * hvapi + evapw(i) = evapw(i) * tem * hvapi + +! hflx(i) = hflx(i) * tem * cpinv +! evap(i) = evap(i) * tem * hvapi endif enddo ! diff --git a/physics/sfc_sice.meta b/physics/sfc_sice.meta index de0e41de0..f87afeac0 100644 --- a/physics/sfc_sice.meta +++ b/physics/sfc_sice.meta @@ -316,8 +316,8 @@ intent = inout optional = F [tice] - standard_name = sea_ice_temperature - long_name = sea ice surface skin temperature + standard_name = surface_skin_temperature_over_ice + long_name = surface skin temperature over ice units = K dimensions = (horizontal_loop_extent) type = real @@ -333,14 +333,14 @@ kind = kind_phys intent = inout optional = F -[tskin] - standard_name = surface_skin_temperature_over_ice - long_name = surface skin temperature over ice +[tsfc_wat] + standard_name = surface_skin_temperature_over_water + long_name = surface skin temperature over water units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = inout + intent = in optional = F [tprcp] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_ice @@ -378,14 +378,23 @@ kind = kind_phys intent = inout optional = F -[qsurf] +[qss_i] standard_name = surface_specific_humidity_over_ice long_name = surface air saturation specific humidity over ice units = kg kg-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = inout + intent = in + optional = F +[qss_w] + standard_name = surface_specific_humidity_over_water + long_name = surface air saturation specific humidity over water + units = kg kg-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in optional = F [snowmt] standard_name = surface_snow_melt @@ -423,23 +432,41 @@ kind = kind_phys intent = inout optional = F -[evap] +[evapi] standard_name = kinematic_surface_upward_latent_heat_flux_over_ice long_name = kinematic surface upward latent heat flux over ice units = kg kg-1 m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = inout + intent = in + optional = F +[evapw] + standard_name = kinematic_surface_upward_latent_heat_flux_over_water + long_name = kinematic surface upward latent heat flux over water + units = kg kg-1 m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in optional = F -[hflx] +[hflxi] standard_name = kinematic_surface_upward_sensible_heat_flux_over_ice long_name = kinematic surface upward sensible heat flux over ice units = K m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = inout + intent = in + optional = F +[hflxw] + standard_name = kinematic_surface_upward_sensible_heat_flux_over_water + long_name = kinematic surface upward sensible heat flux over water + units = K m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in optional = F [islmsk] standard_name = sea_land_ice_mask_cice From 4d33e7160858e4e00c9dc93c778ab39c44a7bb94 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Wed, 29 Sep 2021 01:36:10 +0000 Subject: [PATCH 35/98] fixing a bug in radiation_surface.f --- physics/radiation_surface.f | 1 + 1 file changed, 1 insertion(+) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 0cfd9d30d..69b8abd85 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -952,6 +952,7 @@ subroutine setemis & do i = 1, IMAX + sfcemis_ice = emsref(7) if ( icy(i) ) then !-- ice emissivity !-- complete or fractional ice From d09eb9cedb3a09413dc754edac631b0fe6e64a48 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Wed, 29 Sep 2021 01:37:38 +0000 Subject: [PATCH 36/98] fixing a bug in radiation_surface.f --- physics/radiation_surface.f | 1 + 1 file changed, 1 insertion(+) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 0cfd9d30d..69b8abd85 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -952,6 +952,7 @@ subroutine setemis & do i = 1, IMAX + sfcemis_ice = emsref(7) if ( icy(i) ) then !-- ice emissivity !-- complete or fractional ice From 7445eb03cd4622264e1af43b81b0e264ba18b8a3 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Thu, 30 Sep 2021 00:32:48 +0000 Subject: [PATCH 37/98] making 'huge' a namelist variable --- physics/GFS_PBL_generic.F90 | 6 +- physics/GFS_PBL_generic.meta | 9 +++ physics/GFS_surface_composites.F90 | 104 ++++++++++++++-------------- physics/GFS_surface_composites.meta | 18 +++++ physics/module_MYNNPBL_wrapper.F90 | 6 +- physics/module_MYNNPBL_wrapper.meta | 9 +++ 6 files changed, 94 insertions(+), 58 deletions(-) diff --git a/physics/GFS_PBL_generic.F90 b/physics/GFS_PBL_generic.F90 index 63e622204..5bbbefe52 100644 --- a/physics/GFS_PBL_generic.F90 +++ b/physics/GFS_PBL_generic.F90 @@ -336,7 +336,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac, dqsfc_diag, dusfci_diag, dvsfci_diag, dtsfci_diag, dqsfci_diag, & rd, cp, fvirt, hvap, t1, q1, prsl, hflx, ushfsfci, oceanfrac, kdt, dusfc_cice, dvsfc_cice, & dtsfc_cice, dqsfc_cice, wet, dry, icy, wind, stress_wat, hflx_wat, evap_wat, ugrs1, vgrs1, hffac, & - ugrs, vgrs, tgrs, qgrs, save_u, save_v, save_t, save_q, errmsg, errflg) + ugrs, vgrs, tgrs, qgrs, save_u, save_v, save_t, save_q, huge, errmsg, errflg) use machine, only : kind_phys use GFS_PBL_generic_common, only : set_aerosol_tracer_index @@ -357,7 +357,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac, real(kind=kind_phys), dimension(:,:, :), intent(in) :: save_q real(kind=kind_phys), intent(in) :: dtf - real(kind=kind_phys), intent(in) :: rd, cp, fvirt, hvap + real(kind=kind_phys), intent(in) :: rd, cp, fvirt, hvap, huge real(kind=kind_phys), dimension(:), intent(in) :: t1, q1, hflx, oceanfrac real(kind=kind_phys), dimension(:,:), intent(in) :: prsl real(kind=kind_phys), dimension(:), intent(in) :: dusfc_cice, dvsfc_cice, dtsfc_cice, dqsfc_cice, & @@ -392,7 +392,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac, integer, intent(out) :: errflg real(kind=kind_phys), parameter :: zero = 0.0_kp, one = 1.0_kp - real(kind=kind_phys), parameter :: huge = 9.9692099683868690E36 ! NetCDF float FillValue, same as in GFS_typedefs.F90 +! real(kind=kind_phys), parameter :: huge = 9.9692099683868690E36 ! NetCDF float FillValue, same as in GFS_typedefs.F90 real(kind=kind_phys), parameter :: qmin = 1.0e-8_kp integer :: i, k, kk, k1, n real(kind=kind_phys) :: tem, rho diff --git a/physics/GFS_PBL_generic.meta b/physics/GFS_PBL_generic.meta index 59501e467..2dc2d3be7 100644 --- a/physics/GFS_PBL_generic.meta +++ b/physics/GFS_PBL_generic.meta @@ -1383,6 +1383,15 @@ kind = kind_phys intent = in optional = F +[huge] + standard_name = netcdf_float_fillvalue + long_name = definition of NetCDF float FillValue + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/GFS_surface_composites.F90 b/physics/GFS_surface_composites.F90 index ea67cbd43..cbdb2052c 100644 --- a/physics/GFS_surface_composites.F90 +++ b/physics/GFS_surface_composites.F90 @@ -14,7 +14,7 @@ module GFS_surface_composites_pre real(kind=kind_phys), parameter :: zero = 0.0_kind_phys, one = 1.0_kind_phys, epsln = 1.0e-10_kind_phys - real(kind=kind_phys), parameter :: huge = 9.9692099683868690E36 ! NetCDF float FillValue +! real(kind=kind_phys), parameter :: huge = 9.9692099683868690E36 ! NetCDF float FillValue contains @@ -36,7 +36,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra tisfc, tsurf_wat, tsurf_lnd, tsurf_ice, & gflx_ice, tgice, islmsk, islmsk_cice, slmsk, semis_wat, semis_lnd, semis_ice, & qss, qss_wat, qss_lnd, qss_ice, & - min_lakeice, min_seaice, kdt, errmsg, errflg) + min_lakeice, min_seaice, kdt, huge, errmsg, errflg) implicit none @@ -58,7 +58,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra real(kind=kind_phys), intent(in ) :: tgice integer, dimension(:), intent(inout) :: islmsk, islmsk_cice real(kind=kind_phys), dimension(:), intent(inout) :: semis_wat, semis_lnd, semis_ice, slmsk - real(kind=kind_phys), intent(in ) :: min_lakeice, min_seaice + real(kind=kind_phys), intent(in ) :: min_lakeice, min_seaice, huge ! real(kind=kind_phys), dimension(:), intent(inout) :: zorlo, zorll, zorli ! @@ -419,7 +419,7 @@ subroutine GFS_surface_composites_post_run ( qss_ice, tsfc, tsfco, tsfcl, tsfc_wat, tisfc, hice, cice, tiice, & ! qss_ice, tsfc, tsfco, tsfcl, tsfc_wat, tisfc, hice, cice, min_seaice, tiice, & sigmaf, zvfun, lheatstrg, h0facu, h0facs, hflxq, hffac, stc, & - grav, prsik1, prslk1, prslki, z1, ztmax_wat, ztmax_lnd, ztmax_ice, errmsg, errflg) + grav, prsik1, prslk1, prslki, z1, ztmax_wat, ztmax_lnd, ztmax_ice, huge, errmsg, errflg) implicit none @@ -443,16 +443,16 @@ subroutine GFS_surface_composites_post_run ( real(kind=kind_phys), dimension(:), intent(inout) :: sigmaf, zvfun, hflxq, hffac real(kind=kind_phys), intent(in ) :: h0facu, h0facs ! real(kind=kind_phys), intent(in ) :: min_seaice - real(kind=kind_phys), intent(in ) :: rd, rvrdm1 + real(kind=kind_phys), intent(in ) :: rd, rvrdm1, huge real(kind=kind_phys), dimension(:,:), intent(in ) :: tiice real(kind=kind_phys), dimension(:,:), intent(inout) :: stc ! Additional data needed for calling "stability" - logical, intent(in ) :: thsfc_loc - real(kind=kind_phys), intent(in ) :: grav - real(kind=kind_phys), dimension(:), intent(in ) :: prsik1, prslk1, prslki, z1 - real(kind=kind_phys), dimension(:), intent(in ) :: ztmax_wat, ztmax_lnd, ztmax_ice + logical, intent(in ) :: thsfc_loc + real(kind=kind_phys), intent(in ) :: grav + real(kind=kind_phys), dimension(:), intent(in ) :: prsik1, prslk1, prslki, z1 + real(kind=kind_phys), dimension(:), intent(in ) :: ztmax_wat, ztmax_lnd, ztmax_ice character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg @@ -462,6 +462,7 @@ subroutine GFS_surface_composites_post_run ( real(kind=kind_phys) :: txl, txi, txo, wfrac, q0, rho ! For calling "stability" real(kind=kind_phys) :: tsurf, virtfac, tv1, thv1, tvs, z0max, ztmax + real(kind=kind_phys) :: lnzorll, lnzorli, lnzorlo ! real(kind=kind_phys) :: tem1, tem2, gdx real(kind=kind_phys), parameter :: z0lo=0.1, z0up=1.0 @@ -483,32 +484,18 @@ subroutine GFS_surface_composites_post_run ( txi = cice(i) * wfrac ! txi = ice fraction wrt whole cell txo = max(zero, wfrac-txi) ! txo = open water fraction - !gflx(i) = txl*gflx_lnd(i) + txi*gflx_ice(i) + txo*gflx_wat(i) - ep1d(i) = txl*ep1d_lnd(i) + txi*ep1d_ice(i) + txo*ep1d_wat(i) - weasd(i) = txl*weasd_lnd(i) + txi*weasd_ice(i) - snowd(i) = txl*snowd_lnd(i) + txi*snowd_ice(i) - !tprcp(i) = txl*tprcp_lnd(i) + txi*tprcp_ice(i) + txo*tprcp_wat(i) + !gflx(i) = txl*gflx_lnd(i) + txi*gflx_ice(i) + txo*gflx_wat(i) + ep1d(i) = txl*ep1d_lnd(i) + txi*ep1d_ice(i) + txo*ep1d_wat(i) + weasd(i) = txl*weasd_lnd(i) + txi*weasd_ice(i) + snowd(i) = txl*snowd_lnd(i) + txi*snowd_ice(i) + !tprcp(i) = txl*tprcp_lnd(i) + txi*tprcp_ice(i) + txo*tprcp_wat(i) ! sigmaf(i) = txl*sigmaf(i) -! if (.not. flag_cice(i)) then -! if (islmsk(i) == 2) then -! evap(i) = txl*evap_lnd(i) + wfrac*evap_ice(i) -! hflx(i) = txl*hflx_lnd(i) + wfrac*hflx_ice(i) -! qss(i) = txl*qss_lnd(i) + wfrac*qss_ice(i) -! gflx(i) = txl*gflx_lnd(i) + wfrac*gflx_ice(i) -! else -! evap(i) = txl*evap_lnd(i) + wfrac*evap_wat(i) -! hflx(i) = txl*hflx_lnd(i) + wfrac*hflx_wat(i) -! qss(i) = txl*qss_lnd(i) + wfrac*qss_wat(i) -! gflx(i) = txl*gflx_lnd(i) + wfrac*gflx_wat(i) -! endif -! else - evap(i) = txl*evap_lnd(i) + txi*evap_ice(i) + txo*evap_wat(i) - hflx(i) = txl*hflx_lnd(i) + txi*hflx_ice(i) + txo*hflx_wat(i) - qss(i) = txl*qss_lnd(i) + txi*qss_ice(i) + txo*qss_wat(i) - gflx(i) = txl*gflx_lnd(i) + txi*gflx_ice(i) + txo*gflx_wat(i) -! endif + evap(i) = txl*evap_lnd(i) + txi*evap_ice(i) + txo*evap_wat(i) + hflx(i) = txl*hflx_lnd(i) + txi*hflx_ice(i) + txo*hflx_wat(i) + qss(i) = txl*qss_lnd(i) + txi*qss_ice(i) + txo*qss_wat(i) + gflx(i) = txl*gflx_lnd(i) + txi*gflx_ice(i) + txo*gflx_wat(i) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Call stability for consistent surface properties. Currently this comes from ! @@ -537,12 +524,23 @@ subroutine GFS_surface_composites_post_run ( tvs = half * (tsfc(i)+tsurf)/prsik1(i) * virtfac endif - zorl(i) = exp(txl*log(zorll(i)) + txi*log(zorli(i)) + txo*log(zorlo(i))) + lnzorll = zero ; lnzorli = zero ; lnzorlo = zero + if (zorll(i) /= huge) then + lnzorll = log(zorll(i)) + endif + if (zorli(i) /= huge) then + lnzorli = log(zorli(i)) + endif + if (zorlo(i) /= huge) then + lnzorlo = log(zorlo(i)) + endif + zorl(i) = exp(txl*lnzorll + txi*lnzorli + txo*lnzorlo) + ! zorl(i) = exp(txl*log(zorll(i)) + txi*log(zorli(i)) + txo*log(zorlo(i))) z0max = 0.01_kind_phys * zorl(i) ztmax = exp(txl*log(ztmax_lnd(i)) + txi*log(ztmax_ice(i)) + txo*log(ztmax_wat(i))) ! Only actually need to call "stability" if multiple surface types exist... - if(txl .eq. one) then ! 100% land + if(txl == one) then ! 100% land rb(i) = rb_lnd(i) ffmm(i) = ffmm_lnd(i) ffhh(i) = ffhh_lnd(i) @@ -552,7 +550,7 @@ subroutine GFS_surface_composites_post_run ( cdq(i) = cdq_lnd(i) stress(i) = stress_lnd(i) uustar(i) = uustar_lnd(i) - elseif(txo .eq. one) then ! 100% open water + elseif(txo == one) then ! 100% open water rb(i) = rb_wat(i) ffmm(i) = ffmm_wat(i) ffhh(i) = ffhh_wat(i) @@ -562,7 +560,7 @@ subroutine GFS_surface_composites_post_run ( cdq(i) = cdq_wat(i) stress(i) = stress_wat(i) uustar(i) = uustar_wat(i) - elseif(txi .eq. one) then ! 100% ice + elseif(txi == one) then ! 100% ice rb(i) = rb_ice(i) ffmm(i) = ffmm_ice(i) ffhh(i) = ffhh_ice(i) @@ -722,23 +720,25 @@ subroutine GFS_surface_composites_post_run ( qss(i) = qss_ice(i) evap(i) = evap_ice(i) hflx(i) = hflx_ice(i) -! tsfc(i) = tisfc(i) ! over lake (and ocean when uncoupled) ! -! if (flag_cice(i)) then -! if (wet(i) .and. cice(i) >= min_seaice) then ! this was already done for lake ice in sfc_sice - txi = cice(i) - txo = one - txi - evap(i) = txi * evap_ice(i) + txo * evap_wat(i) - hflx(i) = txi * hflx_ice(i) + txo * hflx_wat(i) - tsfc(i) = txi * tisfc(i) + txo * tsfc_wat(i) - stress(i) = txi * stress_ice(i) + txo * stress_wat(i) - qss(i) = txi * qss_ice(i) + txo * qss_wat(i) - ep1d(i) = txi * ep1d_ice(i) + txo * ep1d_wat(i) - zorl(i) = exp(txi*log(zorli(i)) + txo*log(zorlo(i))) -! endif -! elseif (wet(i)) then ! return updated lake ice thickness & concentration to global array -! zorl(i) = exp(cice(i)*log(zorli(i)) + (one-cice(i))*log(zorlo(i))) -! endif + txi = cice(i) + txo = one - txi + evap(i) = txi * evap_ice(i) + txo * evap_wat(i) + hflx(i) = txi * hflx_ice(i) + txo * hflx_wat(i) + tsfc(i) = txi * tisfc(i) + txo * tsfc_wat(i) + stress(i) = txi * stress_ice(i) + txo * stress_wat(i) + qss(i) = txi * qss_ice(i) + txo * qss_wat(i) + ep1d(i) = txi * ep1d_ice(i) + txo * ep1d_wat(i) + + lnzorli = zero ; lnzorlo = zero + if (zorli(i) /= huge) then + lnzorli = log(zorli(i)) + endif + if (zorlo(i) /= huge) then + lnzorlo = log(zorlo(i)) + endif + zorl(i) = exp(txi*lnzorli + txo*lnzorlo) +! zorl(i) = exp(txi*log(zorli(i)) + txo*log(zorlo(i))) ! if (wet(i)) then tsfco(i) = tsfc_wat(i) diff --git a/physics/GFS_surface_composites.meta b/physics/GFS_surface_composites.meta index dfe7e5261..a8f76e2ed 100644 --- a/physics/GFS_surface_composites.meta +++ b/physics/GFS_surface_composites.meta @@ -548,6 +548,15 @@ type = integer intent = in optional = F +[huge] + standard_name = netcdf_float_fillvalue + long_name = definition of NetCDF float FillValue + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1856,6 +1865,15 @@ kind = kind_phys intent = in optional = F +[huge] + standard_name = netcdf_float_fillvalue + long_name = definition of NetCDF float FillValue + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/module_MYNNPBL_wrapper.F90 b/physics/module_MYNNPBL_wrapper.F90 index 4b034f588..294e1e018 100644 --- a/physics/module_MYNNPBL_wrapper.F90 +++ b/physics/module_MYNNPBL_wrapper.F90 @@ -108,7 +108,7 @@ SUBROUTINE mynnedmf_wrapper_run( & & icloud_bl, do_mynnsfclay, & & imp_physics, imp_physics_gfdl, & & imp_physics_thompson, imp_physics_wsm6, & - & ltaerosol, lprnt, errmsg, errflg ) + & ltaerosol, lprnt, huge, errmsg, errflg ) ! should be moved to inside the mynn: use machine , only : kind_phys @@ -178,13 +178,13 @@ SUBROUTINE mynnedmf_wrapper_run( & & cliq, Cice, rcp, XLV, XLF, EP_1, EP_2 real(kind=kind_phys) :: xlvcp, xlscp, ev, rd, & - & rk, svp11, p608, ep_3,tv0, tv1, gtr,g_inv + & rk, svp11, p608, ep_3,tv0, tv1, gtr,g_inv, huge REAL, PARAMETER :: tref=300.0 !< reference temperature (K) REAL, PARAMETER :: TKmin=253.0 !< for total water conversion, Tripoli and Cotton (1981) REAL, PARAMETER :: zero=0.0d0, one=1.0d0 - REAL, PARAMETER :: huge=9.9692099683868690E36 ! NetCDF float FillValue, same as in GFS_typedefs.F90 +! REAL, PARAMETER :: huge=9.9692099683868690E36 ! NetCDF float FillValue, same as in GFS_typedefs.F90 character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg diff --git a/physics/module_MYNNPBL_wrapper.meta b/physics/module_MYNNPBL_wrapper.meta index e88975aff..ee58000ad 100644 --- a/physics/module_MYNNPBL_wrapper.meta +++ b/physics/module_MYNNPBL_wrapper.meta @@ -1435,6 +1435,15 @@ type = logical intent = in optional = F +[huge] + standard_name = netcdf_float_fillvalue + long_name = definition of NetCDF float FillValue + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP From 19e675ab9666e5d34de66fcb6c7465cc67d47788 Mon Sep 17 00:00:00 2001 From: tanyasmirnova Date: Thu, 30 Sep 2021 17:58:51 +0000 Subject: [PATCH 38/98] The ice/water flux composition is removed for consistency with the GFS_surface_composites.F90 in theis PR. --- physics/sfc_drv_ruc.F90 | 50 ++++------------------------------------ physics/sfc_drv_ruc.meta | 22 ++---------------- 2 files changed, 7 insertions(+), 65 deletions(-) diff --git a/physics/sfc_drv_ruc.F90 b/physics/sfc_drv_ruc.F90 index 01d692985..eb309f25c 100644 --- a/physics/sfc_drv_ruc.F90 +++ b/physics/sfc_drv_ruc.F90 @@ -353,8 +353,6 @@ subroutine lsm_ruc_run & ! inputs ! --- constants & con_cp, con_rd, con_rv, con_g, con_pi, con_hvap, & & con_fvirt, & - ! for water - & ch_wat, tskin_wat, & ! --- in/outs for ice and land & semisbase, semis_lnd, semis_ice, sfalb_lnd, sfalb_ice, & & sncovr1_lnd, weasd_lnd, snwdph_lnd, tskin_lnd, & @@ -370,8 +368,7 @@ subroutine lsm_ruc_run & ! inputs & albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, & ! for ice & sfcqc_ice, sfcqv_ice, & - & tsurf_ice, tsnow_ice, z0rl_ice, & -! & tice, tsurf_ice, tsnow_ice, z0rl_ice, & + & tsurf_ice, tsnow_ice, z0rl_ice, & & qsurf_ice, gflux_ice, evap_ice, ep1d_ice, hflx_ice, & & cm_ice, ch_ice, snowfallac_ice, & & albdvis_ice, albdnir_ice, albivis_ice, albinir_ice, & @@ -388,7 +385,6 @@ subroutine lsm_ruc_run & ! inputs ! --- constant parameters: real(kind=kind_phys), parameter :: rhoh2o = 1000.0 real(kind=kind_phys), parameter :: stbolt = 5.670400e-8 - real(kind=kind_phys), parameter :: con_tice = 271.2 ! --- input: integer, intent(in) :: me, master @@ -403,7 +399,7 @@ subroutine lsm_ruc_run & ! inputs ! for land & cm_lnd, ch_lnd, & ! for water - & ch_wat, tskin_wat, oceanfrac, & + & oceanfrac, & ! for ice & cm_ice, ch_ice @@ -557,7 +553,7 @@ subroutine lsm_ruc_run & ! inputs do i = 1, im ! i - horizontal loop flag_ice(i) = .false. - if (icy(i) .and. .not. flag_cice(i)) then + if (icy(i) .and. .not. flag_cice(i)) then ! flag_cice(i)=.true. when coupled to CICE ! - uncoupled ice model if (oceanfrac(i) > zero) then cimin(i) = min_seaice @@ -569,8 +565,8 @@ subroutine lsm_ruc_run & ! inputs flag_ice(i) = .true. endif endif - ! - Set flag for ice points for uncoupled model (islmsk(i) == 4 when coupled to CICE) - ! - Exclude ice on the lakes if the lake model is turned on. + ! - Ice points for uncoupled model + ! - Exclude ice on the lakes if the lake model is turned on: lake(i)=.true. flag_ice_uncoupled(i) = (flag_ice(i) .and. .not. lake(i)) !> - Set flag for land and ice points. !- 10may19 - ice points are turned off. @@ -1388,42 +1384,6 @@ subroutine lsm_ruc_run & ! inputs enddo ! j enddo ! i - !-- Take care of fractional sea ice for uncoupled run with frac_grid=.false. - !-- When frac_grid=.true. GFS_surface_composite will take care of this. - do i = 1, im ! i - horizontal loop - if ( flag_iter(i) .and. flag(i) ) then - ! Do this only when the fractional grid is not turned on! - ! Compute composite for a fractional sea ice: fice(i) < 1. - ! This is needed for the 2-way coupling - ! in the upcoupled case (when sfc_cice is not used). - if(.not. frac_grid) then - if( flag_ice_uncoupled(i) .and. fice(i) < 1.) then - !write (0,*)'Fractional sea ice at i', i, fice(i) - fwat = 1.0 - fice(i) - ! Check if ice fraction is below the minimum value: 15% in GFS - ! physics. - if (fice(i) < cimin(i)) then ! cimin - minimal ice fraction - write (0,*)'warning: ice fraction is low:', fice(i) - fice(i) = cimin(i) - fwat = 1.0 - cimin(i) - write (0,*)'fix ice fraction: reset it to:', fice(i), tskin_wat(i) - endif - - ! Compute the composite of ice and open water for 2-way coupling in the - ! uncoupled sea-ice model. Use ice variables for the composite. - tsurf_ice(i) = tsurf_ice(i) * fice(i) + min(con_tice,tskin_wat(i)) * fwat - chh_ice(i) = chh_ice(i) * fice(i) + ch_wat(i) * wind(i) * rho(i) * fwat - hfxw = ch_wat(i) * wind(i) * (min(con_tice,tskin_wat(i)) - t1(i)) - hflx_ice(i) = hflx_ice(i) * fice(i) + hfxw * fwat - qsw = rslf(prsl1(i),min(con_tice,tskin_wat(i))) - evapw = ch_wat(i) * wind(i) * (qsw - q0(i)) - evap_ice(i) = evap_ice(i) * fice(i) + evapw * fwat - qsurf_ice(i) = q1(i) + evap_ice(i) * rho(i) / chh_ice(i) - endif ! flag_ice_uncoupled(i) .and. fice(i) < 1. - endif ! flag_iter, icy, not frac_grid - endif - enddo ! i - !> - Restore land-related prognostic fields for guess run. do j = 1, 1 do i = 1, im diff --git a/physics/sfc_drv_ruc.meta b/physics/sfc_drv_ruc.meta index a0a3768f5..474ad1018 100644 --- a/physics/sfc_drv_ruc.meta +++ b/physics/sfc_drv_ruc.meta @@ -192,8 +192,8 @@ intent = in optional = F [tsfc_ice] - standard_name = surface_skin_temperature_over_ice - long_name = surface skin temperature over ice + standard_name = sea_ice_temperature + long_name = sea ice surface skin temperature units = K dimensions = (horizontal_dimension) type = real @@ -1102,24 +1102,6 @@ kind = kind_phys intent = in optional = F -[ch_wat] - standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water - long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[tskin_wat] - standard_name = surface_skin_temperature_over_water - long_name = surface skin temperature over water - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F [semisbase] standard_name = baseline_surface_longwave_emissivity long_name = baseline surface lw emissivity in fraction From 8ae21d6a88482d0484925906e55bded8342610c7 Mon Sep 17 00:00:00 2001 From: tanyasmirnova Date: Thu, 30 Sep 2021 22:04:12 +0000 Subject: [PATCH 39/98] Added updating of snow temperature and some clean-up. --- physics/sfc_drv_ruc.F90 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/physics/sfc_drv_ruc.F90 b/physics/sfc_drv_ruc.F90 index eb309f25c..b29fbb7e3 100644 --- a/physics/sfc_drv_ruc.F90 +++ b/physics/sfc_drv_ruc.F90 @@ -430,7 +430,6 @@ subroutine lsm_ruc_run & ! inputs & weasd_ice, snwdph_ice, tskin_ice, & & tsurf_ice, z0rl_ice, tsnow_ice, & & sfcqc_ice, sfcqv_ice, fice -! & sfcqc_ice, sfcqv_ice, fice, tice ! --- in real (kind=kind_phys), dimension(:), intent(in) :: & @@ -1168,11 +1167,12 @@ subroutine lsm_ruc_run & ! inputs !snohf(i) = snoh(i,j) ! Interstitial - evap_lnd(i) = qfx_lnd(i,j) / rho(i) ! kinematic - hflx_lnd(i) = hfx_lnd(i,j) / (con_cp*rho(i)) ! kinematic - gflux_lnd(i) = ssoil_lnd(i,j) + evap_lnd(i) = qfx_lnd(i,j) / rho(i) ! kinematic + hflx_lnd(i) = hfx_lnd(i,j) / (con_cp*rho(i)) ! kinematic + gflux_lnd(i) = ssoil_lnd(i,j) qsurf_lnd(i) = qsfc_lnd(i,j) tsurf_lnd(i) = soilt_lnd(i,j) + tsnow_lnd(i) = soilt1_lnd(i,j) stm(i) = soilm(i,j) * 1.e-3 ! convert to [m] runof (i) = runoff1(i,j) @@ -1341,6 +1341,7 @@ subroutine lsm_ruc_run & ! inputs qsurf_ice(i) = qsfc_ice(i,j) tsurf_ice(i) = soilt_ice(i,j) + tsnow_ice(i) = soilt1_ice(i,j) sfcqv_ice(i) = qvg_ice(i,j) sfcqc_ice(i) = qcg_ice(i,j) @@ -1428,7 +1429,6 @@ subroutine lsm_ruc_run & ! inputs if(debug_print) write (0,*)'iter run', i,j, tskin_ice(i),tsurf_ice(i) tskin_lnd(i) = tsurf_lnd(i) tskin_ice(i) = tsurf_ice(i) -! tice(i) = tsurf_ice(i) endif ! flag_guess endif ! flag enddo ! i From 0fd3702f82edf15d8310297cc405984d2a8c3e53 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Thu, 30 Sep 2021 23:30:36 +0000 Subject: [PATCH 40/98] minor fix in sfc_drv_ruc.meta and removing some blanks in sfc_drv_ruc.F90 --- physics/sfc_drv_ruc.F90 | 44 ++++++++++++++++++++-------------------- physics/sfc_drv_ruc.meta | 12 +++++------ 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/physics/sfc_drv_ruc.F90 b/physics/sfc_drv_ruc.F90 index b29fbb7e3..ea0157fb5 100644 --- a/physics/sfc_drv_ruc.F90 +++ b/physics/sfc_drv_ruc.F90 @@ -268,7 +268,7 @@ end subroutine lsm_ruc_finalize ! ===================================================================== ! ! lsm_ruc_run: ! -! RUC Surface Model - WRF4.0 version ! +! RUC Surface Model - WRF4.0 version ! ! program history log: ! ! may 2018 -- tanya smirnova ! ! ! @@ -488,7 +488,7 @@ subroutine lsm_ruc_run & ! inputs & keepfr_old, smfrkeep_old real (kind=kind_phys),dimension (im,1,1) :: & - & conflx2, sfcprs, sfctmp, q2, qcatm, rho2 + & conflx2, sfcprs, sfctmp, q2, qcatm, rho2 real (kind=kind_phys),dimension (im,1) :: & & albbck_lnd, alb_lnd, chs_lnd, flhc_lnd, flqc_lnd, & & wet, wet_ice, smmax, cmc, drip, ec, edir, ett, & @@ -594,7 +594,7 @@ subroutine lsm_ruc_run & ! inputs write (0,*)'flag_init =',flag_init write (0,*)'flag_restart =',flag_restart endif - + ims = 1 its = 1 ime = 1 @@ -617,7 +617,7 @@ subroutine lsm_ruc_run & ! inputs landusef (:,:,:) = 0.0 soilctop (:,:,:) = 0.0 - !> -- number of soil categories + !> -- number of soil categories !if(isot == 1) then !nscat = 19 ! stasgo !else @@ -651,7 +651,7 @@ subroutine lsm_ruc_run & ! inputs smcref2 (i) = 1. smcwlt2 (i) = 0. else - !land + !land smcref2 (i) = REFSMC(soiltyp(i)) smcwlt2 (i) = WLTSMC(soiltyp(i)) endif @@ -760,13 +760,13 @@ subroutine lsm_ruc_run & ! inputs endif ! flag_iter & flag enddo ! i -!> - Prepare variables to run RUC LSM: +!> - Prepare variables to run RUC LSM: !! - 1. configuration information (c): !!\n \a ffrozp - fraction of frozen precipitation !!\n \a frpcpn - .true. if mixed phase precipitation available !!\n \a 1:im - horizontal_loop_extent !!\n \a fice - fraction of sea-ice in the grid cell -!!\n \a delt - timestep (sec) (dt should not exceed 3600 secs) +!!\n \a delt - timestep (sec) (dt should not exceed 3600 secs) !!\n \a conflx2 - height (\f$m\f$) above ground of atmospheric forcing variables !!\n \a lsoil_ruc - number of soil layers (= 6 or 9) !!\n \a zs - the depth of each soil level (\f$m\f$) @@ -968,7 +968,7 @@ subroutine lsm_ruc_run & ! inputs wet(i,j) = max(0.0001,smsoil(i,1,j)/0.3) endif - chs_lnd (i,j) = ch_lnd(i) * wind(i) ! compute conductance + chs_lnd (i,j) = ch_lnd(i) * wind(i) ! compute conductance flhc_lnd(i,j) = chs_lnd(i,j) * rho(i) * con_cp ! * (1. + 0.84*q2(i,1,j)) flqc_lnd(i,j) = chs_lnd(i,j) * rho(i) * wet(i,j) ! for output @@ -980,11 +980,11 @@ subroutine lsm_ruc_run & ! inputs snfallac_lnd(i,j) = snowfallac_lnd(i) !> -- sanity checks on sneqv and snowh if (sneqv_lnd(i,j) /= 0.0 .and. snowh_lnd(i,j) == 0.0) then - snowh_lnd(i,j) = 0.003 * sneqv_lnd(i,j) ! snow density ~300 kg m-3 + snowh_lnd(i,j) = 0.003 * sneqv_lnd(i,j) ! snow density ~300 kg m-3 endif if (snowh_lnd(i,j) /= 0.0 .and. sneqv_lnd(i,j) == 0.0) then - sneqv_lnd(i,j) = 300. * snowh_lnd(i,j) ! snow density ~300 kg m-3 + sneqv_lnd(i,j) = 300. * snowh_lnd(i,j) ! snow density ~300 kg m-3 endif if (sneqv_lnd(i,j) > 0. .and. snowh_lnd(i,j) > 0.) then @@ -1053,7 +1053,7 @@ subroutine lsm_ruc_run & ! inputs endif endif -!> - Call RUC LSM lsmruc() for land. +!> - Call RUC LSM lsmruc() for land. call lsmruc( & & delt, flag_init, flag_restart, kdt, iter, nsoil, & & graupelncv(i,j), snowncv(i,j), rainncv(i,j), raincv(i,j), & @@ -1071,7 +1071,7 @@ subroutine lsm_ruc_run & ! inputs & z0_lnd(i,j), snoalb1d_lnd(i,j), albbck_lnd(i,j), & & xlai(i,j), landusef(i,:,j), nlcat, & ! --- mosaic_lu and mosaic_soil are moved to the namelist -! & mosaic_lu, mosaic_soil, & +! & mosaic_lu, mosaic_soil, & & soilctop(i,:,j), nscat, & & qsfc_lnd(i,j), qsg_lnd(i,j), qvg_lnd(i,j), qcg_lnd(i,j), & & dew_lnd(i,j), soilt1_lnd(i,j), & @@ -1183,7 +1183,7 @@ subroutine lsm_ruc_run & ! inputs ! tsnow(i) = soilt1(i,j) sfcqv_lnd(i) = qvg_lnd(i,j) sfcqc_lnd(i) = qcg_lnd(i,j) - ! --- ... units [m/s] = [g m-2 s-1] + ! --- ... units [m/s] = [g m-2 s-1] rhosnf(i) = rhosnfr(i,j) !acsnow(i) = acsn(i,j) ! kg m-2 @@ -1265,7 +1265,7 @@ subroutine lsm_ruc_run & ! inputs wet_ice(i,j) = 1. - chs_ice (i,j) = ch_ice(i) * wind(i) ! compute conductance + chs_ice (i,j) = ch_ice(i) * wind(i) ! compute conductance flhc_ice(i,j) = chs_ice(i,j) * rho(i) * con_cp ! * (1. + 0.84*q2(i,1,j)) flqc_ice(i,j) = chs_ice(i,j) * rho(i) * wet_ice(i,j) ! for output @@ -1283,7 +1283,7 @@ subroutine lsm_ruc_run & ! inputs endif if (snowh_ice(i,j) /= 0.0 .and. sneqv_ice(i,j) == 0.0) then - sneqv_ice(i,j) = 300. * snowh_ice(i,j) ! snow density ~300 kg m-3 + sneqv_ice(i,j) = 300. * snowh_ice(i,j) ! snow density ~300 kg m-3 endif if (sneqv_ice(i,j) > 0. .and. snowh_ice(i,j) > 0.) then @@ -1295,7 +1295,7 @@ subroutine lsm_ruc_run & ! inputs z0_ice(i,j) = z0rl_ice(i)/100. znt_ice(i,j) = z0rl_ice(i)/100. -!> - Call RUC LSM lsmruc() for ice. +!> - Call RUC LSM lsmruc() for ice. call lsmruc( & & delt, flag_init, flag_restart, kdt, iter, nsoil, & & graupelncv(i,j), snowncv(i,j), rainncv(i,j), raincv(i,j), & @@ -1447,7 +1447,7 @@ end subroutine lsm_ruc_run subroutine rucinit (restart, im, lsoil_ruc, lsoil, nlev, & ! in me, master, lsm_ruc, lsm, slmsk, & ! in soiltyp, vegtype, & ! in - tskin_lnd, tskin_wat, tg3, & ! !in + tskin_lnd, tskin_wat, tg3, & ! in zs, dzs, smc, slc, stc, & ! in sh2o, smfrkeep, tslb, smois, & ! out wetness, errmsg, errflg) @@ -1550,7 +1550,7 @@ subroutine rucinit (restart, im, lsoil_ruc, lsoil, nlev, & ! in jds = 1 jms = 1 jts = 1 - jde = 1 + jde = 1 jme = 1 jte = 1 kds = 1 @@ -1733,7 +1733,7 @@ subroutine rucinit (restart, im, lsoil_ruc, lsoil, nlev, & ! in do k=1,lsoil_ruc factorsm(k)=1. enddo - + ! RUC soil moisture bucket smtotr(i,j)=0. do k=1,lsoil_ruc -1 @@ -1741,7 +1741,7 @@ subroutine rucinit (restart, im, lsoil_ruc, lsoil, nlev, & ! in enddo ! Noah soil moisture bucket smtotn(i,j)=smc(i,1)*0.1 + smc(i,2)*0.2 + smc(i,3)*0.7 + smc(i,4)*1. - + if(debug_print) then if(i==ipr) then write (0,*)'from Noah to RUC: RUC bucket and Noah bucket at', & @@ -1749,12 +1749,12 @@ subroutine rucinit (restart, im, lsoil_ruc, lsoil, nlev, & ! in write (0,*)'before smois=',i,j,soilm(i,:,j) endif endif - + ! RUC soil moisture correction to match Noah soil moisture bucket do k=1,lsoil_ruc-1 soilm(i,k,j) = max(0.02,soilm(i,k,j)*smtotn(i,j)/(0.9*smtotr(i,j))) enddo - + if( soilm(i,2,j) > soilm(i,1,j) .and. soilm(i,3,j) > soilm(i,2,j)) then ! typical for daytime, no recent precip factorsm(1) = 0.75 diff --git a/physics/sfc_drv_ruc.meta b/physics/sfc_drv_ruc.meta index 474ad1018..7e80a1761 100644 --- a/physics/sfc_drv_ruc.meta +++ b/physics/sfc_drv_ruc.meta @@ -183,8 +183,8 @@ intent = in optional = F [tsfc_lnd] - standard_name = surface_skin_temperature - long_name = surface skin temperature + standard_name = surface_skin_temperature_over_land + long_name = surface skin temperature over land units = K dimensions = (horizontal_dimension) type = real @@ -192,8 +192,8 @@ intent = in optional = F [tsfc_ice] - standard_name = sea_ice_temperature - long_name = sea ice surface skin temperature + standard_name = surface_skin_temperature_over_ice + long_name = surface skin temperature over ice units = K dimensions = (horizontal_dimension) type = real @@ -201,8 +201,8 @@ intent = in optional = F [tsfc_wat] - standard_name = sea_surface_temperature - long_name = sea surface temperature + standard_name = surface_skin_temperature_over_water + long_name = surface skin temperature over water units = K dimensions = (horizontal_dimension) type = real From 09c3a0e6a63ea446aa0e1838bad400eeb3f607de Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 1 Oct 2021 10:06:53 -0600 Subject: [PATCH 41/98] Cleanup/bugfix: move convective tranport tracer logic from GFS_SCNV_generic_post_run to GFS_suite_interstitial_4_run (to be consistent with the corresponding logic in GFS_suite_interstitial_3_run --- physics/GFS_SCNV_generic.F90 | 8 +------- physics/GFS_SCNV_generic.meta | 2 +- physics/GFS_suite_interstitial.F90 | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/physics/GFS_SCNV_generic.F90 b/physics/GFS_SCNV_generic.F90 index 2440d9bc7..58447f6bf 100644 --- a/physics/GFS_SCNV_generic.F90 +++ b/physics/GFS_SCNV_generic.F90 @@ -117,7 +117,7 @@ subroutine GFS_SCNV_generic_post_run (im, levs, nn, lssav, ldiag3d, qdiag3d, & real(kind=kind_phys), intent(inout) :: dtend(:,:,:) integer, intent(in) :: dtidx(:,:) integer, intent(in) :: index_of_temperature, index_of_x_wind, index_of_y_wind, index_of_process_scnv - real(kind=kind_phys), dimension(:,:,:), intent(inout) :: clw + real(kind=kind_phys), dimension(:,:,:), intent(in) :: clw ! Post code for SAS/SAMF integer, intent(in) :: npdf3d, num_p3d, ncnvcld3d @@ -208,12 +208,6 @@ subroutine GFS_SCNV_generic_post_run (im, levs, nn, lssav, ldiag3d, qdiag3d, & endif endif endif -! - do k=1,levs - do i=1,im - if (clw(i,k,2) <= -999.0) clw(i,k,2) = 0.0 - enddo - enddo end subroutine GFS_SCNV_generic_post_run diff --git a/physics/GFS_SCNV_generic.meta b/physics/GFS_SCNV_generic.meta index adf82ed92..01647c2c5 100644 --- a/physics/GFS_SCNV_generic.meta +++ b/physics/GFS_SCNV_generic.meta @@ -493,7 +493,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers_for_convective_transport) type = real kind = kind_phys - intent = inout + intent = in optional = F [shcnvcw] standard_name = flag_for_saving_shallow_convective_cloud_area_fraction diff --git a/physics/GFS_suite_interstitial.F90 b/physics/GFS_suite_interstitial.F90 index 6bc702216..fa1840da5 100644 --- a/physics/GFS_suite_interstitial.F90 +++ b/physics/GFS_suite_interstitial.F90 @@ -754,6 +754,20 @@ subroutine GFS_suite_interstitial_4_run (im, levs, ltaerosol, tracers_total, ntr errmsg = '' errflg = 0 + ! This code was previously in GFS_SCNV_generic_post, but it really belongs + ! here, because it fixes the convective transportable_tracers mess for Zhao-Carr + ! and GFDL MP from GFS_suite_interstitial_3. This whole code around clw(:,:,2) + ! being set to -999 for Zhao-Carr MP (which doesn't have cloud ice) and GFDL-MP + ! (which does have cloud ice, but for some reason it was decided to code it up + ! in the same way as for Zhao-Carr, nowadays unnecessary and confusing) needs + ! to be cleaned up. The convection schemes doing something different internally + ! based on clw(i,k,2) being -999.0 or not is not a good idea. + do k=1,levs + do i=1,im + if (clw(i,k,2) <= -999.0) clw(i,k,2) = 0.0 + enddo + enddo + if(ldiag3d) then if(ntk>0 .and. ntk<=size(clw,3)) then idtend=dtidx(100+ntke,index_of_process_conv_trans) From 76f0b35d082083b1a7da1017e9d79a679d599875 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Fri, 1 Oct 2021 23:45:24 +0000 Subject: [PATCH 42/98] changing ^ to & in radiation_surface.f --- physics/radiation_surface.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 69b8abd85..c507f0a83 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -784,7 +784,7 @@ subroutine setemis & integer, intent(in) :: lsm, lsm_noahmp, lsm_ruc logical, intent(in) :: frac_grid, cplice real (kind=kind_phys), dimension(:), intent(in) :: vtype, & - ^ lakefrac + & lakefrac real (kind=kind_phys), dimension(:), intent(in) :: & & xlon,xlat, slmsk, snowf,sncovr, sncovr_ice, & From b056c39d63f3a3adfff1540d6d9129111bb628e9 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 4 Oct 2021 12:04:33 -0600 Subject: [PATCH 43/98] Fix wrong dimensions in CCPP metadata for a number of schemes --- physics/GFS_DCNV_generic.meta | 2 +- physics/GFS_GWD_generic.meta | 4 ++-- physics/GFS_MP_generic.meta | 2 +- physics/GFS_PBL_generic.meta | 2 +- physics/GFS_SCNV_generic.meta | 2 +- physics/GFS_suite_interstitial.meta | 4 ++-- physics/cires_ugwp.meta | 2 +- physics/cu_gf_driver.meta | 2 +- physics/drag_suite.meta | 2 +- physics/gwdc.meta | 2 +- physics/module_MYJPBL_wrapper.meta | 2 +- physics/module_MYNNPBL_wrapper.meta | 2 +- physics/moninedmf.meta | 2 +- physics/moninshoc.meta | 2 +- physics/ozphys.meta | 2 +- physics/ozphys_2015.meta | 2 +- physics/phys_tend.meta | 2 +- physics/rascnv.meta | 4 ++-- physics/rayleigh_damp.meta | 2 +- physics/satmedmfvdif.meta | 2 +- physics/satmedmfvdifq.meta | 2 +- physics/shinhongvdif.meta | 2 +- physics/ugwpv1_gsldrag.meta | 2 +- physics/unified_ugwp.meta | 2 +- physics/ysuvdif.meta | 2 +- 25 files changed, 28 insertions(+), 28 deletions(-) diff --git a/physics/GFS_DCNV_generic.meta b/physics/GFS_DCNV_generic.meta index c64e1fadb..7976b9f1d 100644 --- a/physics/GFS_DCNV_generic.meta +++ b/physics/GFS_DCNV_generic.meta @@ -477,7 +477,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/GFS_GWD_generic.meta b/physics/GFS_GWD_generic.meta index adaa9a077..17aa4f5fa 100644 --- a/physics/GFS_GWD_generic.meta +++ b/physics/GFS_GWD_generic.meta @@ -186,7 +186,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout @@ -368,7 +368,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/GFS_MP_generic.meta b/physics/GFS_MP_generic.meta index a87cfe578..a06d7225b 100644 --- a/physics/GFS_MP_generic.meta +++ b/physics/GFS_MP_generic.meta @@ -823,7 +823,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/GFS_PBL_generic.meta b/physics/GFS_PBL_generic.meta index 59501e467..6babfb60e 100644 --- a/physics/GFS_PBL_generic.meta +++ b/physics/GFS_PBL_generic.meta @@ -820,7 +820,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/GFS_SCNV_generic.meta b/physics/GFS_SCNV_generic.meta index adf82ed92..c07dc7b44 100644 --- a/physics/GFS_SCNV_generic.meta +++ b/physics/GFS_SCNV_generic.meta @@ -433,7 +433,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/GFS_suite_interstitial.meta b/physics/GFS_suite_interstitial.meta index 2fef8390e..8b610c179 100644 --- a/physics/GFS_suite_interstitial.meta +++ b/physics/GFS_suite_interstitial.meta @@ -668,7 +668,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout @@ -1993,7 +1993,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/cires_ugwp.meta b/physics/cires_ugwp.meta index 12d0f5541..3c634e0ef 100644 --- a/physics/cires_ugwp.meta +++ b/physics/cires_ugwp.meta @@ -879,7 +879,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys active = (flag_for_diagnostics_3D) diff --git a/physics/cu_gf_driver.meta b/physics/cu_gf_driver.meta index 732eb9679..a99d72577 100644 --- a/physics/cu_gf_driver.meta +++ b/physics/cu_gf_driver.meta @@ -439,7 +439,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/drag_suite.meta b/physics/drag_suite.meta index a36fc1e82..0511aa073 100644 --- a/physics/drag_suite.meta +++ b/physics/drag_suite.meta @@ -649,7 +649,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys active = (flag_for_diagnostics_3D) diff --git a/physics/gwdc.meta b/physics/gwdc.meta index a28ca895c..75bbc946e 100644 --- a/physics/gwdc.meta +++ b/physics/gwdc.meta @@ -594,7 +594,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys active = (flag_for_diagnostics_3D) diff --git a/physics/module_MYJPBL_wrapper.meta b/physics/module_MYJPBL_wrapper.meta index 08ac65749..7b7a1fbaf 100644 --- a/physics/module_MYJPBL_wrapper.meta +++ b/physics/module_MYJPBL_wrapper.meta @@ -664,7 +664,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/module_MYNNPBL_wrapper.meta b/physics/module_MYNNPBL_wrapper.meta index e88975aff..3d55f4eb3 100644 --- a/physics/module_MYNNPBL_wrapper.meta +++ b/physics/module_MYNNPBL_wrapper.meta @@ -1131,7 +1131,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/moninedmf.meta b/physics/moninedmf.meta index b3fa605b3..66df72942 100644 --- a/physics/moninedmf.meta +++ b/physics/moninedmf.meta @@ -593,7 +593,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys active = (flag_for_diagnostics_3D) diff --git a/physics/moninshoc.meta b/physics/moninshoc.meta index 52d6ba9cd..3b1c5acf6 100644 --- a/physics/moninshoc.meta +++ b/physics/moninshoc.meta @@ -509,7 +509,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = in diff --git a/physics/ozphys.meta b/physics/ozphys.meta index 4a3c2d3c5..61d2f16d3 100644 --- a/physics/ozphys.meta +++ b/physics/ozphys.meta @@ -144,7 +144,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys active = (flag_for_diagnostics_3D) diff --git a/physics/ozphys_2015.meta b/physics/ozphys_2015.meta index 750c27d98..a489cc8e5 100644 --- a/physics/ozphys_2015.meta +++ b/physics/ozphys_2015.meta @@ -144,7 +144,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/phys_tend.meta b/physics/phys_tend.meta index 1ab3e8588..9e0b4d812 100644 --- a/physics/phys_tend.meta +++ b/physics/phys_tend.meta @@ -19,7 +19,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/rascnv.meta b/physics/rascnv.meta index 5832827aa..3f1bc451c 100644 --- a/physics/rascnv.meta +++ b/physics/rascnv.meta @@ -456,7 +456,7 @@ standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces units = Pa - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys intent = in @@ -474,7 +474,7 @@ standard_name = dimensionless_exner_function_at_interface long_name = dimensionless Exner function at model layer interfaces units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys intent = in diff --git a/physics/rayleigh_damp.meta b/physics/rayleigh_damp.meta index badb23e76..3328d7772 100644 --- a/physics/rayleigh_damp.meta +++ b/physics/rayleigh_damp.meta @@ -150,7 +150,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys active = (flag_for_diagnostics_3D) diff --git a/physics/satmedmfvdif.meta b/physics/satmedmfvdif.meta index 43800b441..6f7c10357 100644 --- a/physics/satmedmfvdif.meta +++ b/physics/satmedmfvdif.meta @@ -563,7 +563,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = in diff --git a/physics/satmedmfvdifq.meta b/physics/satmedmfvdifq.meta index fe449ce68..c80684542 100644 --- a/physics/satmedmfvdifq.meta +++ b/physics/satmedmfvdifq.meta @@ -657,7 +657,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = in diff --git a/physics/shinhongvdif.meta b/physics/shinhongvdif.meta index 920ddd7f1..eac3fc715 100644 --- a/physics/shinhongvdif.meta +++ b/physics/shinhongvdif.meta @@ -492,7 +492,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/ugwpv1_gsldrag.meta b/physics/ugwpv1_gsldrag.meta index 8b48abc0b..aaf652e35 100644 --- a/physics/ugwpv1_gsldrag.meta +++ b/physics/ugwpv1_gsldrag.meta @@ -1153,7 +1153,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/unified_ugwp.meta b/physics/unified_ugwp.meta index b2f35e45f..d4a0bfedd 100644 --- a/physics/unified_ugwp.meta +++ b/physics/unified_ugwp.meta @@ -1205,7 +1205,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = inout diff --git a/physics/ysuvdif.meta b/physics/ysuvdif.meta index 405b6a1e7..c2c3fbf0a 100644 --- a/physics/ysuvdif.meta +++ b/physics/ysuvdif.meta @@ -517,7 +517,7 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) type = real kind = kind_phys intent = in From 007f6077c5f7a8cec79272289bd2a4765801eeeb Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 4 Oct 2021 13:24:44 -0600 Subject: [PATCH 44/98] Remove redundant consistency checks inGFS_radiation_surface and GFS_rrtmg_setup --- physics/GFS_radiation_surface.F90 | 14 ++------ physics/GFS_radiation_surface.meta | 9 ----- physics/GFS_rrtmg_setup.F90 | 58 ++---------------------------- physics/GFS_rrtmg_setup.meta | 35 ------------------ 4 files changed, 5 insertions(+), 111 deletions(-) diff --git a/physics/GFS_radiation_surface.F90 b/physics/GFS_radiation_surface.F90 index f4b4b1e62..912556ca4 100644 --- a/physics/GFS_radiation_surface.F90 +++ b/physics/GFS_radiation_surface.F90 @@ -13,15 +13,14 @@ module GFS_radiation_surface !> \section arg_table_GFS_radiation_surface_init Argument Table !! \htmlinclude GFS_radiation_surface_init.html !! - subroutine GFS_radiation_surface_init (me, sfcalb, ialb, iems, errmsg, errflg) + subroutine GFS_radiation_surface_init (me, ialb, iems, errmsg, errflg) use physparam, only: ialbflg, iemsflg - use module_radiation_surface, only: NF_ALBD, sfc_init + use module_radiation_surface, only: sfc_init implicit none integer, intent(in) :: me, ialb, iems - real(kind=kind_phys), dimension(:,:), intent(in) :: sfcalb character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg @@ -29,15 +28,6 @@ subroutine GFS_radiation_surface_init (me, sfcalb, ialb, iems, errmsg, errflg) errmsg = '' errflg = 0 - ! Consistency check that the number of albedo components in array - ! sfcalb matches the parameter NF_ALBD from radiation_surface.f - if (size(sfcalb,dim=2)/=NF_ALBD) then - errmsg = 'Error in GFS_radiation_surface_init: second' // & - ' dimension of array sfcalb does not match' // & - ' parameter NF_ALBD in radiation_surface.f' - errflg = 1 - end if - ialbflg= ialb ! surface albedo control flag iemsflg= iems ! surface emissivity control flag diff --git a/physics/GFS_radiation_surface.meta b/physics/GFS_radiation_surface.meta index 6b8fb1e18..fd07937f4 100644 --- a/physics/GFS_radiation_surface.meta +++ b/physics/GFS_radiation_surface.meta @@ -15,15 +15,6 @@ type = integer intent = in optional = F -[sfcalb] - standard_name = surface_albedo_components - long_name = surface albedo IR/UV/VIS components - units = frac - dimensions = (horizontal_dimension,number_of_components_for_surface_albedo) - type = real - kind = kind_phys - intent = in - optional = F [ialb] standard_name = control_for_surface_albedo long_name = flag for using climatology alb, based on sfc type diff --git a/physics/GFS_rrtmg_setup.F90 b/physics/GFS_rrtmg_setup.F90 index fc660994d..0e2d87feb 100644 --- a/physics/GFS_rrtmg_setup.F90 +++ b/physics/GFS_rrtmg_setup.F90 @@ -48,8 +48,7 @@ subroutine GFS_rrtmg_setup_init ( & icliq_sw, crick_proof, ccnorm, & imp_physics, & norad_precip, idate, iflip, & - do_RRTMGP, im, faerlw, faersw, aerodp, & ! for consistency checks - me, errmsg, errflg) + do_RRTMGP, me, errmsg, errflg) ! ================= subprogram documentation block ================ ! ! ! ! subprogram: GFS_rrtmg_setup_init - a subprogram to initialize radiation ! @@ -145,10 +144,6 @@ subroutine GFS_rrtmg_setup_init ( & ! ! ! =================================================================== ! ! - use module_radsw_parameters, only: NBDSW - use module_radlw_parameters, only: NBDLW - use module_radiation_aerosols,only: NF_AELW, NF_AESW, NSPC1 - implicit none ! interface variables @@ -172,24 +167,11 @@ subroutine GFS_rrtmg_setup_init ( & logical, intent(in) :: norad_precip integer, intent(in) :: idate(:) integer, intent(in) :: iflip - ! For consistency checks - - logical, intent(in) :: do_RRTMGP - integer, intent(in) :: im - real(kind_phys), intent(in) :: faerlw(:,:,:,:) - real(kind_phys), intent(in) :: faersw(:,:,:,:) - real(kind_phys), intent(in) :: aerodp(:,:) - ! End for consistency checks - integer, intent(in) :: me + logical, intent(in) :: do_RRTMGP + integer, intent(in) :: me character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg - ! For consistency checks - real(kind_phys), dimension(im,levr+ltp,NBDLW,NF_AELW) :: faerlw_check - real(kind_phys), dimension(im,levr+ltp,NBDSW,NF_AESW) :: faersw_check - real(kind_phys), dimension(im,NSPC1) :: aerodp_check - ! End for consistency checks - ! Initialize the CCPP error handling variables errmsg = '' errflg = 0 @@ -202,41 +184,7 @@ subroutine GFS_rrtmg_setup_init ( & return end if - ! Consistency checks for dimensions of arrays, this is required - ! to detect differences in FV3's parameters that are used to - ! dimension certain arrays and the values in ccpp-physics - if (size(faerlw(1,:,:,:)).ne.size(faerlw_check(1,:,:,:))) then - write(errmsg,"(3a,4i4,a,4i4)") & - "Runtime error: dimension mismatch for faerlw,", & - " check definitions of levr, ltp, nbdlw, nf_aelw:", & - " expected shape ", shape(faerlw_check(:,:,:,:)), & - " but got ", shape(faerlw(:,:,:,:)) - errflg = 1 - return - end if - if (size(faersw(1,:,:,:)).ne.size(faersw_check(1,:,:,:))) then - write(errmsg,"(3a,4i4,a,4i4)") & - "Runtime error: dimension mismatch for faersw,", & - " check definitions of levr, ltp, nbdsw, nf_aesw:", & - " expected shape ", shape(faersw_check(:,:,:,:)), & - " but got ", shape(faersw(:,:,:,:)) - errflg = 1 - return - end if - if (size(aerodp(1,:)).ne.size(aerodp_check(1,:))) then - write(errmsg,"(3a,2i4,a,2i4)") & - "Runtime error: dimension mismatch for aerodp,", & - " check definitions of nspc1:", & - " expected shape ", shape(aerodp_check(:,:)), & - " but got ", shape(aerodp(:,:)) - errflg = 1 - return - end if - - ! End of consistency checks - isolar = isol ! solar constant control flag - ictmflg= ictm ! data ic time/date control flag ico2flg= ico2 ! co2 data source control flag ioznflg= ntoz ! ozone data source control flag diff --git a/physics/GFS_rrtmg_setup.meta b/physics/GFS_rrtmg_setup.meta index e882841cf..732390b68 100644 --- a/physics/GFS_rrtmg_setup.meta +++ b/physics/GFS_rrtmg_setup.meta @@ -177,41 +177,6 @@ type = logical intent = in optional = F -[im] - standard_name = horizontal_dimension - long_name = horizontal dimension - units = count - dimensions = () - type = integer - intent = in - optional = F -[faerlw] - standard_name = aerosol_optical_properties_for_longwave_bands_01_16 - long_name = optical properties for longwave bands 01-16 - units = various - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation,number_of_aerosol_output_fields_for_longwave_radiation) - type = real - kind = kind_phys - intent = in - optional = F -[faersw] - standard_name = aerosol_optical_properties_for_shortwave_bands_01_16 - long_name = aerosol optical properties for shortwave bands 01-16 - units = various - dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation,number_of_aerosol_output_fields_for_shortwave_radiation) - type = real - kind = kind_phys - intent = in - optional = F -[aerodp] - standard_name = atmosphere_optical_thickness_due_to_ambient_aerosol_particles - long_name = vertical integrated optical depth for various aerosol species - units = none - dimensions = (horizontal_dimension,number_of_species_for_aerosol_optical_depth) - type = real - kind = kind_phys - intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank From 12abc5606b345d9eaacc263c31dec31f87fce83b Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 4 Oct 2021 13:33:10 -0600 Subject: [PATCH 45/98] Cleanup work for active gases array and other variables in RRTMGP schemes --- physics/GFS_rrtmgp_pre.F90 | 20 +++++---- physics/GFS_rrtmgp_pre.meta | 32 +++++++++++--- physics/rrtmgp_lw_cloud_sampling.F90 | 31 ++------------ physics/rrtmgp_lw_cloud_sampling.meta | 40 +---------------- physics/rrtmgp_lw_gas_optics.F90 | 22 ++++++---- physics/rrtmgp_lw_gas_optics.meta | 62 ++++++++++++++++----------- physics/rrtmgp_sw_cloud_sampling.F90 | 35 +++------------ physics/rrtmgp_sw_cloud_sampling.meta | 38 ---------------- physics/rrtmgp_sw_gas_optics.F90 | 24 +++++++---- physics/rrtmgp_sw_gas_optics.meta | 26 +++++++---- 10 files changed, 128 insertions(+), 202 deletions(-) diff --git a/physics/GFS_rrtmgp_pre.F90 b/physics/GFS_rrtmgp_pre.F90 index 88e534595..684086605 100644 --- a/physics/GFS_rrtmgp_pre.F90 +++ b/physics/GFS_rrtmgp_pre.F90 @@ -21,8 +21,6 @@ module GFS_rrtmgp_pre ! Save trace gas indices. integer :: iStr_h2o, iStr_co2, iStr_o3, iStr_n2o, iStr_ch4, iStr_o2, iStr_ccl4, & iStr_cfc11, iStr_cfc12, iStr_cfc22 - character(len=32),dimension(:),allocatable :: & - active_gases_array public GFS_rrtmgp_pre_run,GFS_rrtmgp_pre_init,GFS_rrtmgp_pre_finalize contains @@ -33,12 +31,15 @@ module GFS_rrtmgp_pre !! \section arg_table_GFS_rrtmgp_pre_init !! \htmlinclude GFS_rrtmgp_pre_init.html !! - subroutine GFS_rrtmgp_pre_init(nGases, active_gases, errmsg, errflg) + subroutine GFS_rrtmgp_pre_init(nGases, active_gases, active_gases_array, errmsg, errflg) ! Inputs integer, intent(in) :: & 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 + ! Outputs character(len=*), intent(out) :: & errmsg ! Error message @@ -73,7 +74,6 @@ subroutine GFS_rrtmgp_pre_init(nGases, active_gases, errmsg, errflg) gasIndices(nGases,2)=len(trim(active_gases)) ! Now extract the gas names - allocate(active_gases_array(nGases)) do ij=1,nGases active_gases_array(ij) = active_gases(gasIndices(ij,1):gasIndices(ij,2)) if(trim(active_gases_array(ij)) .eq. 'h2o') istr_h2o = ij @@ -98,8 +98,9 @@ end subroutine GFS_rrtmgp_pre_init !! subroutine GFS_rrtmgp_pre_run(nCol, nLev, nTracers, i_o3, lsswr, lslwr, fhswr, fhlwr, & xlat, xlon, prsl, tgrs, prslk, prsi, qgrs, tsfc, con_eps, con_epsm1, con_fvirt, & - con_epsqs, minGPpres, minGPtemp, raddt, p_lay, t_lay, p_lev, t_lev, tsfg, tsfa, & - qs_lay, q_lay, tv_lay, relhum, tracer, gas_concentrations, errmsg, errflg) + con_epsqs, minGPpres, minGPtemp, raddt, p_lay, t_lay, p_lev, t_lev, tsfg, tsfa, & + qs_lay, q_lay, tv_lay, relhum, tracer, active_gases_array, gas_concentrations, & + errmsg, errflg) ! Inputs integer, intent(in) :: & @@ -155,7 +156,9 @@ subroutine GFS_rrtmgp_pre_run(nCol, nLev, nTracers, i_o3, lsswr, lslwr, fhswr, f t_lev ! Temperature at model-interface real(kind_phys), dimension(nCol, nLev, nTracers),intent(inout) :: & tracer ! Array containing trace gases - type(ty_gas_concs),intent(inout) :: & + character(len=*), dimension(:), intent(in) :: & + active_gases_array ! List of active gases from namelist as array + type(ty_gas_concs), intent(inout) :: & gas_concentrations ! RRTMGP DDT: gas volumne mixing ratios ! Local variables @@ -165,7 +168,6 @@ subroutine GFS_rrtmgp_pre_run(nCol, nLev, nTracers, i_o3, lsswr, lslwr, fhswr, f real(kind_phys) :: es, tem1, tem2 real(kind_phys), dimension(nCol,nLev) :: o3_lay real(kind_phys), dimension(nCol,nLev, NF_VGAS) :: gas_vmr - character(len=32), dimension(gas_concentrations%get_num_gases()) :: active_gases ! Initialize CCPP error handling variables errmsg = '' diff --git a/physics/GFS_rrtmgp_pre.meta b/physics/GFS_rrtmgp_pre.meta index e33663748..16ee3c682 100644 --- a/physics/GFS_rrtmgp_pre.meta +++ b/physics/GFS_rrtmgp_pre.meta @@ -8,6 +8,14 @@ [ccpp-arg-table] name = GFS_rrtmgp_pre_init type = scheme +[nGases] + standard_name = number_of_active_gases_used_by_RRTMGP + long_name = number of gases available used by RRTMGP (Model%nGases) + units = count + dimensions = () + type = integer + intent = in + optional = F [active_gases] standard_name = active_gases_used_by_RRTMGP long_name = active gases used by RRTMGP @@ -17,13 +25,14 @@ kind = len=128 intent = in optional = F -[nGases] - standard_name = number_of_active_gases_used_by_RRTMGP - long_name = number of gases available used by RRTMGP (Model%nGases) - units = count - dimensions = () - type = integer - intent = in +[active_gases_array] + standard_name = list_of_active_gases_used_by_RRTMGP + long_name = list of active gases used by RRTMGP + units = none + dimensions = (number_of_active_gases_used_by_RRTMGP) + type = character + kind = len=128 + intent = out optional = F [errmsg] standard_name = ccpp_error_message @@ -347,6 +356,15 @@ kind = kind_phys intent = inout optional = F +[active_gases_array] + standard_name = list_of_active_gases_used_by_RRTMGP + long_name = list of active gases used by RRTMGP + units = none + dimensions = (number_of_active_gases_used_by_RRTMGP) + type = character + kind = len=* + intent = in + optional = F [gas_concentrations] standard_name = Gas_concentrations_for_RRTMGP_suite long_name = DDT containing gas concentrations for RRTMGP radiation scheme diff --git a/physics/rrtmgp_lw_cloud_sampling.F90 b/physics/rrtmgp_lw_cloud_sampling.F90 index 0f4459487..8702c20d7 100644 --- a/physics/rrtmgp_lw_cloud_sampling.F90 +++ b/physics/rrtmgp_lw_cloud_sampling.F90 @@ -12,37 +12,13 @@ module rrtmgp_lw_cloud_sampling contains - ! ######################################################################################### - ! SUBROUTINE rrtmgp_lw_cloud_sampling_init() - ! ######################################################################################### -!! \section arg_table_rrtmgp_lw_cloud_sampling_init -!! \htmlinclude rrtmgp_lw_cloud_sampling_init.html -!! - subroutine rrtmgp_lw_cloud_sampling_init(ipsdlw0, errmsg, errflg) - ! Outputs - integer, intent(out) :: & - ipsdlw0 ! Initial permutation seed for McICA - character(len=*), intent(out) :: & - errmsg ! Error message - integer, intent(out) :: & - errflg ! Error flag - - ! Initialize CCPP error handling variables - errmsg = '' - errflg = 0 - - ! Set initial permutation seed for McICA, initially set to number of G-points - ipsdlw0 = lw_gas_props%get_ngpt() - - end subroutine rrtmgp_lw_cloud_sampling_init - ! ######################################################################################### ! SUBROTUINE rrtmgp_lw_cloud_sampling_run() ! ######################################################################################### !! \section arg_table_rrtmgp_lw_cloud_sampling_run !! \htmlinclude rrtmgp_lw_cloud_sampling_run.html !! - subroutine rrtmgp_lw_cloud_sampling_run(doLWrad, nCol, nLev, ipsdlw0, icseed_lw, iovr, & + subroutine rrtmgp_lw_cloud_sampling_run(doLWrad, nCol, nLev, icseed_lw, iovr, & iovr_max, iovr_maxrand, iovr_rand, iovr_dcorr, iovr_exp, iovr_exprand, isubc_lw, & cld_frac, precip_frac, cloud_overlap_param, precip_overlap_param, & doGP_lwscat, lw_optical_props_cloudsByBand, lw_optical_props_precipByBand, & @@ -62,7 +38,6 @@ subroutine rrtmgp_lw_cloud_sampling_run(doLWrad, nCol, nLev, ipsdlw0, icseed_lw, 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 - ipsdlw0, & ! Initial permutation seed for McICA isubc_lw integer,intent(in),dimension(ncol) :: & icseed_lw ! auxiliary special cloud related array when module @@ -115,7 +90,7 @@ subroutine rrtmgp_lw_cloud_sampling_run(doLWrad, nCol, nLev, ipsdlw0, icseed_lw, ! Change random number seed value for each radiation invocation (isubc_lw =1 or 2). if(isubc_lw == 1) then ! advance prescribed permutation seed do iCol = 1, ncol - ipseed_lw(iCol) = ipsdlw0 + iCol + ipseed_lw(iCol) = lw_gas_props%get_ngpt() + iCol enddo elseif (isubc_lw == 2) then ! use input array of permutaion seeds do iCol = 1, ncol @@ -184,7 +159,7 @@ subroutine rrtmgp_lw_cloud_sampling_run(doLWrad, nCol, nLev, ipsdlw0, icseed_lw, ! Change random number seed value for each radiation invocation (isubc_lw =1 or 2). if(isubc_lw == 1) then ! advance prescribed permutation seed do iCol = 1, ncol - ipseed_lw(iCol) = ipsdlw0 + iCol + ipseed_lw(iCol) = lw_gas_props%get_ngpt() + iCol enddo elseif (isubc_lw == 2) then ! use input array of permutaion seeds do iCol = 1, ncol diff --git a/physics/rrtmgp_lw_cloud_sampling.meta b/physics/rrtmgp_lw_cloud_sampling.meta index c22304bf4..21cc1eed6 100644 --- a/physics/rrtmgp_lw_cloud_sampling.meta +++ b/physics/rrtmgp_lw_cloud_sampling.meta @@ -3,36 +3,6 @@ type = scheme dependencies = machine.F,mersenne_twister.f,physparam.f,rrtmgp_sampling.F90,radiation_tools.F90 -######################################################################## -[ccpp-arg-table] - name = rrtmgp_lw_cloud_sampling_init - type = scheme -[ipsdlw0] - standard_name = initial_permutation_seed_lw - long_name = initial seed for McICA LW - units = none - dimensions = () - type = integer - intent = out - optional = F -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out - optional = F -[errflg] - standard_name = ccpp_error_flag - long_name = error flag for error handling in CCPP - units = flag - dimensions = () - type = integer - intent = out - optional = F - ###################################################### [ccpp-arg-table] name = rrtmgp_lw_cloud_sampling_run @@ -52,7 +22,7 @@ dimensions = () type = logical intent = in - optional = F + optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -77,14 +47,6 @@ type = integer intent = in optional = F -[ipsdlw0] - standard_name = initial_permutation_seed_lw - long_name = initial seed for McICA LW - units = none - dimensions = () - type = integer - intent = in - optional = F [iovr] standard_name = flag_for_cloud_overlap_method_for_radiation long_name = max-random overlap clouds diff --git a/physics/rrtmgp_lw_gas_optics.F90 b/physics/rrtmgp_lw_gas_optics.F90 index a116ad772..73c8c175c 100644 --- a/physics/rrtmgp_lw_gas_optics.F90 +++ b/physics/rrtmgp_lw_gas_optics.F90 @@ -5,8 +5,7 @@ module rrtmgp_lw_gas_optics use mo_gas_concentrations, only: ty_gas_concs use mo_source_functions, only: ty_source_func_lw use mo_optical_props, only: ty_optical_props_1scl - use radiation_tools, only: check_error_msg - use GFS_rrtmgp_pre, only: active_gases_array + use radiation_tools, only: check_error_msg use netcdf #ifdef MPI use mpi @@ -76,11 +75,9 @@ module rrtmgp_lw_gas_optics !! \htmlinclude rrtmgp_lw_gas_optics_init.html !! subroutine rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, mpicomm, & - mpirank, mpiroot, gas_concentrations, minGPpres, minGPtemp, errmsg, errflg) + mpirank, mpiroot, minGPpres, minGPtemp, active_gases_array, errmsg, errflg) ! Inputs - type(ty_gas_concs), intent(inout) :: & - gas_concentrations ! RRTMGP DDT: trace gas concentrations (vmr) character(len=128),intent(in) :: & rrtmgp_root_dir, & ! RTE-RRTMGP root directory rrtmgp_lw_file_gas ! RRTMGP file containing coefficients used to compute gaseous optical properties @@ -97,12 +94,15 @@ subroutine rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, mpicom real(kind_phys), intent(out) :: & minGPtemp, & ! Minimum temperature allowed by RRTMGP. minGPpres ! Minimum pressure allowed by RRTMGP. + character(len=*), dimension(:), intent(in) :: & + active_gases_array ! List of active gases from namelist as array ! Local variables integer :: ncid, dimID, varID, status, iGas, ierr, ii, mpierr, iChar integer,dimension(:),allocatable :: temp1, temp2, temp3, temp4, & temp_log_array1, temp_log_array2, temp_log_array3, temp_log_array4 character(len=264) :: lw_gas_props_file + type(ty_gas_concs) :: gas_concentrations ! RRTMGP DDT: trace gas concentrations (vmr) ! Initialize errmsg = '' @@ -435,6 +435,7 @@ subroutine rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, mpicom ! Initialize RRTMGP DDT's... ! ! ####################################################################################### + allocate(gas_concentrations%gas_name(1:size(active_gases_array))) gas_concentrations%gas_name(:) = active_gases_array(:) call check_error_msg('rrtmgp_lw_gas_optics_init',lw_gas_props%load(gas_concentrations, & gas_namesLW, key_speciesLW, band2gptLW, band_limsLW, press_refLW, press_ref_tropLW,& @@ -459,8 +460,9 @@ end subroutine rrtmgp_lw_gas_optics_init !! \section arg_table_rrtmgp_lw_gas_optics_run !! \htmlinclude rrtmgp_lw_gas_optics_run.html !! - subroutine rrtmgp_lw_gas_optics_run(doLWrad, nCol, nLev, p_lay, p_lev, t_lay, t_lev, tsfg,& - gas_concentrations, lw_optical_props_clrsky, sources, errmsg, errflg) + subroutine rrtmgp_lw_gas_optics_run(doLWrad, nCol, nLev, p_lay, p_lev, t_lay, t_lev, tsfg, & + active_gases_array, gas_concentrations, lw_optical_props_clrsky, sources, & + errmsg, errflg) ! Inputs logical, intent(in) :: & @@ -476,8 +478,10 @@ subroutine rrtmgp_lw_gas_optics_run(doLWrad, nCol, nLev, p_lay, p_lev, t_lay, t_ t_lev ! Temperature @ model levels real(kind_phys), dimension(ncol), intent(in) :: & tsfg ! Surface ground temperature (K) - type(ty_gas_concs),intent(in) :: & + type(ty_gas_concs),intent(inout) :: & gas_concentrations ! RRTMGP DDT: trace gas concentrations (vmr) + character(len=*), dimension(:), intent(in) :: & + active_gases_array ! List of active gases from namelist as array ! Output character(len=*), intent(out) :: & @@ -498,6 +502,8 @@ subroutine rrtmgp_lw_gas_optics_run(doLWrad, nCol, nLev, p_lay, p_lev, t_lay, t_ if (.not. doLWrad) return + gas_concentrations%gas_name(:) = active_gases_array(:) + ! Copy spectral information into GP DDTs. lw_optical_props_clrsky%band2gpt = lw_gas_props%get_band_lims_gpoint() sources%band2gpt = lw_gas_props%get_band_lims_gpoint() diff --git a/physics/rrtmgp_lw_gas_optics.meta b/physics/rrtmgp_lw_gas_optics.meta index b0c58b191..f021e45fb 100644 --- a/physics/rrtmgp_lw_gas_optics.meta +++ b/physics/rrtmgp_lw_gas_optics.meta @@ -25,14 +25,6 @@ intent = in optional = F kind = len=128 -[gas_concentrations] - standard_name = Gas_concentrations_for_RRTMGP_suite - long_name = DDT containing gas concentrations for RRTMGP radiation scheme - units = DDT - dimensions = () - type = ty_gas_concs - intent = inout - optional = F [mpirank] standard_name = mpi_rank long_name = current MPI rank @@ -57,23 +49,6 @@ type = integer intent = in optional = F -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out - optional = F -[errflg] - standard_name = ccpp_error_flag - long_name = error flag for error handling in CCPP - units = flag - dimensions = () - type = integer - intent = out - optional = F [minGPpres] standard_name = minimum_pressure_in_RRTMGP long_name = minimum pressure allowed in RRTMGP @@ -92,6 +67,32 @@ kind = kind_phys intent = out optional = F +[active_gases_array] + standard_name = list_of_active_gases_used_by_RRTMGP + long_name = list of active gases used by RRTMGP + units = none + dimensions = (number_of_active_gases_used_by_RRTMGP) + type = character + kind = len=* + intent = in + optional = F +[errmsg] + standard_name = ccpp_error_message + long_name = error message for error handling in CCPP + units = none + dimensions = () + type = character + kind = len=* + intent = out + optional = F +[errflg] + standard_name = ccpp_error_flag + long_name = error flag for error handling in CCPP + units = flag + dimensions = () + type = integer + intent = out + optional = F ######################################################################## [ccpp-arg-table] @@ -166,13 +167,22 @@ kind = kind_phys intent = in optional = F +[active_gases_array] + standard_name = list_of_active_gases_used_by_RRTMGP + long_name = list of active gases used by RRTMGP + units = none + dimensions = (number_of_active_gases_used_by_RRTMGP) + type = character + kind = len=* + intent = in + optional = F [gas_concentrations] standard_name = Gas_concentrations_for_RRTMGP_suite long_name = DDT containing gas concentrations for RRTMGP radiation scheme units = DDT dimensions = () type = ty_gas_concs - intent = in + intent = inout optional = F [lw_optical_props_clrsky] standard_name = longwave_optical_properties_for_clear_sky diff --git a/physics/rrtmgp_sw_cloud_sampling.F90 b/physics/rrtmgp_sw_cloud_sampling.F90 index 043949fa5..b234ce41a 100644 --- a/physics/rrtmgp_sw_cloud_sampling.F90 +++ b/physics/rrtmgp_sw_cloud_sampling.F90 @@ -3,38 +3,14 @@ module rrtmgp_sw_cloud_sampling use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp use mo_optical_props, only: ty_optical_props_2str use rrtmgp_sampling, only: sampled_mask, draw_samples - use mersenne_twister, only: random_setseed, random_number, random_stat - use radiation_tools, only: check_error_msg + use mersenne_twister, only: random_setseed, random_number, random_stat + use radiation_tools, only: check_error_msg use rrtmgp_sw_gas_optics, only: sw_gas_props use netcdf implicit none contains - ! ######################################################################################### - ! SUBROUTINE rrtmgp_sw_cloud_sampling_init() - ! ######################################################################################### -!! \section arg_table_rrtmgp_sw_cloud_sampling_init -!! \htmlinclude rrtmgp_sw_cloud_sampling.html -!! - subroutine rrtmgp_sw_cloud_sampling_init(ipsdsw0, errmsg, errflg) - - ! Outputs - integer, intent(out) :: & - ipsdsw0 ! Initial permutation seed for McICA - character(len=*), intent(out) :: & - errmsg ! Error message - integer, intent(out) :: & - errflg ! Error flag - - ! Initialize CCPP error handling variables - errmsg = '' - errflg = 0 - - ! Set initial permutation seed for McICA, initially set to number of G-points - ipsdsw0 = sw_gas_props%get_ngpt() - - end subroutine rrtmgp_sw_cloud_sampling_init ! ######################################################################################### ! SUBROTUINE rrtmgp_sw_cloud_sampling_run() @@ -42,7 +18,7 @@ end subroutine rrtmgp_sw_cloud_sampling_init !! \section arg_table_rrtmgp_sw_cloud_sampling_run !! \htmlinclude rrtmgp_sw_cloud_sampling.html !! - subroutine rrtmgp_sw_cloud_sampling_run(doSWrad, nCol, nDay, nLev, ipsdsw0, idxday, iovr, & + subroutine rrtmgp_sw_cloud_sampling_run(doSWrad, nCol, nDay, nLev, idxday, iovr, & iovr_max, iovr_maxrand, iovr_rand, iovr_dcorr, iovr_exp, iovr_exprand, isubc_sw, & icseed_sw, cld_frac, precip_frac, cloud_overlap_param, precip_overlap_param, & sw_optical_props_cloudsByBand, sw_optical_props_precipByBand, & @@ -55,7 +31,6 @@ subroutine rrtmgp_sw_cloud_sampling_run(doSWrad, nCol, nDay, nLev, ipsdsw0, idxd nCol, & ! Number of horizontal gridpoints nDay, & ! Number of daylit points. nLev, & ! Number of vertical layers - ipsdsw0, & ! Initial permutation seed for McICA iovr, & ! Choice of cloud-overlap method iovr_max, & ! Flag for maximum cloud overlap method iovr_maxrand, & ! Flag for maximum-random cloud overlap method @@ -120,7 +95,7 @@ subroutine rrtmgp_sw_cloud_sampling_run(doSWrad, nCol, nDay, nLev, ipsdsw0, idxd ! Change random number seed value for each radiation invocation (isubc_sw =1 or 2). if(isubc_sw == 1) then ! advance prescribed permutation seed do iday = 1, nday - ipseed_sw(iday) = ipsdsw0 + iday + ipseed_sw(iday) = sw_gas_props%get_ngpt() + iday enddo elseif (isubc_sw == 2) then ! use input array of permutaion seeds do iday = 1, nday @@ -193,7 +168,7 @@ subroutine rrtmgp_sw_cloud_sampling_run(doSWrad, nCol, nDay, nLev, ipsdsw0, idxd ! Change random number seed value for each radiation invocation (isubc_sw =1 or 2). if(isubc_sw == 1) then ! advance prescribed permutation seed do iday = 1, nday - ipseed_sw(iday) = ipsdsw0 + iday + ipseed_sw(iday) = sw_gas_props%get_ngpt() + iday enddo elseif (isubc_sw == 2) then ! use input array of permutaion seeds do iday = 1, nday diff --git a/physics/rrtmgp_sw_cloud_sampling.meta b/physics/rrtmgp_sw_cloud_sampling.meta index 4ba9dcd3b..f1452abf8 100644 --- a/physics/rrtmgp_sw_cloud_sampling.meta +++ b/physics/rrtmgp_sw_cloud_sampling.meta @@ -3,36 +3,6 @@ type = scheme dependencies = machine.F,mersenne_twister.f,physparam.f,rrtmgp_sampling.F90,radiation_tools.F90 -######################################################################## -[ccpp-arg-table] - name = rrtmgp_sw_cloud_sampling_init - type = scheme -[ipsdsw0] - standard_name = initial_permutation_seed_sw - long_name = initial seed for McICA SW - units = none - dimensions = () - type = integer - intent = out - optional = F -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out - optional = F -[errflg] - standard_name = ccpp_error_flag - long_name = error flag for error handling in CCPP - units = flag - dimensions = () - type = integer - intent = out - optional = F - ###################################################### [ccpp-arg-table] name = rrtmgp_sw_cloud_sampling_run @@ -77,14 +47,6 @@ type = integer intent = in optional = F -[ipsdsw0] - standard_name = initial_permutation_seed_sw - long_name = initial seed for McICA SW - units = none - dimensions = () - type = integer - intent = in - optional = F [idxday] standard_name = daytime_points long_name = daytime points diff --git a/physics/rrtmgp_sw_gas_optics.F90 b/physics/rrtmgp_sw_gas_optics.F90 index bd0ac1169..669b986ab 100644 --- a/physics/rrtmgp_sw_gas_optics.F90 +++ b/physics/rrtmgp_sw_gas_optics.F90 @@ -3,9 +3,8 @@ module rrtmgp_sw_gas_optics use mo_rte_kind, only: wl use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp use mo_gas_concentrations, only: ty_gas_concs - use radiation_tools, only: check_error_msg + use radiation_tools, only: check_error_msg use mo_optical_props, only: ty_optical_props_2str - use GFS_rrtmgp_pre, only: active_gases_array use netcdf #ifdef MPI use mpi @@ -81,7 +80,7 @@ module rrtmgp_sw_gas_optics !! \htmlinclude rrtmgp_sw_gas_optics.html !! subroutine rrtmgp_sw_gas_optics_init(nCol, nLev, nThreads, rrtmgp_root_dir, & - rrtmgp_sw_file_gas, gas_concentrations, mpicomm, mpirank, mpiroot, errmsg, errflg) + rrtmgp_sw_file_gas, active_gases_array, mpicomm, mpirank, mpiroot, errmsg, errflg) ! Inputs character(len=128),intent(in) :: & @@ -94,9 +93,9 @@ subroutine rrtmgp_sw_gas_optics_init(nCol, nLev, nThreads, rrtmgp_root_dir, mpicomm, & ! MPI communicator mpirank, & ! Current MPI rank mpiroot ! Master MPI rank - type(ty_gas_concs),intent(inout) :: & - gas_concentrations ! RRTMGP DDT containing active trace gases. - + character(len=*), dimension(:), intent(in) :: & + active_gases_array ! List of active gases from namelist as array + ! Outputs character(len=*), intent(out) :: & errmsg ! CCPP error message @@ -107,6 +106,8 @@ subroutine rrtmgp_sw_gas_optics_init(nCol, nLev, nThreads, rrtmgp_root_dir, integer :: status, ncid, dimid, varID, iGas, mpierr, iChar integer,dimension(:),allocatable :: temp1, temp2, temp3, temp4 character(len=264) :: sw_gas_props_file + type(ty_gas_concs) :: gas_concentrations ! RRTMGP DDT containing active trace gases + ! Initialize errmsg = '' @@ -468,6 +469,7 @@ subroutine rrtmgp_sw_gas_optics_init(nCol, nLev, nThreads, rrtmgp_root_dir, ! Initialize RRTMGP DDT's... ! ! ####################################################################################### + allocate(gas_concentrations%gas_name(1:size(active_gases_array))) gas_concentrations%gas_name(:) = active_gases_array(:) call check_error_msg('sw_gas_optics_init',sw_gas_props%load(gas_concentrations, & gas_namesSW, key_speciesSW, band2gptSW, band_limsSW, press_refSW, press_ref_tropSW,& @@ -489,8 +491,8 @@ end subroutine rrtmgp_sw_gas_optics_init !! \htmlinclude rrtmgp_sw_gas_optics.html !! subroutine rrtmgp_sw_gas_optics_run(doSWrad, nCol, nLev, ngptsGPsw, nday, idxday, p_lay, & - p_lev, toa_src_sw, t_lay, t_lev, gas_concentrations, solcon, sw_optical_props_clrsky,& - errmsg, errflg) + p_lev, toa_src_sw, t_lay, t_lev, active_gases_array, gas_concentrations, solcon, & + sw_optical_props_clrsky, errmsg, errflg) ! Inputs logical, intent(in) :: & @@ -508,7 +510,7 @@ subroutine rrtmgp_sw_gas_optics_run(doSWrad, nCol, nLev, ngptsGPsw, nday, idxday real(kind_phys), dimension(ncol,nLev+1), intent(in) :: & p_lev, & ! Pressure @ model layer-interfaces (hPa) t_lev ! Temperature @ model levels - type(ty_gas_concs),intent(in) :: & + type(ty_gas_concs),intent(inout) :: & gas_concentrations ! RRTMGP DDT: trace gas concentrations (vmr) real(kind_phys), intent(in) :: & solcon ! Solar constant @@ -522,6 +524,8 @@ subroutine rrtmgp_sw_gas_optics_run(doSWrad, nCol, nLev, ngptsGPsw, nday, idxday sw_optical_props_clrsky ! RRTMGP DDT: clear-sky shortwave optical properties, spectral (tau,ssa,g) real(kind_phys), dimension(nCol,ngptsGPsw), intent(out) :: & toa_src_sw ! TOA incident spectral flux (W/m2) + character(len=*), dimension(:), intent(in) :: & + active_gases_array ! List of active gases from namelist as array ! Local variables integer :: ij,iGas @@ -535,6 +539,8 @@ subroutine rrtmgp_sw_gas_optics_run(doSWrad, nCol, nLev, ngptsGPsw, nday, idxday if (.not. doSWrad) return + gas_concentrations%gas_name(:) = active_gases_array(:) + toa_src_sw(:,:) = 0._kind_phys if (nDay .gt. 0) then !active_gases = gas_concentrations%get_gas_names() diff --git a/physics/rrtmgp_sw_gas_optics.meta b/physics/rrtmgp_sw_gas_optics.meta index f85daf09a..37d81806e 100644 --- a/physics/rrtmgp_sw_gas_optics.meta +++ b/physics/rrtmgp_sw_gas_optics.meta @@ -49,13 +49,14 @@ intent = in optional = F kind = len=128 -[gas_concentrations] - standard_name = Gas_concentrations_for_RRTMGP_suite - long_name = DDT containing gas concentrations for RRTMGP radiation scheme - units = DDT - dimensions = () - type = ty_gas_concs - intent = inout +[active_gases_array] + standard_name = list_of_active_gases_used_by_RRTMGP + long_name = list of active gases used by RRTMGP + units = none + dimensions = (number_of_active_gases_used_by_RRTMGP) + type = character + kind = len=* + intent = in optional = F [mpirank] standard_name = mpi_rank @@ -196,13 +197,22 @@ kind = kind_phys intent = out optional = F +[active_gases_array] + standard_name = list_of_active_gases_used_by_RRTMGP + long_name = list of active gases used by RRTMGP + units = none + dimensions = (number_of_active_gases_used_by_RRTMGP) + type = character + kind = len=* + intent = in + optional = F [gas_concentrations] standard_name = Gas_concentrations_for_RRTMGP_suite long_name = DDT containing gas concentrations for RRTMGP radiation scheme units = DDT dimensions = () type = ty_gas_concs - intent = in + intent = inout optional = F [solcon] standard_name = solar_constant From 4b900e9afdb7fa5b1b549e82899ca7d2662a6d7b Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 4 Oct 2021 14:05:27 -0600 Subject: [PATCH 46/98] Remove additional Noah WRFv4 files --- physics/module_sf_noahlsm.F90 | 4793 -------------------- physics/module_sf_noahlsm_glacial_only.F90 | 1285 ------ 2 files changed, 6078 deletions(-) delete mode 100644 physics/module_sf_noahlsm.F90 delete mode 100644 physics/module_sf_noahlsm_glacial_only.F90 diff --git a/physics/module_sf_noahlsm.F90 b/physics/module_sf_noahlsm.F90 deleted file mode 100644 index 13d8e9813..000000000 --- a/physics/module_sf_noahlsm.F90 +++ /dev/null @@ -1,4793 +0,0 @@ - MODULE module_sf_noahlsm - -!ckay=KIRAN ALAPATY @ US EPA -- November 01, 2015 -! -! Tim Glotfelty@CNSU; AJ Deng@PSU -!modified for use with FASDAS -!Flux Adjusting Surface Data Assimilation System to assimilate -!surface layer and soil layers temperature and moisture using -! surfance reanalsys -!Reference: Alapaty et al., 2008: Development of the flux-adjusting surface -! data assimilation system for mesoscale models. JAMC, 47, 2331-2350 -! - - REAL, PARAMETER :: EMISSI_S = 0.95 - -! VEGETATION PARAMETERS - INTEGER :: LUCATS , BARE - INTEGER :: NATURAL - INTEGER :: LOW_DENSITY_RESIDENTIAL, HIGH_DENSITY_RESIDENTIAL, HIGH_INTENSITY_INDUSTRIAL - integer, PARAMETER :: NLUS=50 - CHARACTER(LEN=256) LUTYPE - INTEGER, DIMENSION(1:NLUS) :: NROTBL - real, dimension(1:NLUS) :: SNUPTBL, RSTBL, RGLTBL, HSTBL, & - SHDTBL, MAXALB, & - EMISSMINTBL, EMISSMAXTBL, & - LAIMINTBL, LAIMAXTBL, & - Z0MINTBL, Z0MAXTBL, & - ALBEDOMINTBL, ALBEDOMAXTBL, & - ZTOPVTBL,ZBOTVTBL - REAL :: TOPT_DATA,CMCMAX_DATA,CFACTR_DATA,RSMAX_DATA - -! SOIL PARAMETERS - INTEGER :: SLCATS - INTEGER, PARAMETER :: NSLTYPE=30 - CHARACTER(LEN=256) SLTYPE - REAL, DIMENSION (1:NSLTYPE) :: BB,DRYSMC,F11, & - MAXSMC, REFSMC,SATPSI,SATDK,SATDW, WLTSMC,QTZ - -! LSM GENERAL PARAMETERS - INTEGER :: SLPCATS - INTEGER, PARAMETER :: NSLOPE=30 - REAL, DIMENSION (1:NSLOPE) :: SLOPE_DATA - REAL :: SBETA_DATA,FXEXP_DATA,CSOIL_DATA,SALP_DATA,REFDK_DATA, & - REFKDT_DATA,FRZK_DATA,ZBOT_DATA, SMLOW_DATA,SMHIGH_DATA, & - CZIL_DATA - REAL :: LVCOEF_DATA - - integer, private :: iloc, jloc -!$omp threadprivate(iloc, jloc) -! - CONTAINS -! - - SUBROUTINE SFLX (IILOC,JJLOC,FFROZP,ISURBAN,DT,ZLVL,NSOIL,SLDPTH, & !C - LOCAL, & !L - LLANDUSE, LSOIL, & !CL - LWDN,SOLDN,SOLNET,SFCPRS,PRCP,SFCTMP,Q2,SFCSPD, & !F - COSZ,PRCPRAIN, SOLARDIRECT, & !F - TH2,Q2SAT,DQSDT2, & !I - VEGTYP,SOILTYP,SLOPETYP,SHDFAC,SHDMIN,SHDMAX, & !I - ALB, SNOALB,TBOT, Z0BRD, Z0, EMISSI, EMBRD, & !S - CMC,T1,STC,SMC,SH2O,SNOWH,SNEQV,ALBEDO,CH,CM, & !H - CP, RD, SIGMA, CPH2O, CPICE, LSUBF, & !physical constants -! ---------------------------------------------------------------------- -! OUTPUTS, DIAGNOSTICS, PARAMETERS BELOW GENERALLY NOT NECESSARY WHEN -! COUPLED WITH E.G. A NWP MODEL (SUCH AS THE NOAA/NWS/NCEP MESOSCALE ETA -! MODEL). OTHER APPLICATIONS MAY REQUIRE DIFFERENT OUTPUT VARIABLES. -! ---------------------------------------------------------------------- - ETA,SHEAT, ETA_KINEMATIC,FDOWN, & !O - EC,EDIR,ET,ETT,ESNOW,DRIP,DEW, & !O - BETA,ETP,SSOIL, & !O - FLX1,FLX2,FLX3, & !O - FLX4,FVB,FBUR,FGSN,UA_PHYS, & !UA - SNOMLT,SNCOVR, & !O - RUNOFF1,RUNOFF2,RUNOFF3, & !O - RC,PC,RSMIN,XLAI,RCS,RCT,RCQ,RCSOIL, & !O - SOILW,SOILM,Q1,SMAV, & !D - RDLAI2D,USEMONALB, & - SNOTIME1, & - RIBB, & - SMCWLT,SMCDRY,SMCREF,SMCMAX,NROOT, & - SFHEAD1RT, & !I - INFXS1RT,ETPND1,OPT_THCND,AOASIS, & !P - XSDA_QFX,HFX_PHY,QFX_PHY,XQNORM, & !fasdas - fasdas,HCPCT_FASDAS, & !fasdas - errflg, errmsg) - -! ---------------------------------------------------------------------- -! SUBROUTINE SFLX - UNIFIED NOAHLSM VERSION 1.0 JULY 2007 -! ---------------------------------------------------------------------- -! SUB-DRIVER FOR "Noah LSM" FAMILY OF PHYSICS SUBROUTINES FOR A -! SOIL/VEG/SNOWPACK LAND-SURFACE MODEL TO UPDATE SOIL MOISTURE, SOIL -! ICE, SOIL TEMPERATURE, SKIN TEMPERATURE, SNOWPACK WATER CONTENT, -! SNOWDEPTH, AND ALL TERMS OF THE SURFACE ENERGY BALANCE AND SURFACE -! WATER BALANCE (EXCLUDING INPUT ATMOSPHERIC FORCINGS OF DOWNWARD -! RADIATION AND PRECIP) -! ---------------------------------------------------------------------- -! SFLX ARGUMENT LIST KEY: -! ---------------------------------------------------------------------- -! C CONFIGURATION INFORMATION -! L LOGICAL -! CL 4-string character bearing logical meaning -! F FORCING DATA -! I OTHER (INPUT) FORCING DATA -! S SURFACE CHARACTERISTICS -! H HISTORY (STATE) VARIABLES -! O OUTPUT VARIABLES -! D DIAGNOSTIC OUTPUT -! P Parameters -! Msic Miscellaneous terms passed from gridded driver -! ---------------------------------------------------------------------- -! 1. CONFIGURATION INFORMATION (C): -! ---------------------------------------------------------------------- -! DT TIMESTEP (SEC) (DT SHOULD NOT EXCEED 3600 SECS, RECOMMEND -! 1800 SECS OR LESS) -! ZLVL HEIGHT (M) ABOVE GROUND OF ATMOSPHERIC FORCING VARIABLES -! NSOIL NUMBER OF SOIL LAYERS (AT LEAST 2, AND NOT GREATER THAN -! PARAMETER NSOLD SET BELOW) -! SLDPTH THE THICKNESS OF EACH SOIL LAYER (M) -! ---------------------------------------------------------------------- -! 2. LOGICAL: -! ---------------------------------------------------------------------- -! LCH Exchange coefficient (Ch) calculation flag (false: using -! ch-routine SFCDIF; true: Ch is brought in) -! LOCAL Flag for local-site simulation (where there is no -! maps for albedo, veg fraction, and roughness -! true: all LSM parameters (inluding albedo, veg fraction and -! roughness length) will be defined by three tables -! LLANDUSE (=USGS, using USGS landuse classification) -! LSOIL (=STAS, using FAO/STATSGO soil texture classification) -! OPT_THCND option for how to treat thermal conductivity -! ---------------------------------------------------------------------- -! 3. FORCING DATA (F): -! ---------------------------------------------------------------------- -! LWDN LW DOWNWARD RADIATION (W M-2; POSITIVE, NOT NET LONGWAVE) -! SOLDN SOLAR DOWNWARD RADIATION (W M-2; POSITIVE, NOT NET SOLAR) -! SOLNET NET DOWNWARD SOLAR RADIATION ((W M-2; POSITIVE) -! SFCPRS PRESSURE AT HEIGHT ZLVL ABOVE GROUND (PASCALS) -! PRCP PRECIP RATE (KG M-2 S-1) (NOTE, THIS IS A RATE) -! SFCTMP AIR TEMPERATURE (K) AT HEIGHT ZLVL ABOVE GROUND -! TH2 AIR POTENTIAL TEMPERATURE (K) AT HEIGHT ZLVL ABOVE GROUND -! Q2 MIXING RATIO AT HEIGHT ZLVL ABOVE GROUND (KG KG-1) -! COSZ Solar zenith angle (not used for now) -! PRCPRAIN Liquid-precipitation rate (KG M-2 S-1) (not used) -! SOLARDIRECT Direct component of downward solar radiation (W M-2) (not used) -! FFROZP FRACTION OF FROZEN PRECIPITATION -! ---------------------------------------------------------------------- -! 4. OTHER FORCING (INPUT) DATA (I): -! ---------------------------------------------------------------------- -! SFCSPD WIND SPEED (M S-1) AT HEIGHT ZLVL ABOVE GROUND -! Q2SAT SAT SPECIFIC HUMIDITY AT HEIGHT ZLVL ABOVE GROUND (KG KG-1) -! DQSDT2 SLOPE OF SAT SPECIFIC HUMIDITY CURVE AT T=SFCTMP -! (KG KG-1 K-1) -! ---------------------------------------------------------------------- -! 5. CANOPY/SOIL CHARACTERISTICS (S): -! ---------------------------------------------------------------------- -! VEGTYP VEGETATION TYPE (INTEGER INDEX) -! SOILTYP SOIL TYPE (INTEGER INDEX) -! SLOPETYP CLASS OF SFC SLOPE (INTEGER INDEX) -! SHDFAC AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION -! (FRACTION= 0.0-1.0) -! SHDMIN MINIMUM AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION -! (FRACTION= 0.0-1.0) <= SHDFAC -! PTU PHOTO THERMAL UNIT (PLANT PHENOLOGY FOR ANNUALS/CROPS) -! (NOT YET USED, BUT PASSED TO REDPRM FOR FUTURE USE IN -! VEG PARMS) -! ALB BACKROUND SNOW-FREE SURFACE ALBEDO (FRACTION), FOR JULIAN -! DAY OF YEAR (USUALLY FROM TEMPORAL INTERPOLATION OF -! MONTHLY MEAN VALUES' CALLING PROG MAY OR MAY NOT -! INCLUDE DIURNAL SUN ANGLE EFFECT) -! SNOALB UPPER BOUND ON MAXIMUM ALBEDO OVER DEEP SNOW (E.G. FROM -! ROBINSON AND KUKLA, 1985, J. CLIM. & APPL. METEOR.) -! TBOT BOTTOM SOIL TEMPERATURE (LOCAL YEARLY-MEAN SFC AIR -! TEMPERATURE) -! Z0BRD Background fixed roughness length (M) -! Z0 Time varying roughness length (M) as function of snow depth -! -! EMBRD Background surface emissivity (between 0 and 1) -! EMISSI Surface emissivity (between 0 and 1) -! ---------------------------------------------------------------------- -! 6. HISTORY (STATE) VARIABLES (H): -! ---------------------------------------------------------------------- -! CMC CANOPY MOISTURE CONTENT (M) -! T1 GROUND/CANOPY/SNOWPACK) EFFECTIVE SKIN TEMPERATURE (K) -! STC(NSOIL) SOIL TEMP (K) -! SMC(NSOIL) TOTAL SOIL MOISTURE CONTENT (VOLUMETRIC FRACTION) -! SH2O(NSOIL) UNFROZEN SOIL MOISTURE CONTENT (VOLUMETRIC FRACTION) -! NOTE: FROZEN SOIL MOISTURE = SMC - SH2O -! SNOWH ACTUAL SNOW DEPTH (M) -! SNEQV LIQUID WATER-EQUIVALENT SNOW DEPTH (M) -! NOTE: SNOW DENSITY = SNEQV/SNOWH -! ALBEDO SURFACE ALBEDO INCLUDING SNOW EFFECT (UNITLESS FRACTION) -! =SNOW-FREE ALBEDO (ALB) WHEN SNEQV=0, OR -! =FCT(MSNOALB,ALB,VEGTYP,SHDFAC,SHDMIN) WHEN SNEQV>0 -! CH SURFACE EXCHANGE COEFFICIENT FOR HEAT AND MOISTURE -! (M S-1); NOTE: CH IS TECHNICALLY A CONDUCTANCE SINCE -! IT HAS BEEN MULTIPLIED BY WIND SPEED. -! CM SURFACE EXCHANGE COEFFICIENT FOR MOMENTUM (M S-1); NOTE: -! CM IS TECHNICALLY A CONDUCTANCE SINCE IT HAS BEEN -! MULTIPLIED BY WIND SPEED. -! 6a: Physical constants -! CP specific heat of dry air at constant pressure -! RD gas constant for dry air -! SIGMA Steffan-Boltzmann constant -! CPH2O specific heat of liquid water -! CPICE specific heat of ice -! LSUBF latent heat of fusion for water -! ---------------------------------------------------------------------- -! 7. OUTPUT (O): -! ---------------------------------------------------------------------- -! OUTPUT VARIABLES NECESSARY FOR A COUPLED NUMERICAL WEATHER PREDICTION -! MODEL, E.G. NOAA/NWS/NCEP MESOSCALE ETA MODEL. FOR THIS APPLICATION, -! THE REMAINING OUTPUT/DIAGNOSTIC/PARAMETER BLOCKS BELOW ARE NOT -! NECESSARY. OTHER APPLICATIONS MAY REQUIRE DIFFERENT OUTPUT VARIABLES. -! ETA ACTUAL LATENT HEAT FLUX (W m-2: NEGATIVE, IF UP FROM -! SURFACE) -! ETA_KINEMATIC atctual latent heat flux in Kg m-2 s-1 -! SHEAT SENSIBLE HEAT FLUX (W M-2: POSITIVE, IF UPWARD FROM -! SURFACE) -! FDOWN Radiation forcing at the surface (W m-2) = SOLDN*(1-alb)+LWDN -! ---------------------------------------------------------------------- -! EC CANOPY WATER EVAPORATION (W m-2) -! EDIR DIRECT SOIL EVAPORATION (W m-2) -! ET(NSOIL) PLANT TRANSPIRATION FROM A PARTICULAR ROOT (SOIL) LAYER -! (W m-2) -! ETT TOTAL PLANT TRANSPIRATION (W m-2) -! ESNOW SUBLIMATION FROM (OR DEPOSITION TO IF <0) SNOWPACK -! (W m-2) -! DRIP THROUGH-FALL OF PRECIP AND/OR DEW IN EXCESS OF CANOPY -! WATER-HOLDING CAPACITY (M) -! DEW DEWFALL (OR FROSTFALL FOR T<273.15) (M) -! ---------------------------------------------------------------------- -! BETA RATIO OF ACTUAL/POTENTIAL EVAP (DIMENSIONLESS) -! ETP POTENTIAL EVAPORATION (W m-2) -! SSOIL SOIL HEAT FLUX (W M-2: NEGATIVE IF DOWNWARD FROM SURFACE) -! ---------------------------------------------------------------------- -! FLX1 PRECIP-SNOW SFC (W M-2) -! FLX2 FREEZING RAIN LATENT HEAT FLUX (W M-2) -! FLX3 PHASE-CHANGE HEAT FLUX FROM SNOWMELT (W M-2) -! ---------------------------------------------------------------------- -! SNOMLT SNOW MELT (M) (WATER EQUIVALENT) -! SNCOVR FRACTIONAL SNOW COVER (UNITLESS FRACTION, 0-1) -! ---------------------------------------------------------------------- -! RUNOFF1 SURFACE RUNOFF (M S-1), NOT INFILTRATING THE SURFACE -! RUNOFF2 SUBSURFACE RUNOFF (M S-1), DRAINAGE OUT BOTTOM OF LAST -! SOIL LAYER (BASEFLOW) -! RUNOFF3 NUMERICAL TRUNCTATION IN EXCESS OF POROSITY (SMCMAX) -! FOR A GIVEN SOIL LAYER AT THE END OF A TIME STEP (M S-1). -! Note: the above RUNOFF2 is actually the sum of RUNOFF2 and RUNOFF3 -! ---------------------------------------------------------------------- -! RC CANOPY RESISTANCE (S M-1) -! PC PLANT COEFFICIENT (UNITLESS FRACTION, 0-1) WHERE PC*ETP -! = ACTUAL TRANSP -! XLAI LEAF AREA INDEX (DIMENSIONLESS) -! RSMIN MINIMUM CANOPY RESISTANCE (S M-1) -! RCS INCOMING SOLAR RC FACTOR (DIMENSIONLESS) -! RCT AIR TEMPERATURE RC FACTOR (DIMENSIONLESS) -! RCQ ATMOS VAPOR PRESSURE DEFICIT RC FACTOR (DIMENSIONLESS) -! RCSOIL SOIL MOISTURE RC FACTOR (DIMENSIONLESS) -! ---------------------------------------------------------------------- -! 8. DIAGNOSTIC OUTPUT (D): -! ---------------------------------------------------------------------- -! SOILW AVAILABLE SOIL MOISTURE IN ROOT ZONE (UNITLESS FRACTION -! BETWEEN SMCWLT AND SMCMAX) -! SOILM TOTAL SOIL COLUMN MOISTURE CONTENT (FROZEN+UNFROZEN) (M) -! Q1 Effective mixing ratio at surface (kg kg-1), used for -! diagnosing the mixing ratio at 2 meter for coupled model -! SMAV Soil Moisture Availability for each layer, as a fraction -! between SMCWLT and SMCMAX. -! Documentation for SNOTIME1 and SNOABL2 ????? -! What categories of arguments do these variables fall into ???? -! Documentation for RIBB ????? -! What category of argument does RIBB fall into ????? -! ---------------------------------------------------------------------- -! 9. PARAMETERS (P): -! ---------------------------------------------------------------------- -! SMCWLT WILTING POINT (VOLUMETRIC) -! SMCDRY DRY SOIL MOISTURE THRESHOLD WHERE DIRECT EVAP FRM TOP -! LAYER ENDS (VOLUMETRIC) -! SMCREF SOIL MOISTURE THRESHOLD WHERE TRANSPIRATION BEGINS TO -! STRESS (VOLUMETRIC) -! SMCMAX POROSITY, I.E. SATURATED VALUE OF SOIL MOISTURE -! (VOLUMETRIC) -! NROOT NUMBER OF ROOT LAYERS, A FUNCTION OF VEG TYPE, DETERMINED -! IN SUBROUTINE REDPRM. -! ---------------------------------------------------------------------- - - - IMPLICIT NONE -! ---------------------------------------------------------------------- - -! DECLARATIONS - LOGICAL AND CHARACTERS -! ---------------------------------------------------------------------- - - INTEGER, INTENT(IN) :: IILOC, JJLOC - LOGICAL, INTENT(IN):: LOCAL - LOGICAL :: FRZGRA, SNOWNG - CHARACTER (LEN=256), INTENT(IN):: LLANDUSE, LSOIL - -! ---------------------------------------------------------------------- -! 1. CONFIGURATION INFORMATION (C): -! ---------------------------------------------------------------------- - INTEGER,INTENT(IN) :: NSOIL,SLOPETYP,SOILTYP,VEGTYP - INTEGER, INTENT(IN) :: ISURBAN - INTEGER,INTENT(OUT):: NROOT - INTEGER KZ, K, iout - -! ---------------------------------------------------------------------- -! 2. LOGICAL: -! ---------------------------------------------------------------------- - LOGICAL, INTENT(IN) :: RDLAI2D - LOGICAL, INTENT(IN) :: USEMONALB - INTEGER, INTENT(IN) :: OPT_THCND - - REAL, INTENT(INOUT):: SFHEAD1RT,INFXS1RT, ETPND1 - - REAL, INTENT(IN) :: SHDMIN,SHDMAX,DT,DQSDT2,LWDN,PRCP,PRCPRAIN, & - Q2,Q2SAT,SFCPRS,SFCSPD,SFCTMP, SNOALB, & - SOLDN,SOLNET,TBOT,TH2,ZLVL, & - FFROZP,AOASIS - REAL, INTENT(IN) :: CP, RD, SIGMA, CPH2O, CPICE, LSUBF - REAL, INTENT(OUT) :: EMBRD - REAL, INTENT(OUT) :: ALBEDO - REAL, INTENT(INOUT):: COSZ, SOLARDIRECT,CH,CM, & - CMC,SNEQV,SNCOVR,SNOWH,T1,XLAI,SHDFAC,Z0BRD, & - EMISSI, ALB - REAL, INTENT(INOUT):: SNOTIME1 - REAL, INTENT(INOUT):: RIBB - REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SLDPTH - REAL, DIMENSION(1:NSOIL), INTENT(OUT):: ET - REAL, DIMENSION(1:NSOIL), INTENT(OUT):: SMAV - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: SH2O, SMC, STC - REAL,DIMENSION(1:NSOIL):: RTDIS, ZSOIL - - REAL,INTENT(OUT) :: ETA_KINEMATIC,BETA,DEW,DRIP,EC,EDIR,ESNOW,ETA, & - ETP,FLX1,FLX2,FLX3,SHEAT,PC,RUNOFF1,RUNOFF2, & - RUNOFF3,RC,RSMIN,RCQ,RCS,RCSOIL,RCT,SSOIL, & - SMCDRY,SMCMAX,SMCREF,SMCWLT,SNOMLT, SOILM, & - SOILW,FDOWN,Q1 - LOGICAL, INTENT(IN) :: UA_PHYS ! UA: flag for UA option - REAL,INTENT(OUT) :: FLX4 ! UA: energy added to sensible heat - REAL,INTENT(OUT) :: FVB ! UA: frac. veg. w/snow beneath - REAL,INTENT(OUT) :: FBUR ! UA: fraction of canopy buried - REAL,INTENT(OUT) :: FGSN ! UA: ground snow cover fraction - REAL :: ZTOPV ! UA: height of canopy top - REAL :: ZBOTV ! UA: height of canopy bottom - REAL :: GAMA ! UA: = EXP(-1.* XLAI) - REAL :: FNET ! UA: - REAL :: ETPN ! UA: - REAL :: RU ! UA: - - REAL :: BEXP,CFACTR,CMCMAX,CSOIL,CZIL,DF1,DF1H,DF1A,DKSAT,DWSAT, & - DSOIL,DTOT,ETT,FRCSNO,FRCSOI,EPSCA,F1,FXEXP,FRZX,HS, & - KDT,LVH2O,PRCP1,PSISAT,QUARTZ,R,RCH,REFKDT,RR,RGL, & - RSMAX, & - RSNOW,SNDENS,SNCOND,SBETA,SN_NEW,SLOPE,SNUP,SALP,SOILWM, & - SOILWW,T1V,T24,T2V,TH2V,TOPT,TFREEZ,TSNOW,ZBOT,Z0,PRCPF, & - ETNS,PTU,LSUBS - REAL :: LVCOEF - REAL :: INTERP_FRACTION - REAL :: LAIMIN, LAIMAX - REAL :: ALBEDOMIN, ALBEDOMAX - REAL :: EMISSMIN, EMISSMAX - REAL :: Z0MIN, Z0MAX - -! ---------------------------------------------------------------------- -! DECLARATIONS - PARAMETERS -! ---------------------------------------------------------------------- - PARAMETER (TFREEZ = 273.15) - PARAMETER (LVH2O = 2.501E+6) - PARAMETER (LSUBS = 2.83E+6) - PARAMETER (R = 287.04) -! -! FASDAS -! - INTEGER, INTENT(IN ) :: fasdas - REAL, INTENT(INOUT) :: XSDA_QFX, XQNORM - REAL, INTENT(INOUT) :: HFX_PHY, QFX_PHY - REAL, INTENT( OUT) :: HCPCT_FASDAS -! -! END FASDAS - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg -! -! ---------------------------------------------------------------------- -! INITIALIZATION -! ---------------------------------------------------------------------- - errmsg = '' - errflg = 0 - - ILOC = IILOC - JLOC = JJLOC - - RUNOFF1 = 0.0 - RUNOFF2 = 0.0 - RUNOFF3 = 0.0 - SNOMLT = 0.0 - - IF ( .NOT. UA_PHYS ) THEN - FLX4 = 0.0 - FVB = 0.0 - FBUR = 0.0 - FGSN = 0.0 - ENDIF - -! ---------------------------------------------------------------------- -! CALCULATE DEPTH (NEGATIVE) BELOW GROUND FROM TOP SKIN SFC TO BOTTOM OF -! EACH SOIL LAYER. NOTE: SIGN OF ZSOIL IS NEGATIVE (DENOTING BELOW -! GROUND) -! ---------------------------------------------------------------------- - ZSOIL (1) = - SLDPTH (1) - DO KZ = 2,NSOIL - ZSOIL (KZ) = - SLDPTH (KZ) + ZSOIL (KZ -1) - END DO -! ---------------------------------------------------------------------- -! NEXT IS CRUCIAL CALL TO SET THE LAND-SURFACE PARAMETERS, INCLUDING -! SOIL-TYPE AND VEG-TYPE DEPENDENT PARAMETERS. -! ---------------------------------------------------------------------- - CALL REDPRM (VEGTYP,SOILTYP,SLOPETYP,CFACTR,CMCMAX,RSMAX,TOPT, & - REFKDT,KDT,SBETA, SHDFAC,RSMIN,RGL,HS,ZBOT,FRZX, & - PSISAT,SLOPE,SNUP,SALP,BEXP,DKSAT,DWSAT, & - SMCMAX,SMCWLT,SMCREF,SMCDRY,F1,QUARTZ,FXEXP, & - RTDIS,SLDPTH,ZSOIL,NROOT,NSOIL,CZIL, & - LAIMIN, LAIMAX, EMISSMIN, EMISSMAX, ALBEDOMIN, & - ALBEDOMAX, Z0MIN, Z0MAX, CSOIL, PTU, LLANDUSE, & - LSOIL,LOCAL,LVCOEF,ZTOPV,ZBOTV,errmsg,errflg) - if(errflg > 0) return - -!urban - IF(VEGTYP==ISURBAN)THEN - SHDFAC=0.05 - RSMIN=400.0 - SMCMAX = 0.45 - SMCREF = 0.42 - SMCWLT = 0.40 - SMCDRY = 0.40 - ENDIF - - IF ( SHDFAC >= SHDMAX ) THEN - EMBRD = EMISSMAX - IF (.NOT. RDLAI2D) THEN - XLAI = LAIMAX - ENDIF - IF (.NOT. USEMONALB) THEN - ALB = ALBEDOMIN - ENDIF - Z0BRD = Z0MAX - ELSE IF ( SHDFAC <= SHDMIN ) THEN - EMBRD = EMISSMIN - IF(.NOT. RDLAI2D) THEN - XLAI = LAIMIN - ENDIF - IF(.NOT. USEMONALB) then - ALB = ALBEDOMAX - ENDIF - Z0BRD = Z0MIN - ELSE - - IF ( SHDMAX > SHDMIN ) THEN - - INTERP_FRACTION = ( SHDFAC - SHDMIN ) / ( SHDMAX - SHDMIN ) - ! Bound INTERP_FRACTION between 0 and 1 - INTERP_FRACTION = MIN ( INTERP_FRACTION, 1.0 ) - INTERP_FRACTION = MAX ( INTERP_FRACTION, 0.0 ) - ! Scale Emissivity and LAI between EMISSMIN and EMISSMAX by INTERP_FRACTION - EMBRD = ( ( 1.0 - INTERP_FRACTION ) * EMISSMIN ) + ( INTERP_FRACTION * EMISSMAX ) - IF (.NOT. RDLAI2D) THEN - XLAI = ( ( 1.0 - INTERP_FRACTION ) * LAIMIN ) + ( INTERP_FRACTION * LAIMAX ) - ENDIF - if (.not. USEMONALB) then - ALB = ( ( 1.0 - INTERP_FRACTION ) * ALBEDOMAX ) + ( INTERP_FRACTION * ALBEDOMIN ) - endif - Z0BRD = ( ( 1.0 - INTERP_FRACTION ) * Z0MIN ) + ( INTERP_FRACTION * Z0MAX ) - - ELSE - - EMBRD = 0.5 * EMISSMIN + 0.5 * EMISSMAX - IF (.NOT. RDLAI2D) THEN - XLAI = 0.5 * LAIMIN + 0.5 * LAIMAX - ENDIF - if (.not. USEMONALB) then - ALB = 0.5 * ALBEDOMIN + 0.5 * ALBEDOMAX - endif - Z0BRD = 0.5 * Z0MIN + 0.5 * Z0MAX - - ENDIF - - ENDIF -! ---------------------------------------------------------------------- -! INITIALIZE PRECIPITATION LOGICALS. -! ---------------------------------------------------------------------- - SNOWNG = .FALSE. - FRZGRA = .FALSE. - -! ---------------------------------------------------------------------- -! IF INPUT SNOWPACK IS NONZERO, THEN COMPUTE SNOW DENSITY "SNDENS" AND -! SNOW THERMAL CONDUCTIVITY "SNCOND" (NOTE THAT CSNOW IS A FUNCTION -! SUBROUTINE) -! ---------------------------------------------------------------------- - IF ( SNEQV <= 1.E-7 ) THEN ! safer IF kmh (2008/03/25) - SNEQV = 0.0 - SNDENS = 0.0 - SNOWH = 0.0 - SNCOND = 1.0 - ELSE - SNDENS = SNEQV / SNOWH - IF(SNDENS > 1.0) THEN - errmsg = 'Physical snow depth is less than snow water equiv.' - errflg = 1 - return - ENDIF - CALL CSNOW (SNCOND,SNDENS) - END IF -! ---------------------------------------------------------------------- -! DETERMINE IF IT'S PRECIPITATING AND WHAT KIND OF PRECIP IT IS. -! IF IT'S PRCPING AND THE AIR TEMP IS COLDER THAN 0 C, IT'S SNOWING! -! IF IT'S PRCPING AND THE AIR TEMP IS WARMER THAN 0 C, BUT THE GRND -! TEMP IS COLDER THAN 0 C, FREEZING RAIN IS PRESUMED TO BE FALLING. -! ---------------------------------------------------------------------- - IF (PRCP > 0.0) THEN -! snow defined when fraction of frozen precip (FFROZP) > 0.5, -! passed in from model microphysics. - IF (FFROZP .GT. 0.5) THEN - SNOWNG = .TRUE. - ELSE - IF (T1 <= TFREEZ) FRZGRA = .TRUE. - END IF - END IF -! ---------------------------------------------------------------------- -! IF EITHER PRCP FLAG IS SET, DETERMINE NEW SNOWFALL (CONVERTING PRCP -! RATE FROM KG M-2 S-1 TO A LIQUID EQUIV SNOW DEPTH IN METERS) AND ADD -! IT TO THE EXISTING SNOWPACK. -! NOTE THAT SINCE ALL PRECIP IS ADDED TO SNOWPACK, NO PRECIP INFILTRATES -! INTO THE SOIL SO THAT PRCP1 IS SET TO ZERO. -! ---------------------------------------------------------------------- - IF ( (SNOWNG) .OR. (FRZGRA) ) THEN - SN_NEW = PRCP * DT * 0.001 - SNEQV = SNEQV + SN_NEW - PRCPF = 0.0 - -! ---------------------------------------------------------------------- -! UPDATE SNOW DENSITY BASED ON NEW SNOWFALL, USING OLD AND NEW SNOW. -! UPDATE SNOW THERMAL CONDUCTIVITY -! ---------------------------------------------------------------------- - CALL SNOW_NEW (SFCTMP,SN_NEW,SNOWH,SNDENS) - CALL CSNOW (SNCOND,SNDENS) - -! ---------------------------------------------------------------------- -! PRECIP IS LIQUID (RAIN), HENCE SAVE IN THE PRECIP VARIABLE THAT -! LATER CAN WHOLELY OR PARTIALLY INFILTRATE THE SOIL (ALONG WITH -! ANY CANOPY "DRIP" ADDED TO THIS LATER) -! ---------------------------------------------------------------------- - ELSE - PRCPF = PRCP - ENDIF -! ---------------------------------------------------------------------- -! DETERMINE SNOWCOVER AND ALBEDO OVER LAND. -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! IF SNOW DEPTH=0, SET SNOW FRACTION=0, ALBEDO=SNOW FREE ALBEDO. -! ---------------------------------------------------------------------- - IF (SNEQV == 0.0) THEN - SNCOVR = 0.0 - ALBEDO = ALB - EMISSI = EMBRD - IF(UA_PHYS) FGSN = 0.0 - IF(UA_PHYS) FVB = 0.0 - IF(UA_PHYS) FBUR = 0.0 - ELSE -! ---------------------------------------------------------------------- -! DETERMINE SNOW FRACTIONAL COVERAGE. -! DETERMINE SURFACE ALBEDO MODIFICATION DUE TO SNOWDEPTH STATE. -! ---------------------------------------------------------------------- - CALL SNFRAC (SNEQV,SNUP,SALP,SNOWH,SNCOVR, & - XLAI,SHDFAC,FVB,GAMA,FBUR, & - FGSN,ZTOPV,ZBOTV,UA_PHYS) - - IF ( UA_PHYS ) then - IF(SFCTMP <= T1) THEN - RU = 0. - ELSE - RU = 100.*SHDFAC*FGSN*MIN((SFCTMP-T1)/5., 1.)*(1.-EXP(-XLAI)) - ENDIF - CH = CH/(1.+RU*CH) - ENDIF - - SNCOVR = MIN(SNCOVR,0.98) - - CALL ALCALC (ALB,SNOALB,EMBRD,SHDFAC,SHDMIN,SNCOVR,T1, & - ALBEDO,EMISSI,DT,SNOWNG,SNOTIME1,LVCOEF) - ENDIF -! ---------------------------------------------------------------------- -! NEXT CALCULATE THE SUBSURFACE HEAT FLUX, WHICH FIRST REQUIRES -! CALCULATION OF THE THERMAL DIFFUSIVITY. TREATMENT OF THE -! LATTER FOLLOWS THAT ON PAGES 148-149 FROM "HEAT TRANSFER IN -! COLD CLIMATES", BY V. J. LUNARDINI (PUBLISHED IN 1981 -! BY VAN NOSTRAND REINHOLD CO.) I.E. TREATMENT OF TWO CONTIGUOUS -! "PLANE PARALLEL" MEDIUMS (NAMELY HERE THE FIRST SOIL LAYER -! AND THE SNOWPACK LAYER, IF ANY). THIS DIFFUSIVITY TREATMENT -! BEHAVES WELL FOR BOTH ZERO AND NONZERO SNOWPACK, INCLUDING THE -! LIMIT OF VERY THIN SNOWPACK. THIS TREATMENT ALSO ELIMINATES -! THE NEED TO IMPOSE AN ARBITRARY UPPER BOUND ON SUBSURFACE -! HEAT FLUX WHEN THE SNOWPACK BECOMES EXTREMELY THIN. -! ---------------------------------------------------------------------- -! FIRST CALCULATE THERMAL DIFFUSIVITY OF TOP SOIL LAYER, USING -! BOTH THE FROZEN AND LIQUID SOIL MOISTURE, FOLLOWING THE -! SOIL THERMAL DIFFUSIVITY FUNCTION OF PETERS-LIDARD ET AL. -! (1998,JAS, VOL 55, 1209-1224), WHICH REQUIRES THE SPECIFYING -! THE QUARTZ CONTENT OF THE GIVEN SOIL CLASS (SEE ROUTINE REDPRM) -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! NEXT ADD SUBSURFACE HEAT FLUX REDUCTION EFFECT FROM THE -! OVERLYING GREEN CANOPY, ADAPTED FROM SECTION 2.1.2 OF -! PETERS-LIDARD ET AL. (1997, JGR, VOL 102(D4)) -! ---------------------------------------------------------------------- - CALL TDFCND (DF1,SMC (1),QUARTZ,SMCMAX,SH2O (1),BEXP, PSISAT, SOILTYP, OPT_THCND) - -!urban - IF ( VEGTYP == ISURBAN ) DF1=3.24 - - DF1 = DF1 * EXP (SBETA * SHDFAC) -! -! kmh 09/03/2006 -! kmh 03/25/2008 change SNCOVR threshold to 0.97 -! - IF ( SNCOVR .GT. 0.97 ) THEN - DF1 = SNCOND - ENDIF -! -! ---------------------------------------------------------------------- -! FINALLY "PLANE PARALLEL" SNOWPACK EFFECT FOLLOWING -! V.J. LINARDINI REFERENCE CITED ABOVE. NOTE THAT DTOT IS -! COMBINED DEPTH OF SNOWDEPTH AND THICKNESS OF FIRST SOIL LAYER -! ---------------------------------------------------------------------- - - DSOIL = - (0.5 * ZSOIL (1)) - IF (SNEQV == 0.) THEN - SSOIL = DF1 * (T1- STC (1) ) / DSOIL - ELSE - DTOT = SNOWH + DSOIL - FRCSNO = SNOWH / DTOT - -! 1. HARMONIC MEAN (SERIES FLOW) -! DF1 = (SNCOND*DF1)/(FRCSOI*SNCOND+FRCSNO*DF1) - FRCSOI = DSOIL / DTOT -! 2. ARITHMETIC MEAN (PARALLEL FLOW) -! DF1 = FRCSNO*SNCOND + FRCSOI*DF1 - DF1H = (SNCOND * DF1)/ (FRCSOI * SNCOND+ FRCSNO * DF1) - -! 3. GEOMETRIC MEAN (INTERMEDIATE BETWEEN HARMONIC AND ARITHMETIC MEAN) -! DF1 = (SNCOND**FRCSNO)*(DF1**FRCSOI) -! weigh DF by snow fraction -! DF1 = DF1H*SNCOVR + DF1A*(1.0-SNCOVR) -! DF1 = DF1H*SNCOVR + DF1*(1.0-SNCOVR) - DF1A = FRCSNO * SNCOND+ FRCSOI * DF1 - -! ---------------------------------------------------------------------- -! CALCULATE SUBSURFACE HEAT FLUX, SSOIL, FROM FINAL THERMAL DIFFUSIVITY -! OF SURFACE MEDIUMS, DF1 ABOVE, AND SKIN TEMPERATURE AND TOP -! MID-LAYER SOIL TEMPERATURE -! ---------------------------------------------------------------------- - DF1 = DF1A * SNCOVR + DF1* (1.0- SNCOVR) - SSOIL = DF1 * (T1- STC (1) ) / DTOT - END IF -! ---------------------------------------------------------------------- -! DETERMINE SURFACE ROUGHNESS OVER SNOWPACK USING SNOW CONDITION FROM -! THE PREVIOUS TIMESTEP. -! ---------------------------------------------------------------------- - IF (SNCOVR > 0. ) THEN - CALL SNOWZ0 (SNCOVR,Z0,Z0BRD,SNOWH,FBUR,FGSN,SHDMAX,UA_PHYS) - ELSE - Z0=Z0BRD - IF(UA_PHYS) CALL SNOWZ0 (SNCOVR,Z0,Z0BRD,SNOWH,FBUR,FGSN, & - SHDMAX,UA_PHYS) - END IF -! ---------------------------------------------------------------------- -! NEXT CALL ROUTINE SFCDIF TO CALCULATE THE SFC EXCHANGE COEF (CH) FOR -! HEAT AND MOISTURE. - -! NOTE !!! -! DO NOT CALL SFCDIF UNTIL AFTER ABOVE CALL TO REDPRM, IN CASE -! ALTERNATIVE VALUES OF ROUGHNESS LENGTH (Z0) AND ZILINTINKEVICH COEF -! (CZIL) ARE SET THERE VIA NAMELIST I/O. - -! NOTE !!! -! ROUTINE SFCDIF RETURNS A CH THAT REPRESENTS THE WIND SPD TIMES THE -! "ORIGINAL" NONDIMENSIONAL "Ch" TYPICAL IN LITERATURE. HENCE THE CH -! RETURNED FROM SFCDIF HAS UNITS OF M/S. THE IMPORTANT COMPANION -! COEFFICIENT OF CH, CARRIED HERE AS "RCH", IS THE CH FROM SFCDIF TIMES -! AIR DENSITY AND PARAMETER "CP". "RCH" IS COMPUTED IN "CALL PENMAN". -! RCH RATHER THAN CH IS THE COEFF USUALLY INVOKED LATER IN EQNS. - -! NOTE !!! -! ---------------------------------------------------------------------- -! SFCDIF ALSO RETURNS THE SURFACE EXCHANGE COEFFICIENT FOR MOMENTUM, CM, -! ALSO KNOWN AS THE SURFACE DRAGE COEFFICIENT. Needed as a state variable -! for iterative/implicit solution of CH in SFCDIF -! ---------------------------------------------------------------------- -! IF(.NOT.LCH) THEN -! T1V = T1 * (1.0+ 0.61 * Q2) -! TH2V = TH2 * (1.0+ 0.61 * Q2) -! CALL SFCDIF_off (ZLVL,Z0,T1V,TH2V,SFCSPD,CZIL,CM,CH) -! ENDIF - -! ---------------------------------------------------------------------- -! CALL PENMAN SUBROUTINE TO CALCULATE POTENTIAL EVAPORATION (ETP), AND -! OTHER PARTIAL PRODUCTS AND SUMS SAVE IN COMMON/RITE FOR LATER -! CALCULATIONS. -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! CALCULATE TOTAL DOWNWARD RADIATION (SOLAR PLUS LONGWAVE) NEEDED IN -! PENMAN EP SUBROUTINE THAT FOLLOWS -! ---------------------------------------------------------------------- -! FDOWN = SOLDN * (1.0- ALBEDO) + LWDN - FDOWN = SOLNET + LWDN -! ---------------------------------------------------------------------- -! CALC VIRTUAL TEMPS AND VIRTUAL POTENTIAL TEMPS NEEDED BY SUBROUTINES -! PENMAN. - T2V = SFCTMP * (1.0+ 0.61 * Q2 ) - - iout=0 - if(iout.eq.1) then - print*,'before penman' - print*,' SFCTMP',SFCTMP,'SFCPRS',SFCPRS,'CH',CH,'T2V',T2V, & - 'TH2',TH2,'PRCP',PRCP,'FDOWN',FDOWN,'T24',T24,'SSOIL',SSOIL, & - 'Q2',Q2,'Q2SAT',Q2SAT,'ETP',ETP,'RCH',RCH, & - 'EPSCA',EPSCA,'RR',RR ,'SNOWNG',SNOWNG,'FRZGRA',FRZGRA, & - 'DQSDT2',DQSDT2,'FLX2',FLX2,'SNOWH',SNOWH,'SNEQV',SNEQV, & - ' DSOIL',DSOIL,' FRCSNO',FRCSNO,' SNCOVR',SNCOVR,' DTOT',DTOT, & - ' ZSOIL (1)',ZSOIL(1),' DF1',DF1,'T1',T1,' STC1',STC(1), & - 'ALBEDO',ALBEDO,'SMC',SMC,'STC',STC,'SH2O',SH2O - endif - - CALL PENMAN (SFCTMP,SFCPRS,CH,T2V,TH2,PRCP,FDOWN,T24,SSOIL, & - Q2,Q2SAT,ETP,RCH,EPSCA,RR,SNOWNG,FRZGRA, & - DQSDT2,FLX2,EMISSI,SNEQV,T1,SNCOVR,AOASIS, & - ALBEDO,SOLDN,FVB,GAMA,STC(1),ETPN,FLX4,UA_PHYS, & - CP,RD,SIGMA,CPH2O,CPICE,LSUBF) -! -! ---------------------------------------------------------------------- -! CALL CANRES TO CALCULATE THE CANOPY RESISTANCE AND CONVERT IT INTO PC -! IF NONZERO GREENNESS FRACTION -! ---------------------------------------------------------------------- - -! ---------------------------------------------------------------------- -! FROZEN GROUND EXTENSION: TOTAL SOIL WATER "SMC" WAS REPLACED -! BY UNFROZEN SOIL WATER "SH2O" IN CALL TO CANRES BELOW -! ---------------------------------------------------------------------- - IF ( (SHDFAC > 0.) .AND. (XLAI > 0.) ) THEN - CALL CANRES (SOLDN,CH,SFCTMP,Q2,SFCPRS,SH2O,ZSOIL,NSOIL, & - SMCWLT,SMCREF,RSMIN,RC,PC,NROOT,Q2SAT,DQSDT2, & - TOPT,RSMAX,RGL,HS,XLAI, & - RCS,RCT,RCQ,RCSOIL,EMISSI,CP,RD,SIGMA) - ELSE - RC = 0.0 - END IF -! ---------------------------------------------------------------------- -! NOW DECIDE MAJOR PATHWAY BRANCH TO TAKE DEPENDING ON WHETHER SNOWPACK -! EXISTS OR NOT: -! ---------------------------------------------------------------------- - ESNOW = 0.0 - IF (SNEQV == 0.0) THEN - CALL NOPAC (ETP,ETA,PRCP,SMC,SMCMAX,SMCWLT, & - SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT, & - SHDFAC, & - SBETA,Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,EMISSI, & - SSOIL, & - STC,EPSCA,BEXP,PC,RCH,RR,CFACTR, & - SH2O,SLOPE,KDT,FRZX,PSISAT,ZSOIL, & - DKSAT,DWSAT,TBOT,ZBOT,RUNOFF1,RUNOFF2, & - RUNOFF3,EDIR,EC,ET,ETT,NROOT,RTDIS, & - QUARTZ,FXEXP,CSOIL, & - BETA,DRIP,DEW,FLX1,FLX3,VEGTYP,ISURBAN, & - SFHEAD1RT,INFXS1RT,ETPND1,SOILTYP,OPT_THCND & - ,XSDA_QFX,QFX_PHY,XQNORM,fasdas,HCPCT_FASDAS, & !fasdas - SIGMA,CPH2O) - ETA_KINEMATIC = ETA - ELSE - CALL SNOPAC (ETP,ETA,PRCP,PRCPF,SNOWNG,SMC,SMCMAX,SMCWLT, & - SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT, & - SBETA,DF1, & - Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,SSOIL,STC,EPSCA, & - SFCPRS,BEXP,PC,RCH,RR,CFACTR,SNCOVR,SNEQV,SNDENS,& - SNOWH,SH2O,SLOPE,KDT,FRZX,PSISAT, & - ZSOIL,DWSAT,DKSAT,TBOT,ZBOT,SHDFAC,RUNOFF1, & - RUNOFF2,RUNOFF3,EDIR,EC,ET,ETT,NROOT,SNOMLT, & - RTDIS,QUARTZ,FXEXP,CSOIL, & - BETA,DRIP,DEW,FLX1,FLX2,FLX3,ESNOW,ETNS,EMISSI, & - RIBB,SOLDN, & - ISURBAN, & - VEGTYP, & - ETPN,FLX4,UA_PHYS, & - SFHEAD1RT,INFXS1RT,ETPND1,SOILTYP,OPT_THCND & - ,QFX_PHY,fasdas,HCPCT_FASDAS,SIGMA,CPH2O,CPICE, & !fasdas - LSUBF) - ETA_KINEMATIC = ESNOW + ETNS - 1000.0*DEW - END IF - -! Calculate effective mixing ratio at grnd level (skin) -! -! Q1=Q2+ETA*CP/RCH - Q1=Q2+ETA_KINEMATIC*CP/RCH -! -! ---------------------------------------------------------------------- -! DETERMINE SENSIBLE HEAT (H) IN ENERGY UNITS (W M-2) -! ---------------------------------------------------------------------- - - SHEAT = - (CH * CP * SFCPRS)/ (R * T2V) * ( TH2- T1 ) - IF(UA_PHYS) SHEAT = SHEAT + FLX4 -! -! FASDAS -! - IF ( fasdas == 1 ) THEN - HFX_PHY = SHEAT - ENDIF -! -! END FASDAS -! -! ---------------------------------------------------------------------- -! CONVERT EVAP TERMS FROM KINEMATIC (KG M-2 S-1) TO ENERGY UNITS (W M-2) -! ---------------------------------------------------------------------- - EDIR = EDIR * LVH2O - EC = EC * LVH2O - DO K=1,4 - ET(K) = ET(K) * LVH2O - ENDDO - ETT = ETT * LVH2O - - ETPND1=ETPND1 * LVH2O - - ESNOW = ESNOW * LSUBS - ETP = ETP*((1.-SNCOVR)*LVH2O + SNCOVR*LSUBS) - IF(UA_PHYS) ETPN = ETPN*((1.-SNCOVR)*LVH2O + SNCOVR*LSUBS) - IF (ETP .GT. 0.) THEN - ETA = EDIR + EC + ETT + ESNOW - ELSE - ETA = ETP - ENDIF -! ---------------------------------------------------------------------- -! DETERMINE BETA (RATIO OF ACTUAL TO POTENTIAL EVAP) -! ---------------------------------------------------------------------- - IF (ETP == 0.0) THEN - BETA = 0.0 - ELSE - BETA = ETA/ETP - ENDIF - -! ---------------------------------------------------------------------- -! CONVERT THE SIGN OF SOIL HEAT FLUX SO THAT: -! SSOIL>0: WARM THE SURFACE (NIGHT TIME) -! SSOIL<0: COOL THE SURFACE (DAY TIME) -! ---------------------------------------------------------------------- - SSOIL = -1.0* SSOIL - -! ---------------------------------------------------------------------- -! FOR THE CASE OF LAND: -! CONVERT RUNOFF3 (INTERNAL LAYER RUNOFF FROM SUPERSAT) FROM M TO M S-1 -! AND ADD TO SUBSURFACE RUNOFF/DRAINAGE/BASEFLOW. RUNOFF2 IS ALREADY -! A RATE AT THIS POINT -! ---------------------------------------------------------------------- - RUNOFF3 = RUNOFF3/ DT - RUNOFF2 = RUNOFF2+ RUNOFF3 - SOILM = -1.0* SMC (1)* ZSOIL (1) - DO K = 2,NSOIL - SOILM = SOILM + SMC (K)* (ZSOIL (K -1) - ZSOIL (K)) - END DO - SOILWM = -1.0* (SMCMAX - SMCWLT)* ZSOIL (1) - SOILWW = -1.0* (SMC (1) - SMCWLT)* ZSOIL (1) - - DO K = 1,NSOIL - SMAV(K)=(SMC(K) - SMCWLT)/(SMCMAX - SMCWLT) - END DO - - IF (NROOT >= 2) THEN - DO K = 2,NROOT - SOILWM = SOILWM + (SMCMAX - SMCWLT)* (ZSOIL (K -1) - ZSOIL (K)) - SOILWW = SOILWW + (SMC(K) - SMCWLT)* (ZSOIL (K -1) - ZSOIL (K)) - END DO - END IF - IF (SOILWM .LT. 1.E-6) THEN - SOILWM = 0.0 - SOILW = 0.0 - SOILM = 0.0 - ELSE - SOILW = SOILWW / SOILWM - END IF - -! ---------------------------------------------------------------------- - END SUBROUTINE SFLX -! ---------------------------------------------------------------------- - - SUBROUTINE ALCALC (ALB,SNOALB,EMBRD,SHDFAC,SHDMIN,SNCOVR,TSNOW,ALBEDO,EMISSI, & - DT,SNOWNG,SNOTIME1,LVCOEF) - -! ---------------------------------------------------------------------- -! CALCULATE ALBEDO INCLUDING SNOW EFFECT (0 -> 1) -! ALB SNOWFREE ALBEDO -! SNOALB MAXIMUM (DEEP) SNOW ALBEDO -! SHDFAC AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION -! SHDMIN MINIMUM AREAL FRACTIONAL COVERAGE OF GREEN VEGETATION -! SNCOVR FRACTIONAL SNOW COVER -! ALBEDO SURFACE ALBEDO INCLUDING SNOW EFFECT -! TSNOW SNOW SURFACE TEMPERATURE (K) -! ---------------------------------------------------------------------- - IMPLICIT NONE - -! ---------------------------------------------------------------------- -! SNOALB IS ARGUMENT REPRESENTING MAXIMUM ALBEDO OVER DEEP SNOW, -! AS PASSED INTO SFLX, AND ADAPTED FROM THE SATELLITE-BASED MAXIMUM -! SNOW ALBEDO FIELDS PROVIDED BY D. ROBINSON AND G. KUKLA -! (1985, JCAM, VOL 24, 402-411) -! ---------------------------------------------------------------------- - REAL, INTENT(IN) :: ALB, SNOALB, EMBRD, SHDFAC, SHDMIN, SNCOVR, TSNOW - REAL, INTENT(IN) :: DT - LOGICAL, INTENT(IN) :: SNOWNG - REAL, INTENT(INOUT):: SNOTIME1 - REAL, INTENT(OUT) :: ALBEDO, EMISSI - REAL :: SNOALB2 - REAL :: TM,SNOALB1 - REAL, INTENT(IN) :: LVCOEF - REAL, PARAMETER :: SNACCA=0.94,SNACCB=0.58,SNTHWA=0.82,SNTHWB=0.46 -! turn of vegetation effect -! ALBEDO = ALB + (1.0- (SHDFAC - SHDMIN))* SNCOVR * (SNOALB - ALB) -! ALBEDO = (1.0-SNCOVR)*ALB + SNCOVR*SNOALB !this is equivalent to below - ALBEDO = ALB + SNCOVR*(SNOALB-ALB) - EMISSI = EMBRD + SNCOVR*(EMISSI_S - EMBRD) - -! BASE FORMULATION (DICKINSON ET AL., 1986, COGLEY ET AL., 1990) -! IF (TSNOW.LE.263.16) THEN -! ALBEDO=SNOALB -! ELSE -! IF (TSNOW.LT.273.16) THEN -! TM=0.1*(TSNOW-263.16) -! SNOALB1=0.5*((0.9-0.2*(TM**3))+(0.8-0.16*(TM**3))) -! ELSE -! SNOALB1=0.67 -! IF(SNCOVR.GT.0.95) SNOALB1= 0.6 -! SNOALB1 = ALB + SNCOVR*(SNOALB-ALB) -! ENDIF -! ENDIF -! ALBEDO = ALB + SNCOVR*(SNOALB1-ALB) - -! ISBA FORMULATION (VERSEGHY, 1991; BAKER ET AL., 1990) -! SNOALB1 = SNOALB+COEF*(0.85-SNOALB) -! SNOALB2=SNOALB1 -!!m LSTSNW=LSTSNW+1 -! SNOTIME1 = SNOTIME1 + DT -! IF (SNOWNG) THEN -! SNOALB2=SNOALB -!!m LSTSNW=0 -! SNOTIME1 = 0.0 -! ELSE -! IF (TSNOW.LT.273.16) THEN -!! SNOALB2=SNOALB-0.008*LSTSNW*DT/86400 -!!m SNOALB2=SNOALB-0.008*SNOTIME1/86400 -! SNOALB2=(SNOALB2-0.65)*EXP(-0.05*DT/3600)+0.65 -!! SNOALB2=(ALBEDO-0.65)*EXP(-0.01*DT/3600)+0.65 -! ELSE -! SNOALB2=(SNOALB2-0.5)*EXP(-0.0005*DT/3600)+0.5 -!! SNOALB2=(SNOALB-0.5)*EXP(-0.24*LSTSNW*DT/86400)+0.5 -!!m SNOALB2=(SNOALB-0.5)*EXP(-0.24*SNOTIME1/86400)+0.5 -! ENDIF -! ENDIF -! -!! print*,'SNOALB2',SNOALB2,'ALBEDO',ALBEDO,'DT',DT -! ALBEDO = ALB + SNCOVR*(SNOALB2-ALB) -! IF (ALBEDO .GT. SNOALB2) ALBEDO=SNOALB2 -!!m LSTSNW1=LSTSNW -!! SNOTIME = SNOTIME1 - -! formulation by Livneh -! ---------------------------------------------------------------------- -! SNOALB IS CONSIDERED AS THE MAXIMUM SNOW ALBEDO FOR NEW SNOW, AT -! A VALUE OF 85%. SNOW ALBEDO CURVE DEFAULTS ARE FROM BRAS P.263. SHOULD -! NOT BE CHANGED EXCEPT FOR SERIOUS PROBLEMS WITH SNOW MELT. -! TO IMPLEMENT ACCUMULATIN PARAMETERS, SNACCA AND SNACCB, ASSERT THAT IT -! IS INDEED ACCUMULATION SEASON. I.E. THAT SNOW SURFACE TEMP IS BELOW -! ZERO AND THE DATE FALLS BETWEEN OCTOBER AND FEBRUARY -! ---------------------------------------------------------------------- - SNOALB1 = SNOALB+LVCOEF*(0.85-SNOALB) - SNOALB2=SNOALB1 -! ---------------- Initial LSTSNW -------------------------------------- - IF (SNOWNG) THEN - SNOTIME1 = 0. - ELSE - SNOTIME1=SNOTIME1+DT -! IF (TSNOW.LT.273.16) THEN - SNOALB2=SNOALB1*(SNACCA**((SNOTIME1/86400.0)**SNACCB)) -! ELSE -! SNOALB2 =SNOALB1*(SNTHWA**((SNOTIME1/86400.0)**SNTHWB)) -! ENDIF - ENDIF -! - SNOALB2 = MAX ( SNOALB2, ALB ) - ALBEDO = ALB + SNCOVR*(SNOALB2-ALB) - IF (ALBEDO .GT. SNOALB2) ALBEDO=SNOALB2 - -! IF (TSNOW.LT.273.16) THEN -! ALBEDO=SNOALB-0.008*DT/86400 -! ELSE -! ALBEDO=(SNOALB-0.5)*EXP(-0.24*DT/86400)+0.5 -! ENDIF - -! IF (ALBEDO > SNOALB) ALBEDO = SNOALB - -! ---------------------------------------------------------------------- - END SUBROUTINE ALCALC -! ---------------------------------------------------------------------- - - SUBROUTINE CANRES (SOLAR,CH,SFCTMP,Q2,SFCPRS,SMC,ZSOIL,NSOIL, & - SMCWLT,SMCREF,RSMIN,RC,PC,NROOT,Q2SAT,DQSDT2, & - TOPT,RSMAX,RGL,HS,XLAI, & - RCS,RCT,RCQ,RCSOIL,EMISSI,CP,RD,SIGMA) - -! ---------------------------------------------------------------------- -! SUBROUTINE CANRES -! ---------------------------------------------------------------------- -! CALCULATE CANOPY RESISTANCE WHICH DEPENDS ON INCOMING SOLAR RADIATION, -! AIR TEMPERATURE, ATMOSPHERIC WATER VAPOR PRESSURE DEFICIT AT THE -! LOWEST MODEL LEVEL, AND SOIL MOISTURE (PREFERABLY UNFROZEN SOIL -! MOISTURE RATHER THAN TOTAL) -! ---------------------------------------------------------------------- -! SOURCE: JARVIS (1976), NOILHAN AND PLANTON (1989, MWR), JACQUEMIN AND -! NOILHAN (1990, BLM) -! SEE ALSO: CHEN ET AL (1996, JGR, VOL 101(D3), 7251-7268), EQNS 12-14 -! AND TABLE 2 OF SEC. 3.1.2 -! ---------------------------------------------------------------------- -! INPUT: -! SOLAR INCOMING SOLAR RADIATION -! CH SURFACE EXCHANGE COEFFICIENT FOR HEAT AND MOISTURE -! SFCTMP AIR TEMPERATURE AT 1ST LEVEL ABOVE GROUND -! Q2 AIR HUMIDITY AT 1ST LEVEL ABOVE GROUND -! Q2SAT SATURATION AIR HUMIDITY AT 1ST LEVEL ABOVE GROUND -! DQSDT2 SLOPE OF SATURATION HUMIDITY FUNCTION WRT TEMP -! SFCPRS SURFACE PRESSURE -! SMC VOLUMETRIC SOIL MOISTURE -! ZSOIL SOIL DEPTH (NEGATIVE SIGN, AS IT IS BELOW GROUND) -! NSOIL NO. OF SOIL LAYERS -! NROOT NO. OF SOIL LAYERS IN ROOT ZONE (1.LE.NROOT.LE.NSOIL) -! XLAI LEAF AREA INDEX -! SMCWLT WILTING POINT -! SMCREF REFERENCE SOIL MOISTURE (WHERE SOIL WATER DEFICIT STRESS -! SETS IN) -! RSMIN, RSMAX, TOPT, RGL, HS ARE CANOPY STRESS PARAMETERS SET IN -! SURBOUTINE REDPRM -! CP specific heat of dry air at constant pressure -! OUTPUT: -! PC PLANT COEFFICIENT -! RC CANOPY RESISTANCE -! ---------------------------------------------------------------------- - - IMPLICIT NONE - INTEGER, INTENT(IN) :: NROOT,NSOIL - INTEGER K - REAL, INTENT(IN) :: CH,DQSDT2,HS,Q2,Q2SAT,RSMIN,RGL,RSMAX, & - SFCPRS,SFCTMP,SMCREF,SMCWLT, SOLAR,TOPT,XLAI, & - EMISSI, CP, RD, SIGMA - REAL,DIMENSION(1:NSOIL), INTENT(IN) :: SMC,ZSOIL - REAL, INTENT(OUT):: PC,RC,RCQ,RCS,RCSOIL,RCT - REAL :: DELTA,FF,GX,P,RR - REAL, DIMENSION(1:NSOIL) :: PART - REAL, PARAMETER :: SLV = 2.501000E6 - - -! ---------------------------------------------------------------------- -! INITIALIZE CANOPY RESISTANCE MULTIPLIER TERMS. -! ---------------------------------------------------------------------- - RCS = 0.0 - RCT = 0.0 - RCQ = 0.0 - RCSOIL = 0.0 - -! ---------------------------------------------------------------------- -! CONTRIBUTION DUE TO INCOMING SOLAR RADIATION -! ---------------------------------------------------------------------- - RC = 0.0 - FF = 0.55*2.0* SOLAR / (RGL * XLAI) - RCS = (FF + RSMIN / RSMAX) / (1.0+ FF) - -! ---------------------------------------------------------------------- -! CONTRIBUTION DUE TO AIR TEMPERATURE AT FIRST MODEL LEVEL ABOVE GROUND -! RCT EXPRESSION FROM NOILHAN AND PLANTON (1989, MWR). -! ---------------------------------------------------------------------- - RCS = MAX (RCS,0.0001) - RCT = 1.0- 0.0016* ( (TOPT - SFCTMP)**2.0) - -! ---------------------------------------------------------------------- -! CONTRIBUTION DUE TO VAPOR PRESSURE DEFICIT AT FIRST MODEL LEVEL. -! RCQ EXPRESSION FROM SSIB -! ---------------------------------------------------------------------- - RCT = MAX (RCT,0.0001) - RCQ = 1.0/ (1.0+ HS * (Q2SAT - Q2)) - -! ---------------------------------------------------------------------- -! CONTRIBUTION DUE TO SOIL MOISTURE AVAILABILITY. -! DETERMINE CONTRIBUTION FROM EACH SOIL LAYER, THEN ADD THEM UP. -! ---------------------------------------------------------------------- - RCQ = MAX (RCQ,0.01) - GX = (SMC (1) - SMCWLT) / (SMCREF - SMCWLT) - IF (GX > 1.) GX = 1. - IF (GX < 0.) GX = 0. - -! ---------------------------------------------------------------------- -! USE SOIL DEPTH AS WEIGHTING FACTOR -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! USE ROOT DISTRIBUTION AS WEIGHTING FACTOR -! PART(1) = RTDIS(1) * GX -! ---------------------------------------------------------------------- - PART (1) = (ZSOIL (1)/ ZSOIL (NROOT)) * GX - DO K = 2,NROOT - GX = (SMC (K) - SMCWLT) / (SMCREF - SMCWLT) - IF (GX > 1.) GX = 1. - IF (GX < 0.) GX = 0. -! ---------------------------------------------------------------------- -! USE SOIL DEPTH AS WEIGHTING FACTOR -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! USE ROOT DISTRIBUTION AS WEIGHTING FACTOR -! PART(K) = RTDIS(K) * GX -! ---------------------------------------------------------------------- - PART (K) = ( (ZSOIL (K) - ZSOIL (K -1))/ ZSOIL (NROOT)) * GX - END DO - DO K = 1,NROOT - RCSOIL = RCSOIL + PART (K) - END DO - -! ---------------------------------------------------------------------- -! DETERMINE CANOPY RESISTANCE DUE TO ALL FACTORS. CONVERT CANOPY -! RESISTANCE (RC) TO PLANT COEFFICIENT (PC) TO BE USED WITH POTENTIAL -! EVAP IN DETERMINING ACTUAL EVAP. PC IS DETERMINED BY: -! PC * LINERIZED PENMAN POTENTIAL EVAP = -! PENMAN-MONTEITH ACTUAL EVAPORATION (CONTAINING RC TERM). -! ---------------------------------------------------------------------- - RCSOIL = MAX (RCSOIL,0.0001) - - RC = RSMIN / (XLAI * RCS * RCT * RCQ * RCSOIL) -! RR = (4.* SIGMA * RD / CP)* (SFCTMP **4.)/ (SFCPRS * CH) + 1.0 - RR = (4.* EMISSI *SIGMA * RD / CP)* (SFCTMP **4.)/ (SFCPRS * CH) & - + 1.0 - - DELTA = (SLV / CP)* DQSDT2 - - PC = (RR + DELTA)/ (RR * (1. + RC * CH) + DELTA) - -! ---------------------------------------------------------------------- - END SUBROUTINE CANRES -! ---------------------------------------------------------------------- - - SUBROUTINE CSNOW (SNCOND,DSNOW) - -! ---------------------------------------------------------------------- -! SUBROUTINE CSNOW -! FUNCTION CSNOW -! ---------------------------------------------------------------------- -! CALCULATE SNOW TERMAL CONDUCTIVITY -! ---------------------------------------------------------------------- - IMPLICIT NONE - REAL, INTENT(IN) :: DSNOW - REAL, INTENT(OUT):: SNCOND - REAL :: C - REAL, PARAMETER :: UNIT = 0.11631 - -! ---------------------------------------------------------------------- -! SNCOND IN UNITS OF CAL/(CM*HR*C), RETURNED IN W/(M*C) -! CSNOW IN UNITS OF CAL/(CM*HR*C), RETURNED IN W/(M*C) -! BASIC VERSION IS DYACHKOVA EQUATION (1960), FOR RANGE 0.1-0.4 -! ---------------------------------------------------------------------- - C = 0.328*10** (2.25* DSNOW) -! CSNOW=UNIT*C - -! ---------------------------------------------------------------------- -! DE VAUX EQUATION (1933), IN RANGE 0.1-0.6 -! ---------------------------------------------------------------------- -! SNCOND=0.0293*(1.+100.*DSNOW**2) -! CSNOW=0.0293*(1.+100.*DSNOW**2) - -! ---------------------------------------------------------------------- -! E. ANDERSEN FROM FLERCHINGER -! ---------------------------------------------------------------------- -! SNCOND=0.021+2.51*DSNOW**2 -! CSNOW=0.021+2.51*DSNOW**2 - -! SNCOND = UNIT * C -! double snow thermal conductivity - SNCOND = 2.0 * UNIT * C - -! ---------------------------------------------------------------------- - END SUBROUTINE CSNOW -! ---------------------------------------------------------------------- - SUBROUTINE DEVAP (EDIR,ETP1,SMC,ZSOIL,SHDFAC,SMCMAX,BEXP, & - DKSAT,DWSAT,SMCDRY,SMCREF,SMCWLT,FXEXP) - -! ---------------------------------------------------------------------- -! SUBROUTINE DEVAP -! FUNCTION DEVAP -! ---------------------------------------------------------------------- -! CALCULATE DIRECT SOIL EVAPORATION -! ---------------------------------------------------------------------- - IMPLICIT NONE - REAL, INTENT(IN) :: ETP1,SMC,BEXP,DKSAT,DWSAT,FXEXP, & - SHDFAC,SMCDRY,SMCMAX,ZSOIL,SMCREF,SMCWLT - REAL, INTENT(OUT):: EDIR - REAL :: FX, SRATIO - - -! ---------------------------------------------------------------------- -! DIRECT EVAP A FUNCTION OF RELATIVE SOIL MOISTURE AVAILABILITY, LINEAR -! WHEN FXEXP=1. -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! FX > 1 REPRESENTS DEMAND CONTROL -! FX < 1 REPRESENTS FLUX CONTROL -! ---------------------------------------------------------------------- - - SRATIO = (SMC - SMCDRY) / (SMCMAX - SMCDRY) - IF (SRATIO > 0.) THEN - FX = SRATIO**FXEXP - FX = MAX ( MIN ( FX, 1. ) ,0. ) - ELSE - FX = 0. - ENDIF - -! ---------------------------------------------------------------------- -! ALLOW FOR THE DIRECT-EVAP-REDUCING EFFECT OF SHADE -! ---------------------------------------------------------------------- - EDIR = FX * ( 1.0- SHDFAC ) * ETP1 - -! ---------------------------------------------------------------------- - END SUBROUTINE DEVAP - - SUBROUTINE DEVAP_hydro (EDIR,ETP1,SMC,ZSOIL,SHDFAC,SMCMAX,BEXP, & - DKSAT,DWSAT,SMCDRY,SMCREF,SMCWLT,FXEXP, & - SFHEAD1RT,ETPND1,DT) - -! ---------------------------------------------------------------------- -! SUBROUTINE DEVAP -! FUNCTION DEVAP -! ---------------------------------------------------------------------- -! CALCULATE DIRECT SOIL EVAPORATION -! ---------------------------------------------------------------------- - IMPLICIT NONE - REAL, INTENT(IN) :: ETP1,SMC,BEXP,DKSAT,DWSAT,FXEXP, & - SHDFAC,SMCDRY,SMCMAX,ZSOIL,SMCREF,SMCWLT - REAL, INTENT(OUT):: EDIR - REAL :: FX, SRATIO - - REAL, INTENT(INOUT) :: SFHEAD1RT,ETPND1 - REAL, INTENT(IN ) :: DT - REAL :: EDIRTMP - - - -! ---------------------------------------------------------------------- -! DIRECT EVAP A FUNCTION OF RELATIVE SOIL MOISTURE AVAILABILITY, LINEAR -! WHEN FXEXP=1. -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! FX > 1 REPRESENTS DEMAND CONTROL -! FX < 1 REPRESENTS FLUX CONTROL -! ---------------------------------------------------------------------- - - SRATIO = (SMC - SMCDRY) / (SMCMAX - SMCDRY) - IF (SRATIO > 0.) THEN - FX = SRATIO**FXEXP - FX = MAX ( MIN ( FX, 1. ) ,0. ) - ELSE - FX = 0. - ENDIF - -!DJG NDHMS/WRF-Hydro edits... Adjustment for ponded surface water : Reduce ETP1 - EDIRTMP = 0. - ETPND1 = 0. - -!DJG NDHMS/WRF-Hydro edits... Calc Max Potential Dir Evap. (ETP1 units: }=m/s) - -!DJG NDHMS/WRF-Hydro...currently set ponded water evap to 0.0 until further notice...11/5/2012 -!EDIRTMP = ( 1.0- SHDFAC ) * ETP1 - -! Convert all units to (m) -! Convert EDIRTMP from (kg m{-2} s{-1}=m/s) to (m) ... - EDIRTMP = EDIRTMP * DT - -!DJG NDHMS/WRF-Hydro edits... Convert SFHEAD from (mm) to (m) ... - SFHEAD1RT=SFHEAD1RT * 0.001 - - - -!DJG NDHMS/WRF-Hydro edits... Calculate ETPND as reduction in EDIR(TMP)... - IF (EDIRTMP > 0.) THEN - IF ( EDIRTMP > SFHEAD1RT ) THEN - ETPND1 = SFHEAD1RT - SFHEAD1RT=0. - EDIRTMP = EDIRTMP - ETPND1 - ELSE - ETPND1 = EDIRTMP - EDIRTMP = 0. - SFHEAD1RT = SFHEAD1RT - ETPND1 - END IF - END IF - -!DJG NDHMS/WRF-Hydro edits... Convert SFHEAD units back to (mm) - IF ( SFHEAD1RT /= 0.) SFHEAD1RT=SFHEAD1RT * 1000. - -!DJG NDHMS/WRF-Hydro edits...Convert ETPND and EDIRTMP back to (mm/s=kg m{-2} s{-1}) - ETPND1 = ETPND1 / DT - EDIRTMP = EDIRTMP / DT -!DEBUG print *, "After DEVAP...SFCHEAD+ETPND1",SFHEAD1RT+ETPND1*DT - - -! ---------------------------------------------------------------------- -! ALLOW FOR THE DIRECT-EVAP-REDUCING EFFECT OF SHADE -! ---------------------------------------------------------------------- -!DJG NDHMS/WRF-Hydro edits... -! EDIR = FX * ( 1.0- SHDFAC ) * ETP1 - EDIR = FX * EDIRTMP - - - - -! ---------------------------------------------------------------------- - END SUBROUTINE DEVAP_hydro -! ---------------------------------------------------------------------- - - SUBROUTINE EVAPO (ETA1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, & - SH2O, & - SMCMAX,BEXP,PC,SMCWLT,DKSAT,DWSAT, & - SMCREF,SHDFAC,CMCMAX, & - SMCDRY,CFACTR, & - EDIR,EC,ET,ETT,SFCTMP,Q2,NROOT,RTDIS,FXEXP, & - SFHEAD1RT,ETPND1) - -! ---------------------------------------------------------------------- -! SUBROUTINE EVAPO -! ---------------------------------------------------------------------- -! CALCULATE SOIL MOISTURE FLUX. THE SOIL MOISTURE CONTENT (SMC - A PER -! UNIT VOLUME MEASUREMENT) IS A DEPENDENT VARIABLE THAT IS UPDATED WITH -! PROGNOSTIC EQNS. THE CANOPY MOISTURE CONTENT (CMC) IS ALSO UPDATED. -! FROZEN GROUND VERSION: NEW STATES ADDED: SH2O, AND FROZEN GROUND -! CORRECTION FACTOR, FRZFACT AND PARAMETER SLOPE. -! ---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER, INTENT(IN) :: NSOIL, NROOT - INTEGER :: I,K - REAL, INTENT(IN) :: BEXP, CFACTR,CMC,CMCMAX,DKSAT, & - DT,DWSAT,ETP1,FXEXP,PC,Q2,SFCTMP, & - SHDFAC,SMCDRY,SMCMAX,SMCREF,SMCWLT - REAL, INTENT(OUT) :: EC,EDIR,ETA1,ETT - REAL :: CMC2MS - REAL,DIMENSION(1:NSOIL), INTENT(IN) :: RTDIS, SMC, SH2O, ZSOIL - REAL,DIMENSION(1:NSOIL), INTENT(OUT) :: ET - - REAL, INTENT(INOUT) :: SFHEAD1RT,ETPND1 - -! ---------------------------------------------------------------------- -! EXECUTABLE CODE BEGINS HERE IF THE POTENTIAL EVAPOTRANSPIRATION IS -! GREATER THAN ZERO. -! ---------------------------------------------------------------------- - EDIR = 0. - EC = 0. - ETT = 0. - DO K = 1,NSOIL - ET (K) = 0. - END DO - -! ---------------------------------------------------------------------- -! RETRIEVE DIRECT EVAPORATION FROM SOIL SURFACE. CALL THIS FUNCTION -! ONLY IF VEG COVER NOT COMPLETE. -! FROZEN GROUND VERSION: SH2O STATES REPLACE SMC STATES. -! ---------------------------------------------------------------------- - IF (ETP1 > 0.0) THEN - IF (SHDFAC < 1.) THEN -#ifdef WRF_HYDRO -! CALL DEVAP_hydro (EDIR,ETP1,SMC (1),ZSOIL (1),SHDFAC,SMCMAX, & -! BEXP,DKSAT,DWSAT,SMCDRY,SMCREF,SMCWLT,FXEXP, & -! SFHEAD1RT,ETPND1,DT) -!DJG Reduce ETP1 by EDIR & ETPND1... -! ETP1=ETP1-EDIR-ETPND1 - -! following is the temparay setting ... - CALL DEVAP (EDIR,ETP1,SMC (1),ZSOIL (1),SHDFAC,SMCMAX, & - BEXP,DKSAT,DWSAT,SMCDRY,SMCREF,SMCWLT,FXEXP) -! ETP1=ETP1-EDIR -#else - CALL DEVAP (EDIR,ETP1,SMC (1),ZSOIL (1),SHDFAC,SMCMAX, & - BEXP,DKSAT,DWSAT,SMCDRY,SMCREF,SMCWLT,FXEXP) -#endif - END IF -! ---------------------------------------------------------------------- -! INITIALIZE PLANT TOTAL TRANSPIRATION, RETRIEVE PLANT TRANSPIRATION, -! AND ACCUMULATE IT FOR ALL SOIL LAYERS. -! ---------------------------------------------------------------------- - - IF (SHDFAC > 0.0) THEN - CALL TRANSP (ET,NSOIL,ETP1,SH2O,CMC,ZSOIL,SHDFAC,SMCWLT, & - CMCMAX,PC,CFACTR,SMCREF,SFCTMP,Q2,NROOT,RTDIS) - DO K = 1,NSOIL - ETT = ETT + ET ( K ) - END DO -! ---------------------------------------------------------------------- -! CALCULATE CANOPY EVAPORATION. -! IF STATEMENTS TO AVOID TANGENT LINEAR PROBLEMS NEAR CMC=0.0. -! ---------------------------------------------------------------------- - IF (CMC > 0.0) THEN - EC = SHDFAC * ( ( CMC / CMCMAX ) ** CFACTR ) * ETP1 - ELSE - EC = 0.0 - END IF -! ---------------------------------------------------------------------- -! EC SHOULD BE LIMITED BY THE TOTAL AMOUNT OF AVAILABLE WATER ON THE -! CANOPY. -F.CHEN, 18-OCT-1994 -! ---------------------------------------------------------------------- - CMC2MS = CMC / DT - EC = MIN ( CMC2MS, EC ) - END IF - END IF -! ---------------------------------------------------------------------- -! TOTAL UP EVAP AND TRANSP TYPES TO OBTAIN ACTUAL EVAPOTRANSP -! ---------------------------------------------------------------------- - ETA1 = EDIR + ETT + EC - -! ---------------------------------------------------------------------- - END SUBROUTINE EVAPO -! ---------------------------------------------------------------------- - - SUBROUTINE FAC2MIT(SMCMAX,FLIMIT) - IMPLICIT NONE - REAL, INTENT(IN) :: SMCMAX - REAL, INTENT(OUT) :: FLIMIT - - FLIMIT = 0.90 - - IF ( SMCMAX == 0.395 ) THEN - FLIMIT = 0.59 - ELSE IF ( ( SMCMAX == 0.434 ) .OR. ( SMCMAX == 0.404 ) ) THEN - FLIMIT = 0.85 - ELSE IF ( ( SMCMAX == 0.465 ) .OR. ( SMCMAX == 0.406 ) ) THEN - FLIMIT = 0.86 - ELSE IF ( ( SMCMAX == 0.476 ) .OR. ( SMCMAX == 0.439 ) ) THEN - FLIMIT = 0.74 - ELSE IF ( ( SMCMAX == 0.200 ) .OR. ( SMCMAX == 0.464 ) ) THEN - FLIMIT = 0.80 - ENDIF - -! ---------------------------------------------------------------------- - END SUBROUTINE FAC2MIT -! ---------------------------------------------------------------------- - - SUBROUTINE FRH2O (FREE,TKELV,SMC,SH2O,SMCMAX,BEXP,PSIS) - -! ---------------------------------------------------------------------- -! SUBROUTINE FRH2O -! ---------------------------------------------------------------------- -! CALCULATE AMOUNT OF SUPERCOOLED LIQUID SOIL WATER CONTENT IF -! TEMPERATURE IS BELOW 273.15K (T0). REQUIRES NEWTON-TYPE ITERATION TO -! SOLVE THE NONLINEAR IMPLICIT EQUATION GIVEN IN EQN 17 OF KOREN ET AL -! (1999, JGR, VOL 104(D16), 19569-19585). -! ---------------------------------------------------------------------- -! NEW VERSION (JUNE 2001): MUCH FASTER AND MORE ACCURATE NEWTON -! ITERATION ACHIEVED BY FIRST TAKING LOG OF EQN CITED ABOVE -- LESS THAN -! 4 (TYPICALLY 1 OR 2) ITERATIONS ACHIEVES CONVERGENCE. ALSO, EXPLICIT -! 1-STEP SOLUTION OPTION FOR SPECIAL CASE OF PARAMETER CK=0, WHICH -! REDUCES THE ORIGINAL IMPLICIT EQUATION TO A SIMPLER EXPLICIT FORM, -! KNOWN AS THE "FLERCHINGER EQN". IMPROVED HANDLING OF SOLUTION IN THE -! LIMIT OF FREEZING POINT TEMPERATURE T0. -! ---------------------------------------------------------------------- -! INPUT: - -! TKELV.........TEMPERATURE (Kelvin) -! SMC...........TOTAL SOIL MOISTURE CONTENT (VOLUMETRIC) -! SH2O..........LIQUID SOIL MOISTURE CONTENT (VOLUMETRIC) -! SMCMAX........SATURATION SOIL MOISTURE CONTENT (FROM REDPRM) -! B.............SOIL TYPE "B" PARAMETER (FROM REDPRM) -! PSIS..........SATURATED SOIL MATRIC POTENTIAL (FROM REDPRM) - -! OUTPUT: -! FRH2O.........SUPERCOOLED LIQUID WATER CONTENT -! FREE..........SUPERCOOLED LIQUID WATER CONTENT -! ---------------------------------------------------------------------- - IMPLICIT NONE - REAL, INTENT(IN) :: BEXP,PSIS,SH2O,SMC,SMCMAX,TKELV - REAL, INTENT(OUT) :: FREE - REAL :: BX,DENOM,DF,DSWL,FK,SWL,SWLK - INTEGER :: NLOG,KCOUNT -! PARAMETER(CK = 0.0) - REAL, PARAMETER :: CK = 8.0, BLIM = 5.5, ERROR = 0.005, & - HLICE = 3.335E5, GS = 9.81,DICE = 920.0, & - DH2O = 1000.0, T0 = 273.15 - -! ---------------------------------------------------------------------- -! LIMITS ON PARAMETER B: B < 5.5 (use parameter BLIM) -! SIMULATIONS SHOWED IF B > 5.5 UNFROZEN WATER CONTENT IS -! NON-REALISTICALLY HIGH AT VERY LOW TEMPERATURES. -! ---------------------------------------------------------------------- - BX = BEXP - -! ---------------------------------------------------------------------- -! INITIALIZING ITERATIONS COUNTER AND ITERATIVE SOLUTION FLAG. -! ---------------------------------------------------------------------- - IF (BEXP > BLIM) BX = BLIM - NLOG = 0 - -! ---------------------------------------------------------------------- -! IF TEMPERATURE NOT SIGNIFICANTLY BELOW FREEZING (T0), SH2O = SMC -! ---------------------------------------------------------------------- - KCOUNT = 0 -! FRH2O = SMC - IF (TKELV > (T0- 1.E-3)) THEN - FREE = SMC - ELSE - -! ---------------------------------------------------------------------- -! OPTION 1: ITERATED SOLUTION FOR NONZERO CK -! IN KOREN ET AL, JGR, 1999, EQN 17 -! ---------------------------------------------------------------------- -! INITIAL GUESS FOR SWL (frozen content) -! ---------------------------------------------------------------------- - IF (CK /= 0.0) THEN - SWL = SMC - SH2O -! ---------------------------------------------------------------------- -! KEEP WITHIN BOUNDS. -! ---------------------------------------------------------------------- - IF (SWL > (SMC -0.02)) SWL = SMC -0.02 - -! ---------------------------------------------------------------------- -! START OF ITERATIONS -! ---------------------------------------------------------------------- - IF (SWL < 0.) SWL = 0. - 1001 Continue - IF (.NOT.( (NLOG < 10) .AND. (KCOUNT == 0))) goto 1002 - NLOG = NLOG +1 - DF = ALOG ( ( PSIS * GS / HLICE ) * ( ( 1. + CK * SWL )**2.) * & - ( SMCMAX / (SMC - SWL) )** BX) - ALOG ( - ( & - TKELV - T0)/ TKELV) - DENOM = 2. * CK / ( 1. + CK * SWL ) + BX / ( SMC - SWL ) - SWLK = SWL - DF / DENOM -! ---------------------------------------------------------------------- -! BOUNDS USEFUL FOR MATHEMATICAL SOLUTION. -! ---------------------------------------------------------------------- - IF (SWLK > (SMC -0.02)) SWLK = SMC - 0.02 - IF (SWLK < 0.) SWLK = 0. - -! ---------------------------------------------------------------------- -! MATHEMATICAL SOLUTION BOUNDS APPLIED. -! ---------------------------------------------------------------------- - DSWL = ABS (SWLK - SWL) - -! ---------------------------------------------------------------------- -! IF MORE THAN 10 ITERATIONS, USE EXPLICIT METHOD (CK=0 APPROX.) -! WHEN DSWL LESS OR EQ. ERROR, NO MORE ITERATIONS REQUIRED. -! ---------------------------------------------------------------------- - SWL = SWLK - IF ( DSWL <= ERROR ) THEN - KCOUNT = KCOUNT +1 - END IF -! ---------------------------------------------------------------------- -! END OF ITERATIONS -! ---------------------------------------------------------------------- -! BOUNDS APPLIED WITHIN DO-BLOCK ARE VALID FOR PHYSICAL SOLUTION. -! ---------------------------------------------------------------------- -! FRH2O = SMC - SWL - goto 1001 - 1002 continue - FREE = SMC - SWL - END IF -! ---------------------------------------------------------------------- -! END OPTION 1 -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! OPTION 2: EXPLICIT SOLUTION FOR FLERCHINGER EQ. i.e. CK=0 -! IN KOREN ET AL., JGR, 1999, EQN 17 -! APPLY PHYSICAL BOUNDS TO FLERCHINGER SOLUTION -! ---------------------------------------------------------------------- - IF (KCOUNT == 0) THEN -! PRINT *,'Flerchinger USEd in NEW version. Iterations=',NLOG - FK = ( ( (HLICE / (GS * ( - PSIS)))* & - ( (TKELV - T0)/ TKELV))** ( -1/ BX))* SMCMAX -! FRH2O = MIN (FK, SMC) - IF (FK < 0.02) FK = 0.02 - FREE = MIN (FK, SMC) -! ---------------------------------------------------------------------- -! END OPTION 2 -! ---------------------------------------------------------------------- - END IF - END IF -! ---------------------------------------------------------------------- - END SUBROUTINE FRH2O -! ---------------------------------------------------------------------- - - SUBROUTINE HRT (RHSTS,STC,SMC,SMCMAX,NSOIL,ZSOIL,YY,ZZ1, & - TBOT,ZBOT,PSISAT,SH2O,DT,BEXP,SOILTYP,OPT_THCND, & - F1,DF1,QUARTZ,CSOIL,AI,BI,CI,VEGTYP,ISURBAN & - ,HCPCT_FASDAS ) !fasdas - -! ---------------------------------------------------------------------- -! SUBROUTINE HRT -! ---------------------------------------------------------------------- -! CALCULATE THE RIGHT HAND SIDE OF THE TIME TENDENCY TERM OF THE SOIL -! THERMAL DIFFUSION EQUATION. ALSO TO COMPUTE ( PREPARE ) THE MATRIX -! COEFFICIENTS FOR THE TRI-DIAGONAL MATRIX OF THE IMPLICIT TIME SCHEME. -! ---------------------------------------------------------------------- - IMPLICIT NONE - LOGICAL :: ITAVG - INTEGER, INTENT(IN) :: OPT_THCND - INTEGER, INTENT(IN) :: NSOIL, VEGTYP, SOILTYP - INTEGER, INTENT(IN) :: ISURBAN - INTEGER :: I, K - - REAL, INTENT(IN) :: BEXP, CSOIL, DF1, DT,F1,PSISAT,QUARTZ, & - SMCMAX ,TBOT,YY,ZZ1, ZBOT - REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SMC,STC,ZSOIL - REAL, DIMENSION(1:NSOIL), INTENT(INOUT):: SH2O - REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: RHSTS - REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: AI, BI,CI - REAL :: DDZ, DDZ2, DENOM, DF1N, DF1K, DTSDZ, & - DTSDZ2,HCPCT,QTOT,SSOIL,SICE,TAVG,TBK, & - TBK1,TSNSR,TSURF,CSOIL_LOC - REAL, PARAMETER :: T0 = 273.15, CAIR = 1004.0, CICE = 2.106E6,& - CH2O = 4.2E6 - -! -! FASDAS -! - REAL, INTENT( OUT) :: HCPCT_FASDAS -! -! END FASDAS -! - -!urban - IF( VEGTYP == ISURBAN ) then - CSOIL_LOC=3.0E6 - ELSE - CSOIL_LOC=CSOIL - ENDIF - -! ---------------------------------------------------------------------- -! INITIALIZE LOGICAL FOR SOIL LAYER TEMPERATURE AVERAGING. -! ---------------------------------------------------------------------- - ITAVG = .TRUE. -! ---------------------------------------------------------------------- -! BEGIN SECTION FOR TOP SOIL LAYER -! ---------------------------------------------------------------------- -! CALC THE HEAT CAPACITY OF THE TOP SOIL LAYER -! ---------------------------------------------------------------------- - HCPCT = SH2O (1)* CH2O + (1.0- SMCMAX)* CSOIL_LOC + (SMCMAX - SMC (1))& - * CAIR & - + ( SMC (1) - SH2O (1) )* CICE -! -! FASDAS -! - HCPCT_FASDAS = HCPCT -! -! END FASDAS -! -! ---------------------------------------------------------------------- -! CALC THE MATRIX COEFFICIENTS AI, BI, AND CI FOR THE TOP LAYER -! ---------------------------------------------------------------------- - DDZ = 1.0 / ( -0.5 * ZSOIL (2) ) - AI (1) = 0.0 - CI (1) = (DF1 * DDZ) / (ZSOIL (1) * HCPCT) - -! ---------------------------------------------------------------------- -! CALCULATE THE VERTICAL SOIL TEMP GRADIENT BTWN THE 1ST AND 2ND SOIL -! LAYERS. THEN CALCULATE THE SUBSURFACE HEAT FLUX. USE THE TEMP -! GRADIENT AND SUBSFC HEAT FLUX TO CALC "RIGHT-HAND SIDE TENDENCY -! TERMS", OR "RHSTS", FOR TOP SOIL LAYER. -! ---------------------------------------------------------------------- - BI (1) = - CI (1) + DF1 / (0.5 * ZSOIL (1) * ZSOIL (1)* HCPCT * & - ZZ1) - DTSDZ = (STC (1) - STC (2)) / ( -0.5 * ZSOIL (2)) - SSOIL = DF1 * (STC (1) - YY) / (0.5 * ZSOIL (1) * ZZ1) -! RHSTS(1) = (DF1 * DTSDZ - SSOIL) / (ZSOIL(1) * HCPCT) - DENOM = (ZSOIL (1) * HCPCT) - -! ---------------------------------------------------------------------- -! NEXT CAPTURE THE VERTICAL DIFFERENCE OF THE HEAT FLUX AT TOP AND -! BOTTOM OF FIRST SOIL LAYER FOR USE IN HEAT FLUX CONSTRAINT APPLIED TO -! POTENTIAL SOIL FREEZING/THAWING IN ROUTINE SNKSRC. -! ---------------------------------------------------------------------- -! QTOT = SSOIL - DF1*DTSDZ - RHSTS (1) = (DF1 * DTSDZ - SSOIL) / DENOM - -! ---------------------------------------------------------------------- -! CALCULATE FROZEN WATER CONTENT IN 1ST SOIL LAYER. -! ---------------------------------------------------------------------- - QTOT = -1.0* RHSTS (1)* DENOM - -! ---------------------------------------------------------------------- -! IF TEMPERATURE AVERAGING INVOKED (ITAVG=TRUE; ELSE SKIP): -! SET TEMP "TSURF" AT TOP OF SOIL COLUMN (FOR USE IN FREEZING SOIL -! PHYSICS LATER IN FUNCTION SUBROUTINE SNKSRC). IF SNOWPACK CONTENT IS -! ZERO, THEN TSURF EXPRESSION BELOW GIVES TSURF = SKIN TEMP. IF -! SNOWPACK IS NONZERO (HENCE ARGUMENT ZZ1=1), THEN TSURF EXPRESSION -! BELOW YIELDS SOIL COLUMN TOP TEMPERATURE UNDER SNOWPACK. THEN -! CALCULATE TEMPERATURE AT BOTTOM INTERFACE OF 1ST SOIL LAYER FOR USE -! LATER IN FUNCTION SUBROUTINE SNKSRC -! ---------------------------------------------------------------------- - SICE = SMC (1) - SH2O (1) - IF (ITAVG) THEN - TSURF = (YY + (ZZ1-1) * STC (1)) / ZZ1 -! ---------------------------------------------------------------------- -! IF FROZEN WATER PRESENT OR ANY OF LAYER-1 MID-POINT OR BOUNDING -! INTERFACE TEMPERATURES BELOW FREEZING, THEN CALL SNKSRC TO -! COMPUTE HEAT SOURCE/SINK (AND CHANGE IN FROZEN WATER CONTENT) -! DUE TO POSSIBLE SOIL WATER PHASE CHANGE -! ---------------------------------------------------------------------- - CALL TBND (STC (1),STC (2),ZSOIL,ZBOT,1,NSOIL,TBK) - IF ( (SICE > 0.) .OR. (STC (1) < T0) .OR. & - (TSURF < T0) .OR. (TBK < T0) ) THEN -! TSNSR = SNKSRC (TAVG,SMC(1),SH2O(1), - CALL TMPAVG (TAVG,TSURF,STC (1),TBK,ZSOIL,NSOIL,1) - CALL SNKSRC (TSNSR,TAVG,SMC (1),SH2O (1), & - ZSOIL,NSOIL,SMCMAX,PSISAT,BEXP,DT,1,QTOT) -! RHSTS(1) = RHSTS(1) - TSNSR / ( ZSOIL(1) * HCPCT ) - RHSTS (1) = RHSTS (1) - TSNSR / DENOM - END IF - ELSE -! TSNSR = SNKSRC (STC(1),SMC(1),SH2O(1), - IF ( (SICE > 0.) .OR. (STC (1) < T0) ) THEN - CALL SNKSRC (TSNSR,STC (1),SMC (1),SH2O (1), & - ZSOIL,NSOIL,SMCMAX,PSISAT,BEXP,DT,1,QTOT) -! RHSTS(1) = RHSTS(1) - TSNSR / ( ZSOIL(1) * HCPCT ) - RHSTS (1) = RHSTS (1) - TSNSR / DENOM - END IF -! ---------------------------------------------------------------------- -! THIS ENDS SECTION FOR TOP SOIL LAYER. -! ---------------------------------------------------------------------- - END IF - -! INITIALIZE DDZ2 -! ---------------------------------------------------------------------- - - DDZ2 = 0.0 - DF1K = DF1 - -! ---------------------------------------------------------------------- -! LOOP THRU THE REMAINING SOIL LAYERS, REPEATING THE ABOVE PROCESS -! (EXCEPT SUBSFC OR "GROUND" HEAT FLUX NOT REPEATED IN LOWER LAYERS) -! ---------------------------------------------------------------------- -! CALCULATE HEAT CAPACITY FOR THIS SOIL LAYER. -! ---------------------------------------------------------------------- - DO K = 2,NSOIL - HCPCT = SH2O (K)* CH2O + (1.0- SMCMAX)* CSOIL_LOC + (SMCMAX - SMC ( & - K))* CAIR + ( SMC (K) - SH2O (K) )* CICE -! ---------------------------------------------------------------------- -! THIS SECTION FOR LAYER 2 OR GREATER, BUT NOT LAST LAYER. -! ---------------------------------------------------------------------- -! CALCULATE THERMAL DIFFUSIVITY FOR THIS LAYER. -! ---------------------------------------------------------------------- - IF (K /= NSOIL) THEN - -! ---------------------------------------------------------------------- -! CALC THE VERTICAL SOIL TEMP GRADIENT THRU THIS LAYER -! ---------------------------------------------------------------------- - CALL TDFCND (DF1N,SMC (K),QUARTZ,SMCMAX,SH2O (K),BEXP, PSISAT, SOILTYP, OPT_THCND) - -!urban - IF ( VEGTYP == ISURBAN ) DF1N = 3.24 - - DENOM = 0.5 * ( ZSOIL (K -1) - ZSOIL (K +1) ) - -! ---------------------------------------------------------------------- -! CALC THE MATRIX COEF, CI, AFTER CALC'NG ITS PARTIAL PRODUCT -! ---------------------------------------------------------------------- - DTSDZ2 = ( STC (K) - STC (K +1) ) / DENOM - DDZ2 = 2. / (ZSOIL (K -1) - ZSOIL (K +1)) - -! ---------------------------------------------------------------------- -! IF TEMPERATURE AVERAGING INVOKED (ITAVG=TRUE; ELSE SKIP): CALCULATE -! TEMP AT BOTTOM OF LAYER. -! ---------------------------------------------------------------------- - CI (K) = - DF1N * DDZ2 / ( (ZSOIL (K -1) - ZSOIL (K)) * & - HCPCT) - IF (ITAVG) THEN - CALL TBND (STC (K),STC (K +1),ZSOIL,ZBOT,K,NSOIL,TBK1) - END IF - - ELSE -! ---------------------------------------------------------------------- -! SPECIAL CASE OF BOTTOM SOIL LAYER: CALCULATE THERMAL DIFFUSIVITY FOR -! BOTTOM LAYER. -! ---------------------------------------------------------------------- - -! ---------------------------------------------------------------------- -! CALC THE VERTICAL SOIL TEMP GRADIENT THRU BOTTOM LAYER. -! ---------------------------------------------------------------------- - CALL TDFCND (DF1N,SMC (K),QUARTZ,SMCMAX,SH2O (K),BEXP, PSISAT, SOILTYP, OPT_THCND) - - -!urban - IF ( VEGTYP == ISURBAN ) DF1N = 3.24 - - DENOM = .5 * (ZSOIL (K -1) + ZSOIL (K)) - ZBOT - -! ---------------------------------------------------------------------- -! SET MATRIX COEF, CI TO ZERO IF BOTTOM LAYER. -! ---------------------------------------------------------------------- - DTSDZ2 = (STC (K) - TBOT) / DENOM - -! ---------------------------------------------------------------------- -! IF TEMPERATURE AVERAGING INVOKED (ITAVG=TRUE; ELSE SKIP): CALCULATE -! TEMP AT BOTTOM OF LAST LAYER. -! ---------------------------------------------------------------------- - CI (K) = 0. - IF (ITAVG) THEN - CALL TBND (STC (K),TBOT,ZSOIL,ZBOT,K,NSOIL,TBK1) - END IF -! ---------------------------------------------------------------------- -! THIS ENDS SPECIAL LOOP FOR BOTTOM LAYER. - END IF -! ---------------------------------------------------------------------- -! CALCULATE RHSTS FOR THIS LAYER AFTER CALC'NG A PARTIAL PRODUCT. -! ---------------------------------------------------------------------- - DENOM = ( ZSOIL (K) - ZSOIL (K -1) ) * HCPCT - RHSTS (K) = ( DF1N * DTSDZ2- DF1K * DTSDZ ) / DENOM - QTOT = -1.0* DENOM * RHSTS (K) - - SICE = SMC (K) - SH2O (K) - IF (ITAVG) THEN - CALL TMPAVG (TAVG,TBK,STC (K),TBK1,ZSOIL,NSOIL,K) -! TSNSR = SNKSRC(TAVG,SMC(K),SH2O(K),ZSOIL,NSOIL, - IF ( (SICE > 0.) .OR. (STC (K) < T0) .OR. & - (TBK .lt. T0) .OR. (TBK1 .lt. T0) ) THEN - CALL SNKSRC (TSNSR,TAVG,SMC (K),SH2O (K),ZSOIL,NSOIL, & - SMCMAX,PSISAT,BEXP,DT,K,QTOT) - RHSTS (K) = RHSTS (K) - TSNSR / DENOM - END IF - ELSE -! TSNSR = SNKSRC(STC(K),SMC(K),SH2O(K),ZSOIL,NSOIL, - IF ( (SICE > 0.) .OR. (STC (K) < T0) ) THEN - CALL SNKSRC (TSNSR,STC (K),SMC (K),SH2O (K),ZSOIL,NSOIL, & - SMCMAX,PSISAT,BEXP,DT,K,QTOT) - RHSTS (K) = RHSTS (K) - TSNSR / DENOM - END IF - END IF - -! ---------------------------------------------------------------------- -! CALC MATRIX COEFS, AI, AND BI FOR THIS LAYER. -! ---------------------------------------------------------------------- - AI (K) = - DF1K * DDZ / ( (ZSOIL (K -1) - ZSOIL (K)) * HCPCT) - -! ---------------------------------------------------------------------- -! RESET VALUES OF DF1, DTSDZ, DDZ, AND TBK FOR LOOP TO NEXT SOIL LAYER. -! ---------------------------------------------------------------------- - BI (K) = - (AI (K) + CI (K)) - TBK = TBK1 - DF1K = DF1N - DTSDZ = DTSDZ2 - DDZ = DDZ2 - END DO -! ---------------------------------------------------------------------- - END SUBROUTINE HRT -! ---------------------------------------------------------------------- - - SUBROUTINE HSTEP (STCOUT,STCIN,RHSTS,DT,NSOIL,AI,BI,CI) - -! ---------------------------------------------------------------------- -! SUBROUTINE HSTEP -! ---------------------------------------------------------------------- -! CALCULATE/UPDATE THE SOIL TEMPERATURE FIELD. -! ---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER, INTENT(IN) :: NSOIL - INTEGER :: K - - REAL, DIMENSION(1:NSOIL), INTENT(IN):: STCIN - REAL, DIMENSION(1:NSOIL), INTENT(OUT):: STCOUT - REAL, DIMENSION(1:NSOIL), INTENT(INOUT):: RHSTS - REAL, DIMENSION(1:NSOIL), INTENT(INOUT):: AI,BI,CI - REAL, DIMENSION(1:NSOIL) :: RHSTSin - REAL, DIMENSION(1:NSOIL) :: CIin - REAL :: DT - -! ---------------------------------------------------------------------- -! CREATE FINITE DIFFERENCE VALUES FOR USE IN ROSR12 ROUTINE -! ---------------------------------------------------------------------- - DO K = 1,NSOIL - RHSTS (K) = RHSTS (K) * DT - AI (K) = AI (K) * DT - BI (K) = 1. + BI (K) * DT - CI (K) = CI (K) * DT - END DO -! ---------------------------------------------------------------------- -! COPY VALUES FOR INPUT VARIABLES BEFORE CALL TO ROSR12 -! ---------------------------------------------------------------------- - DO K = 1,NSOIL - RHSTSin (K) = RHSTS (K) - END DO - DO K = 1,NSOIL - CIin (K) = CI (K) - END DO -! ---------------------------------------------------------------------- -! SOLVE THE TRI-DIAGONAL MATRIX EQUATION -! ---------------------------------------------------------------------- - CALL ROSR12 (CI,AI,BI,CIin,RHSTSin,RHSTS,NSOIL) -! ---------------------------------------------------------------------- -! CALC/UPDATE THE SOIL TEMPS USING MATRIX SOLUTION -! ---------------------------------------------------------------------- - DO K = 1,NSOIL - STCOUT (K) = STCIN (K) + CI (K) - END DO -! ---------------------------------------------------------------------- - END SUBROUTINE HSTEP -! ---------------------------------------------------------------------- - - SUBROUTINE NOPAC (ETP,ETA,PRCP,SMC,SMCMAX,SMCWLT, & - SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT,SHDFAC, & - SBETA,Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,EMISSI, & - SSOIL, & - STC,EPSCA,BEXP,PC,RCH,RR,CFACTR, & - SH2O,SLOPE,KDT,FRZFACT,PSISAT,ZSOIL, & - DKSAT,DWSAT,TBOT,ZBOT,RUNOFF1,RUNOFF2, & - RUNOFF3,EDIR,EC,ET,ETT,NROOT,RTDIS, & - QUARTZ,FXEXP,CSOIL, & - BETA,DRIP,DEW,FLX1,FLX3,VEGTYP,ISURBAN, & - SFHEAD1RT,INFXS1RT,ETPND1,SOILTYP,OPT_THCND & - ,XSDA_QFX,QFX_PHY,XQNORM,fasdas,HCPCT_FASDAS, & - SIGMA,CPH2O) !fasdas - -! ---------------------------------------------------------------------- -! SUBROUTINE NOPAC -! ---------------------------------------------------------------------- -! CALCULATE SOIL MOISTURE AND HEAT FLUX VALUES AND UPDATE SOIL MOISTURE -! CONTENT AND SOIL HEAT CONTENT VALUES FOR THE CASE WHEN NO SNOW PACK IS -! PRESENT. -! ---------------------------------------------------------------------- - IMPLICIT NONE - - INTEGER, INTENT(IN) :: OPT_THCND - INTEGER, INTENT(IN) :: NROOT,NSOIL,VEGTYP,SOILTYP - INTEGER, INTENT(IN) :: ISURBAN - INTEGER :: K - - REAL, INTENT(IN) :: BEXP,CFACTR, CMCMAX,CSOIL,DKSAT,DT,DWSAT, & - EPSCA,ETP,FDOWN,F1,FXEXP,FRZFACT,KDT,PC, & - PRCP,PSISAT,Q2,QUARTZ,RCH,RR,SBETA,SFCTMP,& - SHDFAC,SLOPE,SMCDRY,SMCMAX,SMCREF,SMCWLT, & - T24,TBOT,TH2,ZBOT,EMISSI,SIGMA,CPH2O - REAL, INTENT(INOUT) :: CMC,BETA,T1 - REAL, INTENT(OUT) :: DEW,DRIP,EC,EDIR,ETA,ETT,FLX1,FLX3, & - RUNOFF1,RUNOFF2,RUNOFF3,SSOIL -!DJG NDHMS/WRF-Hydro edit... - REAL, INTENT(INOUT) :: SFHEAD1RT,INFXS1RT,ETPND1 - - REAL, DIMENSION(1:NSOIL),INTENT(IN) :: RTDIS,ZSOIL - REAL, DIMENSION(1:NSOIL),INTENT(OUT) :: ET - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: SMC,SH2O,STC - REAL, DIMENSION(1:NSOIL) :: ET1 - REAL :: EC1,EDIR1,ETT1,DF1,ETA1,ETP1,PRCP1,YY, & - YYNUM,ZZ1 -! -! FASDAS -! - REAL :: XSDA_QFX, QFX_PHY, XQNORM - INTEGER :: fasdas - REAL , DIMENSION(1:NSOIL) :: EFT(NSOIL), wetty(1:NSOIL) - REAL :: EFDIR, EFC, EALL_now - REAL, INTENT( OUT) :: HCPCT_FASDAS -! -! END FASDAS -! -! ---------------------------------------------------------------------- -! EXECUTABLE CODE BEGINS HERE: -! CONVERT ETP Fnd PRCP FROM KG M-2 S-1 TO M S-1 AND INITIALIZE DEW. -! ---------------------------------------------------------------------- - PRCP1 = PRCP * 0.001 - ETP1 = ETP * 0.001 - DEW = 0.0 -! ---------------------------------------------------------------------- -! INITIALIZE EVAP TERMS. -! ---------------------------------------------------------------------- -! -! FASDAS -! - QFX_PHY = 0.0 -! -! END FASDAS -! - EDIR = 0. - EDIR1 = 0. - EC1 = 0. - EC = 0. - DO K = 1,NSOIL - ET(K) = 0. - ET1(K) = 0. -! -! FASDAS -! - wetty(K) = 1.0 -! -! END FASDAS -! - END DO - ETT = 0. - ETT1 = 0. - -!DJG NDHMS/WRF-Hydro edit... - ETPND1 = 0. - - - IF (ETP > 0.0) THEN - CALL EVAPO (ETA1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, & - SH2O, & - SMCMAX,BEXP,PC,SMCWLT,DKSAT,DWSAT, & - SMCREF,SHDFAC,CMCMAX, & - SMCDRY,CFACTR, & - EDIR1,EC1,ET1,ETT1,SFCTMP,Q2,NROOT,RTDIS,FXEXP, & - SFHEAD1RT,ETPND1 ) -! -! FASDAS -! - IF( fasdas == 1 ) THEN - DO K=1,NSOIL - QFX_PHY = QFX_PHY + ET1(K) ! m/s -! dont add moisture fluxes if soil moisture is = or > smcref - IF(SMC(K).GE.SMCREF.and.XSDA_QFX.gt.0.0) wetty(K)=0.0 - END DO - QFX_PHY = EDIR1+EC1+QFX_PHY ! m/s - EALL_now = QFX_PHY ! m/s - QFX_PHY = QFX_PHY*1000.0 ! Kg/m2/s - - if(EALL_now.ne.0.0) then - EFDIR = (EDIR1/EALL_now)*XSDA_QFX*1.0E-03*XQNORM - EFDIR = EFDIR * wetty(1) - !TWG2015 Bugfix Flip Sign to conform to Net upward Flux - EDIR1 = EDIR1 + EFDIR ! new value - - EFC = (EC1/EALL_now)*XSDA_QFX*1.0E-03*XQNORM - !TWG2015 Bugfix Flip Sign to conform to Net upward Flux - EC1 = EC1 + EFC ! new value - - - DO K=1,NSOIL - EFT(K) = (ET1(K)/EALL_now)*XSDA_QFX*1.0E-03*XQNORM - EFT(K) = EFT(K) * wetty(K) - !TWG2015 Bugfix Flip Sign to conform to Net upward Flux - ET1(K) = ET1(K) + EFT(K) ! new value - END DO - - - END IF ! for non-zero eall_now - ELSE - QFX_PHY = 0.0 - ENDIF -! -! END FASDAS -! - CALL SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & - SH2O,SLOPE,KDT,FRZFACT, & - SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & - SHDFAC,CMCMAX, & - RUNOFF1,RUNOFF2,RUNOFF3, & - EDIR1,EC1,ET1, & - DRIP, SFHEAD1RT,INFXS1RT) - -! ---------------------------------------------------------------------- -! CONVERT MODELED EVAPOTRANSPIRATION FROM M S-1 TO KG M-2 S-1. -! ---------------------------------------------------------------------- - - ETA = ETA1 * 1000.0 - -! ---------------------------------------------------------------------- -! IF ETP < 0, ASSUME DEW FORMS (TRANSFORM ETP1 INTO DEW AND REINITIALIZE -! ETP1 TO ZERO). -! ---------------------------------------------------------------------- - ELSE - DEW = - ETP1 - -! ---------------------------------------------------------------------- -! CONVERT PRCP FROM 'KG M-2 S-1' TO 'M S-1' AND ADD DEW AMOUNT. -! ---------------------------------------------------------------------- - - PRCP1 = PRCP1+ DEW -! -! FASDAS -! - IF( fasdas == 1 ) THEN - DO K=1,NSOIL - QFX_PHY = QFX_PHY + ET1(K) ! m/s -! dont add moisture fluxes if soil moisture is = or > smcref - IF(SMC(K).GE.SMCREF.and.XSDA_QFX.gt.0.0) wetty(K)=0.0 - END DO - QFX_PHY = EDIR1+EC1+QFX_PHY ! m/s - EALL_now = QFX_PHY ! m/s - QFX_PHY = QFX_PHY*1000.0 ! Kg/m2/s - - IF(EALL_now.ne.0.0) then - EFDIR = (EDIR1/EALL_now)*XSDA_QFX*1.0E-03*XQNORM - EFDIR = EFDIR * wetty(1) - !TWG2015 Bugfix Flip Sign to conform to Net Upward Flux - EDIR1 = EDIR1 + EFDIR ! new value - - EFC = (EC1/EALL_now)*XSDA_QFX*1.0E-03*XQNORM - !TWG2015 Bugfix Flip Sign to conform to Net Upward Flux - EC1 = EC1+ EFC ! new value - - DO K=1,NSOIL - EFT(K) = (ET1(K)/EALL_now)*XSDA_QFX*1.0E-03*XQNORM - EFT(K) = EFT(K) * wetty(K) - !TWG2015 Bugfix Flip Sign to conform to Net Upward Flux - ET1(K) = ET1(K) + EFT(K) ! new value - END DO - - END IF ! for non-zero eall_now - ELSE - QFX_PHY = 0.0 - ENDIF -! -! END FASDAS -! - CALL SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & - SH2O,SLOPE,KDT,FRZFACT, & - SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & - SHDFAC,CMCMAX, & - RUNOFF1,RUNOFF2,RUNOFF3, & - EDIR1,EC1,ET1, & - DRIP, SFHEAD1RT,INFXS1RT) - -! ---------------------------------------------------------------------- -! CONVERT MODELED EVAPOTRANSPIRATION FROM 'M S-1' TO 'KG M-2 S-1'. -! ---------------------------------------------------------------------- -! ETA = ETA1 * 1000.0 - END IF - -! ---------------------------------------------------------------------- -! BASED ON ETP AND E VALUES, DETERMINE BETA -! ---------------------------------------------------------------------- - - IF ( ETP <= 0.0 ) THEN - BETA = 0.0 - ETA = ETP - IF ( ETP < 0.0 ) THEN - BETA = 1.0 - END IF - ELSE - BETA = ETA / ETP - END IF - -! ---------------------------------------------------------------------- -! CONVERT MODELED EVAPOTRANSPIRATION COMPONENTS 'M S-1' TO 'KG M-2 S-1'. -! ---------------------------------------------------------------------- - EDIR = EDIR1*1000. - EC = EC1*1000. - DO K = 1,NSOIL - ET(K) = ET1(K)*1000. - END DO - ETT = ETT1*1000. - -! ---------------------------------------------------------------------- -! GET SOIL THERMAL DIFFUXIVITY/CONDUCTIVITY FOR TOP SOIL LYR, -! CALC. ADJUSTED TOP LYR SOIL TEMP AND ADJUSTED SOIL FLUX, THEN -! CALL SHFLX TO COMPUTE/UPDATE SOIL HEAT FLUX AND SOIL TEMPS. -! ---------------------------------------------------------------------- - - CALL TDFCND (DF1,SMC (1),QUARTZ,SMCMAX,SH2O (1),BEXP, PSISAT, SOILTYP, OPT_THCND) - -!urban - IF ( VEGTYP == ISURBAN ) DF1=3.24 -! - -! ---------------------------------------------------------------------- -! VEGETATION GREENNESS FRACTION REDUCTION IN SUBSURFACE HEAT FLUX -! VIA REDUCTION FACTOR, WHICH IS CONVENIENT TO APPLY HERE TO THERMAL -! DIFFUSIVITY THAT IS LATER USED IN HRT TO COMPUTE SUB SFC HEAT FLUX -! (SEE ADDITIONAL COMMENTS ON VEG EFFECT SUB-SFC HEAT FLX IN -! ROUTINE SFLX) -! ---------------------------------------------------------------------- - DF1 = DF1 * EXP (SBETA * SHDFAC) -! ---------------------------------------------------------------------- -! COMPUTE INTERMEDIATE TERMS PASSED TO ROUTINE HRT (VIA ROUTINE -! SHFLX BELOW) FOR USE IN COMPUTING SUBSURFACE HEAT FLUX IN HRT -! ---------------------------------------------------------------------- - YYNUM = FDOWN - EMISSI*SIGMA * T24 - YY = SFCTMP + (YYNUM / RCH + TH2- SFCTMP - BETA * EPSCA) / RR - - ZZ1 = DF1 / ( -0.5 * ZSOIL (1) * RCH * RR ) + 1.0 -!urban - CALL SHFLX (SSOIL,STC,SMC,SMCMAX,NSOIL,T1,DT,YY,ZZ1,ZSOIL, & - TBOT,ZBOT,SMCWLT,PSISAT,SH2O,BEXP,F1,DF1, & - QUARTZ,CSOIL,VEGTYP,ISURBAN,SOILTYP,OPT_THCND & - ,HCPCT_FASDAS ) !fasdas - -! ---------------------------------------------------------------------- -! SET FLX1 AND FLX3 (SNOPACK PHASE CHANGE HEAT FLUXES) TO ZERO SINCE -! THEY ARE NOT USED HERE IN SNOPAC. FLX2 (FREEZING RAIN HEAT FLUX) WAS -! SIMILARLY INITIALIZED IN THE PENMAN ROUTINE. -! ---------------------------------------------------------------------- - FLX1 = CPH2O * PRCP * (T1- SFCTMP) - FLX3 = 0.0 - -! ---------------------------------------------------------------------- - END SUBROUTINE NOPAC -! ---------------------------------------------------------------------- - - SUBROUTINE PENMAN (SFCTMP,SFCPRS,CH,T2V,TH2,PRCP,FDOWN,T24,SSOIL, & - & Q2,Q2SAT,ETP,RCH,EPSCA,RR,SNOWNG,FRZGRA, & - & DQSDT2,FLX2,EMISSI_IN,SNEQV,T1,SNCOVR,AOASIS, & - & ALBEDO,SOLDN,FVB,GAMA,STC1,ETPN,FLX4,UA_PHYS, & - & CP,RD,SIGMA,CPH2O,CPICE,LSUBF) - -! ---------------------------------------------------------------------- -! SUBROUTINE PENMAN -! ---------------------------------------------------------------------- -! CALCULATE POTENTIAL EVAPORATION FOR THE CURRENT POINT. VARIOUS -! PARTIAL SUMS/PRODUCTS ARE ALSO CALCULATED AND PASSED BACK TO THE -! CALLING ROUTINE FOR LATER USE. -! ---------------------------------------------------------------------- - IMPLICIT NONE - LOGICAL, INTENT(IN) :: SNOWNG, FRZGRA - REAL, INTENT(IN) :: CH, DQSDT2,FDOWN,PRCP, & - Q2, Q2SAT,SSOIL, SFCPRS, SFCTMP, & - T2V, TH2,EMISSI_IN,SNEQV,AOASIS, & - CP, RD, SIGMA, CPH2O, CPICE, LSUBF - REAL, INTENT(IN) :: T1 , SNCOVR - REAL, INTENT(IN) :: ALBEDO,SOLDN,FVB,GAMA,STC1 - LOGICAL, INTENT(IN) :: UA_PHYS -! - REAL, INTENT(OUT) :: EPSCA,ETP,FLX2,RCH,RR,T24 - REAL, INTENT(OUT) :: FLX4,ETPN - REAL :: A, DELTA, FNET,RAD,RHO,EMISSI,ELCP1,LVS - REAL :: TOTABS,UCABS,SIGNCK,FNETN,RADN,EPSCAN - - REAL, PARAMETER :: ELCP = 2.4888E+3, LSUBC = 2.501000E+6 - REAL, PARAMETER :: LSUBS = 2.83E+6 - REAL, PARAMETER :: ALGDSN = 0.5, ALVGSN = 0.13 - -! ---------------------------------------------------------------------- -! EXECUTABLE CODE BEGINS HERE: -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! PREPARE PARTIAL QUANTITIES FOR PENMAN EQUATION. -! ---------------------------------------------------------------------- - EMISSI=EMISSI_IN - ELCP1 = (1.0-SNCOVR)*ELCP + SNCOVR*ELCP*LSUBS/LSUBC - LVS = (1.0-SNCOVR)*LSUBC + SNCOVR*LSUBS - - FLX2 = 0.0 -! DELTA = ELCP * DQSDT2 - DELTA = ELCP1 * DQSDT2 - T24 = SFCTMP * SFCTMP * SFCTMP * SFCTMP -! RR = T24 * 6.48E-8 / (SFCPRS * CH) + 1.0 - RR = EMISSI*T24 * 6.48E-8 / (SFCPRS * CH) + 1.0 - RHO = SFCPRS / (RD * T2V) - -! ---------------------------------------------------------------------- -! ADJUST THE PARTIAL SUMS / PRODUCTS WITH THE LATENT HEAT -! EFFECTS CAUSED BY FALLING PRECIPITATION. -! ---------------------------------------------------------------------- - RCH = RHO * CP * CH - IF (.NOT. SNOWNG) THEN - IF (PRCP > 0.0) RR = RR + CPH2O * PRCP / RCH - ELSE - RR = RR + CPICE * PRCP / RCH - END IF - -! ---------------------------------------------------------------------- -! INCLUDE THE LATENT HEAT EFFECTS OF FRZNG RAIN CONVERTING TO ICE ON -! IMPACT IN THE CALCULATION OF FLX2 AND FNET. -! ---------------------------------------------------------------------- -! FNET = FDOWN - SIGMA * T24- SSOIL - FNET = FDOWN - EMISSI*SIGMA * T24- SSOIL - - FLX4 = 0.0 - IF(UA_PHYS) THEN - IF(SNEQV > 0. .AND. FNET > 0. .AND. SOLDN > 0. ) THEN - TOTABS = (1.-ALBEDO)*SOLDN*FVB ! solar radiation absorbed - ! by vegetated fraction - UCABS = MIN(TOTABS,((1.0-ALGDSN)*(1.0-ALVGSN)*SOLDN*GAMA)*FVB) -! print*,'penman',UCABS,TOTABS,SOLDN,GAMA,FVB -! UCABS = MIN(TOTABS,(0.44*SOLDN*GAMA)*FVB) - ! UCABS -> solar radiation - ! absorbed under canopy - FLX4 = MIN(TOTABS - UCABS, MIN(250., 0.5*(1.-ALBEDO)*SOLDN)) - ENDIF - - SIGNCK = (STC1-273.15)*(SFCTMP-273.15) - - IF(FLX4 > 0. .AND. (SIGNCK <= 0. .OR. STC1 < 273.15)) THEN - IF(FNET >= FLX4) THEN - FNETN = FNET - FLX4 - ELSE - FLX4 = FNET - FNETN = 0. - ENDIF - ELSE - FLX4 = 0.0 - FNETN = 0. - ENDIF - ENDIF - - IF (FRZGRA) THEN - FLX2 = - LSUBF * PRCP - FNET = FNET - FLX2 - IF(UA_PHYS) FNETN = FNETN - FLX2 -! ---------------------------------------------------------------------- -! FINISH PENMAN EQUATION CALCULATIONS. -! ---------------------------------------------------------------------- - END IF - RAD = FNET / RCH + TH2- SFCTMP -! A = ELCP * (Q2SAT - Q2) - A = ELCP1 * (Q2SAT - Q2) - EPSCA = (A * RR + RAD * DELTA) / (DELTA + RR) -! Fei-Mike - IF (EPSCA>0.) EPSCA = EPSCA * AOASIS -! ETP = EPSCA * RCH / LSUBC - ETP = EPSCA * RCH / LVS - - IF(UA_PHYS) THEN - RADN = FNETN / RCH + TH2- SFCTMP - EPSCAN = (A * RR + RADN * DELTA) / (DELTA + RR) - ETPN = EPSCAN * RCH / LVS - END IF -! ---------------------------------------------------------------------- - END SUBROUTINE PENMAN -! ---------------------------------------------------------------------- - - SUBROUTINE REDPRM (VEGTYP,SOILTYP,SLOPETYP,CFACTR,CMCMAX,RSMAX, & - TOPT, & - REFKDT,KDT,SBETA, SHDFAC,RSMIN,RGL,HS,ZBOT,FRZX, & - PSISAT,SLOPE,SNUP,SALP,BEXP,DKSAT,DWSAT, & - SMCMAX,SMCWLT,SMCREF,SMCDRY,F1,QUARTZ,FXEXP, & - RTDIS,SLDPTH,ZSOIL, NROOT,NSOIL,CZIL, & - LAIMIN, LAIMAX, EMISSMIN, EMISSMAX, ALBEDOMIN, & - ALBEDOMAX, Z0MIN, Z0MAX, CSOIL, PTU, LLANDUSE, & - LSOIL, LOCAL,LVCOEF,ZTOPV,ZBOTV,errmsg,errflg) - - IMPLICIT NONE -! ---------------------------------------------------------------------- -! Internally set (default valuess) -! all soil and vegetation parameters required for the execusion oF -! the Noah lsm are defined in VEGPARM.TBL, SOILPARM.TB, and GENPARM.TBL. -! ---------------------------------------------------------------------- -! Vegetation parameters: -! ALBBRD: SFC background snow-free albedo -! CMXTBL: MAX CNPY Capacity -! Z0BRD: Background roughness length -! SHDFAC: Green vegetation fraction -! NROOT: Rooting depth -! RSMIN: Mimimum stomatal resistance -! RSMAX: Max. stomatal resistance -! RGL: Parameters used in radiation stress function -! HS: Parameter used in vapor pressure deficit functio -! TOPT: Optimum transpiration air temperature. -! CMCMAX: Maximum canopy water capacity -! CFACTR: Parameter used in the canopy inteception calculation -! SNUP: Threshold snow depth (in water equivalent m) that -! implies 100 percent snow cover -! LAI: Leaf area index -! -! ---------------------------------------------------------------------- -! Soil parameters: -! SMCMAX: MAX soil moisture content (porosity) -! SMCREF: Reference soil moisture (field capacity) -! SMCWLT: Wilting point soil moisture -! SMCWLT: Air dry soil moist content limits -! SSATPSI: SAT (saturation) soil potential -! DKSAT: SAT soil conductivity -! BEXP: B parameter -! SSATDW: SAT soil diffusivity -! F1: Soil thermal diffusivity/conductivity coef. -! QUARTZ: Soil quartz content -! Modified by F. Chen (12/22/97) to use the STATSGO soil map -! Modified By F. Chen (01/22/00) to include PLaya, Lava, and White San -! Modified By F. Chen (08/05/02) to include additional parameters for the Noah -! NOTE: SATDW = BB*SATDK*(SATPSI/MAXSMC) -! F11 = ALOG10(SATPSI) + BB*ALOG10(MAXSMC) + 2.0 -! REFSMC1=MAXSMC*(5.79E-9/SATDK)**(1/(2*BB+3)) 5.79E-9 m/s= 0.5 mm -! REFSMC=REFSMC1+1./3.(MAXSMC-REFSMC1) -! WLTSMC1=MAXSMC*(200./SATPSI)**(-1./BB) (Wetzel and Chang, 198 -! WLTSMC=WLTSMC1-0.5*WLTSMC1 -! Note: the values for playa is set for it to have a thermal conductivit -! as sand and to have a hydrulic conductivity as clay -! -! ---------------------------------------------------------------------- -! Class parameter 'SLOPETYP' was included to estimate linear reservoir -! coefficient 'SLOPE' to the baseflow runoff out of the bottom layer. -! lowest class (slopetyp=0) means highest slope parameter = 1. -! definition of slopetyp from 'zobler' slope type: -! slope class percent slope -! 1 0-8 -! 2 8-30 -! 3 > 30 -! 4 0-30 -! 5 0-8 & > 30 -! 6 8-30 & > 30 -! 7 0-8, 8-30, > 30 -! 9 GLACIAL ICE -! BLANK OCEAN/SEA -! SLOPE_DATA: linear reservoir coefficient -! SBETA_DATA: parameter used to caluculate vegetation effect on soil heat -! FXEXP_DAT: soil evaporation exponent used in DEVAP -! CSOIL_DATA: soil heat capacity [J M-3 K-1] -! SALP_DATA: shape parameter of distribution function of snow cover -! REFDK_DATA and REFKDT_DATA: parameters in the surface runoff parameteriz -! FRZK_DATA: frozen ground parameter -! ZBOT_DATA: depth[M] of lower boundary soil temperature -! CZIL_DATA: calculate roughness length of heat -! SMLOW_DATA and MHIGH_DATA: two soil moisture wilt, soil moisture referen -! parameters -! Set maximum number of soil-, veg-, and slopetyp in data statement. -! ---------------------------------------------------------------------- - INTEGER, PARAMETER :: MAX_SLOPETYP=30,MAX_SOILTYP=30,MAX_VEGTYP=30 - LOGICAL :: LOCAL - CHARACTER (LEN=256), INTENT(IN):: LLANDUSE, LSOIL - -! Veg parameters - INTEGER, INTENT(IN) :: VEGTYP - INTEGER, INTENT(OUT) :: NROOT - REAL, INTENT(INOUT) :: SHDFAC - REAL, INTENT(OUT) :: HS,RSMIN,RGL,SNUP, & - CMCMAX,RSMAX,TOPT, & - EMISSMIN, EMISSMAX, & - LAIMIN, LAIMAX, & - Z0MIN, Z0MAX, & - ALBEDOMIN, ALBEDOMAX, ZTOPV, ZBOTV -! Soil parameters - INTEGER, INTENT(IN) :: SOILTYP - REAL, INTENT(OUT) :: BEXP,DKSAT,DWSAT,F1,QUARTZ,SMCDRY, & - SMCMAX,SMCREF,SMCWLT,PSISAT -! General parameters - INTEGER, INTENT(IN) :: SLOPETYP,NSOIL - INTEGER :: I - - REAL, INTENT(OUT) :: SLOPE,CZIL,SBETA,FXEXP, & - CSOIL,SALP,FRZX,KDT,CFACTR, & - ZBOT,REFKDT,PTU - REAL, INTENT(OUT) :: LVCOEF - REAL,DIMENSION(1:NSOIL),INTENT(IN) :: SLDPTH,ZSOIL - REAL,DIMENSION(1:NSOIL),INTENT(OUT):: RTDIS - REAL :: FRZFACT,FRZK,REFDK - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - CHARACTER*256 :: err_message - errmsg = '' - errflg = 0 - -! SAVE -! ---------------------------------------------------------------------- -! - IF (SOILTYP .gt. SLCATS) THEN - errflg = 1 - errmsg = 'Warning: too many input soil types' - return - END IF - IF (VEGTYP .gt. LUCATS) THEN - errflg = 1 - errmsg = 'Warning: too many input landuse types' - return - END IF - IF (SLOPETYP .gt. SLPCATS) THEN - errflg = 1 - errmsg = 'Warning: too many input slope types' - return - END IF - -! ---------------------------------------------------------------------- -! SET-UP SOIL PARAMETERS -! ---------------------------------------------------------------------- - CSOIL = CSOIL_DATA - BEXP = BB (SOILTYP) - DKSAT = SATDK (SOILTYP) - DWSAT = SATDW (SOILTYP) - F1 = F11 (SOILTYP) - PSISAT = SATPSI (SOILTYP) - QUARTZ = QTZ (SOILTYP) - SMCDRY = DRYSMC (SOILTYP) - SMCMAX = MAXSMC (SOILTYP) - SMCREF = REFSMC (SOILTYP) - SMCWLT = WLTSMC (SOILTYP) -! ---------------------------------------------------------------------- -! Set-up universal parameters (not dependent on SOILTYP, VEGTYP or -! SLOPETYP) -! ---------------------------------------------------------------------- - ZBOT = ZBOT_DATA - SALP = SALP_DATA - SBETA = SBETA_DATA - REFDK = REFDK_DATA - FRZK = FRZK_DATA - FXEXP = FXEXP_DATA - REFKDT = REFKDT_DATA - PTU = 0. ! (not used yet) to satisify intent(out) - KDT = REFKDT * DKSAT / REFDK - CZIL = CZIL_DATA - SLOPE = SLOPE_DATA (SLOPETYP) - LVCOEF = LVCOEF_DATA - -! ---------------------------------------------------------------------- -! TO ADJUST FRZK PARAMETER TO ACTUAL SOIL TYPE: FRZK * FRZFACT -! ---------------------------------------------------------------------- - FRZFACT = (SMCMAX / SMCREF) * (0.412 / 0.468) - FRZX = FRZK * FRZFACT - -! ---------------------------------------------------------------------- -! SET-UP VEGETATION PARAMETERS -! ---------------------------------------------------------------------- - TOPT = TOPT_DATA - CMCMAX = CMCMAX_DATA - CFACTR = CFACTR_DATA - RSMAX = RSMAX_DATA - NROOT = NROTBL (VEGTYP) - SNUP = SNUPTBL (VEGTYP) - RSMIN = RSTBL (VEGTYP) - RGL = RGLTBL (VEGTYP) - HS = HSTBL (VEGTYP) - EMISSMIN = EMISSMINTBL (VEGTYP) - EMISSMAX = EMISSMAXTBL (VEGTYP) - LAIMIN = LAIMINTBL (VEGTYP) - LAIMAX = LAIMAXTBL (VEGTYP) - Z0MIN = Z0MINTBL (VEGTYP) - Z0MAX = Z0MAXTBL (VEGTYP) - ALBEDOMIN = ALBEDOMINTBL (VEGTYP) - ALBEDOMAX = ALBEDOMAXTBL (VEGTYP) - ZTOPV = ZTOPVTBL (VEGTYP) - ZBOTV = ZBOTVTBL (VEGTYP) - - IF (VEGTYP .eq. BARE) SHDFAC = 0.0 - IF (NROOT .gt. NSOIL) THEN - errflg = 1 - WRITE (err_message,*) 'Error: too many root layers ', & - NSOIL,NROOT - errmsg = TRIM(err_message) - return -! ---------------------------------------------------------------------- -! CALCULATE ROOT DISTRIBUTION. PRESENT VERSION ASSUMES UNIFORM -! DISTRIBUTION BASED ON SOIL LAYER DEPTHS. -! ---------------------------------------------------------------------- - END IF - DO I = 1,NROOT - RTDIS (I) = - SLDPTH (I)/ ZSOIL (NROOT) -! ---------------------------------------------------------------------- -! SET-UP SLOPE PARAMETER -! ---------------------------------------------------------------------- - END DO - -! print*,'end of PRMRED' -! print*,'VEGTYP',VEGTYP,'SOILTYP',SOILTYP,'SLOPETYP',SLOPETYP, & -! & 'CFACTR',CFACTR,'CMCMAX',CMCMAX,'RSMAX',RSMAX,'TOPT',TOPT, & -! & 'REFKDT',REFKDT,'KDT',KDT,'SBETA',SBETA, 'SHDFAC',SHDFAC, & -! & 'RSMIN',RSMIN,'RGL',RGL,'HS',HS,'ZBOT',ZBOT,'FRZX',FRZX, & -! & 'PSISAT',PSISAT,'SLOPE',SLOPE,'SNUP',SNUP,'SALP',SALP,'BEXP', & -! & BEXP, & -! & 'DKSAT',DKSAT,'DWSAT',DWSAT, & -! & 'SMCMAX',SMCMAX,'SMCWLT',SMCWLT,'SMCREF',SMCREF,'SMCDRY',SMCDRY, & -! & 'F1',F1,'QUARTZ',QUARTZ,'FXEXP',FXEXP, & -! & 'RTDIS',RTDIS,'SLDPTH',SLDPTH,'ZSOIL',ZSOIL, 'NROOT',NROOT, & -! & 'NSOIL',NSOIL,'Z0',Z0,'CZIL',CZIL,'LAI',LAI, & -! & 'CSOIL',CSOIL,'PTU',PTU, & -! & 'LOCAL', LOCAL - - END SUBROUTINE REDPRM - - SUBROUTINE ROSR12 (P,A,B,C,D,DELTA,NSOIL) - -! ---------------------------------------------------------------------- -! SUBROUTINE ROSR12 -! ---------------------------------------------------------------------- -! INVERT (SOLVE) THE TRI-DIAGONAL MATRIX PROBLEM SHOWN BELOW: -! ### ### ### ### ### ### -! #B(1), C(1), 0 , 0 , 0 , . . . , 0 # # # # # -! #A(2), B(2), C(2), 0 , 0 , . . . , 0 # # # # # -! # 0 , A(3), B(3), C(3), 0 , . . . , 0 # # # # D(3) # -! # 0 , 0 , A(4), B(4), C(4), . . . , 0 # # P(4) # # D(4) # -! # 0 , 0 , 0 , A(5), B(5), . . . , 0 # # P(5) # # D(5) # -! # . . # # . # = # . # -! # . . # # . # # . # -! # . . # # . # # . # -! # 0 , . . . , 0 , A(M-2), B(M-2), C(M-2), 0 # #P(M-2)# #D(M-2)# -! # 0 , . . . , 0 , 0 , A(M-1), B(M-1), C(M-1)# #P(M-1)# #D(M-1)# -! # 0 , . . . , 0 , 0 , 0 , A(M) , B(M) # # P(M) # # D(M) # -! ### ### ### ### ### ### -! ---------------------------------------------------------------------- - IMPLICIT NONE - - INTEGER, INTENT(IN) :: NSOIL - INTEGER :: K, KK - - REAL, DIMENSION(1:NSOIL), INTENT(IN):: A, B, D - REAL, DIMENSION(1:NSOIL),INTENT(INOUT):: C,P,DELTA - -! ---------------------------------------------------------------------- -! INITIALIZE EQN COEF C FOR THE LOWEST SOIL LAYER -! ---------------------------------------------------------------------- - C (NSOIL) = 0.0 - P (1) = - C (1) / B (1) -! ---------------------------------------------------------------------- -! SOLVE THE COEFS FOR THE 1ST SOIL LAYER -! ---------------------------------------------------------------------- - -! ---------------------------------------------------------------------- -! SOLVE THE COEFS FOR SOIL LAYERS 2 THRU NSOIL -! ---------------------------------------------------------------------- - DELTA (1) = D (1) / B (1) - DO K = 2,NSOIL - P (K) = - C (K) * ( 1.0 / (B (K) + A (K) * P (K -1)) ) - DELTA (K) = (D (K) - A (K)* DELTA (K -1))* (1.0/ (B (K) + A (K)& - * P (K -1))) - END DO -! ---------------------------------------------------------------------- -! SET P TO DELTA FOR LOWEST SOIL LAYER -! ---------------------------------------------------------------------- - P (NSOIL) = DELTA (NSOIL) - -! ---------------------------------------------------------------------- -! ADJUST P FOR SOIL LAYERS 2 THRU NSOIL -! ---------------------------------------------------------------------- - DO K = 2,NSOIL - KK = NSOIL - K + 1 - P (KK) = P (KK) * P (KK +1) + DELTA (KK) - END DO -! ---------------------------------------------------------------------- - END SUBROUTINE ROSR12 -! ---------------------------------------------------------------------- - - - SUBROUTINE SHFLX (SSOIL,STC,SMC,SMCMAX,NSOIL,T1,DT,YY,ZZ1,ZSOIL, & - TBOT,ZBOT,SMCWLT,PSISAT,SH2O,BEXP,F1,DF1, & - QUARTZ,CSOIL,VEGTYP,ISURBAN,SOILTYP,OPT_THCND & - ,HCPCT_FASDAS ) ! fasdas - -! ---------------------------------------------------------------------- -! SUBROUTINE SHFLX -! ---------------------------------------------------------------------- -! UPDATE THE TEMPERATURE STATE OF THE SOIL COLUMN BASED ON THE THERMAL -! DIFFUSION EQUATION AND UPDATE THE FROZEN SOIL MOISTURE CONTENT BASED -! ON THE TEMPERATURE. -! ---------------------------------------------------------------------- - IMPLICIT NONE - - INTEGER, INTENT(IN) :: OPT_THCND - INTEGER, INTENT(IN) :: NSOIL, VEGTYP, ISURBAN, SOILTYP - INTEGER :: I - LOGICAL, PARAMETER :: TIME_AVERAGE_T_UPDATE = .TRUE. - - REAL, INTENT(IN) :: BEXP,CSOIL,DF1,DT,F1,PSISAT,QUARTZ, & - SMCMAX, SMCWLT, TBOT,YY, ZBOT,ZZ1 - REAL, INTENT(INOUT) :: T1 - REAL, INTENT(OUT) :: SSOIL - REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SMC,ZSOIL - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: SH2O - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: STC - REAL, DIMENSION(1:NSOIL) :: AI, BI, CI, STCF,RHSTS - REAL, PARAMETER :: T0 = 273.15 - REAL :: OLDT1 - REAL, DIMENSION(1:NSOIL) :: OLDSTC - REAL, PARAMETER :: CTFIL1 = 0.5 - REAL, PARAMETER :: CTFIL2 = 1.0 - CTFIL1 -! -! FASDAS -! - REAL, INTENT( OUT) :: HCPCT_FASDAS -! -! END FASDAS -! -! ---------------------------------------------------------------------- -! HRT ROUTINE CALCS THE RIGHT HAND SIDE OF THE SOIL TEMP DIF EQN -! ---------------------------------------------------------------------- - - IF (TIME_AVERAGE_T_UPDATE) THEN - OLDT1 = T1 - DO I = 1, NSOIL - OLDSTC(I) = STC(I) - ENDDO - ENDIF - - ! Land case - - CALL HRT (RHSTS,STC,SMC,SMCMAX,NSOIL,ZSOIL,YY,ZZ1,TBOT, & - ZBOT,PSISAT,SH2O,DT,BEXP,SOILTYP,OPT_THCND, & - F1,DF1,QUARTZ,CSOIL,AI,BI,CI,VEGTYP,ISURBAN & - ,HCPCT_FASDAS ) !fasdas - - CALL HSTEP (STCF,STC,RHSTS,DT,NSOIL,AI,BI,CI) - - DO I = 1,NSOIL - STC (I) = STCF (I) - ENDDO - -! ---------------------------------------------------------------------- -! IN THE NO SNOWPACK CASE (VIA ROUTINE NOPAC BRANCH,) UPDATE THE GRND -! (SKIN) TEMPERATURE HERE IN RESPONSE TO THE UPDATED SOIL TEMPERATURE -! PROFILE ABOVE. (NOTE: INSPECTION OF ROUTINE SNOPAC SHOWS THAT T1 -! BELOW IS A DUMMY VARIABLE ONLY, AS SKIN TEMPERATURE IS UPDATED -! DIFFERENTLY IN ROUTINE SNOPAC) -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! CALCULATE SURFACE SOIL HEAT FLUX -! ---------------------------------------------------------------------- - T1 = (YY + (ZZ1- 1.0) * STC (1)) / ZZ1 - - !GJF: Following the GFS version of Noah, time average the updating of skin temperature and soil temperature - IF (TIME_AVERAGE_T_UPDATE) THEN - T1 = CTFIL1*T1 + CTFIL2*OLDT1 - DO I = 1, NSOIL - STC(I) = CTFIL1*STC(I) + CTFIL2*OLDSTC(I) - ENDDO - ENDIF - - SSOIL = DF1 * (STC (1) - T1) / (0.5 * ZSOIL (1)) - -! ---------------------------------------------------------------------- - END SUBROUTINE SHFLX -! ---------------------------------------------------------------------- - - SUBROUTINE SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & - & SH2O,SLOPE,KDT,FRZFACT, & - & SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & - & SHDFAC,CMCMAX, & - & RUNOFF1,RUNOFF2,RUNOFF3, & - & EDIR,EC,ET, & - & DRIP, SFHEAD1RT,INFXS1RT) - -! ---------------------------------------------------------------------- -! SUBROUTINE SMFLX -! ---------------------------------------------------------------------- -! CALCULATE SOIL MOISTURE FLUX. THE SOIL MOISTURE CONTENT (SMC - A PER -! UNIT VOLUME MEASUREMENT) IS A DEPENDENT VARIABLE THAT IS UPDATED WITH -! PROGNOSTIC EQNS. THE CANOPY MOISTURE CONTENT (CMC) IS ALSO UPDATED. -! FROZEN GROUND VERSION: NEW STATES ADDED: SH2O, AND FROZEN GROUND -! CORRECTION FACTOR, FRZFACT AND PARAMETER SLOPE. -! ---------------------------------------------------------------------- - IMPLICIT NONE - - INTEGER, INTENT(IN) :: NSOIL - INTEGER :: I,K - - REAL, INTENT(IN) :: BEXP, CMCMAX, DKSAT,DWSAT, DT, EC, EDIR, & - KDT, PRCP1, SHDFAC, SLOPE, SMCMAX, SMCWLT - REAL, INTENT(OUT) :: DRIP, RUNOFF1, RUNOFF2, RUNOFF3 - REAL, INTENT(INOUT) :: CMC - REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ET,ZSOIL - REAL, DIMENSION(1:NSOIL), INTENT(INOUT):: SMC, SH2O - REAL, DIMENSION(1:NSOIL) :: AI, BI, CI, STCF,RHSTS, RHSTT, & - SICE, SH2OA, SH2OFG - REAL :: DUMMY, EXCESS,FRZFACT,PCPDRP,RHSCT,TRHSCT - REAL :: FAC2 - REAL :: FLIMIT - - REAL, INTENT(INOUT) :: SFHEAD1RT,INFXS1RT - -! ---------------------------------------------------------------------- -! EXECUTABLE CODE BEGINS HERE. -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! COMPUTE THE RIGHT HAND SIDE OF THE CANOPY EQN TERM ( RHSCT ) -! ---------------------------------------------------------------------- - DUMMY = 0. - -! ---------------------------------------------------------------------- -! CONVERT RHSCT (A RATE) TO TRHSCT (AN AMOUNT) AND ADD IT TO EXISTING -! CMC. IF RESULTING AMT EXCEEDS MAX CAPACITY, IT BECOMES DRIP AND WILL -! FALL TO THE GRND. -! ---------------------------------------------------------------------- - RHSCT = SHDFAC * PRCP1- EC - DRIP = 0. - TRHSCT = DT * RHSCT - EXCESS = CMC + TRHSCT - -! ---------------------------------------------------------------------- -! PCPDRP IS THE COMBINED PRCP1 AND DRIP (FROM CMC) THAT GOES INTO THE -! SOIL -! ---------------------------------------------------------------------- - IF (EXCESS > CMCMAX) DRIP = EXCESS - CMCMAX - PCPDRP = (1. - SHDFAC) * PRCP1+ DRIP / DT - -! ---------------------------------------------------------------------- -! STORE ICE CONTENT AT EACH SOIL LAYER BEFORE CALLING SRT and SSTEP -! - DO I = 1,NSOIL - SICE (I) = SMC (I) - SH2O (I) - END DO -! ---------------------------------------------------------------------- -! CALL SUBROUTINES SRT AND SSTEP TO SOLVE THE SOIL MOISTURE -! TENDENCY EQUATIONS. -! IF THE INFILTRATING PRECIP RATE IS NONTRIVIAL, -! (WE CONSIDER NONTRIVIAL TO BE A PRECIP TOTAL OVER THE TIME STEP -! EXCEEDING ONE ONE-THOUSANDTH OF THE WATER HOLDING CAPACITY OF -! THE FIRST SOIL LAYER) -! THEN CALL THE SRT/SSTEP SUBROUTINE PAIR TWICE IN THE MANNER OF -! TIME SCHEME "F" (IMPLICIT STATE, AVERAGED COEFFICIENT) -! OF SECTION 2 OF KALNAY AND KANAMITSU (1988, MWR, VOL 116, -! PAGES 1945-1958)TO MINIMIZE 2-DELTA-T OSCILLATIONS IN THE -! SOIL MOISTURE VALUE OF THE TOP SOIL LAYER THAT CAN ARISE BECAUSE -! OF THE EXTREME NONLINEAR DEPENDENCE OF THE SOIL HYDRAULIC -! DIFFUSIVITY COEFFICIENT AND THE HYDRAULIC CONDUCTIVITY ON THE -! SOIL MOISTURE STATE -! OTHERWISE CALL THE SRT/SSTEP SUBROUTINE PAIR ONCE IN THE MANNER OF -! TIME SCHEME "D" (IMPLICIT STATE, EXPLICIT COEFFICIENT) -! OF SECTION 2 OF KALNAY AND KANAMITSU -! PCPDRP IS UNITS OF KG/M**2/S OR MM/S, ZSOIL IS NEGATIVE DEPTH IN M -! ---------------------------------------------------------------------- -! According to Dr. Ken Mitchell's suggestion, add the second contraint -! to remove numerical instability of runoff and soil moisture -! FLIMIT is a limit value for FAC2 - FAC2=0.0 - DO I=1,NSOIL - FAC2=MAX(FAC2,SH2O(I)/SMCMAX) - ENDDO - CALL FAC2MIT(SMCMAX,FLIMIT) - -! ---------------------------------------------------------------------- -! FROZEN GROUND VERSION: -! SMC STATES REPLACED BY SH2O STATES IN SRT SUBR. SH2O & SICE STATES -! INC&UDED IN SSTEP SUBR. FROZEN GROUND CORRECTION FACTOR, FRZFACT -! ADDED. ALL WATER BALANCE CALCULATIONS USING UNFROZEN WATER -! ---------------------------------------------------------------------- - -#ifdef WRF_HYDRO -!DJG NDHMS/WRF-Hydro edit... Add previous ponded water to new precip drip... - PCPDRP = PCPDRP + SFHEAD1RT/1000./DT ! convert SFHEAD1RT to (m/s) -#endif - - - IF ( ( (PCPDRP * DT) > (0.0001*1000.0* (- ZSOIL (1))* SMCMAX) ) & - .OR. (FAC2 > FLIMIT) ) THEN - CALL SRT (RHSTT,EDIR,ET,SH2O,SH2O,NSOIL,PCPDRP,ZSOIL, & - DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & - RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZFACT,SICE,AI,BI,CI, & - SFHEAD1RT,INFXS1RT) - CALL SSTEP (SH2OFG,SH2O,DUMMY,RHSTT,RHSCT,DT,NSOIL,SMCMAX, & - CMCMAX,RUNOFF3,ZSOIL,SMC,SICE,AI,BI,CI,INFXS1RT) - DO K = 1,NSOIL - SH2OA (K) = (SH2O (K) + SH2OFG (K)) * 0.5 - END DO - CALL SRT (RHSTT,EDIR,ET,SH2O,SH2OA,NSOIL,PCPDRP,ZSOIL, & - DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & - RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZFACT,SICE,AI,BI,CI, & - SFHEAD1RT,INFXS1RT) - CALL SSTEP (SH2O,SH2O,CMC,RHSTT,RHSCT,DT,NSOIL,SMCMAX, & - CMCMAX,RUNOFF3,ZSOIL,SMC,SICE,AI,BI,CI,INFXS1RT) - - ELSE - CALL SRT (RHSTT,EDIR,ET,SH2O,SH2O,NSOIL,PCPDRP,ZSOIL, & - DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & - RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZFACT,SICE,AI,BI,CI, & - SFHEAD1RT,INFXS1RT) - CALL SSTEP (SH2O,SH2O,CMC,RHSTT,RHSCT,DT,NSOIL,SMCMAX, & - CMCMAX,RUNOFF3,ZSOIL,SMC,SICE,AI,BI,CI,INFXS1RT) -! RUNOF = RUNOFF - - END IF - -! ---------------------------------------------------------------------- - END SUBROUTINE SMFLX -! ---------------------------------------------------------------------- - - - SUBROUTINE SNFRAC (SNEQV,SNUP,SALP,SNOWH,SNCOVR, & - XLAI,SHDFAC,FVB,GAMA,FBUR, & - FGSN,ZTOPV,ZBOTV,UA_PHYS) - -! ---------------------------------------------------------------------- -! SUBROUTINE SNFRAC -! ---------------------------------------------------------------------- -! CALCULATE SNOW FRACTION (0 -> 1) -! SNEQV SNOW WATER EQUIVALENT (M) -! SNUP THRESHOLD SNEQV DEPTH ABOVE WHICH SNCOVR=1 -! SALP TUNING PARAMETER -! SNCOVR FRACTIONAL SNOW COVER -! ---------------------------------------------------------------------- - IMPLICIT NONE - - REAL, INTENT(IN) :: SNEQV,SNUP,SALP,SNOWH - REAL, INTENT(OUT) :: SNCOVR - REAL :: RSNOW, Z0N - LOGICAL, INTENT(IN) :: UA_PHYS ! UA: flag for UA option - REAL, INTENT(IN) :: ZTOPV ! UA: height of canopy top - REAL, INTENT(IN) :: ZBOTV ! UA: height of canopy bottom - REAL, INTENT(IN) :: SHDFAC ! UA: vegetation fraction - REAL, INTENT(INOUT) :: XLAI ! UA: LAI modified by snow - REAL, INTENT(OUT) :: FVB ! UA: frac. veg. w/snow beneath - REAL, INTENT(OUT) :: GAMA ! UA: = EXP(-1.* XLAI) - REAL, INTENT(OUT) :: FBUR ! UA: fraction of canopy buried - REAL, INTENT(OUT) :: FGSN ! UA: ground snow cover fraction - - REAL :: SNUPGRD = 0.02 ! UA: SWE limit for ground cover - -! ---------------------------------------------------------------------- -! SNUP IS VEG-CLASS DEPENDENT SNOWDEPTH THRESHHOLD (SET IN ROUTINE -! REDPRM) ABOVE WHICH SNOCVR=1. -! ---------------------------------------------------------------------- - IF (SNEQV < SNUP) THEN - RSNOW = SNEQV / SNUP - SNCOVR = 1. - ( EXP ( - SALP * RSNOW) - RSNOW * EXP ( - SALP)) - ELSE - SNCOVR = 1.0 - END IF - -! FORMULATION OF DICKINSON ET AL. 1986 -! Z0N = 0.035 - -! SNCOVR=SNOWH/(SNOWH + 5*Z0N) - -! FORMULATION OF MARSHALL ET AL. 1994 -! SNCOVR=SNEQV/(SNEQV + 2*Z0N) - - IF(UA_PHYS) THEN - -!--------------------------------------------------------------------- -! FGSN: FRACTION OF SOIL COVERED WITH SNOW -!--------------------------------------------------------------------- - IF (SNEQV < SNUPGRD) THEN - FGSN = SNEQV / SNUPGRD - ELSE - FGSN = 1.0 - END IF -!------------------------------------------------------------------ -! FBUR: VERTICAL FRACTION OF VEGETATION COVERED BY SNOW -! GRASS, CROP, AND SHRUB: MULTIPLY 0.4 BY ZTOPV AND ZBOTV BECAUSE -! THEY WILL BE PRESSED DOWN BY THE SNOW. -! FOREST: DON'T NEED TO CHANGE ZTOPV AND ZBOTV. - - IF(ZBOTV > 0. .AND. SNOWH > ZBOTV) THEN - IF(ZBOTV <= 0.5) THEN - FBUR = (SNOWH - 0.4*ZBOTV) / (0.4*(ZTOPV-ZBOTV)) ! short veg. - ELSE - FBUR = (SNOWH - ZBOTV) / (ZTOPV-ZBOTV) ! tall veg. - ENDIF - ELSE - FBUR = 0. - ENDIF - - FBUR = MIN(MAX(FBUR,0.0),1.0) - -! XLAI IS ADJUSTED FOR VERTICAL BURYING BY SNOW - XLAI = XLAI * (1.0 - FBUR) -! ---------------------------------------------------------------------- -! SNOW-COVERED SOIL: (1-SHDFAC)*FGSN -! VEGETATION WITH SNOW ABOVE DUE TO BURIAL FVEG_SN_AB = SHDFAC*FBUR -! SNOW ON THE GROUND THAT CAN BE "SEEN" BY SATELLITE -! (IF XLAI GOES TO ZERO): GAMA*FVB -! Where GAMA = exp(-XLAI) -! ---------------------------------------------------------------------- - -! VEGETATION WITH SNOW BELOW - FVB = SHDFAC * FGSN * (1.0 - FBUR) - -! GAMA IS USED TO DIVIDE FVB INTO TWO PARTS: -! GAMA=1 FOR XLAI=0 AND GAMA=0 FOR XLAI=6 - GAMA = EXP(-1.* XLAI) - ELSE - ! Define intent(out) terms for .NOT. UA_PHYS case - FVB = 0.0 - GAMA = 0.0 - FBUR = 0.0 - FGSN = 0.0 - END IF ! UA_PHYS - -! ---------------------------------------------------------------------- - END SUBROUTINE SNFRAC -! ---------------------------------------------------------------------- - - SUBROUTINE SNKSRC (TSNSR,TAVG,SMC,SH2O,ZSOIL,NSOIL, & - & SMCMAX,PSISAT,BEXP,DT,K,QTOT) -! ---------------------------------------------------------------------- -! SUBROUTINE SNKSRC -! ---------------------------------------------------------------------- -! CALCULATE SINK/SOURCE TERM OF THE TERMAL DIFFUSION EQUATION. (SH2O) IS -! AVAILABLE LIQUED WATER. -! ---------------------------------------------------------------------- - IMPLICIT NONE - - INTEGER, INTENT(IN) :: K,NSOIL - REAL, INTENT(IN) :: BEXP, DT, PSISAT, QTOT, SMC, SMCMAX, & - TAVG - REAL, INTENT(INOUT) :: SH2O - - REAL, DIMENSION(1:NSOIL), INTENT(IN):: ZSOIL - - REAL :: DF, DZ, DZH, FREE, TSNSR, & - TDN, TM, TUP, TZ, X0, XDN, XH2O, XUP - - REAL, PARAMETER :: DH2O = 1.0000E3, HLICE = 3.3350E5, & - T0 = 2.7315E2 - - IF (K == 1) THEN - DZ = - ZSOIL (1) - ELSE - DZ = ZSOIL (K -1) - ZSOIL (K) - END IF -! ---------------------------------------------------------------------- -! VIA FUNCTION FRH2O, COMPUTE POTENTIAL OR 'EQUILIBRIUM' UNFROZEN -! SUPERCOOLED FREE WATER FOR GIVEN SOIL TYPE AND SOIL LAYER TEMPERATURE. -! FUNCTION FRH20 INVOKES EQN (17) FROM V. KOREN ET AL (1999, JGR, VOL. -! 104, PG 19573). (ASIDE: LATTER EQN IN JOURNAL IN CENTIGRADE UNITS. -! ROUTINE FRH2O USE FORM OF EQN IN KELVIN UNITS.) -! ---------------------------------------------------------------------- -! FREE = FRH2O(TAVG,SMC,SH2O,SMCMAX,BEXP,PSISAT) - -! ---------------------------------------------------------------------- -! IN NEXT BLOCK OF CODE, INVOKE EQN 18 OF V. KOREN ET AL (1999, JGR, -! VOL. 104, PG 19573.) THAT IS, FIRST ESTIMATE THE NEW AMOUNTOF LIQUID -! WATER, 'XH2O', IMPLIED BY THE SUM OF (1) THE LIQUID WATER AT THE BEGIN -! OF CURRENT TIME STEP, AND (2) THE FREEZE OF THAW CHANGE IN LIQUID -! WATER IMPLIED BY THE HEAT FLUX 'QTOT' PASSED IN FROM ROUTINE HRT. -! SECOND, DETERMINE IF XH2O NEEDS TO BE BOUNDED BY 'FREE' (EQUIL AMT) OR -! IF 'FREE' NEEDS TO BE BOUNDED BY XH2O. -! ---------------------------------------------------------------------- - CALL FRH2O (FREE,TAVG,SMC,SH2O,SMCMAX,BEXP,PSISAT) - -! ---------------------------------------------------------------------- -! FIRST, IF FREEZING AND REMAINING LIQUID LESS THAN LOWER BOUND, THEN -! REDUCE EXTENT OF FREEZING, THEREBY LETTING SOME OR ALL OF HEAT FLUX -! QTOT COOL THE SOIL TEMP LATER IN ROUTINE HRT. -! ---------------------------------------------------------------------- - XH2O = SH2O + QTOT * DT / (DH2O * HLICE * DZ) - IF ( XH2O < SH2O .AND. XH2O < FREE) THEN - IF ( FREE > SH2O ) THEN - XH2O = SH2O - ELSE - XH2O = FREE - END IF - END IF -! ---------------------------------------------------------------------- -! SECOND, IF THAWING AND THE INCREASE IN LIQUID WATER GREATER THAN UPPER -! BOUND, THEN REDUCE EXTENT OF THAW, THEREBY LETTING SOME OR ALL OF HEAT -! FLUX QTOT WARM THE SOIL TEMP LATER IN ROUTINE HRT. -! ---------------------------------------------------------------------- - IF ( XH2O > SH2O .AND. XH2O > FREE ) THEN - IF ( FREE < SH2O ) THEN - XH2O = SH2O - ELSE - XH2O = FREE - END IF - END IF - -! ---------------------------------------------------------------------- -! CALCULATE PHASE-CHANGE HEAT SOURCE/SINK TERM FOR USE IN ROUTINE HRT -! AND UPDATE LIQUID WATER TO REFLCET FINAL FREEZE/THAW INCREMENT. -! ---------------------------------------------------------------------- -! SNKSRC = -DH2O*HLICE*DZ*(XH2O-SH2O)/DT - IF (XH2O < 0.) XH2O = 0. - IF (XH2O > SMC) XH2O = SMC - TSNSR = - DH2O * HLICE * DZ * (XH2O - SH2O)/ DT - SH2O = XH2O - -! ---------------------------------------------------------------------- - END SUBROUTINE SNKSRC -! ---------------------------------------------------------------------- - - SUBROUTINE SNOPAC (ETP,ETA,PRCP,PRCPF,SNOWNG,SMC,SMCMAX,SMCWLT, & - SMCREF,SMCDRY,CMC,CMCMAX,NSOIL,DT, & - SBETA,DF1, & - Q2,T1,SFCTMP,T24,TH2,FDOWN,F1,SSOIL,STC,EPSCA,& - SFCPRS,BEXP,PC,RCH,RR,CFACTR,SNCOVR,ESD,SNDENS,& - SNOWH,SH2O,SLOPE,KDT,FRZFACT,PSISAT, & - ZSOIL,DWSAT,DKSAT,TBOT,ZBOT,SHDFAC,RUNOFF1, & - RUNOFF2,RUNOFF3,EDIR,EC,ET,ETT,NROOT,SNOMLT, & - RTDIS,QUARTZ,FXEXP,CSOIL, & - BETA,DRIP,DEW,FLX1,FLX2,FLX3,ESNOW,ETNS,EMISSI,& - RIBB,SOLDN, & - ISURBAN, & - VEGTYP, & - ETPN,FLX4,UA_PHYS, & - SFHEAD1RT,INFXS1RT,ETPND1,SOILTYP,OPT_THCND & - ,QFX_PHY,fasdas,HCPCT_FASDAS, & !fasdas - SIGMA,CPH2O,CPICE,LSUBF) -! ---------------------------------------------------------------------- -! SUBROUTINE SNOPAC -! ---------------------------------------------------------------------- -! CALCULATE SOIL MOISTURE AND HEAT FLUX VALUES & UPDATE SOIL MOISTURE -! CONTENT AND SOIL HEAT CONTENT VALUES FOR THE CASE WHEN A SNOW PACK IS -! PRESENT. -! ---------------------------------------------------------------------- - IMPLICIT NONE - - INTEGER, INTENT(IN) :: OPT_THCND - INTEGER, INTENT(IN) :: NROOT, NSOIL,VEGTYP,SOILTYP - INTEGER, INTENT(IN) :: ISURBAN - INTEGER :: K -! -! kmh 09/03/2006 add IT16 for surface temperature iteration -! - INTEGER :: IT16 - LOGICAL, INTENT(IN) :: SNOWNG - -!DJG NDHMS/WRF-Hydro edit... - REAL, INTENT(INOUT) :: SFHEAD1RT,INFXS1RT,ETPND1 - - REAL, INTENT(IN) :: BEXP,CFACTR, CMCMAX,CSOIL,DF1,DKSAT, & - DT,DWSAT, EPSCA,FDOWN,F1,FXEXP, & - FRZFACT,KDT,PC, PRCP,PSISAT,Q2,QUARTZ, & - RCH,RR,SBETA,SFCPRS, SFCTMP, SHDFAC, & - SLOPE,SMCDRY,SMCMAX,SMCREF,SMCWLT, T24, & - TBOT,TH2,ZBOT,EMISSI,SOLDN,SIGMA,CPH2O, & - CPICE,LSUBF - REAL, INTENT(INOUT) :: CMC, BETA, ESD,FLX2,PRCPF,SNOWH,SNCOVR, & - SNDENS, T1, RIBB, ETP - REAL, INTENT(OUT) :: DEW,DRIP,EC,EDIR, ETNS, ESNOW,ETT, & - FLX1,FLX3, RUNOFF1,RUNOFF2,RUNOFF3, & - SSOIL,SNOMLT - REAL, DIMENSION(1:NSOIL),INTENT(IN) :: RTDIS,ZSOIL - REAL, DIMENSION(1:NSOIL),INTENT(OUT) :: ET - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: SMC,SH2O,STC - REAL, DIMENSION(1:NSOIL) :: ET1 - REAL :: DENOM,DSOIL,DTOT,EC1,EDIR1,ESDFLX,ETA, & - ETT1, ESNOW1, ESNOW2, ETA1,ETP1,ETP2, & - ETP3, ETNS1, ETANRG, ETAX, EX, FLX3X, & - FRCSNO,FRCSOI, PRCP1, QSAT,RSNOW, SEH, & - SNCOND,SSOIL1, T11,T12, T12A, T12AX, & - T12B, T14, YY, ZZ1 -! T12B, T14, YY, ZZ1,EMISSI_S -! -! kmh 01/11/2007 add T15, T16, and DTOT2 for SFC T iteration and snow heat flux -! - REAL :: T15, T16, DTOT2 - REAL, PARAMETER :: ESDMIN = 1.E-6, LSUBC = 2.501000E+6, & - LSUBS = 2.83E+6, TFREEZ = 273.15, & - SNOEXP = 2.0 - LOGICAL, INTENT(IN) :: UA_PHYS ! UA: flag for UA option - REAL, INTENT(INOUT) :: FLX4 ! UA: energy removed by canopy - REAL, INTENT(IN) :: ETPN ! UA: adjusted pot. evap. [mm/s] - REAL :: ETP1N ! UA: adjusted pot. evap. [m/s] - -! -! FASDAS -! - REAL :: QFX_PHY - INTEGER :: fasdas - REAL, INTENT( OUT) :: HCPCT_FASDAS -! -! END FASDAS -! -! ---------------------------------------------------------------------- -! EXECUTABLE CODE BEGINS HERE: -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! INITIALIZE EVAP TERMS. -! ---------------------------------------------------------------------- -! conversions: -! ESNOW [KG M-2 S-1] -! ESDFLX [KG M-2 S-1] .le. ESNOW -! ESNOW1 [M S-1] -! ESNOW2 [M] -! ETP [KG M-2 S-1] -! ETP1 [M S-1] -! ETP2 [M] -! ---------------------------------------------------------------------- - DEW = 0. - EDIR = 0. - EDIR1 = 0. - EC1 = 0. - EC = 0. -! EMISSI_S=0.95 ! For snow - - DO K = 1,NSOIL - ET (K) = 0. - ET1 (K) = 0. - END DO - ETT = 0. - ETT1 = 0. - -!DJG NDHMS/WRF-Hydro edit... - ETPND1 = 0. - - - ETNS = 0. - ETNS1 = 0. - ESNOW = 0. - ESNOW1 = 0. - ESNOW2 = 0. - -! ---------------------------------------------------------------------- -! CONVERT POTENTIAL EVAP (ETP) FROM KG M-2 S-1 TO ETP1 IN M S-1 -! ---------------------------------------------------------------------- - PRCP1 = PRCPF *0.001 -! ---------------------------------------------------------------------- -! IF ETP<0 (DOWNWARD) THEN DEWFALL (=FROSTFALL IN THIS CASE). -! ---------------------------------------------------------------------- - BETA = 1.0 - IF (ETP <= 0.0) THEN - IF ( ( RIBB >= 0.1 ) .AND. ( FDOWN > 150.0 ) ) THEN - ETP=(MIN(ETP*(1.0-RIBB),0.)*SNCOVR/0.980 + ETP*(0.980-SNCOVR))/0.980 - ENDIF - IF(ETP == 0.) BETA = 0.0 - ETP1 = ETP * 0.001 - IF(UA_PHYS) ETP1N = ETPN * 0.001 - DEW = -ETP1 - ESNOW2 = ETP1*DT - ETANRG = ETP*((1.-SNCOVR)*LSUBC + SNCOVR*LSUBS) - ELSE - ETP1 = ETP * 0.001 - IF(UA_PHYS) ETP1N = ETPN * 0.001 - ! LAND CASE - IF (SNCOVR < 1.) THEN - CALL EVAPO (ETNS1,SMC,NSOIL,CMC,ETP1,DT,ZSOIL, & - SH2O, & - SMCMAX,BEXP,PC,SMCWLT,DKSAT,DWSAT, & - SMCREF,SHDFAC,CMCMAX, & - SMCDRY,CFACTR, & - EDIR1,EC1,ET1,ETT1,SFCTMP,Q2,NROOT,RTDIS, & - FXEXP, SFHEAD1RT,ETPND1) -! ---------------------------------------------------------------------------- - EDIR1 = EDIR1* (1. - SNCOVR) - EC1 = EC1* (1. - SNCOVR) - DO K = 1,NSOIL - ET1 (K) = ET1 (K)* (1. - SNCOVR) - END DO - ETT1 = ETT1*(1.-SNCOVR) -! ETNS1 = EDIR1+ EC1+ ETT1 - ETNS1 = ETNS1*(1.-SNCOVR) -! ---------------------------------------------------------------------------- - EDIR = EDIR1*1000. - EC = EC1*1000. - DO K = 1,NSOIL - ET (K) = ET1 (K)*1000. - END DO -! -! FASDAS -! - if( fasdas == 1 ) then - QFX_PHY = EDIR + EC - DO K=1,NSOIL - QFX_PHY = QFX_PHY + ET(K) - END DO - endif -! -! END FASDAS -! - ETT = ETT1*1000. - ETNS = ETNS1*1000. - - -!DJG NDHMS/WRF-Hydro edit... - ETPND1 = ETPND1*1000. - - -! ---------------------------------------------------------------------- - - ENDIF - ESNOW = ETP*SNCOVR - IF(UA_PHYS) ESNOW = ETPN*SNCOVR ! USE ADJUSTED ETP - ESNOW1 = ESNOW*0.001 - ESNOW2 = ESNOW1*DT - ETANRG = ESNOW*LSUBS + ETNS*LSUBC - ENDIF - -! ---------------------------------------------------------------------- -! IF PRECIP IS FALLING, CALCULATE HEAT FLUX FROM SNOW SFC TO NEWLY -! ACCUMULATING PRECIP. NOTE THAT THIS REFLECTS THE FLUX APPROPRIATE FOR -! THE NOT-YET-UPDATED SKIN TEMPERATURE (T1). ASSUMES TEMPERATURE OF THE -! SNOWFALL STRIKING THE GROUND IS =SFCTMP (LOWEST MODEL LEVEL AIR TEMP). -! ---------------------------------------------------------------------- - FLX1 = 0.0 - IF (SNOWNG) THEN - FLX1 = CPICE * PRCP * (T1- SFCTMP) - ELSE - IF (PRCP > 0.0) FLX1 = CPH2O * PRCP * (T1- SFCTMP) -! ---------------------------------------------------------------------- -! CALCULATE AN 'EFFECTIVE SNOW-GRND SFC TEMP' (T12) BASED ON HEAT FLUXES -! BETWEEN THE SNOW PACK AND THE SOIL AND ON NET RADIATION. -! INCLUDE FLX1 (PRECIP-SNOW SFC) AND FLX2 (FREEZING RAIN LATENT HEAT) -! FLUXES. FLX1 FROM ABOVE, FLX2 BROUGHT IN VIA COMMOM BLOCK RITE. -! FLX2 REFLECTS FREEZING RAIN LATENT HEAT FLUX USING T1 CALCULATED IN -! PENMAN. -! ---------------------------------------------------------------------- - END IF - DSOIL = - (0.5 * ZSOIL (1)) - DTOT = SNOWH + DSOIL - DENOM = 1.0+ DF1 / (DTOT * RR * RCH) -! surface emissivity weighted by snow cover fraction -! T12A = ( (FDOWN - FLX1 - FLX2 - & -! & ((SNCOVR*EMISSI_S)+EMISSI*(1.0-SNCOVR))*SIGMA *T24)/RCH & -! & + TH2 - SFCTMP - ETANRG/RCH ) / RR - T12A = ( (FDOWN - FLX1- FLX2- EMISSI * SIGMA * T24)/ RCH & - + TH2- SFCTMP - ETANRG / RCH ) / RR - - T12B = DF1 * STC (1) / (DTOT * RR * RCH) - -! ---------------------------------------------------------------------- -! IF THE 'EFFECTIVE SNOW-GRND SFC TEMP' IS AT OR BELOW FREEZING, NO SNOW -! MELT WILL OCCUR. SET THE SKIN TEMP TO THIS EFFECTIVE TEMP. REDUCE -! (BY SUBLIMINATION ) OR INCREASE (BY FROST) THE DEPTH OF THE SNOWPACK, -! DEPENDING ON SIGN OF ETP. -! UPDATE SOIL HEAT FLUX (SSOIL) USING NEW SKIN TEMPERATURE (T1) -! SINCE NO SNOWMELT, SET ACCUMULATED SNOWMELT TO ZERO, SET 'EFFECTIVE' -! PRECIP FROM SNOWMELT TO ZERO, SET PHASE-CHANGE HEAT FLUX FROM SNOWMELT -! TO ZERO. -! ---------------------------------------------------------------------- -! SUB-FREEZING BLOCK -! ---------------------------------------------------------------------- - T12 = (SFCTMP + T12A + T12B) / DENOM - IF (T12 <= TFREEZ) THEN - T1 = T12 - SSOIL = DF1 * (T1- STC (1)) / DTOT -! ESD = MAX (0.0, ESD- ETP2) - ESD = MAX(0.0, ESD-ESNOW2) - FLX3 = 0.0 - EX = 0.0 - - SNOMLT = 0.0 - IF(UA_PHYS) FLX4 = 0.0 -! ---------------------------------------------------------------------- -! IF THE 'EFFECTIVE SNOW-GRND SFC TEMP' IS ABOVE FREEZING, SNOW MELT -! WILL OCCUR. CALL THE SNOW MELT RATE,EX AND AMT, SNOMLT. REVISE THE -! EFFECTIVE SNOW DEPTH. REVISE THE SKIN TEMP BECAUSE IT WOULD HAVE CHGD -! DUE TO THE LATENT HEAT RELEASED BY THE MELTING. CALC THE LATENT HEAT -! RELEASED, FLX3. SET THE EFFECTIVE PRECIP, PRCP1 TO THE SNOW MELT RATE, -! EX FOR USE IN SMFLX. ADJUSTMENT TO T1 TO ACCOUNT FOR SNOW PATCHES. -! CALCULATE QSAT VALID AT FREEZING POINT. NOTE THAT ESAT (SATURATION -! VAPOR PRESSURE) VALUE OF 6.11E+2 USED HERE IS THAT VALID AT FRZZING -! POINT. NOTE THAT ETP FROM CALL PENMAN IN SFLX IS IGNORED HERE IN -! FAVOR OF BULK ETP OVER 'OPEN WATER' AT FREEZING TEMP. -! UPDATE SOIL HEAT FLUX (S) USING NEW SKIN TEMPERATURE (T1) -! ---------------------------------------------------------------------- -! ABOVE FREEZING BLOCK -! ---------------------------------------------------------------------- - ELSE -! From V3.9 original code (commented) replaced to allow complete melting of small snow amounts -! T1 = TFREEZ * SNCOVR ** SNOEXP + T12 * (1.0- SNCOVR ** SNOEXP) - T1 = TFREEZ * max(0.01,SNCOVR ** SNOEXP) + T12 * (1.0- max(0.01,SNCOVR ** SNOEXP)) - BETA = 1.0 - -! ---------------------------------------------------------------------- -! IF POTENTIAL EVAP (SUBLIMATION) GREATER THAN DEPTH OF SNOWPACK. -! BETA<1 -! SNOWPACK HAS SUBLIMATED AWAY, SET DEPTH TO ZERO. -! ---------------------------------------------------------------------- - SSOIL = DF1 * (T1- STC (1)) / DTOT - IF (ESD-ESNOW2 <= ESDMIN) THEN - ESD = 0.0 - EX = 0.0 - SNOMLT = 0.0 - FLX3 = 0.0 - IF(UA_PHYS) FLX4 = 0.0 -! ---------------------------------------------------------------------- -! SUBLIMATION LESS THAN DEPTH OF SNOWPACK -! SNOWPACK (ESD) REDUCED BY ESNOW2 (DEPTH OF SUBLIMATED SNOW) -! ---------------------------------------------------------------------- - ELSE - ESD = ESD-ESNOW2 - ETP3 = ETP * LSUBC - SEH = RCH * (T1- TH2) - T14 = T1* T1 - T14 = T14* T14 -! FLX3 = FDOWN - FLX1 - FLX2 - & -! ((SNCOVR*EMISSI_S)+EMISSI*(1-SNCOVR))*SIGMA*T14 - & -! SSOIL - SEH - ETANRG - FLX3 = FDOWN - FLX1- FLX2- EMISSI*SIGMA * T14- SSOIL - SEH - ETANRG - IF (FLX3 <= 0.0) FLX3 = 0.0 - - IF(UA_PHYS .AND. FLX4 > 0. .AND. FLX3 > 0.) THEN - IF(FLX3 >= FLX4) THEN - FLX3 = FLX3 - FLX4 - ELSE - FLX4 = FLX3 - FLX3 = 0. - ENDIF - ELSE - FLX4 = 0.0 - ENDIF - -! ---------------------------------------------------------------------- -! SNOWMELT REDUCTION DEPENDING ON SNOW COVER -! ---------------------------------------------------------------------- - EX = FLX3*0.001/ LSUBF - -! ---------------------------------------------------------------------- -! ESDMIN REPRESENTS A SNOWPACK DEPTH THRESHOLD VALUE BELOW WHICH WE -! CHOOSE NOT TO RETAIN ANY SNOWPACK, AND INSTEAD INCLUDE IT IN SNOWMELT. -! ---------------------------------------------------------------------- - SNOMLT = EX * DT - IF (ESD- SNOMLT >= ESDMIN) THEN - ESD = ESD- SNOMLT -! ---------------------------------------------------------------------- -! SNOWMELT EXCEEDS SNOW DEPTH -! ---------------------------------------------------------------------- - ELSE - EX = ESD / DT - FLX3 = EX *1000.0* LSUBF - SNOMLT = ESD - - ESD = 0.0 -! ---------------------------------------------------------------------- -! END OF 'ESD .LE. ETP2' IF-BLOCK -! ---------------------------------------------------------------------- - END IF - END IF - -! ---------------------------------------------------------------------- -! END OF 'T12 .LE. TFREEZ' IF-BLOCK -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! IF NON-GLACIAL LAND, ADD SNOWMELT RATE (EX) TO PRECIP RATE TO BE USED -! IN SUBROUTINE SMFLX (SOIL MOISTURE EVOLUTION) VIA INFILTRATION. -! -! RUNOFF/BASEFLOW LATER NEAR THE END OF SFLX (AFTER RETURN FROM CALL TO -! SUBROUTINE SNOPAC) -! ---------------------------------------------------------------------- - PRCP1 = PRCP1+ EX - -! ---------------------------------------------------------------------- -! SET THE EFFECTIVE POTNL EVAPOTRANSP (ETP1) TO ZERO SINCE THIS IS SNOW -! CASE, SO SURFACE EVAP NOT CALCULATED FROM EDIR, EC, OR ETT IN SMFLX -! (BELOW). -! SMFLX RETURNS UPDATED SOIL MOISTURE VALUES FOR NON-GLACIAL LAND. -! ---------------------------------------------------------------------- - END IF - CALL SMFLX (SMC,NSOIL,CMC,DT,PRCP1,ZSOIL, & - SH2O,SLOPE,KDT,FRZFACT, & - SMCMAX,BEXP,SMCWLT,DKSAT,DWSAT, & - SHDFAC,CMCMAX, & - RUNOFF1,RUNOFF2,RUNOFF3, & - EDIR1,EC1,ET1, & - DRIP, SFHEAD1RT,INFXS1RT) -! ---------------------------------------------------------------------- -! BEFORE CALL SHFLX IN THIS SNOWPACK CASE, SET ZZ1 AND YY ARGUMENTS TO -! SPECIAL VALUES THAT ENSURE THAT GROUND HEAT FLUX CALCULATED IN SHFLX -! MATCHES THAT ALREADY COMPUTER FOR BELOW THE SNOWPACK, THUS THE SFC -! HEAT FLUX TO BE COMPUTED IN SHFLX WILL EFFECTIVELY BE THE FLUX AT THE -! SNOW TOP SURFACE. T11 IS A DUMMY ARGUEMENT SO WE WILL NOT USE THE -! SKIN TEMP VALUE AS REVISED BY SHFLX. -! ---------------------------------------------------------------------- - ZZ1 = 1.0 - YY = STC (1) -0.5* SSOIL * ZSOIL (1)* ZZ1/ DF1 - -! ---------------------------------------------------------------------- -! SHFLX WILL CALC/UPDATE THE SOIL TEMPS. NOTE: THE SUB-SFC HEAT FLUX -! (SSOIL1) AND THE SKIN TEMP (T11) OUTPUT FROM THIS SHFLX CALL ARE NOT -! USED IN ANY SUBSEQUENT CALCULATIONS. RATHER, THEY ARE DUMMY VARIABLES -! HERE IN THE SNOPAC CASE, SINCE THE SKIN TEMP AND SUB-SFC HEAT FLUX ARE -! UPDATED INSTEAD NEAR THE BEGINNING OF THE CALL TO SNOPAC. -! ---------------------------------------------------------------------- - T11 = T1 - CALL SHFLX (SSOIL1,STC,SMC,SMCMAX,NSOIL,T11,DT,YY,ZZ1,ZSOIL, & - TBOT,ZBOT,SMCWLT,PSISAT,SH2O,BEXP,F1,DF1, & - QUARTZ,CSOIL,VEGTYP,ISURBAN,SOILTYP,OPT_THCND & - ,HCPCT_FASDAS ) !fasdas - -! ---------------------------------------------------------------------- -! SNOW DEPTH AND DENSITY ADJUSTMENT BASED ON SNOW COMPACTION. YY IS -! ASSUMED TO BE THE SOIL TEMPERTURE AT THE TOP OF THE SOIL COLUMN. -! ---------------------------------------------------------------------- - ! LAND - IF (ESD > 0.) THEN - CALL SNOWPACK (ESD,DT,SNOWH,SNDENS,T1,YY,SNOMLT,UA_PHYS) - ELSE - ESD = 0. - SNOWH = 0. - SNDENS = 0. - SNCOND = 1. - SNCOVR = 0. - END IF - -! ---------------------------------------------------------------------- - END SUBROUTINE SNOPAC -! ---------------------------------------------------------------------- - - - SUBROUTINE SNOWPACK (ESD,DTSEC,SNOWH,SNDENS,TSNOW,TSOIL,SNOMLT,UA_PHYS) - -! ---------------------------------------------------------------------- -! SUBROUTINE SNOWPACK -! ---------------------------------------------------------------------- -! CALCULATE COMPACTION OF SNOWPACK UNDER CONDITIONS OF INCREASING SNOW -! DENSITY, AS OBTAINED FROM AN APPROXIMATE SOLUTION OF E. ANDERSON'S -! DIFFERENTIAL EQUATION (3.29), NOAA TECHNICAL REPORT NWS 19, BY VICTOR -! KOREN, 03/25/95. -! ---------------------------------------------------------------------- -! ESD WATER EQUIVALENT OF SNOW (M) -! DTSEC TIME STEP (SEC) -! SNOWH SNOW DEPTH (M) -! SNDENS SNOW DENSITY (G/CM3=DIMENSIONLESS FRACTION OF H2O DENSITY) -! TSNOW SNOW SURFACE TEMPERATURE (K) -! TSOIL SOIL SURFACE TEMPERATURE (K) - -! SUBROUTINE WILL RETURN NEW VALUES OF SNOWH AND SNDENS -! ---------------------------------------------------------------------- - IMPLICIT NONE - - INTEGER :: IPOL, J - REAL, INTENT(IN) :: ESD, DTSEC,TSNOW,TSOIL - REAL, INTENT(INOUT) :: SNOWH, SNDENS - REAL :: BFAC,DSX,DTHR,DW,SNOWHC,PEXP, & - TAVGC,TSNOWC,TSOILC,ESDC,ESDCX - REAL, PARAMETER :: C1 = 0.01, C2 = 21.0, G = 9.81, & - KN = 4000.0 - LOGICAL, INTENT(IN) :: UA_PHYS ! UA: flag for UA option - REAL, INTENT(IN) :: SNOMLT ! UA: snow melt [m] - REAL :: SNOMLTC ! UA: snow melt [cm] -! ---------------------------------------------------------------------- -! CONVERSION INTO SIMULATION UNITS -! ---------------------------------------------------------------------- - SNOWHC = SNOWH *100. - ESDC = ESD *100. - IF(UA_PHYS) SNOMLTC = SNOMLT *100. - DTHR = DTSEC /3600. - TSNOWC = TSNOW -273.15 - TSOILC = TSOIL -273.15 - -! ---------------------------------------------------------------------- -! CALCULATING OF AVERAGE TEMPERATURE OF SNOW PACK -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! CALCULATING OF SNOW DEPTH AND DENSITY AS A RESULT OF COMPACTION -! SNDENS=DS0*(EXP(BFAC*ESD)-1.)/(BFAC*ESD) -! BFAC=DTHR*C1*EXP(0.08*TAVGC-C2*DS0) -! NOTE: BFAC*ESD IN SNDENS EQN ABOVE HAS TO BE CAREFULLY TREATED -! NUMERICALLY BELOW: -! C1 IS THE FRACTIONAL INCREASE IN DENSITY (1/(CM*HR)) -! C2 IS A CONSTANT (CM3/G) KOJIMA ESTIMATED AS 21 CMS/G -! ---------------------------------------------------------------------- - TAVGC = 0.5* (TSNOWC + TSOILC) - IF (ESDC > 1.E-2) THEN - ESDCX = ESDC - ELSE - ESDCX = 1.E-2 - END IF - -! DSX = SNDENS*((DEXP(BFAC*ESDC)-1.)/(BFAC*ESDC)) -! ---------------------------------------------------------------------- -! THE FUNCTION OF THE FORM (e**x-1)/x EMBEDDED IN ABOVE EXPRESSION -! FOR DSX WAS CAUSING NUMERICAL DIFFICULTIES WHEN THE DENOMINATOR "x" -! (I.E. BFAC*ESDC) BECAME ZERO OR APPROACHED ZERO (DESPITE THE FACT THAT -! THE ANALYTICAL FUNCTION (e**x-1)/x HAS A WELL DEFINED LIMIT AS -! "x" APPROACHES ZERO), HENCE BELOW WE REPLACE THE (e**x-1)/x -! EXPRESSION WITH AN EQUIVALENT, NUMERICALLY WELL-BEHAVED -! POLYNOMIAL EXPANSION. - -! NUMBER OF TERMS OF POLYNOMIAL EXPANSION, AND HENCE ITS ACCURACY, -! IS GOVERNED BY ITERATION LIMIT "IPOL". -! IPOL GREATER THAN 9 ONLY MAKES A DIFFERENCE ON DOUBLE -! PRECISION (RELATIVE ERRORS GIVEN IN PERCENT %). -! IPOL=9, FOR REL.ERROR <~ 1.6 E-6 % (8 SIGNIFICANT DIGITS) -! IPOL=8, FOR REL.ERROR <~ 1.8 E-5 % (7 SIGNIFICANT DIGITS) -! IPOL=7, FOR REL.ERROR <~ 1.8 E-4 % ... -! ---------------------------------------------------------------------- - BFAC = DTHR * C1* EXP (0.08* TAVGC - C2* SNDENS) - IPOL = 4 - PEXP = 0. -! PEXP = (1. + PEXP)*BFAC*ESDC/REAL(J+1) - DO J = IPOL,1, -1 - PEXP = (1. + PEXP)* BFAC * ESDCX / REAL (J +1) - END DO - - PEXP = PEXP + 1. -! ---------------------------------------------------------------------- -! ABOVE LINE ENDS POLYNOMIAL SUBSTITUTION -! ---------------------------------------------------------------------- -! END OF KOREAN FORMULATION - -! BASE FORMULATION (COGLEY ET AL., 1990) -! CONVERT DENSITY FROM G/CM3 TO KG/M3 -! DSM=SNDENS*1000.0 - -! DSX=DSM+DTSEC*0.5*DSM*G*ESD/ -! & (1E7*EXP(-0.02*DSM+KN/(TAVGC+273.16)-14.643)) - -! & CONVERT DENSITY FROM KG/M3 TO G/CM3 -! DSX=DSX/1000.0 - -! END OF COGLEY ET AL. FORMULATION - -! ---------------------------------------------------------------------- -! SET UPPER/LOWER LIMIT ON SNOW DENSITY -! ---------------------------------------------------------------------- - DSX = SNDENS * (PEXP) - IF (DSX > 0.40) DSX = 0.40 - IF (DSX < 0.05) DSX = 0.05 -! ---------------------------------------------------------------------- -! UPDATE OF SNOW DEPTH AND DENSITY DEPENDING ON LIQUID WATER DURING -! SNOWMELT. ASSUMED THAT 13% OF LIQUID WATER CAN BE STORED IN SNOW PER -! DAY DURING SNOWMELT TILL SNOW DENSITY 0.40. -! ---------------------------------------------------------------------- - SNDENS = DSX - IF (TSNOWC >= 0.) THEN - DW = 0.13* DTHR /24. - IF ( UA_PHYS .AND. TSOILC >= 0.) THEN - DW = MIN (DW, 0.13*SNOMLTC/(ESDCX+0.13*SNOMLTC)) - ENDIF - SNDENS = SNDENS * (1. - DW) + DW - IF (SNDENS >= 0.40) SNDENS = 0.40 -! ---------------------------------------------------------------------- -! CALCULATE SNOW DEPTH (CM) FROM SNOW WATER EQUIVALENT AND SNOW DENSITY. -! CHANGE SNOW DEPTH UNITS TO METERS -! ---------------------------------------------------------------------- - END IF - SNOWHC = ESDC / SNDENS - SNOWH = SNOWHC *0.01 - -! ---------------------------------------------------------------------- - END SUBROUTINE SNOWPACK -! ---------------------------------------------------------------------- - - SUBROUTINE SNOWZ0 (SNCOVR,Z0, Z0BRD, SNOWH,FBUR,FGSN,SHDMAX,UA_PHYS) - -! ---------------------------------------------------------------------- -! SUBROUTINE SNOWZ0 -! ---------------------------------------------------------------------- -! CALCULATE TOTAL ROUGHNESS LENGTH OVER SNOW -! SNCOVR FRACTIONAL SNOW COVER -! Z0 ROUGHNESS LENGTH (m) -! Z0S SNOW ROUGHNESS LENGTH:=0.001 (m) -! ---------------------------------------------------------------------- - IMPLICIT NONE - REAL, INTENT(IN) :: SNCOVR, Z0BRD - REAL, INTENT(OUT) :: Z0 - REAL, PARAMETER :: Z0S=0.001 - REAL, INTENT(IN) :: SNOWH - REAL :: BURIAL - REAL :: Z0EFF - LOGICAL, INTENT(IN) :: UA_PHYS ! UA: flag for UA option - REAL, INTENT(IN) :: FBUR ! UA: fraction of canopy buried - REAL, INTENT(IN) :: FGSN ! UA: ground snow cover fraction - REAL, INTENT(IN) :: SHDMAX ! UA: maximum vegetation fraction - REAL, PARAMETER :: Z0G=0.01 ! UA: soil roughness - REAL :: FV,A1,A2 - - IF(UA_PHYS) THEN - - FV = SHDMAX * (1.-FBUR) - A1 = (1.-FV)**2*((1.-FGSN**2)*LOG(Z0G) + (FGSN**2)*LOG(Z0S)) - A2 = (1.-(1.-FV)**2)*LOG(Z0BRD) - Z0 = EXP(A1+A2) - - ELSE - -!m Z0 = (1.- SNCOVR)* Z0BRD + SNCOVR * Z0S - BURIAL = 7.0*Z0BRD - SNOWH - IF(BURIAL.LE.0.0007) THEN - Z0EFF = Z0S - ELSE - Z0EFF = BURIAL/7.0 - ENDIF - - Z0 = (1.- SNCOVR)* Z0BRD + SNCOVR * Z0EFF - - ENDIF -! ---------------------------------------------------------------------- - END SUBROUTINE SNOWZ0 -! ---------------------------------------------------------------------- - - - SUBROUTINE SNOW_NEW (TEMP,NEWSN,SNOWH,SNDENS) - -! ---------------------------------------------------------------------- -! SUBROUTINE SNOW_NEW -! ---------------------------------------------------------------------- -! CALCULATE SNOW DEPTH AND DENSITY TO ACCOUNT FOR THE NEW SNOWFALL. -! NEW VALUES OF SNOW DEPTH & DENSITY RETURNED. - -! TEMP AIR TEMPERATURE (K) -! NEWSN NEW SNOWFALL (M) -! SNOWH SNOW DEPTH (M) -! SNDENS SNOW DENSITY (G/CM3=DIMENSIONLESS FRACTION OF H2O DENSITY) -! ---------------------------------------------------------------------- - IMPLICIT NONE - REAL, INTENT(IN) :: NEWSN, TEMP - REAL, INTENT(INOUT) :: SNDENS, SNOWH - REAL :: DSNEW, HNEWC, SNOWHC,NEWSNC,TEMPC - -! ---------------------------------------------------------------------- -! CONVERSION INTO SIMULATION UNITS -! ---------------------------------------------------------------------- - SNOWHC = SNOWH *100. - NEWSNC = NEWSN *100. - -! ---------------------------------------------------------------------- -! CALCULATING NEW SNOWFALL DENSITY DEPENDING ON TEMPERATURE -! EQUATION FROM GOTTLIB L. 'A GENERAL RUNOFF MODEL FOR SNOWCOVERED -! AND GLACIERIZED BASIN', 6TH NORDIC HYDROLOGICAL CONFERENCE, -! VEMADOLEN, SWEDEN, 1980, 172-177PP. -!----------------------------------------------------------------------- - TEMPC = TEMP -273.15 - IF (TEMPC <= -15.) THEN - DSNEW = 0.05 - ELSE - DSNEW = 0.05+0.0017* (TEMPC +15.)**1.5 - END IF -! ---------------------------------------------------------------------- -! ADJUSTMENT OF SNOW DENSITY DEPENDING ON NEW SNOWFALL -! ---------------------------------------------------------------------- - HNEWC = NEWSNC / DSNEW - IF (SNOWHC + HNEWC .LT. 1.0E-3) THEN - SNDENS = MAX(DSNEW,SNDENS) - ELSE - SNDENS = (SNOWHC * SNDENS + HNEWC * DSNEW)/ (SNOWHC + HNEWC) - ENDIF - SNOWHC = SNOWHC + HNEWC - SNOWH = SNOWHC *0.01 - -! ---------------------------------------------------------------------- - END SUBROUTINE SNOW_NEW -! ---------------------------------------------------------------------- - - SUBROUTINE SRT (RHSTT,EDIR,ET,SH2O,SH2OA,NSOIL,PCPDRP, & - ZSOIL,DWSAT,DKSAT,SMCMAX,BEXP,RUNOFF1, & - RUNOFF2,DT,SMCWLT,SLOPE,KDT,FRZX,SICE,AI,BI,CI, & - SFHEAD1RT,INFXS1RT ) - -! ---------------------------------------------------------------------- -! SUBROUTINE SRT -! ---------------------------------------------------------------------- -! CALCULATE THE RIGHT HAND SIDE OF THE TIME TENDENCY TERM OF THE SOIL -! WATER DIFFUSION EQUATION. ALSO TO COMPUTE ( PREPARE ) THE MATRIX -! COEFFICIENTS FOR THE TRI-DIAGONAL MATRIX OF THE IMPLICIT TIME SCHEME. -! ---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER, INTENT(IN) :: NSOIL - INTEGER :: IALP1, IOHINF, J, JJ, K, KS - -!DJG NDHMS/WRF-Hydro edit... Variables used in OV routing infiltration calcs - REAL, INTENT(INOUT) :: SFHEAD1RT, INFXS1RT - REAL :: SFCWATR,chcksm - - - - REAL, INTENT(IN) :: BEXP, DKSAT, DT, DWSAT, EDIR, FRZX, & - KDT, PCPDRP, SLOPE, SMCMAX, SMCWLT - REAL, INTENT(OUT) :: RUNOFF1, RUNOFF2 - REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ET, SH2O, SH2OA, SICE, & - ZSOIL - REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: RHSTT - REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: AI, BI, CI - REAL, DIMENSION(1:NSOIL) :: DMAX - REAL :: ACRT, DD, DDT, DDZ, DDZ2, DENOM, & - DENOM2,DICE, DSMDZ, DSMDZ2, DT1, & - FCR,INFMAX,MXSMC,MXSMC2,NUMER,PDDUM, & - PX, SICEMAX,SLOPX, SMCAV, SSTT, & - SUM, VAL, WCND, WCND2, WDF, WDF2 - INTEGER, PARAMETER :: CVFRZ = 3 - -! ---------------------------------------------------------------------- -! FROZEN GROUND VERSION: -! REFERENCE FROZEN GROUND PARAMETER, CVFRZ, IS A SHAPE PARAMETER OF -! AREAL DISTRIBUTION FUNCTION OF SOIL ICE CONTENT WHICH EQUALS 1/CV. -! CV IS A COEFFICIENT OF SPATIAL VARIATION OF SOIL ICE CONTENT. BASED -! ON FIELD DATA CV DEPENDS ON AREAL MEAN OF FROZEN DEPTH, AND IT CLOSE -! TO CONSTANT = 0.6 IF AREAL MEAN FROZEN DEPTH IS ABOVE 20 CM. THAT IS -! WHY PARAMETER CVFRZ = 3 (INT{1/0.6*0.6}). -! CURRENT LOGIC DOESN'T ALLOW CVFRZ BE BIGGER THAN 3 -! ---------------------------------------------------------------------- - -! ---------------------------------------------------------------------- -! DETERMINE RAINFALL INFILTRATION RATE AND RUNOFF. INCLUDE THE -! INFILTRATION FORMULE FROM SCHAAKE AND KOREN MODEL. -! MODIFIED BY Q DUAN -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! LET SICEMAX BE THE GREATEST, IF ANY, FROZEN WATER CONTENT WITHIN SOIL -! LAYERS. -! ---------------------------------------------------------------------- - IOHINF = 1 - SICEMAX = 0.0 - DO KS = 1,NSOIL - IF (SICE (KS) > SICEMAX) SICEMAX = SICE (KS) -! ---------------------------------------------------------------------- -! DETERMINE RAINFALL INFILTRATION RATE AND RUNOFF -! ---------------------------------------------------------------------- - END DO - -#ifdef WRF_HYDRO -!DJG NDHMS/WRF-Hydro edit... -!DJG Use previously merged Precip and Sfchead for infil. cap. calc. - SFCWATR = PCPDRP - PDDUM = SFCWATR -!DJG original PDDUM = PCPDRP - RUNOFF1 = 0.0 - INFXS1RT = 0.0 -#else - PDDUM = PCPDRP - RUNOFF1 = 0.0 -#endif - - - -! ---------------------------------------------------------------------- -! MODIFIED BY Q. DUAN, 5/16/94 -! ---------------------------------------------------------------------- -! IF (IOHINF == 1) THEN - -#ifdef WRF_HYDRO -!DJG NDHMS/WRF-Hydro edit... -!DJG IF (PCPDRP /= 0.0) THEN - IF (SFCWATR /= 0.0) THEN -#else - IF (PCPDRP /= 0.0) THEN -#endif - DT1 = DT /86400. - SMCAV = SMCMAX - SMCWLT - -! ---------------------------------------------------------------------- -! FROZEN GROUND VERSION: -! ---------------------------------------------------------------------- - DMAX (1)= - ZSOIL (1)* SMCAV - - DICE = - ZSOIL (1) * SICE (1) - DMAX (1)= DMAX (1)* (1.0- (SH2OA (1) + SICE (1) - SMCWLT)/ & - SMCAV) - - DD = DMAX (1) - -! ---------------------------------------------------------------------- -! FROZEN GROUND VERSION: -! ---------------------------------------------------------------------- - DO KS = 2,NSOIL - - DICE = DICE+ ( ZSOIL (KS -1) - ZSOIL (KS) ) * SICE (KS) - DMAX (KS) = (ZSOIL (KS -1) - ZSOIL (KS))* SMCAV - DMAX (KS) = DMAX (KS)* (1.0- (SH2OA (KS) + SICE (KS) & - - SMCWLT)/ SMCAV) - DD = DD+ DMAX (KS) -! ---------------------------------------------------------------------- -! VAL = (1.-EXP(-KDT*SQRT(DT1))) -! IN BELOW, REMOVE THE SQRT IN ABOVE -! ---------------------------------------------------------------------- - END DO - VAL = (1. - EXP ( - KDT * DT1)) - DDT = DD * VAL -#ifdef WRF_HYDRO -!DJG NDHMS/WRF-Hydro edit... -!DJG PX = PCPDRP * DT - PX = SFCWATR * DT -#else - PX = PCPDRP * DT -#endif - IF (PX < 0.0) PX = 0.0 - - - -! ---------------------------------------------------------------------- -! FROZEN GROUND VERSION: -! REDUCTION OF INFILTRATION BASED ON FROZEN GROUND PARAMETERS -! ---------------------------------------------------------------------- - INFMAX = (PX * (DDT / (PX + DDT)))/ DT - FCR = 1. - IF (DICE > 1.E-2) THEN - ACRT = CVFRZ * FRZX / DICE - SUM = 1. - IALP1 = CVFRZ - 1 - DO J = 1,IALP1 - K = 1 - DO JJ = J +1,IALP1 - K = K * JJ - END DO - SUM = SUM + (ACRT ** ( CVFRZ - J)) / FLOAT (K) - END DO - FCR = 1. - EXP ( - ACRT) * SUM - END IF - -! ---------------------------------------------------------------------- -! CORRECTION OF INFILTRATION LIMITATION: -! IF INFMAX .LE. HYDROLIC CONDUCTIVITY ASSIGN INFMAX THE VALUE OF -! HYDROLIC CONDUCTIVITY -! ---------------------------------------------------------------------- -! MXSMC = MAX ( SH2OA(1), SH2OA(2) ) - INFMAX = INFMAX * FCR - - MXSMC = SH2OA (1) - CALL WDFCND (WDF,WCND,MXSMC,SMCMAX,BEXP,DKSAT,DWSAT, & - SICEMAX) - INFMAX = MAX (INFMAX,WCND) - - INFMAX = MIN (INFMAX,PX/DT) -#ifdef WRF_HYDRO -!DJG NDHMS/WRF-Hydro edit... -!DJG IF (PCPDRP > INFMAX) THEN - IF (SFCWATR > INFMAX) THEN -!DJG RUNOFF1 = PCPDRP - INFMAX - RUNOFF1 = SFCWATR - INFMAX -#else - IF (PCPDRP > INFMAX) THEN - RUNOFF1 = PCPDRP - INFMAX -#endif - INFXS1RT = RUNOFF1*DT*1000. - PDDUM = INFMAX - END IF - -! ---------------------------------------------------------------------- -! TO AVOID SPURIOUS DRAINAGE BEHAVIOR, 'UPSTREAM DIFFERENCING' IN LINE -! BELOW REPLACED WITH NEW APPROACH IN 2ND LINE: -! 'MXSMC = MAX(SH2OA(1), SH2OA(2))' -! ---------------------------------------------------------------------- - END IF - - MXSMC = SH2OA (1) - CALL WDFCND (WDF,WCND,MXSMC,SMCMAX,BEXP,DKSAT,DWSAT, & - SICEMAX) -! ---------------------------------------------------------------------- -! CALC THE MATRIX COEFFICIENTS AI, BI, AND CI FOR THE TOP LAYER -! ---------------------------------------------------------------------- - DDZ = 1. / ( - .5 * ZSOIL (2) ) - AI (1) = 0.0 - BI (1) = WDF * DDZ / ( - ZSOIL (1) ) - -! ---------------------------------------------------------------------- -! CALC RHSTT FOR THE TOP LAYER AFTER CALC'NG THE VERTICAL SOIL MOISTURE -! GRADIENT BTWN THE TOP AND NEXT TO TOP LAYERS. -! ---------------------------------------------------------------------- - CI (1) = - BI (1) - DSMDZ = ( SH2O (1) - SH2O (2) ) / ( - .5 * ZSOIL (2) ) - RHSTT (1) = (WDF * DSMDZ + WCND- PDDUM + EDIR + ET (1))/ ZSOIL (1) - -! ---------------------------------------------------------------------- -! INITIALIZE DDZ2 -! ---------------------------------------------------------------------- - SSTT = WDF * DSMDZ + WCND+ EDIR + ET (1) - -! ---------------------------------------------------------------------- -! LOOP THRU THE REMAINING SOIL LAYERS, REPEATING THE ABV PROCESS -! ---------------------------------------------------------------------- - DDZ2 = 0.0 - DO K = 2,NSOIL - DENOM2 = (ZSOIL (K -1) - ZSOIL (K)) - IF (K /= NSOIL) THEN - -! ---------------------------------------------------------------------- -! AGAIN, TO AVOID SPURIOUS DRAINAGE BEHAVIOR, 'UPSTREAM DIFFERENCING' IN -! LINE BELOW REPLACED WITH NEW APPROACH IN 2ND LINE: -! 'MXSMC2 = MAX (SH2OA(K), SH2OA(K+1))' -! ---------------------------------------------------------------------- - SLOPX = 1. - - MXSMC2 = SH2OA (K) - CALL WDFCND (WDF2,WCND2,MXSMC2,SMCMAX,BEXP,DKSAT,DWSAT, & - SICEMAX) -! ----------------------------------------------------------------------- -! CALC SOME PARTIAL PRODUCTS FOR LATER USE IN CALC'NG RHSTT -! ---------------------------------------------------------------------- - DENOM = (ZSOIL (K -1) - ZSOIL (K +1)) - -! ---------------------------------------------------------------------- -! CALC THE MATRIX COEF, CI, AFTER CALC'NG ITS PARTIAL PRODUCT -! ---------------------------------------------------------------------- - DSMDZ2 = (SH2O (K) - SH2O (K +1)) / (DENOM * 0.5) - DDZ2 = 2.0 / DENOM - CI (K) = - WDF2 * DDZ2 / DENOM2 - - ELSE -! ---------------------------------------------------------------------- -! SLOPE OF BOTTOM LAYER IS INTRODUCED -! ---------------------------------------------------------------------- - -! ---------------------------------------------------------------------- -! RETRIEVE THE SOIL WATER DIFFUSIVITY AND HYDRAULIC CONDUCTIVITY FOR -! THIS LAYER -! ---------------------------------------------------------------------- - SLOPX = SLOPE - CALL WDFCND (WDF2,WCND2,SH2OA (NSOIL),SMCMAX,BEXP,DKSAT,DWSAT, & - SICEMAX) - -! ---------------------------------------------------------------------- -! CALC A PARTIAL PRODUCT FOR LATER USE IN CALC'NG RHSTT -! ---------------------------------------------------------------------- - -! ---------------------------------------------------------------------- -! SET MATRIX COEF CI TO ZERO -! ---------------------------------------------------------------------- - DSMDZ2 = 0.0 - CI (K) = 0.0 -! ---------------------------------------------------------------------- -! CALC RHSTT FOR THIS LAYER AFTER CALC'NG ITS NUMERATOR -! ---------------------------------------------------------------------- - END IF - NUMER = (WDF2 * DSMDZ2) + SLOPX * WCND2- (WDF * DSMDZ) & - - WCND+ ET (K) - -! ---------------------------------------------------------------------- -! CALC MATRIX COEFS, AI, AND BI FOR THIS LAYER -! ---------------------------------------------------------------------- - RHSTT (K) = NUMER / ( - DENOM2) - AI (K) = - WDF * DDZ / DENOM2 - -! ---------------------------------------------------------------------- -! RESET VALUES OF WDF, WCND, DSMDZ, AND DDZ FOR LOOP TO NEXT LYR -! RUNOFF2: SUB-SURFACE OR BASEFLOW RUNOFF -! ---------------------------------------------------------------------- - BI (K) = - ( AI (K) + CI (K) ) - IF (K .eq. NSOIL) THEN - RUNOFF2 = SLOPX * WCND2 - END IF - IF (K .ne. NSOIL) THEN - WDF = WDF2 - WCND = WCND2 - DSMDZ = DSMDZ2 - DDZ = DDZ2 - END IF - END DO -! ---------------------------------------------------------------------- - END SUBROUTINE SRT -! ---------------------------------------------------------------------- - - SUBROUTINE SSTEP (SH2OOUT,SH2OIN,CMC,RHSTT,RHSCT,DT, & - NSOIL,SMCMAX,CMCMAX,RUNOFF3,ZSOIL,SMC,SICE, & - AI,BI,CI, INFXS1RT) - -! ---------------------------------------------------------------------- -! SUBROUTINE SSTEP -! ---------------------------------------------------------------------- -! CALCULATE/UPDATE SOIL MOISTURE CONTENT VALUES AND CANOPY MOISTURE -! CONTENT VALUES. -! ---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER, INTENT(IN) :: NSOIL - INTEGER :: I, K, KK11 - -!!DJG NDHMS/WRF-Hydro edit... - REAL, INTENT(INOUT) :: INFXS1RT - REAL :: AVAIL - - REAL, INTENT(IN) :: CMCMAX, DT, SMCMAX - REAL, INTENT(OUT) :: RUNOFF3 - REAL, INTENT(INOUT) :: CMC - REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SH2OIN, SICE, ZSOIL - REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: SH2OOUT - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: RHSTT, SMC - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: AI, BI, CI - REAL, DIMENSION(1:NSOIL) :: RHSTTin - REAL, DIMENSION(1:NSOIL) :: CIin - REAL :: DDZ, RHSCT, STOT, WPLUS - -! ---------------------------------------------------------------------- -! CREATE 'AMOUNT' VALUES OF VARIABLES TO BE INPUT TO THE -! TRI-DIAGONAL MATRIX ROUTINE. -! ---------------------------------------------------------------------- - DO K = 1,NSOIL - RHSTT (K) = RHSTT (K) * DT - AI (K) = AI (K) * DT - BI (K) = 1. + BI (K) * DT - CI (K) = CI (K) * DT - END DO -! ---------------------------------------------------------------------- -! COPY VALUES FOR INPUT VARIABLES BEFORE CALL TO ROSR12 -! ---------------------------------------------------------------------- - DO K = 1,NSOIL - RHSTTin (K) = RHSTT (K) - END DO - DO K = 1,NSOIL - CIin (K) = CI (K) - END DO -! ---------------------------------------------------------------------- -! CALL ROSR12 TO SOLVE THE TRI-DIAGONAL MATRIX -! ---------------------------------------------------------------------- - CALL ROSR12 (CI,AI,BI,CIin,RHSTTin,RHSTT,NSOIL) -! ---------------------------------------------------------------------- -! SUM THE PREVIOUS SMC VALUE AND THE MATRIX SOLUTION TO GET A -! NEW VALUE. MIN ALLOWABLE VALUE OF SMC WILL BE 0.02. -! RUNOFF3: RUNOFF WITHIN SOIL LAYERS -! ---------------------------------------------------------------------- - WPLUS = 0.0 - RUNOFF3 = 0. - - DDZ = - ZSOIL (1) - DO K = 1,NSOIL - IF (K /= 1) DDZ = ZSOIL (K - 1) - ZSOIL (K) - SH2OOUT (K) = SH2OIN (K) + CI (K) + WPLUS / DDZ - STOT = SH2OOUT (K) + SICE (K) - IF (STOT > SMCMAX) THEN - IF (K .eq. 1) THEN - DDZ = - ZSOIL (1) - ELSE - KK11 = K - 1 - DDZ = - ZSOIL (K) + ZSOIL (KK11) - END IF - WPLUS = (STOT - SMCMAX) * DDZ - ELSE - WPLUS = 0. - END IF - SMC (K) = MAX ( MIN (STOT,SMCMAX),0.02 ) - SH2OOUT (K) = MAX ( (SMC (K) - SICE (K)),0.0) - END DO -#ifdef WRF_HYDRO -!DJG NDHMS/WRF-Hydro edit... -!DJG Modifications to redstribute WPLUS/RUNOFF3 (soil moisture closure error) to soil profile -!DJG beginning at bottom layer (NSOIL) - IF (WPLUS > 0.) THEN - DO K=NSOIL,2,-1 - - IF (K .eq. 2) THEN !Assign soil depths - DDZ = -ZSOIL(1) - ELSE - DDZ = ZSOIL(K-2)-ZSOIL(K-1) - END IF - - AVAIL = (SMCMAX - SMC(K-1)) * DDZ !Det. Avail. Stor. - -! print *, "ZZZZZ", K,DDZ,AVAIL,WPLUS,SMC(K),SMC(K-1),SMCMAX - - IF (WPLUS <= AVAIL) THEN - SMC(K-1) = SMC(K-1) + WPLUS/DDZ - WPLUS = 0. - ELSE - SMC(K-1) = SMCMAX - WPLUS = WPLUS - AVAIL - IF (K-1 .eq. 1) THEN - INFXS1RT = INFXS1RT + WPLUS*1000 - WPLUS = 0. - END IF - END IF - -! SMC (K) = MAX ( MIN (STOT,SMCMAX),0.02 ) - SH2OOUT (K) = MAX ( (SMC (K) - SICE (K)),0.0) - - END DO - END IF -!DJG NDHMS/WRF-Hydro edit...End of modification -#endif - - -! ---------------------------------------------------------------------- -! UPDATE CANOPY WATER CONTENT/INTERCEPTION (CMC). CONVERT RHSCT TO -! AN 'AMOUNT' VALUE AND ADD TO PREVIOUS CMC VALUE TO GET NEW CMC. -! ---------------------------------------------------------------------- - RUNOFF3 = WPLUS - CMC = CMC + DT * RHSCT - IF (CMC < 1.E-20) CMC = 0.0 - CMC = MIN (CMC,CMCMAX) - -! ---------------------------------------------------------------------- - END SUBROUTINE SSTEP -! ---------------------------------------------------------------------- - - SUBROUTINE TBND (TU,TB,ZSOIL,ZBOT,K,NSOIL,TBND1) - -! ---------------------------------------------------------------------- -! SUBROUTINE TBND -! ---------------------------------------------------------------------- -! CALCULATE TEMPERATURE ON THE BOUNDARY OF THE LAYER BY INTERPOLATION OF -! THE MIDDLE LAYER TEMPERATURES -! ---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER, INTENT(IN) :: NSOIL - INTEGER :: K - REAL, INTENT(IN) :: TB, TU, ZBOT - REAL, INTENT(OUT) :: TBND1 - REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ZSOIL - REAL :: ZB, ZUP - REAL, PARAMETER :: T0 = 273.15 - -! ---------------------------------------------------------------------- -! USE SURFACE TEMPERATURE ON THE TOP OF THE FIRST LAYER -! ---------------------------------------------------------------------- - IF (K == 1) THEN - ZUP = 0. - ELSE - ZUP = ZSOIL (K -1) - END IF -! ---------------------------------------------------------------------- -! USE DEPTH OF THE CONSTANT BOTTOM TEMPERATURE WHEN INTERPOLATE -! TEMPERATURE INTO THE LAST LAYER BOUNDARY -! ---------------------------------------------------------------------- - IF (K == NSOIL) THEN - ZB = 2.* ZBOT - ZSOIL (K) - ELSE - ZB = ZSOIL (K +1) - END IF -! ---------------------------------------------------------------------- -! LINEAR INTERPOLATION BETWEEN THE AVERAGE LAYER TEMPERATURES -! ---------------------------------------------------------------------- - - TBND1 = TU + (TB - TU)* (ZUP - ZSOIL (K))/ (ZUP - ZB) -! ---------------------------------------------------------------------- - END SUBROUTINE TBND -! ---------------------------------------------------------------------- - - - SUBROUTINE TDFCND ( DF, SMC, QZ, SMCMAX, SH2O, BEXP, PSISAT, SOILTYP, OPT_THCND) - -! ---------------------------------------------------------------------- -! SUBROUTINE TDFCND -! ---------------------------------------------------------------------- -! CALCULATE THERMAL DIFFUSIVITY AND CONDUCTIVITY OF THE SOIL FOR A GIVEN -! POINT AND TIME. -! ---------------------------------------------------------------------- -! PETERS-LIDARD APPROACH (PETERS-LIDARD et al., 1998) -! June 2001 CHANGES: FROZEN SOIL CONDITION. -! ---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER, INTENT(IN) :: SOILTYP, OPT_THCND - REAL, INTENT(IN) :: QZ, SMC, SMCMAX, SH2O, BEXP, PSISAT - REAL, INTENT(OUT) :: DF - REAL :: AKE, GAMMD, THKDRY, THKICE, THKO, & - THKQTZ,THKSAT,THKS,THKW,SATRATIO,XU, & - XUNFROZ,AKEI,AKEL,PSIF,PF - -! ---------------------------------------------------------------------- -! WE NOW GET QUARTZ AS AN INPUT ARGUMENT (SET IN ROUTINE REDPRM): -! DATA QUARTZ /0.82, 0.10, 0.25, 0.60, 0.52, -! & 0.35, 0.60, 0.40, 0.82/ -! ---------------------------------------------------------------------- -! IF THE SOIL HAS ANY MOISTURE CONTENT COMPUTE A PARTIAL SUM/PRODUCT -! OTHERWISE USE A CONSTANT VALUE WHICH WORKS WELL WITH MOST SOILS -! ---------------------------------------------------------------------- -! THKW ......WATER THERMAL CONDUCTIVITY -! THKQTZ ....THERMAL CONDUCTIVITY FOR QUARTZ -! THKO ......THERMAL CONDUCTIVITY FOR OTHER SOIL COMPONENTS -! THKS ......THERMAL CONDUCTIVITY FOR THE SOLIDS COMBINED(QUARTZ+OTHER) -! THKICE ....ICE THERMAL CONDUCTIVITY -! SMCMAX ....POROSITY (= SMCMAX) -! QZ .........QUARTZ CONTENT (SOIL TYPE DEPENDENT) -! ---------------------------------------------------------------------- -! USE AS IN PETERS-LIDARD, 1998 (MODIF. FROM JOHANSEN, 1975). - -! PABLO GRUNMANN, 08/17/98 -! REFS.: -! FAROUKI, O.T.,1986: THERMAL PROPERTIES OF SOILS. SERIES ON ROCK -! AND SOIL MECHANICS, VOL. 11, TRANS TECH, 136 PP. -! JOHANSEN, O., 1975: THERMAL CONDUCTIVITY OF SOILS. PH.D. THESIS, -! UNIVERSITY OF TRONDHEIM, -! PETERS-LIDARD, C. D., ET AL., 1998: THE EFFECT OF SOIL THERMAL -! CONDUCTIVITY PARAMETERIZATION ON SURFACE ENERGY FLUXES -! AND TEMPERATURES. JOURNAL OF THE ATMOSPHERIC SCIENCES, -! VOL. 55, PP. 1209-1224. -! ---------------------------------------------------------------------- - -IF ( OPT_THCND == 1 .OR. ( OPT_THCND == 2 .AND. (SOILTYP /= 4 .AND. SOILTYP /= 3)) )THEN - -! NEEDS PARAMETERS -! POROSITY(SOIL TYPE): -! POROS = SMCMAX -! SATURATION RATIO: -! PARAMETERS W/(M.K) - SATRATIO = SMC / SMCMAX -! ICE CONDUCTIVITY: - THKICE = 2.2 -! WATER CONDUCTIVITY: - THKW = 0.57 -! THERMAL CONDUCTIVITY OF "OTHER" SOIL COMPONENTS -! IF (QZ .LE. 0.2) THKO = 3.0 - THKO = 2.0 -! QUARTZ' CONDUCTIVITY - THKQTZ = 7.7 -! SOLIDS' CONDUCTIVITY - THKS = (THKQTZ ** QZ)* (THKO ** (1. - QZ)) - -! UNFROZEN FRACTION (FROM 1., i.e., 100%LIQUID, TO 0. (100% FROZEN)) - XUNFROZ = SH2O / SMC -! UNFROZEN VOLUME FOR SATURATION (POROSITY*XUNFROZ) - XU = XUNFROZ * SMCMAX - -! SATURATED THERMAL CONDUCTIVITY - THKSAT = THKS ** (1. - SMCMAX)* THKICE ** (SMCMAX - XU)* THKW ** & - (XU) - -! DRY DENSITY IN KG/M3 - GAMMD = (1. - SMCMAX)*2700. - -! DRY THERMAL CONDUCTIVITY IN W.M-1.K-1 - THKDRY = (0.135* GAMMD+ 64.7)/ (2700. - 0.947* GAMMD) -! FROZEN - AKEI = SATRATIO -! UNFROZEN -! RANGE OF VALIDITY FOR THE KERSTEN NUMBER (AKE) - -! KERSTEN NUMBER (USING "FINE" FORMULA, VALID FOR SOILS CONTAINING AT -! LEAST 5% OF PARTICLES WITH DIAMETER LESS THAN 2.E-6 METERS.) -! (FOR "COARSE" FORMULA, SEE PETERS-LIDARD ET AL., 1998). - - IF ( SATRATIO > 0.1 ) THEN - - AKEL = LOG10 (SATRATIO) + 1.0 - -! USE K = KDRY - ELSE - - AKEL = 0.0 - END IF - AKE = ((SMC-SH2O)*AKEI + SH2O*AKEL)/SMC -! THERMAL CONDUCTIVITY - - - DF = AKE * (THKSAT - THKDRY) + THKDRY - - ELSE - -! use the Mccumber and Pielke approach for silt loam (4), sandy loam (3) - - PSIF = PSISAT*100.*(SMCMAX/(SMC))**BEXP -!--- PSIF should be in [CM] to compute PF - PF=log10(abs(PSIF)) -!--- HK is for McCumber thermal conductivity - IF(PF.LE.5.1) THEN - DF=420.*EXP(-(PF+2.7)) - ELSE - DF=.1744 - END IF - - ENDIF ! for OPT_THCND OPTIONS -! ---------------------------------------------------------------------- - END SUBROUTINE TDFCND -! ---------------------------------------------------------------------- - - SUBROUTINE TMPAVG (TAVG,TUP,TM,TDN,ZSOIL,NSOIL,K) - -! ---------------------------------------------------------------------- -! SUBROUTINE TMPAVG -! ---------------------------------------------------------------------- -! CALCULATE SOIL LAYER AVERAGE TEMPERATURE (TAVG) IN FREEZING/THAWING -! LAYER USING UP, DOWN, AND MIDDLE LAYER TEMPERATURES (TUP, TDN, TM), -! WHERE TUP IS AT TOP BOUNDARY OF LAYER, TDN IS AT BOTTOM BOUNDARY OF -! LAYER. TM IS LAYER PROGNOSTIC STATE TEMPERATURE. -! ---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER K - - INTEGER NSOIL - REAL DZ - REAL DZH - REAL T0 - REAL TAVG - REAL TDN - REAL TM - REAL TUP - REAL X0 - REAL XDN - REAL XUP - - REAL ZSOIL (NSOIL) - -! ---------------------------------------------------------------------- - PARAMETER (T0 = 2.7315E2) - IF (K .eq. 1) THEN - DZ = - ZSOIL (1) - ELSE - DZ = ZSOIL (K -1) - ZSOIL (K) - END IF - - DZH = DZ *0.5 - IF (TUP .lt. T0) THEN - IF (TM .lt. T0) THEN -! ---------------------------------------------------------------------- -! TUP, TM, TDN < T0 -! ---------------------------------------------------------------------- - IF (TDN .lt. T0) THEN - TAVG = (TUP + 2.0* TM + TDN)/ 4.0 -! ---------------------------------------------------------------------- -! TUP & TM < T0, TDN .ge. T0 -! ---------------------------------------------------------------------- - ELSE - X0 = (T0- TM) * DZH / (TDN - TM) - TAVG = 0.5 * (TUP * DZH + TM * (DZH + X0) + T0* ( & - & 2.* DZH - X0)) / DZ - END IF - ELSE -! ---------------------------------------------------------------------- -! TUP < T0, TM .ge. T0, TDN < T0 -! ---------------------------------------------------------------------- - IF (TDN .lt. T0) THEN - XUP = (T0- TUP) * DZH / (TM - TUP) - XDN = DZH - (T0- TM) * DZH / (TDN - TM) - TAVG = 0.5 * (TUP * XUP + T0* (2.* DZ - XUP - XDN) & - & + TDN * XDN) / DZ -! ---------------------------------------------------------------------- -! TUP < T0, TM .ge. T0, TDN .ge. T0 -! ---------------------------------------------------------------------- - ELSE - XUP = (T0- TUP) * DZH / (TM - TUP) - TAVG = 0.5 * (TUP * XUP + T0* (2.* DZ - XUP)) / DZ - END IF - END IF - ELSE - IF (TM .lt. T0) THEN -! ---------------------------------------------------------------------- -! TUP .ge. T0, TM < T0, TDN < T0 -! ---------------------------------------------------------------------- - IF (TDN .lt. T0) THEN - XUP = DZH - (T0- TUP) * DZH / (TM - TUP) - TAVG = 0.5 * (T0* (DZ - XUP) + TM * (DZH + XUP) & - & + TDN * DZH) / DZ -! ---------------------------------------------------------------------- -! TUP .ge. T0, TM < T0, TDN .ge. T0 -! ---------------------------------------------------------------------- - ELSE - XUP = DZH - (T0- TUP) * DZH / (TM - TUP) - XDN = (T0- TM) * DZH / (TDN - TM) - TAVG = 0.5 * (T0* (2.* DZ - XUP - XDN) + TM * & - & (XUP + XDN)) / DZ - END IF - ELSE -! ---------------------------------------------------------------------- -! TUP .ge. T0, TM .ge. T0, TDN < T0 -! ---------------------------------------------------------------------- - IF (TDN .lt. T0) THEN - XDN = DZH - (T0- TM) * DZH / (TDN - TM) - TAVG = (T0* (DZ - XDN) +0.5* (T0+ TDN)* XDN) / DZ -! ---------------------------------------------------------------------- -! TUP .ge. T0, TM .ge. T0, TDN .ge. T0 -! ---------------------------------------------------------------------- - ELSE - TAVG = (TUP + 2.0* TM + TDN) / 4.0 - END IF - END IF - END IF -! ---------------------------------------------------------------------- - END SUBROUTINE TMPAVG -! ---------------------------------------------------------------------- - - SUBROUTINE TRANSP (ET,NSOIL,ETP1,SMC,CMC,ZSOIL,SHDFAC,SMCWLT, & - & CMCMAX,PC,CFACTR,SMCREF,SFCTMP,Q2,NROOT, & - & RTDIS) - -! ---------------------------------------------------------------------- -! SUBROUTINE TRANSP -! ---------------------------------------------------------------------- -! CALCULATE TRANSPIRATION FOR THE VEG CLASS. -! ---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER I - INTEGER K - INTEGER NSOIL - - INTEGER NROOT - REAL CFACTR - REAL CMC - REAL CMCMAX - REAL DENOM - REAL ET (NSOIL) - REAL ETP1 - REAL ETP1A -!.....REAL PART(NSOIL) - REAL GX (NROOT) - REAL PC - REAL Q2 - REAL RTDIS (NSOIL) - REAL RTX - REAL SFCTMP - REAL SGX - REAL SHDFAC - REAL SMC (NSOIL) - REAL SMCREF - REAL SMCWLT - -! ---------------------------------------------------------------------- -! INITIALIZE PLANT TRANSP TO ZERO FOR ALL SOIL LAYERS. -! ---------------------------------------------------------------------- - REAL ZSOIL (NSOIL) - DO K = 1,NSOIL - ET (K) = 0. -! ---------------------------------------------------------------------- -! CALCULATE AN 'ADJUSTED' POTENTIAL TRANSPIRATION -! IF STATEMENT BELOW TO AVOID TANGENT LINEAR PROBLEMS NEAR ZERO -! NOTE: GX AND OTHER TERMS BELOW REDISTRIBUTE TRANSPIRATION BY LAYER, -! ET(K), AS A FUNCTION OF SOIL MOISTURE AVAILABILITY, WHILE PRESERVING -! TOTAL ETP1A. -! ---------------------------------------------------------------------- - END DO - IF (CMC .ne. 0.0) THEN - ETP1A = SHDFAC * PC * ETP1 * (1.0- (CMC / CMCMAX) ** CFACTR) - ELSE - ETP1A = SHDFAC * PC * ETP1 - END IF - SGX = 0.0 - DO I = 1,NROOT - GX (I) = ( SMC (I) - SMCWLT ) / ( SMCREF - SMCWLT ) - GX (I) = MAX ( MIN ( GX (I), 1. ), 0. ) - SGX = SGX + GX (I) - END DO - - SGX = SGX / NROOT - DENOM = 0. - DO I = 1,NROOT - RTX = RTDIS (I) + GX (I) - SGX - GX (I) = GX (I) * MAX ( RTX, 0. ) - DENOM = DENOM + GX (I) - END DO - - IF (DENOM .le. 0.0) DENOM = 1. - DO I = 1,NROOT - ET (I) = ETP1A * GX (I) / DENOM -! ---------------------------------------------------------------------- -! ABOVE CODE ASSUMES A VERTICALLY UNIFORM ROOT DISTRIBUTION -! CODE BELOW TESTS A VARIABLE ROOT DISTRIBUTION -! ---------------------------------------------------------------------- -! ET(1) = ( ZSOIL(1) / ZSOIL(NROOT) ) * GX * ETP1A -! ET(1) = ( ZSOIL(1) / ZSOIL(NROOT) ) * ETP1A -! ---------------------------------------------------------------------- -! USING ROOT DISTRIBUTION AS WEIGHTING FACTOR -! ---------------------------------------------------------------------- -! ET(1) = RTDIS(1) * ETP1A -! ET(1) = ETP1A * PART(1) -! ---------------------------------------------------------------------- -! LOOP DOWN THRU THE SOIL LAYERS REPEATING THE OPERATION ABOVE, -! BUT USING THE THICKNESS OF THE SOIL LAYER (RATHER THAN THE -! ABSOLUTE DEPTH OF EACH LAYER) IN THE FINAL CALCULATION. -! ---------------------------------------------------------------------- -! DO K = 2,NROOT -! GX = ( SMC(K) - SMCWLT ) / ( SMCREF - SMCWLT ) -! GX = MAX ( MIN ( GX, 1. ), 0. ) -! TEST CANOPY RESISTANCE -! GX = 1.0 -! ET(K) = ((ZSOIL(K)-ZSOIL(K-1))/ZSOIL(NROOT))*GX*ETP1A -! ET(K) = ((ZSOIL(K)-ZSOIL(K-1))/ZSOIL(NROOT))*ETP1A -! ---------------------------------------------------------------------- -! USING ROOT DISTRIBUTION AS WEIGHTING FACTOR -! ---------------------------------------------------------------------- -! ET(K) = RTDIS(K) * ETP1A -! ET(K) = ETP1A*PART(K) -! END DO - END DO -! ---------------------------------------------------------------------- - END SUBROUTINE TRANSP -! ---------------------------------------------------------------------- - - SUBROUTINE WDFCND (WDF,WCND,SMC,SMCMAX,BEXP,DKSAT,DWSAT, & - & SICEMAX) - -! ---------------------------------------------------------------------- -! SUBROUTINE WDFCND -! ---------------------------------------------------------------------- -! CALCULATE SOIL WATER DIFFUSIVITY AND SOIL HYDRAULIC CONDUCTIVITY. -! ---------------------------------------------------------------------- - IMPLICIT NONE - REAL BEXP - REAL DKSAT - REAL DWSAT - REAL EXPON - REAL FACTR1 - REAL FACTR2 - REAL SICEMAX - REAL SMC - REAL SMCMAX - REAL VKwgt - REAL WCND - -! ---------------------------------------------------------------------- -! CALC THE RATIO OF THE ACTUAL TO THE MAX PSBL SOIL H2O CONTENT -! ---------------------------------------------------------------------- - REAL WDF - FACTR1 = 0.05 / SMCMAX - -! ---------------------------------------------------------------------- -! PREP AN EXPNTL COEF AND CALC THE SOIL WATER DIFFUSIVITY -! ---------------------------------------------------------------------- - FACTR2 = SMC / SMCMAX - FACTR1 = MIN(FACTR1,FACTR2) - EXPON = BEXP + 2.0 - -! ---------------------------------------------------------------------- -! FROZEN SOIL HYDRAULIC DIFFUSIVITY. VERY SENSITIVE TO THE VERTICAL -! GRADIENT OF UNFROZEN WATER. THE LATTER GRADIENT CAN BECOME VERY -! EXTREME IN FREEZING/THAWING SITUATIONS, AND GIVEN THE RELATIVELY -! FEW AND THICK SOIL LAYERS, THIS GRADIENT SUFFERES SERIOUS -! TRUNCTION ERRORS YIELDING ERRONEOUSLY HIGH VERTICAL TRANSPORTS OF -! UNFROZEN WATER IN BOTH DIRECTIONS FROM HUGE HYDRAULIC DIFFUSIVITY. -! THEREFORE, WE FOUND WE HAD TO ARBITRARILY CONSTRAIN WDF -! -- -! VERSION D_10CM: ........ FACTR1 = 0.2/SMCMAX -! WEIGHTED APPROACH...................... PABLO GRUNMANN, 28_SEP_1999. -! ---------------------------------------------------------------------- - WDF = DWSAT * FACTR2 ** EXPON - IF (SICEMAX .gt. 0.0) THEN - VKWGT = 1./ (1. + (500.* SICEMAX)**3.) - WDF = VKWGT * WDF + (1. - VKWGT)* DWSAT * FACTR1** EXPON -! ---------------------------------------------------------------------- -! RESET THE EXPNTL COEF AND CALC THE HYDRAULIC CONDUCTIVITY -! ---------------------------------------------------------------------- - END IF - EXPON = (2.0 * BEXP) + 3.0 - WCND = DKSAT * FACTR2 ** EXPON - -! ---------------------------------------------------------------------- - END SUBROUTINE WDFCND -! ---------------------------------------------------------------------- - - SUBROUTINE SFCDIF_off (ZLM,Z0,THZ0,THLM,SFCSPD,CZIL,AKMS,AKHS) - -! ---------------------------------------------------------------------- -! SUBROUTINE SFCDIF (renamed SFCDIF_off to avoid clash with Eta PBL) -! ---------------------------------------------------------------------- -! CALCULATE SURFACE LAYER EXCHANGE COEFFICIENTS VIA ITERATIVE PROCESS. -! SEE CHEN ET AL (1997, BLM) -! ---------------------------------------------------------------------- - - IMPLICIT NONE - REAL WWST, WWST2, G, VKRM, EXCM, BETA, BTG, ELFC, WOLD, WNEW - REAL PIHF, EPSU2, EPSUST, EPSIT, EPSA, ZTMIN, ZTMAX, HPBL, & - & SQVISC - REAL RIC, RRIC, FHNEU, RFC, RFAC, ZZ, PSLMU, PSLMS, PSLHU, & - & PSLHS - REAL XX, PSPMU, YY, PSPMS, PSPHU, PSPHS, ZLM, Z0, THZ0, THLM - REAL SFCSPD, CZIL, AKMS, AKHS, ZILFC, ZU, ZT, RDZ, CXCH - REAL DTHV, DU2, BTGH, WSTAR2, USTAR, ZSLU, ZSLT, RLOGU, RLOGT - REAL RLMO, ZETALT, ZETALU, ZETAU, ZETAT, XLU4, XLT4, XU4, XT4 -!CC ......REAL ZTFC - - REAL XLU, XLT, XU, XT, PSMZ, SIMM, PSHZ, SIMH, USTARK, RLMN, & - & RLMA - - INTEGER ITRMX, ILECH, ITR - PARAMETER & - & (WWST = 1.2,WWST2 = WWST * WWST,G = 9.8,VKRM = 0.40, & - & EXCM = 0.001 & - & ,BETA = 1./270.,BTG = BETA * G,ELFC = VKRM * BTG & - & ,WOLD =.15,WNEW = 1. - WOLD,ITRMX = 05, & - & PIHF = 3.14159265/2.) - PARAMETER & - & (EPSU2 = 1.E-4,EPSUST = 0.07,EPSIT = 1.E-4,EPSA = 1.E-8 & - & ,ZTMIN = -5.,ZTMAX = 1.,HPBL = 1000.0 & - & ,SQVISC = 258.2) - PARAMETER & - & (RIC = 0.183,RRIC = 1.0/ RIC,FHNEU = 0.8,RFC = 0.191 & - & ,RFAC = RIC / (FHNEU * RFC * RFC)) - -! ---------------------------------------------------------------------- -! NOTE: THE TWO CODE BLOCKS BELOW DEFINE FUNCTIONS -! ---------------------------------------------------------------------- -! LECH'S SURFACE FUNCTIONS -! ---------------------------------------------------------------------- - PSLMU (ZZ)= -0.96* log (1.0-4.5* ZZ) - PSLMS (ZZ)= ZZ * RRIC -2.076* (1. -1./ (ZZ +1.)) - PSLHU (ZZ)= -0.96* log (1.0-4.5* ZZ) - -! ---------------------------------------------------------------------- -! PAULSON'S SURFACE FUNCTIONS -! ---------------------------------------------------------------------- - PSLHS (ZZ)= ZZ * RFAC -2.076* (1. -1./ (ZZ +1.)) - PSPMU (XX)= -2.* log ( (XX +1.)*0.5) - log ( (XX * XX +1.)*0.5) & - & +2.* ATAN (XX) & - &- PIHF - PSPMS (YY)= 5.* YY - PSPHU (XX)= -2.* log ( (XX * XX +1.)*0.5) - -! ---------------------------------------------------------------------- -! THIS ROUTINE SFCDIF CAN HANDLE BOTH OVER OPEN WATER (SEA, OCEAN) AND -! OVER SOLID SURFACE (LAND, SEA-ICE). -! ---------------------------------------------------------------------- - PSPHS (YY)= 5.* YY - -! ---------------------------------------------------------------------- -! ZTFC: RATIO OF ZOH/ZOM LESS OR EQUAL THAN 1 -! C......ZTFC=0.1 -! CZIL: CONSTANT C IN Zilitinkevich, S. S.1995,:NOTE ABOUT ZT -! ---------------------------------------------------------------------- - ILECH = 0 - -! ---------------------------------------------------------------------- - ZILFC = - CZIL * VKRM * SQVISC -! C.......ZT=Z0*ZTFC - ZU = Z0 - RDZ = 1./ ZLM - CXCH = EXCM * RDZ - DTHV = THLM - THZ0 - -! ---------------------------------------------------------------------- -! BELJARS CORRECTION OF USTAR -! ---------------------------------------------------------------------- - DU2 = MAX (SFCSPD * SFCSPD,EPSU2) -!cc If statements to avoid TANGENT LINEAR problems near zero - BTGH = BTG * HPBL - IF (BTGH * AKHS * DTHV .ne. 0.0) THEN - WSTAR2 = WWST2* ABS (BTGH * AKHS * DTHV)** (2./3.) - ELSE - WSTAR2 = 0.0 - END IF - -! ---------------------------------------------------------------------- -! ZILITINKEVITCH APPROACH FOR ZT -! ---------------------------------------------------------------------- - USTAR = MAX (SQRT (AKMS * SQRT (DU2+ WSTAR2)),EPSUST) - -! ---------------------------------------------------------------------- - ZT = EXP (ZILFC * SQRT (USTAR * Z0))* Z0 - ZSLU = ZLM + ZU -! PRINT*,'ZSLT=',ZSLT -! PRINT*,'ZLM=',ZLM -! PRINT*,'ZT=',ZT - - ZSLT = ZLM + ZT - RLOGU = log (ZSLU / ZU) - - RLOGT = log (ZSLT / ZT) -! PRINT*,'RLMO=',RLMO -! PRINT*,'ELFC=',ELFC -! PRINT*,'AKHS=',AKHS -! PRINT*,'DTHV=',DTHV -! PRINT*,'USTAR=',USTAR - - RLMO = ELFC * AKHS * DTHV / USTAR **3 -! ---------------------------------------------------------------------- -! 1./MONIN-OBUKKHOV LENGTH-SCALE -! ---------------------------------------------------------------------- - DO ITR = 1,ITRMX - ZETALT = MAX (ZSLT * RLMO,ZTMIN) - RLMO = ZETALT / ZSLT - ZETALU = ZSLU * RLMO - ZETAU = ZU * RLMO - - ZETAT = ZT * RLMO - IF (ILECH .eq. 0) THEN - IF (RLMO .lt. 0.)THEN - XLU4 = 1. -16.* ZETALU - XLT4 = 1. -16.* ZETALT - XU4 = 1. -16.* ZETAU - - XT4 = 1. -16.* ZETAT - XLU = SQRT (SQRT (XLU4)) - XLT = SQRT (SQRT (XLT4)) - XU = SQRT (SQRT (XU4)) - - XT = SQRT (SQRT (XT4)) -! PRINT*,'-----------1------------' -! PRINT*,'PSMZ=',PSMZ -! PRINT*,'PSPMU(ZETAU)=',PSPMU(ZETAU) -! PRINT*,'XU=',XU -! PRINT*,'------------------------' - PSMZ = PSPMU (XU) - SIMM = PSPMU (XLU) - PSMZ + RLOGU - PSHZ = PSPHU (XT) - SIMH = PSPHU (XLT) - PSHZ + RLOGT - ELSE - ZETALU = MIN (ZETALU,ZTMAX) - ZETALT = MIN (ZETALT,ZTMAX) -! PRINT*,'-----------2------------' -! PRINT*,'PSMZ=',PSMZ -! PRINT*,'PSPMS(ZETAU)=',PSPMS(ZETAU) -! PRINT*,'ZETAU=',ZETAU -! PRINT*,'------------------------' - PSMZ = PSPMS (ZETAU) - SIMM = PSPMS (ZETALU) - PSMZ + RLOGU - PSHZ = PSPHS (ZETAT) - SIMH = PSPHS (ZETALT) - PSHZ + RLOGT - END IF -! ---------------------------------------------------------------------- -! LECH'S FUNCTIONS -! ---------------------------------------------------------------------- - ELSE - IF (RLMO .lt. 0.)THEN -! PRINT*,'-----------3------------' -! PRINT*,'PSMZ=',PSMZ -! PRINT*,'PSLMU(ZETAU)=',PSLMU(ZETAU) -! PRINT*,'ZETAU=',ZETAU -! PRINT*,'------------------------' - PSMZ = PSLMU (ZETAU) - SIMM = PSLMU (ZETALU) - PSMZ + RLOGU - PSHZ = PSLHU (ZETAT) - SIMH = PSLHU (ZETALT) - PSHZ + RLOGT - ELSE - ZETALU = MIN (ZETALU,ZTMAX) - - ZETALT = MIN (ZETALT,ZTMAX) -! PRINT*,'-----------4------------' -! PRINT*,'PSMZ=',PSMZ -! PRINT*,'PSLMS(ZETAU)=',PSLMS(ZETAU) -! PRINT*,'ZETAU=',ZETAU -! PRINT*,'------------------------' - PSMZ = PSLMS (ZETAU) - SIMM = PSLMS (ZETALU) - PSMZ + RLOGU - PSHZ = PSLHS (ZETAT) - SIMH = PSLHS (ZETALT) - PSHZ + RLOGT - END IF -! ---------------------------------------------------------------------- -! BELJAARS CORRECTION FOR USTAR -! ---------------------------------------------------------------------- - END IF - -! ---------------------------------------------------------------------- -! ZILITINKEVITCH FIX FOR ZT -! ---------------------------------------------------------------------- - USTAR = MAX (SQRT (AKMS * SQRT (DU2+ WSTAR2)),EPSUST) - - ZT = EXP (ZILFC * SQRT (USTAR * Z0))* Z0 - ZSLT = ZLM + ZT -!----------------------------------------------------------------------- - RLOGT = log (ZSLT / ZT) - USTARK = USTAR * VKRM - AKMS = MAX (USTARK / SIMM,CXCH) -!----------------------------------------------------------------------- -! IF STATEMENTS TO AVOID TANGENT LINEAR PROBLEMS NEAR ZERO -!----------------------------------------------------------------------- - AKHS = MAX (USTARK / SIMH,CXCH) - IF (BTGH * AKHS * DTHV .ne. 0.0) THEN - WSTAR2 = WWST2* ABS (BTGH * AKHS * DTHV)** (2./3.) - ELSE - WSTAR2 = 0.0 - END IF -!----------------------------------------------------------------------- - RLMN = ELFC * AKHS * DTHV / USTAR **3 -!----------------------------------------------------------------------- -! IF(ABS((RLMN-RLMO)/RLMA).LT.EPSIT) GO TO 110 -!----------------------------------------------------------------------- - RLMA = RLMO * WOLD+ RLMN * WNEW -!----------------------------------------------------------------------- - RLMO = RLMA -! PRINT*,'----------------------------' -! PRINT*,'SFCDIF OUTPUT ! ! ! ! ! ! ! ! ! ! ! !' - -! PRINT*,'ZLM=',ZLM -! PRINT*,'Z0=',Z0 -! PRINT*,'THZ0=',THZ0 -! PRINT*,'THLM=',THLM -! PRINT*,'SFCSPD=',SFCSPD -! PRINT*,'CZIL=',CZIL -! PRINT*,'AKMS=',AKMS -! PRINT*,'AKHS=',AKHS -! PRINT*,'----------------------------' - - END DO -! ---------------------------------------------------------------------- - END SUBROUTINE SFCDIF_off -! ---------------------------------------------------------------------- - -END MODULE module_sf_noahlsm diff --git a/physics/module_sf_noahlsm_glacial_only.F90 b/physics/module_sf_noahlsm_glacial_only.F90 deleted file mode 100644 index 602b21e3b..000000000 --- a/physics/module_sf_noahlsm_glacial_only.F90 +++ /dev/null @@ -1,1285 +0,0 @@ -MODULE module_sf_noahlsm_glacial_only - - USE module_sf_noahlsm, ONLY : EMISSI_S, ROSR12 - USE module_sf_noahlsm, ONLY : LVCOEF_DATA - - PRIVATE :: ALCALC - PRIVATE :: CSNOW - PRIVATE :: HRTICE - PRIVATE :: HSTEP - PRIVATE :: PENMAN - PRIVATE :: SHFLX - PRIVATE :: SNOPAC - PRIVATE :: SNOWPACK - PRIVATE :: SNOWZ0 - PRIVATE :: SNOW_NEW - - integer, private :: iloc, jloc -!$omp threadprivate(iloc, jloc) - -CONTAINS - - SUBROUTINE SFLX_GLACIAL (IILOC,JJLOC,ISICE,FFROZP,DT,ZLVL,NSOIL,SLDPTH, & !C - & LWDN,SOLNET,SFCPRS,PRCP,SFCTMP,Q2, & !F - & TH2,Q2SAT,DQSDT2, & !I - & ALB, SNOALB,TBOT, Z0BRD, Z0, EMISSI, EMBRD, & !S - & T1,STC,SNOWH,SNEQV,ALBEDO,CH, & !H - & CP, RD, SIGMA, CPH2O, CPICE, LSUBF, & -! ---------------------------------------------------------------------- -! OUTPUTS, DIAGNOSTICS, PARAMETERS BELOW GENERALLY NOT NECESSARY WHEN -! COUPLED WITH E.G. A NWP MODEL (SUCH AS THE NOAA/NWS/NCEP MESOSCALE ETA -! MODEL). OTHER APPLICATIONS MAY REQUIRE DIFFERENT OUTPUT VARIABLES. -! ---------------------------------------------------------------------- - & ETA,SHEAT, ETA_KINEMATIC,FDOWN, & !O - & ESNOW,DEW, & !O - & ETP,SSOIL, & !O - & FLX1,FLX2,FLX3, & !O - & SNOMLT,SNCOVR, & !O - & RUNOFF1, & !O - & Q1, & !D - & SNOTIME1, & - & RIBB,errflg, errmsg) -! ---------------------------------------------------------------------- -! SUB-DRIVER FOR "Noah LSM" FAMILY OF PHYSICS SUBROUTINES FOR A -! SOIL/VEG/SNOWPACK LAND-SURFACE MODEL TO UPDATE ICE TEMPERATURE, SKIN -! TEMPERATURE, SNOWPACK WATER CONTENT, SNOWDEPTH, AND ALL TERMS OF THE -! SURFACE ENERGY BALANCE (EXCLUDING INPUT ATMOSPHERIC FORCINGS OF -! DOWNWARD RADIATION AND PRECIP) -! ---------------------------------------------------------------------- -! SFLX ARGUMENT LIST KEY: -! ---------------------------------------------------------------------- -! C CONFIGURATION INFORMATION -! F FORCING DATA -! I OTHER (INPUT) FORCING DATA -! S SURFACE CHARACTERISTICS -! H HISTORY (STATE) VARIABLES -! O OUTPUT VARIABLES -! D DIAGNOSTIC OUTPUT -! ---------------------------------------------------------------------- -! 1. CONFIGURATION INFORMATION (C): -! ---------------------------------------------------------------------- -! DT TIMESTEP (SEC) (DT SHOULD NOT EXCEED 3600 SECS, RECOMMEND -! 1800 SECS OR LESS) -! ZLVL HEIGHT (M) ABOVE GROUND OF ATMOSPHERIC FORCING VARIABLES -! NSOIL NUMBER OF SOIL LAYERS (AT LEAST 2, AND NOT GREATER THAN -! PARAMETER NSOLD SET BELOW) -! SLDPTH THE THICKNESS OF EACH SOIL LAYER (M) -! ---------------------------------------------------------------------- -! 3. FORCING DATA (F): -! ---------------------------------------------------------------------- -! LWDN LW DOWNWARD RADIATION (W M-2; POSITIVE, NOT NET LONGWAVE) -! SOLNET NET DOWNWARD SOLAR RADIATION ((W M-2; POSITIVE) -! SFCPRS PRESSURE AT HEIGHT ZLVL ABOVE GROUND (PASCALS) -! PRCP PRECIP RATE (KG M-2 S-1) (NOTE, THIS IS A RATE) -! SFCTMP AIR TEMPERATURE (K) AT HEIGHT ZLVL ABOVE GROUND -! TH2 AIR POTENTIAL TEMPERATURE (K) AT HEIGHT ZLVL ABOVE GROUND -! Q2 MIXING RATIO AT HEIGHT ZLVL ABOVE GROUND (KG KG-1) -! FFROZP FRACTION OF FROZEN PRECIPITATION -! ---------------------------------------------------------------------- -! 4. OTHER FORCING (INPUT) DATA (I): -! ---------------------------------------------------------------------- -! Q2SAT SAT SPECIFIC HUMIDITY AT HEIGHT ZLVL ABOVE GROUND (KG KG-1) -! DQSDT2 SLOPE OF SAT SPECIFIC HUMIDITY CURVE AT T=SFCTMP -! (KG KG-1 K-1) -! ---------------------------------------------------------------------- -! 5. CANOPY/SOIL CHARACTERISTICS (S): -! ---------------------------------------------------------------------- -! ALB BACKROUND SNOW-FREE SURFACE ALBEDO (FRACTION), FOR JULIAN -! DAY OF YEAR (USUALLY FROM TEMPORAL INTERPOLATION OF -! MONTHLY MEAN VALUES' CALLING PROG MAY OR MAY NOT -! INCLUDE DIURNAL SUN ANGLE EFFECT) -! SNOALB UPPER BOUND ON MAXIMUM ALBEDO OVER DEEP SNOW (E.G. FROM -! ROBINSON AND KUKLA, 1985, J. CLIM. & APPL. METEOR.) -! TBOT BOTTOM SOIL TEMPERATURE (LOCAL YEARLY-MEAN SFC AIR -! TEMPERATURE) -! Z0BRD Background fixed roughness length (M) -! Z0 Time varying roughness length (M) as function of snow depth -! EMBRD Background surface emissivity (between 0 and 1) -! EMISSI Surface emissivity (between 0 and 1) -! ---------------------------------------------------------------------- -! 6. HISTORY (STATE) VARIABLES (H): -! ---------------------------------------------------------------------- -! T1 GROUND/CANOPY/SNOWPACK) EFFECTIVE SKIN TEMPERATURE (K) -! STC(NSOIL) SOIL TEMP (K) -! SNOWH ACTUAL SNOW DEPTH (M) -! SNEQV LIQUID WATER-EQUIVALENT SNOW DEPTH (M) -! NOTE: SNOW DENSITY = SNEQV/SNOWH -! ALBEDO SURFACE ALBEDO INCLUDING SNOW EFFECT (UNITLESS FRACTION) -! =SNOW-FREE ALBEDO (ALB) WHEN SNEQV=0, OR -! =FCT(MSNOALB,ALB,SHDFAC,SHDMIN) WHEN SNEQV>0 -! CH SURFACE EXCHANGE COEFFICIENT FOR HEAT AND MOISTURE -! (M S-1); NOTE: CH IS TECHNICALLY A CONDUCTANCE SINCE -! IT HAS BEEN MULTIPLIED BY WIND SPEED. -! ---------------------------------------------------------------------- -! 7. OUTPUT (O): -! ---------------------------------------------------------------------- -! OUTPUT VARIABLES NECESSARY FOR A COUPLED NUMERICAL WEATHER PREDICTION -! MODEL, E.G. NOAA/NWS/NCEP MESOSCALE ETA MODEL. FOR THIS APPLICATION, -! THE REMAINING OUTPUT/DIAGNOSTIC/PARAMETER BLOCKS BELOW ARE NOT -! NECESSARY. OTHER APPLICATIONS MAY REQUIRE DIFFERENT OUTPUT VARIABLES. -! ETA ACTUAL LATENT HEAT FLUX (W m-2: NEGATIVE, IF UP FROM -! SURFACE) -! ETA_KINEMATIC atctual latent heat flux in Kg m-2 s-1 -! SHEAT SENSIBLE HEAT FLUX (W M-2: NEGATIVE, IF UPWARD FROM -! SURFACE) -! FDOWN Radiation forcing at the surface (W m-2) = SOLDN*(1-alb)+LWDN -! ---------------------------------------------------------------------- -! ESNOW SUBLIMATION FROM (OR DEPOSITION TO IF <0) SNOWPACK -! (W m-2) -! DEW DEWFALL (OR FROSTFALL FOR T<273.15) (M) -! ---------------------------------------------------------------------- -! ETP POTENTIAL EVAPORATION (W m-2) -! SSOIL SOIL HEAT FLUX (W M-2: NEGATIVE IF DOWNWARD FROM SURFACE) -! ---------------------------------------------------------------------- -! FLX1 PRECIP-SNOW SFC (W M-2) -! FLX2 FREEZING RAIN LATENT HEAT FLUX (W M-2) -! FLX3 PHASE-CHANGE HEAT FLUX FROM SNOWMELT (W M-2) -! ---------------------------------------------------------------------- -! SNOMLT SNOW MELT (M) (WATER EQUIVALENT) -! SNCOVR FRACTIONAL SNOW COVER (UNITLESS FRACTION, 0-1) -! ---------------------------------------------------------------------- -! RUNOFF1 SURFACE RUNOFF (M S-1), NOT INFILTRATING THE SURFACE -! ---------------------------------------------------------------------- -! 8. DIAGNOSTIC OUTPUT (D): -! ---------------------------------------------------------------------- -! Q1 Effective mixing ratio at surface (kg kg-1), used for -! diagnosing the mixing ratio at 2 meter for coupled model -! Documentation for SNOTIME1 and SNOABL2 ????? -! What categories of arguments do these variables fall into ???? -! Documentation for RIBB ????? -! What category of argument does RIBB fall into ????? -! ---------------------------------------------------------------------- - - IMPLICIT NONE -! ---------------------------------------------------------------------- - integer, intent(in) :: iiloc, jjloc - INTEGER, INTENT(IN) :: ISICE -! ---------------------------------------------------------------------- - LOGICAL :: FRZGRA, SNOWNG - -! ---------------------------------------------------------------------- -! 1. CONFIGURATION INFORMATION (C): -! ---------------------------------------------------------------------- - INTEGER, INTENT(IN) :: NSOIL - INTEGER :: KZ - -! ---------------------------------------------------------------------- -! 2. LOGICAL: -! ---------------------------------------------------------------------- - - REAL, INTENT(IN) :: DT,DQSDT2,LWDN,PRCP, & - & Q2,Q2SAT,SFCPRS,SFCTMP, SNOALB, & - & SOLNET,TBOT,TH2,ZLVL,FFROZP - REAL, INTENT(IN) :: CP, RD, SIGMA, CPH2O, CPICE, LSUBF - REAL, INTENT(OUT) :: EMBRD, ALBEDO - REAL, INTENT(INOUT):: CH,SNEQV,SNCOVR,SNOWH,T1,Z0BRD,EMISSI,ALB - REAL, INTENT(INOUT):: SNOTIME1 - REAL, INTENT(INOUT):: RIBB - REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SLDPTH - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: STC - REAL, DIMENSION(1:NSOIL) :: ZSOIL - - REAL,INTENT(OUT) :: ETA_KINEMATIC,DEW,ESNOW,ETA, & - & ETP,FLX1,FLX2,FLX3,SHEAT,RUNOFF1, & - & SSOIL,SNOMLT,FDOWN,Q1 - REAL :: DF1,DSOIL,DTOT,FRCSNO,FRCSOI, & - & PRCP1,RCH,RR,RSNOW,SNDENS,SNCOND,SN_NEW, & - & T1V,T24,T2V,TH2V,TSNOW,Z0,PRCPF,RHO - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - -! ---------------------------------------------------------------------- -! DECLARATIONS - PARAMETERS -! ---------------------------------------------------------------------- - REAL, PARAMETER :: TFREEZ = 273.15 - REAL, PARAMETER :: LVH2O = 2.501E+6 - REAL, PARAMETER :: LSUBS = 2.83E+6 - REAL, PARAMETER :: R = 287.04 - - errmsg = '' - errflg = 0 - -! ---------------------------------------------------------------------- - iloc = iiloc - jloc = jjloc -! ---------------------------------------------------------------------- - ZSOIL (1) = - SLDPTH (1) - DO KZ = 2,NSOIL - ZSOIL (KZ) = - SLDPTH (KZ) + ZSOIL (KZ -1) - END DO - -! ---------------------------------------------------------------------- -! IF S.W.E. (SNEQV) BELOW THRESHOLD LOWER BOUND (0.10 M FOR GLACIAL -! ICE), THEN SET AT LOWER BOUND -! ---------------------------------------------------------------------- - IF ( SNEQV < 0.10 ) THEN - SNEQV = 0.10 - SNOWH = 0.50 - ENDIF -! ---------------------------------------------------------------------- -! IF INPUT SNOWPACK IS NONZERO, THEN COMPUTE SNOW DENSITY "SNDENS" AND -! SNOW THERMAL CONDUCTIVITY "SNCOND" -! ---------------------------------------------------------------------- - SNDENS = SNEQV / SNOWH - IF(SNDENS > 1.0) THEN - errmsg = 'Physical snow depth is less than snow water equiv.' - errflg = 1 - return - ENDIF - - CALL CSNOW (SNCOND,SNDENS) -! ---------------------------------------------------------------------- -! DETERMINE IF IT'S PRECIPITATING AND WHAT KIND OF PRECIP IT IS. -! IF IT'S PRCPING AND THE AIR TEMP IS COLDER THAN 0 C, IT'S SNOWING! -! IF IT'S PRCPING AND THE AIR TEMP IS WARMER THAN 0 C, BUT THE GRND -! TEMP IS COLDER THAN 0 C, FREEZING RAIN IS PRESUMED TO BE FALLING. -! ---------------------------------------------------------------------- - - SNOWNG = .FALSE. - FRZGRA = .FALSE. - IF (PRCP > 0.0) THEN -! ---------------------------------------------------------------------- -! Snow defined when fraction of frozen precip (FFROZP) > 0.5, -! passed in from model microphysics. -! ---------------------------------------------------------------------- - IF (FFROZP .GT. 0.5) THEN - SNOWNG = .TRUE. - ELSE - IF (T1 <= TFREEZ) FRZGRA = .TRUE. - END IF - END IF -! ---------------------------------------------------------------------- -! IF EITHER PRCP FLAG IS SET, DETERMINE NEW SNOWFALL (CONVERTING PRCP -! RATE FROM KG M-2 S-1 TO A LIQUID EQUIV SNOW DEPTH IN METERS) AND ADD -! IT TO THE EXISTING SNOWPACK. -! NOTE THAT SINCE ALL PRECIP IS ADDED TO SNOWPACK, NO PRECIP INFILTRATES -! INTO THE SOIL SO THAT PRCP1 IS SET TO ZERO. -! ---------------------------------------------------------------------- - IF ( (SNOWNG) .OR. (FRZGRA) ) THEN - SN_NEW = PRCP * DT * 0.001 - SNEQV = SNEQV + SN_NEW - PRCPF = 0.0 - -! ---------------------------------------------------------------------- -! UPDATE SNOW DENSITY BASED ON NEW SNOWFALL, USING OLD AND NEW SNOW. -! UPDATE SNOW THERMAL CONDUCTIVITY -! ---------------------------------------------------------------------- - CALL SNOW_NEW (SFCTMP,SN_NEW,SNOWH,SNDENS) - -! ---------------------------------------------------------------------- -! kmh 09/04/2006 set Snow Density at 0.2 g/cm**3 -! for "cold permanent ice" or new "dry" snow -! if soil temperature less than 268.15 K, treat as typical -! Antarctic/Greenland snow firn -! ---------------------------------------------------------------------- - IF ( SNCOVR .GT. 0.99 ) THEN - IF ( STC(1) .LT. (TFREEZ - 5.) ) SNDENS = 0.2 - IF ( SNOWNG .AND. (T1.LT.273.) .AND. (SFCTMP.LT.273.) ) SNDENS=0.2 - ENDIF - - CALL CSNOW (SNCOND,SNDENS) - -! ---------------------------------------------------------------------- -! PRECIP IS LIQUID (RAIN), HENCE SAVE IN THE PRECIP VARIABLE THAT -! LATER CAN WHOLELY OR PARTIALLY INFILTRATE THE SOIL -! ---------------------------------------------------------------------- - ELSE - PRCPF = PRCP - ENDIF - -! ---------------------------------------------------------------------- -! DETERMINE SNOW FRACTIONAL COVERAGE. -! KWM: Set SNCOVR to 1.0 because SNUP is set small in VEGPARM.TBL, -! and SNEQV is at least 0.1 (as set above) -! ---------------------------------------------------------------------- - SNCOVR = 1.0 - -! ---------------------------------------------------------------------- -! DETERMINE SURFACE ALBEDO MODIFICATION DUE TO SNOWDEPTH STATE. -! ---------------------------------------------------------------------- - - CALL ALCALC (ALB,SNOALB,EMBRD,T1,ALBEDO,EMISSI, & - & DT,SNOWNG,SNOTIME1) - -! ---------------------------------------------------------------------- -! THERMAL CONDUCTIVITY -! ---------------------------------------------------------------------- - DF1 = SNCOND - - DSOIL = - (0.5 * ZSOIL (1)) - DTOT = SNOWH + DSOIL - FRCSNO = SNOWH / DTOT - -! 1. HARMONIC MEAN (SERIES FLOW) -! DF1 = (SNCOND*DF1)/(FRCSOI*SNCOND+FRCSNO*DF1) - FRCSOI = DSOIL / DTOT - -! 3. GEOMETRIC MEAN (INTERMEDIATE BETWEEN HARMONIC AND ARITHMETIC MEAN) -! DF1 = (SNCOND**FRCSNO)*(DF1**FRCSOI) - DF1 = FRCSNO * SNCOND + FRCSOI * DF1 - -! ---------------------------------------------------------------------- -! CALCULATE SUBSURFACE HEAT FLUX, SSOIL, FROM FINAL THERMAL DIFFUSIVITY -! OF SURFACE MEDIUMS, DF1 ABOVE, AND SKIN TEMPERATURE AND TOP -! MID-LAYER SOIL TEMPERATURE -! ---------------------------------------------------------------------- - IF ( DTOT .GT. 2.*DSOIL ) then - DTOT = 2.*DSOIL - ENDIF - SSOIL = DF1 * ( T1 - STC(1) ) / DTOT - -! ---------------------------------------------------------------------- -! DETERMINE SURFACE ROUGHNESS OVER SNOWPACK USING SNOW CONDITION FROM -! THE PREVIOUS TIMESTEP. -! ---------------------------------------------------------------------- - - CALL SNOWZ0 (Z0,Z0BRD,SNOWH) - -! ---------------------------------------------------------------------- -! CALCULATE TOTAL DOWNWARD RADIATION (SOLAR PLUS LONGWAVE) NEEDED IN -! PENMAN EP SUBROUTINE THAT FOLLOWS -! ---------------------------------------------------------------------- - - FDOWN = SOLNET + LWDN - -! ---------------------------------------------------------------------- -! CALC VIRTUAL TEMPS AND VIRTUAL POTENTIAL TEMPS NEEDED BY SUBROUTINES -! PENMAN. -! ---------------------------------------------------------------------- - - T2V = SFCTMP * (1.0+ 0.61 * Q2 ) - RHO = SFCPRS / (RD * T2V) - RCH = RHO * 1004.6 * CH - T24 = SFCTMP * SFCTMP * SFCTMP * SFCTMP - -! ---------------------------------------------------------------------- -! CALL PENMAN SUBROUTINE TO CALCULATE POTENTIAL EVAPORATION (ETP), AND -! OTHER PARTIAL PRODUCTS AND SUMS SAVE IN COMMON/RITE FOR LATER -! CALCULATIONS. -! ---------------------------------------------------------------------- - - ! PENMAN returns ETP, FLX2, and RR - CALL PENMAN (SFCTMP,SFCPRS,CH,TH2,PRCP,FDOWN,T24,SSOIL, & - & Q2,Q2SAT,ETP,RCH,RR,SNOWNG,FRZGRA, & - & DQSDT2,FLX2,EMISSI,T1,SIGMA,CPH2O,CPICE,LSUBF) - - CALL SNOPAC (ETP,ETA,PRCP,PRCPF,SNOWNG,NSOIL,DT,DF1, & - & Q2,T1,SFCTMP,T24,TH2,FDOWN,SSOIL,STC, & - & SFCPRS,RCH,RR,SNEQV,SNDENS,SNOWH,ZSOIL,TBOT, & - & SNOMLT,DEW,FLX1,FLX2,FLX3,ESNOW,EMISSI,RIBB, & - & SIGMA,CPH2O,CPICE,LSUBF) - -! ETA_KINEMATIC = ESNOW - ETA_KINEMATIC = ETP - -! ---------------------------------------------------------------------- -! Effective mixing ratio at grnd level (skin) -! ---------------------------------------------------------------------- - Q1=Q2+ETA_KINEMATIC*CP/RCH - -! ---------------------------------------------------------------------- -! DETERMINE SENSIBLE HEAT (H) IN ENERGY UNITS (W M-2) -! ---------------------------------------------------------------------- - SHEAT = - (CH * CP * SFCPRS)/ (R * T2V) * ( TH2- T1 ) - -! ---------------------------------------------------------------------- -! CONVERT EVAP TERMS FROM KINEMATIC (KG M-2 S-1) TO ENERGY UNITS (W M-2) -! ---------------------------------------------------------------------- - ESNOW = ESNOW * LSUBS - ETP = ETP * LSUBS - IF (ETP .GT. 0.) THEN - ETA = ESNOW - ELSE - ETA = ETP - ENDIF - -! ---------------------------------------------------------------------- -! CONVERT THE SIGN OF SOIL HEAT FLUX SO THAT: -! SSOIL>0: WARM THE SURFACE (NIGHT TIME) -! SSOIL<0: COOL THE SURFACE (DAY TIME) -! ---------------------------------------------------------------------- - SSOIL = -1.0* SSOIL - -! ---------------------------------------------------------------------- -! FOR THE CASE OF GLACIAL-ICE, ADD ANY SNOWMELT DIRECTLY TO SURFACE -! RUNOFF (RUNOFF1) SINCE THERE IS NO SOIL MEDIUM -! ---------------------------------------------------------------------- - RUNOFF1 = SNOMLT / DT - -! ---------------------------------------------------------------------- - END SUBROUTINE SFLX_GLACIAL -! ---------------------------------------------------------------------- - - SUBROUTINE ALCALC (ALB,SNOALB,EMBRD,TSNOW,ALBEDO,EMISSI, & - & DT,SNOWNG,SNOTIME1) - -! ---------------------------------------------------------------------- -! CALCULATE ALBEDO INCLUDING SNOW EFFECT (0 -> 1) -! ALB SNOWFREE ALBEDO -! SNOALB MAXIMUM (DEEP) SNOW ALBEDO -! ALBEDO SURFACE ALBEDO INCLUDING SNOW EFFECT -! TSNOW SNOW SURFACE TEMPERATURE (K) -! ---------------------------------------------------------------------- - IMPLICIT NONE - -! ---------------------------------------------------------------------- -! SNOALB IS ARGUMENT REPRESENTING MAXIMUM ALBEDO OVER DEEP SNOW, -! AS PASSED INTO SFLX, AND ADAPTED FROM THE SATELLITE-BASED MAXIMUM -! SNOW ALBEDO FIELDS PROVIDED BY D. ROBINSON AND G. KUKLA -! (1985, JCAM, VOL 24, 402-411) -! ---------------------------------------------------------------------- - REAL, INTENT(IN) :: ALB, SNOALB, EMBRD, TSNOW - REAL, INTENT(IN) :: DT - LOGICAL, INTENT(IN) :: SNOWNG - REAL, INTENT(INOUT) :: SNOTIME1 - REAL, INTENT(OUT) :: ALBEDO, EMISSI - REAL :: SNOALB2 - REAL :: TM,SNOALB1 - REAL, PARAMETER :: SNACCA=0.94,SNACCB=0.58,SNTHWA=0.82,SNTHWB=0.46 -! turn off vegetation effect -! ALBEDO = ALB + (1.0- (SHDFAC - SHDMIN))* SNCOVR * (SNOALB - ALB) -! ALBEDO = (1.0-SNCOVR)*ALB + SNCOVR*SNOALB !this is equivalent to below - ALBEDO = ALB + (SNOALB-ALB) - EMISSI = EMBRD + (EMISSI_S - EMBRD) - -! BASE FORMULATION (DICKINSON ET AL., 1986, COGLEY ET AL., 1990) -! IF (TSNOW.LE.263.16) THEN -! ALBEDO=SNOALB -! ELSE -! IF (TSNOW.LT.273.16) THEN -! TM=0.1*(TSNOW-263.16) -! SNOALB1=0.5*((0.9-0.2*(TM**3))+(0.8-0.16*(TM**3))) -! ELSE -! SNOALB1=0.67 -! IF(SNCOVR.GT.0.95) SNOALB1= 0.6 -! SNOALB1 = ALB + SNCOVR*(SNOALB-ALB) -! ENDIF -! ENDIF -! ALBEDO = ALB + SNCOVR*(SNOALB1-ALB) - -! ISBA FORMULATION (VERSEGHY, 1991; BAKER ET AL., 1990) -! SNOALB1 = SNOALB+COEF*(0.85-SNOALB) -! SNOALB2=SNOALB1 -!!m LSTSNW=LSTSNW+1 -! SNOTIME1 = SNOTIME1 + DT -! IF (SNOWNG) THEN -! SNOALB2=SNOALB -!!m LSTSNW=0 -! SNOTIME1 = 0.0 -! ELSE -! IF (TSNOW.LT.273.16) THEN -!! SNOALB2=SNOALB-0.008*LSTSNW*DT/86400 -!!m SNOALB2=SNOALB-0.008*SNOTIME1/86400 -! SNOALB2=(SNOALB2-0.65)*EXP(-0.05*DT/3600)+0.65 -!! SNOALB2=(ALBEDO-0.65)*EXP(-0.01*DT/3600)+0.65 -! ELSE -! SNOALB2=(SNOALB2-0.5)*EXP(-0.0005*DT/3600)+0.5 -!! SNOALB2=(SNOALB-0.5)*EXP(-0.24*LSTSNW*DT/86400)+0.5 -!!m SNOALB2=(SNOALB-0.5)*EXP(-0.24*SNOTIME1/86400)+0.5 -! ENDIF -! ENDIF -! -!! print*,'SNOALB2',SNOALB2,'ALBEDO',ALBEDO,'DT',DT -! ALBEDO = ALB + SNCOVR*(SNOALB2-ALB) -! IF (ALBEDO .GT. SNOALB2) ALBEDO=SNOALB2 -!!m LSTSNW1=LSTSNW -!! SNOTIME = SNOTIME1 - -! formulation by Livneh -! ---------------------------------------------------------------------- -! SNOALB IS CONSIDERED AS THE MAXIMUM SNOW ALBEDO FOR NEW SNOW, AT -! A VALUE OF 85%. SNOW ALBEDO CURVE DEFAULTS ARE FROM BRAS P.263. SHOULD -! NOT BE CHANGED EXCEPT FOR SERIOUS PROBLEMS WITH SNOW MELT. -! TO IMPLEMENT ACCUMULATIN PARAMETERS, SNACCA AND SNACCB, ASSERT THAT IT -! IS INDEED ACCUMULATION SEASON. I.E. THAT SNOW SURFACE TEMP IS BELOW -! ZERO AND THE DATE FALLS BETWEEN OCTOBER AND FEBRUARY -! ---------------------------------------------------------------------- - SNOALB1 = SNOALB+LVCOEF_DATA*(0.85-SNOALB) - SNOALB2=SNOALB1 -! ---------------- Initial LSTSNW -------------------------------------- - IF (SNOWNG) THEN - SNOTIME1 = 0. - ELSE - SNOTIME1=SNOTIME1+DT -! IF (TSNOW.LT.273.16) THEN - SNOALB2=SNOALB1*(SNACCA**((SNOTIME1/86400.0)**SNACCB)) -! ELSE -! SNOALB2 =SNOALB1*(SNTHWA**((SNOTIME1/86400.0)**SNTHWB)) -! ENDIF - ENDIF - - SNOALB2 = MAX ( SNOALB2, ALB ) - ALBEDO = ALB + (SNOALB2-ALB) - IF (ALBEDO .GT. SNOALB2) ALBEDO=SNOALB2 - -! IF (TSNOW.LT.273.16) THEN -! ALBEDO=SNOALB-0.008*DT/86400 -! ELSE -! ALBEDO=(SNOALB-0.5)*EXP(-0.24*DT/86400)+0.5 -! ENDIF - -! IF (ALBEDO > SNOALB) ALBEDO = SNOALB - -! ---------------------------------------------------------------------- - END SUBROUTINE ALCALC -! ---------------------------------------------------------------------- - - SUBROUTINE CSNOW (SNCOND,DSNOW) - -! ---------------------------------------------------------------------- -! CALCULATE SNOW TERMAL CONDUCTIVITY -! ---------------------------------------------------------------------- - IMPLICIT NONE - REAL, INTENT(IN) :: DSNOW - REAL, INTENT(OUT) :: SNCOND - REAL :: C - REAL, PARAMETER :: UNIT = 0.11631 - -! ---------------------------------------------------------------------- -! SNCOND IN UNITS OF CAL/(CM*HR*C), RETURNED IN W/(M*C) -! CSNOW IN UNITS OF CAL/(CM*HR*C), RETURNED IN W/(M*C) -! BASIC VERSION IS DYACHKOVA EQUATION (1960), FOR RANGE 0.1-0.4 -! ---------------------------------------------------------------------- - C = 0.328*10** (2.25* DSNOW) -! CSNOW=UNIT*C - -! ---------------------------------------------------------------------- -! DE VAUX EQUATION (1933), IN RANGE 0.1-0.6 -! ---------------------------------------------------------------------- -! SNCOND=0.0293*(1.+100.*DSNOW**2) -! CSNOW=0.0293*(1.+100.*DSNOW**2) - -! ---------------------------------------------------------------------- -! E. ANDERSEN FROM FLERCHINGER -! ---------------------------------------------------------------------- -! SNCOND=0.021+2.51*DSNOW**2 -! CSNOW=0.021+2.51*DSNOW**2 - -! SNCOND = UNIT * C -! double snow thermal conductivity - SNCOND = 2.0 * UNIT * C - -! ---------------------------------------------------------------------- - END SUBROUTINE CSNOW -! ---------------------------------------------------------------------- - - SUBROUTINE HRTICE (RHSTS,STC,TBOT,NSOIL,ZSOIL,YY,ZZ1,DF1,AI,BI,CI) - -! ---------------------------------------------------------------------- -! CALCULATE THE RIGHT HAND SIDE OF THE TIME TENDENCY TERM OF THE SOIL -! THERMAL DIFFUSION EQUATION IN THE CASE OF SEA-ICE (ICE=1) OR GLACIAL -! ICE (ICE=-1). COMPUTE (PREPARE) THE MATRIX COEFFICIENTS FOR THE -! TRI-DIAGONAL MATRIX OF THE IMPLICIT TIME SCHEME. -! -! (NOTE: THIS SUBROUTINE ONLY CALLED FOR SEA-ICE OR GLACIAL ICE, BUT -! NOT FOR NON-GLACIAL LAND (ICE = 0). -! ---------------------------------------------------------------------- - IMPLICIT NONE - - - INTEGER, INTENT(IN) :: NSOIL - REAL, INTENT(IN) :: DF1,YY,ZZ1 - REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: AI, BI,CI - REAL, DIMENSION(1:NSOIL), INTENT(IN) :: STC, ZSOIL - REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: RHSTS - REAL, INTENT(IN) :: TBOT - INTEGER :: K - REAL :: DDZ,DDZ2,DENOM,DTSDZ,DTSDZ2,SSOIL,HCPCT - REAL :: DF1K,DF1N - REAL :: ZMD - REAL, PARAMETER :: ZBOT = -25.0 - -! ---------------------------------------------------------------------- -! SET A NOMINAL UNIVERSAL VALUE OF GLACIAL-ICE SPECIFIC HEAT CAPACITY, -! HCPCT = 2100.0*900.0 = 1.89000E+6 (SOURCE: BOB GRUMBINE, 2005) -! TBOT PASSED IN AS ARGUMENT, VALUE FROM GLOBAL DATA SET - ! - ! A least-squares fit for the four points provided by - ! Keith Hines for the Yen (1981) values for Antarctic - ! snow firn. - ! - HCPCT = 1.E6 * (0.8194 - 0.1309*0.5*ZSOIL(1)) - DF1K = DF1 - -! ---------------------------------------------------------------------- -! THE INPUT ARGUMENT DF1 IS A UNIVERSALLY CONSTANT VALUE OF SEA-ICE -! THERMAL DIFFUSIVITY, SET IN ROUTINE SNOPAC AS DF1 = 2.2. -! ---------------------------------------------------------------------- -! SET ICE PACK DEPTH. USE TBOT AS ICE PACK LOWER BOUNDARY TEMPERATURE -! (THAT OF UNFROZEN SEA WATER AT BOTTOM OF SEA ICE PACK). ASSUME ICE -! PACK IS OF N=NSOIL LAYERS SPANNING A UNIFORM CONSTANT ICE PACK -! THICKNESS AS DEFINED BY ZSOIL(NSOIL) IN ROUTINE SFLX. -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! CALC THE MATRIX COEFFICIENTS AI, BI, AND CI FOR THE TOP LAYER -! ---------------------------------------------------------------------- - DDZ = 1.0 / ( -0.5 * ZSOIL (2) ) - AI (1) = 0.0 - CI (1) = (DF1 * DDZ) / (ZSOIL (1) * HCPCT) - -! ---------------------------------------------------------------------- -! CALC THE VERTICAL SOIL TEMP GRADIENT BTWN THE TOP AND 2ND SOIL LAYERS. -! RECALC/ADJUST THE SOIL HEAT FLUX. USE THE GRADIENT AND FLUX TO CALC -! RHSTS FOR THE TOP SOIL LAYER. -! ---------------------------------------------------------------------- - BI (1) = - CI (1) + DF1/ (0.5 * ZSOIL (1) * ZSOIL (1) * HCPCT * & - & ZZ1) - DTSDZ = ( STC (1) - STC (2) ) / ( -0.5 * ZSOIL (2) ) - SSOIL = DF1 * ( STC (1) - YY ) / ( 0.5 * ZSOIL (1) * ZZ1 ) - -! ---------------------------------------------------------------------- -! INITIALIZE DDZ2 -! ---------------------------------------------------------------------- - RHSTS (1) = ( DF1 * DTSDZ - SSOIL ) / ( ZSOIL (1) * HCPCT ) - -! ---------------------------------------------------------------------- -! LOOP THRU THE REMAINING SOIL LAYERS, REPEATING THE ABOVE PROCESS -! ---------------------------------------------------------------------- - DDZ2 = 0.0 - DF1K = DF1 - DF1N = DF1 - DO K = 2,NSOIL - - ZMD = 0.5 * (ZSOIL(K)+ZSOIL(K-1)) - ! For the land-ice case -! kmh 09/03/2006 use Yen (1981)'s values for Antarctic snow firn -! IF ( K .eq. 2 ) HCPCT = 0.855108E6 -! IF ( K .eq. 3 ) HCPCT = 0.922906E6 -! IF ( K .eq. 4 ) HCPCT = 1.009986E6 - - ! Least squares fit to the four points supplied by Keith Hines - ! from Yen (1981) for Antarctic snow firn. Not optimal, but - ! probably better than just a constant. - HCPCT = 1.E6 * ( 0.8194 - 0.1309*ZMD ) - -! IF ( K .eq. 2 ) DF1N = 0.345356 -! IF ( K .eq. 3 ) DF1N = 0.398777 -! IF ( K .eq. 4 ) DF1N = 0.472653 - - ! Least squares fit to the three points supplied by Keith Hines - ! from Yen (1981) for Antarctic snow firn. Not optimal, but - ! probably better than just a constant. - DF1N = 0.32333 - ( 0.10073 * ZMD ) -! ---------------------------------------------------------------------- -! CALC THE VERTICAL SOIL TEMP GRADIENT THRU THIS LAYER. -! ---------------------------------------------------------------------- - IF (K /= NSOIL) THEN - DENOM = 0.5 * ( ZSOIL (K -1) - ZSOIL (K +1) ) - -! ---------------------------------------------------------------------- -! CALC THE MATRIX COEF, CI, AFTER CALC'NG ITS PARTIAL PRODUCT. -! ---------------------------------------------------------------------- - DTSDZ2 = ( STC (K) - STC (K +1) ) / DENOM - DDZ2 = 2. / (ZSOIL (K -1) - ZSOIL (K +1)) - CI (K) = - DF1N * DDZ2 / ( (ZSOIL (K -1) - ZSOIL (K))*HCPCT) - -! ---------------------------------------------------------------------- -! CALC THE VERTICAL SOIL TEMP GRADIENT THRU THE LOWEST LAYER. -! ---------------------------------------------------------------------- - ELSE - -! ---------------------------------------------------------------------- -! SET MATRIX COEF, CI TO ZERO. -! ---------------------------------------------------------------------- - DTSDZ2 = (STC (K) - TBOT)/ (.5 * (ZSOIL (K -1) + ZSOIL (K)) & - & - ZBOT) - CI (K) = 0. -! ---------------------------------------------------------------------- -! CALC RHSTS FOR THIS LAYER AFTER CALC'NG A PARTIAL PRODUCT. -! ---------------------------------------------------------------------- - END IF - DENOM = ( ZSOIL (K) - ZSOIL (K -1) ) * HCPCT - -! ---------------------------------------------------------------------- -! CALC MATRIX COEFS, AI, AND BI FOR THIS LAYER. -! ---------------------------------------------------------------------- - RHSTS (K) = ( DF1N * DTSDZ2- DF1K * DTSDZ ) / DENOM - AI (K) = - DF1K * DDZ / ( (ZSOIL (K -1) - ZSOIL (K)) * HCPCT) - -! ---------------------------------------------------------------------- -! RESET VALUES OF DTSDZ AND DDZ FOR LOOP TO NEXT SOIL LYR. -! ---------------------------------------------------------------------- - BI (K) = - (AI (K) + CI (K)) - DF1K = DF1N - DTSDZ = DTSDZ2 - DDZ = DDZ2 - END DO -! ---------------------------------------------------------------------- - END SUBROUTINE HRTICE -! ---------------------------------------------------------------------- - - SUBROUTINE HSTEP (STCOUT,STCIN,RHSTS,DT,NSOIL,AI,BI,CI) - -! ---------------------------------------------------------------------- -! CALCULATE/UPDATE THE SOIL TEMPERATURE FIELD. -! ---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER, INTENT(IN) :: NSOIL - REAL, DIMENSION(1:NSOIL), INTENT(IN) :: STCIN - REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: STCOUT - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: RHSTS - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: AI,BI,CI - REAL, DIMENSION(1:NSOIL) :: RHSTSin - REAL, DIMENSION(1:NSOIL) :: CIin - REAL :: DT - INTEGER :: K - -! ---------------------------------------------------------------------- -! CREATE FINITE DIFFERENCE VALUES FOR USE IN ROSR12 ROUTINE -! ---------------------------------------------------------------------- - DO K = 1,NSOIL - RHSTS (K) = RHSTS (K) * DT - AI (K) = AI (K) * DT - BI (K) = 1. + BI (K) * DT - CI (K) = CI (K) * DT - END DO -! ---------------------------------------------------------------------- -! COPY VALUES FOR INPUT VARIABLES BEFORE CALL TO ROSR12 -! ---------------------------------------------------------------------- - DO K = 1,NSOIL - RHSTSin (K) = RHSTS (K) - END DO - DO K = 1,NSOIL - CIin (K) = CI (K) - END DO -! ---------------------------------------------------------------------- -! SOLVE THE TRI-DIAGONAL MATRIX EQUATION -! ---------------------------------------------------------------------- - CALL ROSR12 (CI,AI,BI,CIin,RHSTSin,RHSTS,NSOIL) -! ---------------------------------------------------------------------- -! CALC/UPDATE THE SOIL TEMPS USING MATRIX SOLUTION -! ---------------------------------------------------------------------- - DO K = 1,NSOIL - STCOUT (K) = STCIN (K) + CI (K) - END DO -! ---------------------------------------------------------------------- - END SUBROUTINE HSTEP -! ---------------------------------------------------------------------- - - SUBROUTINE PENMAN (SFCTMP,SFCPRS,CH,TH2,PRCP,FDOWN,T24,SSOIL, & - & Q2,Q2SAT,ETP,RCH,RR,SNOWNG,FRZGRA, & - & DQSDT2,FLX2,EMISSI,T1,SIGMA,CPH2O,CPICE,LSUBF) - -! ---------------------------------------------------------------------- -! CALCULATE POTENTIAL EVAPORATION FOR THE CURRENT POINT. VARIOUS -! PARTIAL SUMS/PRODUCTS ARE ALSO CALCULATED AND PASSED BACK TO THE -! CALLING ROUTINE FOR LATER USE. -! ---------------------------------------------------------------------- - IMPLICIT NONE - LOGICAL, INTENT(IN) :: SNOWNG, FRZGRA - REAL, INTENT(IN) :: CH, DQSDT2,FDOWN,PRCP,Q2,Q2SAT,SSOIL,SFCPRS, & - & SFCTMP,TH2,EMISSI,T1,RCH,T24 - REAL, INTENT(IN) :: SIGMA, CPH2O, CPICE, LSUBF - REAL, INTENT(OUT) :: ETP,FLX2,RR - - REAL :: A, DELTA, FNET,RAD,ELCP1,LVS,EPSCA - - REAL, PARAMETER :: ELCP = 2.4888E+3, LSUBC = 2.501000E+6 - REAL, PARAMETER :: LSUBS = 2.83E+6 - -! ---------------------------------------------------------------------- -! PREPARE PARTIAL QUANTITIES FOR PENMAN EQUATION. -! ---------------------------------------------------------------------- - IF ( T1 > 273.15 ) THEN - ELCP1 = ELCP - LVS = LSUBC - ELSE - ELCP1 = ELCP*LSUBS/LSUBC - LVS = LSUBS - ENDIF - DELTA = ELCP1 * DQSDT2 - A = ELCP1 * (Q2SAT - Q2) - RR = EMISSI*T24 * 6.48E-8 / (SFCPRS * CH) + 1.0 - -! ---------------------------------------------------------------------- -! ADJUST THE PARTIAL SUMS / PRODUCTS WITH THE LATENT HEAT -! EFFECTS CAUSED BY FALLING PRECIPITATION. -! ---------------------------------------------------------------------- - IF (.NOT. SNOWNG) THEN - IF (PRCP > 0.0) RR = RR + CPH2O * PRCP / RCH - ELSE - RR = RR + CPICE * PRCP / RCH - END IF - -! ---------------------------------------------------------------------- -! INCLUDE THE LATENT HEAT EFFECTS OF FREEZING RAIN CONVERTING TO ICE ON -! IMPACT IN THE CALCULATION OF FLX2 AND FNET. -! ---------------------------------------------------------------------- - IF (FRZGRA) THEN - FLX2 = - LSUBF * PRCP - ELSE - FLX2 = 0.0 - ENDIF - FNET = FDOWN - ( EMISSI * SIGMA * T24 ) - SSOIL - FLX2 - -! ---------------------------------------------------------------------- -! FINISH PENMAN EQUATION CALCULATIONS. -! ---------------------------------------------------------------------- - RAD = FNET / RCH + TH2 - SFCTMP - EPSCA = (A * RR + RAD * DELTA) / (DELTA + RR) - ETP = EPSCA * RCH / LVS - -! ---------------------------------------------------------------------- - END SUBROUTINE PENMAN -! ---------------------------------------------------------------------- - - SUBROUTINE SHFLX (STC,NSOIL,DT,YY,ZZ1,ZSOIL,TBOT,DF1) -! ---------------------------------------------------------------------- -! UPDATE THE TEMPERATURE STATE OF THE SOIL COLUMN BASED ON THE THERMAL -! DIFFUSION EQUATION AND UPDATE THE FROZEN SOIL MOISTURE CONTENT BASED -! ON THE TEMPERATURE. -! ---------------------------------------------------------------------- - IMPLICIT NONE - - INTEGER, INTENT(IN) :: NSOIL - REAL, INTENT(IN) :: DF1,DT,TBOT,YY, ZZ1 - REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ZSOIL - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: STC - - REAL, DIMENSION(1:NSOIL) :: AI, BI, CI, STCF,RHSTS - INTEGER :: I - REAL, PARAMETER :: T0 = 273.15 - -! ---------------------------------------------------------------------- -! HRT ROUTINE CALCS THE RIGHT HAND SIDE OF THE SOIL TEMP DIF EQN -! ---------------------------------------------------------------------- - - CALL HRTICE (RHSTS,STC,TBOT, NSOIL,ZSOIL,YY,ZZ1,DF1,AI,BI,CI) - - CALL HSTEP (STCF,STC,RHSTS,DT,NSOIL,AI,BI,CI) - - DO I = 1,NSOIL - STC (I) = STCF (I) - END DO -! ---------------------------------------------------------------------- - END SUBROUTINE SHFLX -! ---------------------------------------------------------------------- - - SUBROUTINE SNOPAC (ETP,ETA,PRCP,PRCPF,SNOWNG,NSOIL,DT,DF1, & - & Q2,T1,SFCTMP,T24,TH2,FDOWN,SSOIL,STC, & - & SFCPRS,RCH,RR,SNEQV,SNDENS,SNOWH,ZSOIL,TBOT, & - & SNOMLT,DEW,FLX1,FLX2,FLX3,ESNOW,EMISSI,RIBB, & - & SIGMA,CPH2O,CPICE,LSUBF) - -! ---------------------------------------------------------------------- -! CALCULATE SOIL MOISTURE AND HEAT FLUX VALUES & UPDATE SOIL MOISTURE -! CONTENT AND SOIL HEAT CONTENT VALUES FOR THE CASE WHEN A SNOW PACK IS -! PRESENT. -! ---------------------------------------------------------------------- - IMPLICIT NONE - - INTEGER, INTENT(IN) :: NSOIL - LOGICAL, INTENT(IN) :: SNOWNG - REAL, INTENT(IN) :: DF1,DT,FDOWN,PRCP,Q2,RCH,RR,SFCPRS,SFCTMP, & - & T24,TBOT,TH2,EMISSI - REAL, INTENT(IN) :: SIGMA, CPH2O, CPICE, LSUBF - REAL, INTENT(INOUT) :: SNEQV,FLX2,PRCPF,SNOWH,SNDENS,T1,RIBB,ETP - REAL, INTENT(OUT) :: DEW,ESNOW,FLX1,FLX3,SSOIL,SNOMLT - REAL, DIMENSION(1:NSOIL),INTENT(IN) :: ZSOIL - REAL, DIMENSION(1:NSOIL), INTENT(INOUT) :: STC - REAL, DIMENSION(1:NSOIL) :: ET1 - INTEGER :: K - REAL :: DENOM,DSOIL,DTOT,ESDFLX,ETA, & - & ESNOW1,ESNOW2,ETA1,ETP1,ETP2, & - & ETP3,ETANRG,EX, & - & FRCSNO,FRCSOI,PRCP1,QSAT,RSNOW,SEH, & - & SNCOND,T12,T12A,T12B,T14,YY,ZZ1 - - REAL, PARAMETER :: ESDMIN = 1.E-6, LSUBC = 2.501000E+6, & - & LSUBS = 2.83E+6, TFREEZ = 273.15, & - & SNOEXP = 2.0 - -! ---------------------------------------------------------------------- -! FOR GLACIAL-ICE, SNOWCOVER FRACTION = 1.0, AND SUBLIMATION IS AT THE -! POTENTIAL RATE. -! ---------------------------------------------------------------------- -! INITIALIZE EVAP TERMS. -! ---------------------------------------------------------------------- -! conversions: -! ESNOW [KG M-2 S-1] -! ESDFLX [KG M-2 S-1] .le. ESNOW -! ESNOW1 [M S-1] -! ESNOW2 [M] -! ETP [KG M-2 S-1] -! ETP1 [M S-1] -! ETP2 [M] -! ---------------------------------------------------------------------- - SNOMLT = 0.0 - DEW = 0. - ESNOW = 0. - ESNOW1 = 0. - ESNOW2 = 0. - -! ---------------------------------------------------------------------- -! CONVERT POTENTIAL EVAP (ETP) FROM KG M-2 S-1 TO ETP1 IN M S-1 -! ---------------------------------------------------------------------- - PRCP1 = PRCPF *0.001 -! ---------------------------------------------------------------------- -! IF ETP<0 (DOWNWARD) THEN DEWFALL (=FROSTFALL IN THIS CASE). -! ---------------------------------------------------------------------- - IF (ETP <= 0.0) THEN - IF ( ( RIBB >= 0.1 ) .AND. ( FDOWN > 150.0 ) ) THEN - ETP=(MIN(ETP*(1.0-RIBB),0.)/0.980 + ETP*(0.980-1.0))/0.980 - ENDIF - ETP1 = ETP * 0.001 - DEW = -ETP1 - ESNOW2 = ETP1*DT - ETANRG = ETP*LSUBS - ELSE - ETP1 = ETP * 0.001 - ESNOW = ETP - ESNOW1 = ESNOW*0.001 - ESNOW2 = ESNOW1*DT - ETANRG = ESNOW*LSUBS - END IF - -! ---------------------------------------------------------------------- -! IF PRECIP IS FALLING, CALCULATE HEAT FLUX FROM SNOW SFC TO NEWLY -! ACCUMULATING PRECIP. NOTE THAT THIS REFLECTS THE FLUX APPROPRIATE FOR -! THE NOT-YET-UPDATED SKIN TEMPERATURE (T1). ASSUMES TEMPERATURE OF THE -! SNOWFALL STRIKING THE GROUND IS =SFCTMP (LOWEST MODEL LEVEL AIR TEMP). -! ---------------------------------------------------------------------- - FLX1 = 0.0 - IF (SNOWNG) THEN - FLX1 = CPICE * PRCP * (T1- SFCTMP) - ELSE - IF (PRCP > 0.0) FLX1 = CPH2O * PRCP * (T1- SFCTMP) - END IF -! ---------------------------------------------------------------------- -! CALCULATE AN 'EFFECTIVE SNOW-GRND SFC TEMP' (T12) BASED ON HEAT FLUXES -! BETWEEN THE SNOW PACK AND THE SOIL AND ON NET RADIATION. -! INCLUDE FLX1 (PRECIP-SNOW SFC) AND FLX2 (FREEZING RAIN LATENT HEAT) -! FLUXES. FLX1 FROM ABOVE, FLX2 BROUGHT IN VIA COMMOM BLOCK RITE. -! FLX2 REFLECTS FREEZING RAIN LATENT HEAT FLUX USING T1 CALCULATED IN -! PENMAN. -! ---------------------------------------------------------------------- - DSOIL = - (0.5 * ZSOIL (1)) - DTOT = SNOWH + DSOIL - DENOM = 1.0+ DF1 / (DTOT * RR * RCH) - T12A = ( (FDOWN - FLX1- FLX2- EMISSI * SIGMA * T24)/ RCH & - + TH2- SFCTMP - ETANRG / RCH ) / RR - T12B = DF1 * STC (1) / (DTOT * RR * RCH) - - T12 = (SFCTMP + T12A + T12B) / DENOM - IF (T12 <= TFREEZ) THEN -! ---------------------------------------------------------------------- -! SUB-FREEZING BLOCK -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! IF THE 'EFFECTIVE SNOW-GRND SFC TEMP' IS AT OR BELOW FREEZING, NO SNOW -! MELT WILL OCCUR. SET THE SKIN TEMP TO THIS EFFECTIVE TEMP. REDUCE -! (BY SUBLIMINATION ) OR INCREASE (BY FROST) THE DEPTH OF THE SNOWPACK, -! DEPENDING ON SIGN OF ETP. -! UPDATE SOIL HEAT FLUX (SSOIL) USING NEW SKIN TEMPERATURE (T1) -! SINCE NO SNOWMELT, SET ACCUMULATED SNOWMELT TO ZERO, SET 'EFFECTIVE' -! PRECIP FROM SNOWMELT TO ZERO, SET PHASE-CHANGE HEAT FLUX FROM SNOWMELT -! TO ZERO. -! ---------------------------------------------------------------------- - T1 = T12 - SSOIL = DF1 * (T1- STC (1)) / DTOT - SNEQV = MAX(0.0, SNEQV-ESNOW2) - FLX3 = 0.0 - EX = 0.0 - SNOMLT = 0.0 - ELSE -! ---------------------------------------------------------------------- -! ABOVE FREEZING BLOCK -! ---------------------------------------------------------------------- -! IF THE 'EFFECTIVE SNOW-GRND SFC TEMP' IS ABOVE FREEZING, SNOW MELT -! WILL OCCUR. CALL THE SNOW MELT RATE,EX AND AMT, SNOMLT. REVISE THE -! EFFECTIVE SNOW DEPTH. REVISE THE SKIN TEMP BECAUSE IT WOULD HAVE CHGD -! DUE TO THE LATENT HEAT RELEASED BY THE MELTING. CALC THE LATENT HEAT -! RELEASED, FLX3. SET THE EFFECTIVE PRECIP, PRCP1 TO THE SNOW MELT RATE, -! EX FOR USE IN SMFLX. ADJUSTMENT TO T1 TO ACCOUNT FOR SNOW PATCHES. -! CALCULATE QSAT VALID AT FREEZING POINT. NOTE THAT ESAT (SATURATION -! VAPOR PRESSURE) VALUE OF 6.11E+2 USED HERE IS THAT VALID AT FRZZING -! POINT. NOTE THAT ETP FROM CALL PENMAN IN SFLX IS IGNORED HERE IN -! FAVOR OF BULK ETP OVER 'OPEN WATER' AT FREEZING TEMP. -! UPDATE SOIL HEAT FLUX (S) USING NEW SKIN TEMPERATURE (T1) -! ---------------------------------------------------------------------- - T1 = TFREEZ - IF ( DTOT .GT. 2.0*DSOIL ) THEN - DTOT = 2.0*DSOIL - ENDIF - SSOIL = DF1 * (T1- STC (1)) / DTOT - IF (SNEQV-ESNOW2 <= ESDMIN) THEN - SNEQV = 0.0 - EX = 0.0 - SNOMLT = 0.0 - FLX3 = 0.0 -! ---------------------------------------------------------------------- -! SUBLIMATION LESS THAN DEPTH OF SNOWPACK -! SNOWPACK (SNEQV) REDUCED BY ESNOW2 (DEPTH OF SUBLIMATED SNOW) -! ---------------------------------------------------------------------- - ELSE - SNEQV = SNEQV-ESNOW2 - ETP3 = ETP * LSUBC - SEH = RCH * (T1- TH2) - T14 = ( T1 * T1 ) * ( T1 * T1 ) - FLX3 = FDOWN - FLX1- FLX2- EMISSI*SIGMA * T14- SSOIL - SEH - ETANRG - IF (FLX3 <= 0.0) FLX3 = 0.0 - EX = FLX3*0.001/ LSUBF - SNOMLT = EX * DT -! ---------------------------------------------------------------------- -! ESDMIN REPRESENTS A SNOWPACK DEPTH THRESHOLD VALUE BELOW WHICH WE -! CHOOSE NOT TO RETAIN ANY SNOWPACK, AND INSTEAD INCLUDE IT IN SNOWMELT. -! ---------------------------------------------------------------------- - IF (SNEQV- SNOMLT >= ESDMIN) THEN - SNEQV = SNEQV- SNOMLT - ELSE -! ---------------------------------------------------------------------- -! SNOWMELT EXCEEDS SNOW DEPTH -! ---------------------------------------------------------------------- - EX = SNEQV / DT - FLX3 = EX *1000.0* LSUBF - SNOMLT = SNEQV - - SNEQV = 0.0 - ENDIF - ENDIF - -! ---------------------------------------------------------------------- -! FOR GLACIAL ICE, THE SNOWMELT WILL BE ADDED TO SUBSURFACE -! RUNOFF/BASEFLOW LATER NEAR THE END OF SFLX (AFTER RETURN FROM CALL TO -! SUBROUTINE SNOPAC) -! ---------------------------------------------------------------------- - - ENDIF - -! ---------------------------------------------------------------------- -! BEFORE CALL SHFLX IN THIS SNOWPACK CASE, SET ZZ1 AND YY ARGUMENTS TO -! SPECIAL VALUES THAT ENSURE THAT GROUND HEAT FLUX CALCULATED IN SHFLX -! MATCHES THAT ALREADY COMPUTED FOR BELOW THE SNOWPACK, THUS THE SFC -! HEAT FLUX TO BE COMPUTED IN SHFLX WILL EFFECTIVELY BE THE FLUX AT THE -! SNOW TOP SURFACE. -! ---------------------------------------------------------------------- - ZZ1 = 1.0 - YY = STC (1) -0.5* SSOIL * ZSOIL (1)* ZZ1/ DF1 - -! ---------------------------------------------------------------------- -! SHFLX WILL CALC/UPDATE THE SOIL TEMPS. -! ---------------------------------------------------------------------- - CALL SHFLX (STC,NSOIL,DT,YY,ZZ1,ZSOIL,TBOT,DF1) - -! ---------------------------------------------------------------------- -! SNOW DEPTH AND DENSITY ADJUSTMENT BASED ON SNOW COMPACTION. YY IS -! ASSUMED TO BE THE SOIL TEMPERTURE AT THE TOP OF THE SOIL COLUMN. -! ---------------------------------------------------------------------- - IF (SNEQV .GE. 0.10) THEN - CALL SNOWPACK (SNEQV,DT,SNOWH,SNDENS,T1,YY) - ELSE - SNEQV = 0.10 - SNOWH = 0.50 -!KWM???? SNDENS = -!KWM???? SNCOND = - ENDIF -! ---------------------------------------------------------------------- - END SUBROUTINE SNOPAC -! ---------------------------------------------------------------------- - - SUBROUTINE SNOWPACK (SNEQV,DTSEC,SNOWH,SNDENS,TSNOW,TSOIL) - -! ---------------------------------------------------------------------- -! CALCULATE COMPACTION OF SNOWPACK UNDER CONDITIONS OF INCREASING SNOW -! DENSITY, AS OBTAINED FROM AN APPROXIMATE SOLUTION OF E. ANDERSON'S -! DIFFERENTIAL EQUATION (3.29), NOAA TECHNICAL REPORT NWS 19, BY VICTOR -! KOREN, 03/25/95. -! ---------------------------------------------------------------------- -! SNEQV WATER EQUIVALENT OF SNOW (M) -! DTSEC TIME STEP (SEC) -! SNOWH SNOW DEPTH (M) -! SNDENS SNOW DENSITY (G/CM3=DIMENSIONLESS FRACTION OF H2O DENSITY) -! TSNOW SNOW SURFACE TEMPERATURE (K) -! TSOIL SOIL SURFACE TEMPERATURE (K) - -! SUBROUTINE WILL RETURN NEW VALUES OF SNOWH AND SNDENS -! ---------------------------------------------------------------------- - IMPLICIT NONE - - INTEGER :: IPOL, J - REAL, INTENT(IN) :: SNEQV, DTSEC,TSNOW,TSOIL - REAL, INTENT(INOUT) :: SNOWH, SNDENS - REAL :: BFAC,DSX,DTHR,DW,SNOWHC,PEXP, & - TAVGC,TSNOWC,TSOILC,ESDC,ESDCX - REAL, PARAMETER :: C1 = 0.01, C2 = 21.0, G = 9.81, & - KN = 4000.0 -! ---------------------------------------------------------------------- -! CONVERSION INTO SIMULATION UNITS -! ---------------------------------------------------------------------- - SNOWHC = SNOWH *100. - ESDC = SNEQV *100. - DTHR = DTSEC /3600. - TSNOWC = TSNOW -273.15 - TSOILC = TSOIL -273.15 - -! ---------------------------------------------------------------------- -! CALCULATING OF AVERAGE TEMPERATURE OF SNOW PACK -! ---------------------------------------------------------------------- -! ---------------------------------------------------------------------- -! CALCULATING OF SNOW DEPTH AND DENSITY AS A RESULT OF COMPACTION -! SNDENS=DS0*(EXP(BFAC*SNEQV)-1.)/(BFAC*SNEQV) -! BFAC=DTHR*C1*EXP(0.08*TAVGC-C2*DS0) -! NOTE: BFAC*SNEQV IN SNDENS EQN ABOVE HAS TO BE CAREFULLY TREATED -! NUMERICALLY BELOW: -! C1 IS THE FRACTIONAL INCREASE IN DENSITY (1/(CM*HR)) -! C2 IS A CONSTANT (CM3/G) KOJIMA ESTIMATED AS 21 CMS/G -! ---------------------------------------------------------------------- - TAVGC = 0.5* (TSNOWC + TSOILC) - IF (ESDC > 1.E-2) THEN - ESDCX = ESDC - ELSE - ESDCX = 1.E-2 - END IF - -! DSX = SNDENS*((DEXP(BFAC*ESDC)-1.)/(BFAC*ESDC)) -! ---------------------------------------------------------------------- -! THE FUNCTION OF THE FORM (e**x-1)/x IMBEDDED IN ABOVE EXPRESSION -! FOR DSX WAS CAUSING NUMERICAL DIFFICULTIES WHEN THE DENOMINATOR "x" -! (I.E. BFAC*ESDC) BECAME ZERO OR APPROACHED ZERO (DESPITE THE FACT THAT -! THE ANALYTICAL FUNCTION (e**x-1)/x HAS A WELL DEFINED LIMIT AS -! "x" APPROACHES ZERO), HENCE BELOW WE REPLACE THE (e**x-1)/x -! EXPRESSION WITH AN EQUIVALENT, NUMERICALLY WELL-BEHAVED -! POLYNOMIAL EXPANSION. - -! NUMBER OF TERMS OF POLYNOMIAL EXPANSION, AND HENCE ITS ACCURACY, -! IS GOVERNED BY ITERATION LIMIT "IPOL". -! IPOL GREATER THAN 9 ONLY MAKES A DIFFERENCE ON DOUBLE -! PRECISION (RELATIVE ERRORS GIVEN IN PERCENT %). -! IPOL=9, FOR REL.ERROR <~ 1.6 E-6 % (8 SIGNIFICANT DIGITS) -! IPOL=8, FOR REL.ERROR <~ 1.8 E-5 % (7 SIGNIFICANT DIGITS) -! IPOL=7, FOR REL.ERROR <~ 1.8 E-4 % ... -! ---------------------------------------------------------------------- - BFAC = DTHR * C1* EXP (0.08* TAVGC - C2* SNDENS) - IPOL = 4 - PEXP = 0. -! PEXP = (1. + PEXP)*BFAC*ESDC/REAL(J+1) - DO J = IPOL,1, -1 - PEXP = (1. + PEXP)* BFAC * ESDCX / REAL (J +1) - END DO - - PEXP = PEXP + 1. -! ---------------------------------------------------------------------- -! ABOVE LINE ENDS POLYNOMIAL SUBSTITUTION -! ---------------------------------------------------------------------- -! END OF KOREAN FORMULATION - -! BASE FORMULATION (COGLEY ET AL., 1990) -! CONVERT DENSITY FROM G/CM3 TO KG/M3 -! DSM=SNDENS*1000.0 - -! DSX=DSM+DTSEC*0.5*DSM*G*SNEQV/ -! & (1E7*EXP(-0.02*DSM+KN/(TAVGC+273.16)-14.643)) - -! & CONVERT DENSITY FROM KG/M3 TO G/CM3 -! DSX=DSX/1000.0 - -! END OF COGLEY ET AL. FORMULATION - -! ---------------------------------------------------------------------- -! SET UPPER/LOWER LIMIT ON SNOW DENSITY -! ---------------------------------------------------------------------- - DSX = SNDENS * (PEXP) - IF (DSX > 0.40) DSX = 0.40 - IF (DSX < 0.05) DSX = 0.05 -! ---------------------------------------------------------------------- -! UPDATE OF SNOW DEPTH AND DENSITY DEPENDING ON LIQUID WATER DURING -! SNOWMELT. ASSUMED THAT 13% OF LIQUID WATER CAN BE STORED IN SNOW PER -! DAY DURING SNOWMELT TILL SNOW DENSITY 0.40. -! ---------------------------------------------------------------------- - SNDENS = DSX - IF (TSNOWC >= 0.) THEN - DW = 0.13* DTHR /24. - SNDENS = SNDENS * (1. - DW) + DW - IF (SNDENS >= 0.40) SNDENS = 0.40 -! ---------------------------------------------------------------------- -! CALCULATE SNOW DEPTH (CM) FROM SNOW WATER EQUIVALENT AND SNOW DENSITY. -! CHANGE SNOW DEPTH UNITS TO METERS -! ---------------------------------------------------------------------- - END IF - SNOWHC = ESDC / SNDENS - SNOWH = SNOWHC * 0.01 - -! ---------------------------------------------------------------------- - END SUBROUTINE SNOWPACK -! ---------------------------------------------------------------------- - - SUBROUTINE SNOWZ0 (Z0, Z0BRD, SNOWH) -! ---------------------------------------------------------------------- -! CALCULATE TOTAL ROUGHNESS LENGTH OVER SNOW -! Z0 ROUGHNESS LENGTH (m) -! Z0S SNOW ROUGHNESS LENGTH:=0.001 (m) -! ---------------------------------------------------------------------- - IMPLICIT NONE - REAL, INTENT(IN) :: Z0BRD - REAL, INTENT(OUT) :: Z0 - REAL, PARAMETER :: Z0S=0.001 - REAL, INTENT(IN) :: SNOWH - REAL :: BURIAL - REAL :: Z0EFF - - BURIAL = 7.0*Z0BRD - SNOWH - IF(BURIAL.LE.0.0007) THEN - Z0EFF = Z0S - ELSE - Z0EFF = BURIAL/7.0 - ENDIF - - Z0 = Z0EFF - -! ---------------------------------------------------------------------- - END SUBROUTINE SNOWZ0 -! ---------------------------------------------------------------------- - - SUBROUTINE SNOW_NEW (TEMP,NEWSN,SNOWH,SNDENS) - -! ---------------------------------------------------------------------- -! CALCULATE SNOW DEPTH AND DENSITY TO ACCOUNT FOR THE NEW SNOWFALL. -! UPDATED VALUES OF SNOW DEPTH AND DENSITY ARE RETURNED. - -! TEMP AIR TEMPERATURE (K) -! NEWSN NEW SNOWFALL (M) -! SNOWH SNOW DEPTH (M) -! SNDENS SNOW DENSITY (G/CM3=DIMENSIONLESS FRACTION OF H2O DENSITY) -! ---------------------------------------------------------------------- - IMPLICIT NONE - REAL, INTENT(IN) :: NEWSN, TEMP - REAL, INTENT(INOUT) :: SNDENS, SNOWH - REAL :: DSNEW, HNEWC, SNOWHC,NEWSNC,TEMPC - -! ---------------------------------------------------------------------- -! CALCULATING NEW SNOWFALL DENSITY DEPENDING ON TEMPERATURE -! EQUATION FROM GOTTLIB L. 'A GENERAL RUNOFF MODEL FOR SNOWCOVERED -! AND GLACIERIZED BASIN', 6TH NORDIC HYDROLOGICAL CONFERENCE, -! VEMADOLEN, SWEDEN, 1980, 172-177PP. -!----------------------------------------------------------------------- - TEMPC = TEMP - 273.15 - IF ( TEMPC <= -15. ) THEN - DSNEW = 0.05 - ELSE - DSNEW = 0.05 + 0.0017 * ( TEMPC + 15. ) ** 1.5 - ENDIF - -! ---------------------------------------------------------------------- -! CONVERSION INTO SIMULATION UNITS -! ---------------------------------------------------------------------- - SNOWHC = SNOWH * 100. - NEWSNC = NEWSN * 100. - -! ---------------------------------------------------------------------- -! ADJUSTMENT OF SNOW DENSITY DEPENDING ON NEW SNOWFALL -! ---------------------------------------------------------------------- - HNEWC = NEWSNC / DSNEW - IF ( SNOWHC + HNEWC < 1.0E-3 ) THEN - SNDENS = MAX ( DSNEW , SNDENS ) - ELSE - SNDENS = ( SNOWHC * SNDENS + HNEWC * DSNEW ) / ( SNOWHC + HNEWC ) - ENDIF - SNOWHC = SNOWHC + HNEWC - SNOWH = SNOWHC * 0.01 - -! ---------------------------------------------------------------------- - END SUBROUTINE SNOW_NEW -! ---------------------------------------------------------------------- - -END MODULE module_sf_noahlsm_glacial_only From 7af3a505b005634b2c225c4d10f30c1e01fb7388 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 4 Oct 2021 14:28:54 -0600 Subject: [PATCH 47/98] Cleanup in Ferrier-Aligo MP - remove unnecessary interface variables --- physics/GFS_debug.F90 | 6 ---- physics/mp_fer_hires.F90 | 31 ++++--------------- physics/mp_fer_hires.meta | 63 --------------------------------------- 3 files changed, 6 insertions(+), 94 deletions(-) diff --git a/physics/GFS_debug.F90 b/physics/GFS_debug.F90 index deb88458b..c2baac88a 100644 --- a/physics/GFS_debug.F90 +++ b/physics/GFS_debug.F90 @@ -1393,12 +1393,6 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%icemp ', Interstitial%icemp ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%rainmp ', Interstitial%rainmp ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%snowmp ', Interstitial%snowmp ) - ! Ferrier-Aligo - else if (Model%imp_physics == Model%imp_physics_fer_hires) then - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%f_ice ', Interstitial%f_ice ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%f_rain ', Interstitial%f_rain ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%f_rimef ', Interstitial%f_rimef ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%cwm ', Interstitial%cwm ) ! Morrison-Gettelman else if (Model%imp_physics == Model%imp_physics_mg) then call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%ncgl ', Interstitial%ncgl ) diff --git a/physics/mp_fer_hires.F90 b/physics/mp_fer_hires.F90 index 9bbda5ad0..938beae5d 100644 --- a/physics/mp_fer_hires.F90 +++ b/physics/mp_fer_hires.F90 @@ -32,9 +32,7 @@ module mp_fer_hires !! \htmlinclude mp_fer_hires_init.html !! subroutine mp_fer_hires_init(ncol, nlev, dtp, imp_physics, & - imp_physics_fer_hires, & - restart, & - f_ice,f_rain,f_rimef, & + imp_physics_fer_hires, restart, & mpicomm, mpirank,mpiroot, & threads, errmsg, errflg) @@ -54,10 +52,6 @@ subroutine mp_fer_hires_init(ncol, nlev, dtp, imp_physics, & logical, intent(in) :: restart character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg - real(kind_phys), intent(out) :: f_ice(:,:) - real(kind_phys), intent(out) :: f_rain(:,:) - real(kind_phys), intent(out) :: f_rimef(:,:) - ! Local variables integer :: ims, ime, lm,i,k @@ -91,17 +85,6 @@ subroutine mp_fer_hires_init(ncol, nlev, dtp, imp_physics, & return end if - !MZ: fer_hires_init() in HWRF - if (mpirank==mpiroot) write (0,*) 'F-A: F_ICE, F_RAIN AND F_RIMEF ARE REINITIALIZED' - DO K = 1,lm - DO I= ims,ime - F_ICE(i,k)=0. - F_RAIN(i,k)=0. - F_RIMEF(i,k)=1. - ENDDO - ENDDO - !MZ: fer_hires_init() in HWRF - if (mpirank==mpiroot) write (0,*) 'F-A: calling FERRIER_INIT_HR ...' CALL FERRIER_INIT_HR(dtp,mpicomm,mpirank,mpiroot,threads,errmsg,errflg) @@ -110,7 +93,6 @@ subroutine mp_fer_hires_init(ncol, nlev, dtp, imp_physics, & is_initialized = .true. - end subroutine mp_fer_hires_init !>\defgroup hafs_famp HWRF Ferrier-Aligo Microphysics Scheme @@ -121,9 +103,8 @@ end subroutine mp_fer_hires_init SUBROUTINE mp_fer_hires_run(NCOL, NLEV, DT ,SPEC_ADV & ,SLMSK & ,PRSI,P_PHY & - ,T,Q,CWM & + ,T,Q & ,TRAIN,SR & - ,F_ICE,F_RAIN,F_RIMEF & ,QC,QR,QI,QG & ,PREC & ,mpirank, mpiroot, threads & @@ -158,12 +139,8 @@ SUBROUTINE mp_fer_hires_run(NCOL, NLEV, DT ,SPEC_ADV & real(kind_phys), intent(in ) :: epsq,r_d,p608,cp,g real(kind_phys), intent(inout) :: t(:,:) real(kind_phys), intent(inout) :: q(:,:) - real(kind_phys), intent(inout) :: cwm(:,:) real(kind_phys), intent(inout) :: train(:,:) real(kind_phys), intent(out ) :: sr(:) - real(kind_phys), intent(out ) :: f_ice(:,:) - real(kind_phys), intent(out ) :: f_rain(:,:) - real(kind_phys), intent(out ) :: f_rimef(:,:) real(kind_phys), intent(inout) :: qc(:,:) real(kind_phys), intent(inout) :: qr(:,:) real(kind_phys), intent(inout) :: qi(:,:) @@ -189,6 +166,10 @@ SUBROUTINE mp_fer_hires_run(NCOL, NLEV, DT ,SPEC_ADV & real(kind_phys) :: snownc(1:ncol),snowncv(1:ncol) real(kind_phys) :: graupelncv(1:ncol) real(kind_phys) :: train_phy(1:ncol,1:nlev) + real(kind_phys) :: f_ice(1:ncol,1:nlev) + real(kind_phys) :: f_rain(1:ncol,1:nlev) + real(kind_phys) :: f_rimef(1:ncol,1:nlev) + real(kind_phys) :: cwm(1:ncol,1:nlev) ! Dimension integer :: ims, ime, lm diff --git a/physics/mp_fer_hires.meta b/physics/mp_fer_hires.meta index f5adb0318..f5e96b0d9 100644 --- a/physics/mp_fer_hires.meta +++ b/physics/mp_fer_hires.meta @@ -56,33 +56,6 @@ type = logical intent = in optional = F -[f_ice] - standard_name = fraction_of_ice_water_cloud - long_name = fraction of ice water cloud - units = frac - dimensions = (horizontal_dimension,vertical_layer_dimension) - type = real - kind = kind_phys - intent = out - optional = F -[f_rain] - standard_name = fraction_of_rain_water_cloud - long_name = fraction of rain water cloud - units = frac - dimensions = (horizontal_dimension,vertical_layer_dimension) - type = real - kind = kind_phys - intent = out - optional = F -[f_rimef] - standard_name = rime_factor - long_name = rime factor - units = frac - dimensions = (horizontal_dimension,vertical_layer_dimension) - type = real - kind = kind_phys - intent = out - optional = F [mpicomm] standard_name = mpi_communicator long_name = MPI communicator @@ -236,15 +209,6 @@ kind = kind_phys intent = inout optional = F -[cwm] - standard_name = total_cloud_condensate_mixing_ratio_updated_by_physics - long_name = total cloud condensate mixing ratio (except water vapor) updated by physics - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = F [train] standard_name = accumulated_change_of_air_temperature_due_to_FA_scheme long_name = accumulated change of air temperature due to FA MP scheme @@ -263,33 +227,6 @@ kind = kind_phys intent = out optional = F -[f_ice] - standard_name = fraction_of_ice_water_cloud - long_name = fraction of ice water cloud - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = out - optional = F -[f_rain] - standard_name = fraction_of_rain_water_cloud - long_name = fraction of rain water cloud - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = out - optional = F -[f_rimef] - standard_name = rime_factor - long_name = rime factor - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = out - optional = F [qc] standard_name = cloud_liquid_water_mixing_ratio_of_new_state long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) updated by physics From b8a5bc05f859433eb141aef49a1834e376f04eb6 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Mon, 4 Oct 2021 19:19:37 -0400 Subject: [PATCH 48/98] fixing radiation_surface and GFS_surface_composite --- physics/GFS_surface_composites.F90 | 2 +- physics/radiation_surface.f | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/physics/GFS_surface_composites.F90 b/physics/GFS_surface_composites.F90 index ea67cbd43..91a326591 100644 --- a/physics/GFS_surface_composites.F90 +++ b/physics/GFS_surface_composites.F90 @@ -249,7 +249,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra ! to prepare to separate lake from ocean under water category do i = 1, im - if(wet(i) .and. lakefrac(i) > zero) then + if ((wet(i) .or. icy(i)) .and. lakefrac(i) > zero) then lake(i) = .true. if (lkm == 1 .and. lakefrac(i) >= 0.15 .and. lakedepth(i) > one) then use_flake(i) = .true. diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index accd58511..41e22bf08 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -974,8 +974,7 @@ subroutine setemis & sfcemis_ice = semis_ice(i) ! output from CICE endif elseif (lsm == lsm_ruc) then - if (.not. cplice .or. & - & (lakefrac(i) > f_zero .and. use_flake(i))) then + if (use_flake(i)) then if (sncovr_ice(i) > f_zero) then sfcemis_ice = emsref(7) * (f_one-sncovr_ice(i)) & & + emsref(8) * sncovr_ice(i) From ed86ff1b52d1270f7346839e0968197217e0d592 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 5 Oct 2021 14:28:53 -0600 Subject: [PATCH 49/98] Add debugging routine GFS_checktracers to physics/GFS_debug.{F90,meta} --- physics/GFS_debug.F90 | 135 +++++++++++++++++++- physics/GFS_debug.meta | 278 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 408 insertions(+), 5 deletions(-) diff --git a/physics/GFS_debug.F90 b/physics/GFS_debug.F90 index deb88458b..1cf03c421 100644 --- a/physics/GFS_debug.F90 +++ b/physics/GFS_debug.F90 @@ -690,14 +690,10 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Diag%tdoms ', Diag%tdoms) ! CCPP/RUC only if (Model%lsm == Model%lsm_ruc) then - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Diag%wet1 ', Sfcprop%wetness) + call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Sfcprop%wetness ', Sfcprop%wetness) else call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Diag%wet1 ', Diag%wet1) end if - !call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Diag%skebu_wts ', Diag%skebu_wts) - !call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Diag%skebv_wts ', Diag%skebv_wts) - !call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Diag%sppt_wts ', Diag%sppt_wts) - !call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Diag%shum_wts ', Diag%shum_wts) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Diag%zmtnblck ', Diag%zmtnblck) if (Model%ldiag3d) then !do itracer=2,Model%ntracp100 @@ -1638,3 +1634,132 @@ subroutine GFS_checkland_run (me, master, blkno, im, kdt, iter, flag_iter, flag_ end subroutine GFS_checkland_run end module GFS_checkland + + module GFS_checktracers + + private + + public GFS_checktracers_init, GFS_checktracers_timestep_init, GFS_checktracers_run + + contains + +!> \section arg_table_GFS_checktracers_init Argument Table +!! \htmlinclude GFS_checktracers_init.html +!! + subroutine GFS_checktracers_init (me, master, im, levs, ntracer, kdt, qgrs, gq0, errmsg, errflg) + + use machine, only: kind_phys + + implicit none + + ! Interface variables + integer, intent(in ) :: me + integer, intent(in ) :: master + integer, intent(in ) :: im + integer, intent(in ) :: levs + integer, intent(in ) :: ntracer + integer, intent(in ) :: kdt + real(kind_phys), intent(in ) :: qgrs(:,:,:) + real(kind_phys), intent(in ) :: gq0(:,:,:) + character(len=*), intent( out) :: errmsg + integer, intent( out) :: errflg + + call GFS_checktracers_timestep_init (me, master, im, levs, ntracer, kdt, qgrs, gq0, errmsg, errflg) + + end subroutine GFS_checktracers_init + +!> \section arg_table_GFS_checktracers_timestep_init Argument Table +!! \htmlinclude GFS_checktracers_timestep_init.html +!! + subroutine GFS_checktracers_timestep_init (me, master, im, levs, ntracer, kdt, qgrs, gq0, errmsg, errflg) + + use machine, only: kind_phys + + implicit none + + ! Interface variables + integer, intent(in ) :: me + integer, intent(in ) :: master + integer, intent(in ) :: im + integer, intent(in ) :: levs + integer, intent(in ) :: ntracer + integer, intent(in ) :: kdt + real(kind_phys), intent(in ) :: qgrs(:,:,:) + real(kind_phys), intent(in ) :: gq0(:,:,:) + character(len=*), intent( out) :: errmsg + integer, intent( out) :: errflg + + ! Local variables + integer :: i, k, n + + errflg = 0 + errmsg = '' + + write(0,'(a,i5)') 'YYY: me :', me + write(0,'(a,i5)') 'YYY: master :', master + write(0,'(a,i5)') 'YYY: im :', im + write(0,'(a,i5)') 'YYY: levs :', levs + write(0,'(a,i5)') 'YYY: ntracer :', ntracer + write(0,'(a,i5)') 'YYY: kdt :', kdt + + do n=1,ntracer + do i=1,im + do k=1,levs + if (qgrs(i,k,n)<0 .or. gq0(i,k,n)<0) then + write(0,'(a,4i5,1x,2e16.7)') 'YYY: blk, n, i, k, qgrs, gq0 :', -999, n, i, k, qgrs(i,k,n), gq0(i,k,n) + end if + end do + end do + end do + + end subroutine GFS_checktracers_timestep_init + +!> \section arg_table_GFS_checktracers_run Argument Table +!! \htmlinclude GFS_checktracers_run.html +!! + subroutine GFS_checktracers_run (me, master, blkno, im, levs, ntracer, kdt, qgrs, gq0, errmsg, errflg) + + use machine, only: kind_phys + + implicit none + + ! Interface variables + integer, intent(in ) :: me + integer, intent(in ) :: master + integer, intent(in ) :: blkno + integer, intent(in ) :: im + integer, intent(in ) :: levs + integer, intent(in ) :: ntracer + integer, intent(in ) :: kdt + real(kind_phys), intent(in ) :: qgrs(:,:,:) + real(kind_phys), intent(in ) :: gq0(:,:,:) + character(len=*), intent( out) :: errmsg + integer, intent( out) :: errflg + + ! Local variables + integer :: i, k, n + + errflg = 0 + errmsg = '' + + write(0,'(a,i5)') 'YYY: me :', me + write(0,'(a,i5)') 'YYY: master :', master + write(0,'(a,i5)') 'YYY: blkno :', blkno + write(0,'(a,i5)') 'YYY: im :', im + write(0,'(a,i5)') 'YYY: levs :', levs + write(0,'(a,i5)') 'YYY: ntracer :', ntracer + write(0,'(a,i5)') 'YYY: kdt :', kdt + + do n=1,ntracer + do i=1,im + do k=1,levs + if (qgrs(i,k,n)<0 .or. gq0(i,k,n)<0) then + write(0,'(a,4i5,1x,2e16.7)') 'YYY: blk, n, i, k, qgrs, gq0 :', blkno, n, i, k, qgrs(i,k,n), gq0(i,k,n) + end if + end do + end do + end do + + end subroutine GFS_checktracers_run + + end module GFS_checktracers diff --git a/physics/GFS_debug.meta b/physics/GFS_debug.meta index fb77772eb..7a2a5c6a6 100644 --- a/physics/GFS_debug.meta +++ b/physics/GFS_debug.meta @@ -773,3 +773,281 @@ type = integer intent = out optional = F + +######################################################################## +[ccpp-table-properties] + name = GFS_checktracers + type = scheme + dependencies = machine.F + +######################################################################## +[ccpp-arg-table] + name = GFS_checktracers_init + type = scheme +[me] + standard_name = mpi_rank + long_name = current MPI-rank + units = index + dimensions = () + type = integer + intent = in + optional = F +[master] + standard_name = mpi_root + long_name = master MPI-rank + units = index + dimensions = () + type = integer + intent = in + optional = F +[im] + standard_name = horizontal_dimension + long_name = horizontal dimension + units = count + dimensions = () + type = integer + intent = in + optional = F +[levs] + standard_name = vertical_layer_dimension + long_name = number of vertical levels + units = count + dimensions = () + type = integer + intent = in + optional = F +[ntracer] + standard_name = number_of_tracers + long_name = number of tracers + units = count + dimensions = () + type = integer + intent = in + optional = F +[kdt] + standard_name = index_of_timestep + long_name = current number of time steps + units = index + dimensions = () + type = integer + intent = in + optional = F +[qgrs] + standard_name = tracer_concentration + long_name = model layer mean tracer concentration + units = kg kg-1 + dimensions = (horizontal_dimension,vertical_layer_dimension,number_of_tracers) + type = real + kind = kind_phys + intent = in + optional = F +[gq0] + standard_name = tracer_concentration_of_new_state + long_name = tracer concentration updated by physics + units = kg kg-1 + dimensions = (horizontal_dimension,vertical_layer_dimension,number_of_tracers) + type = real + kind = kind_phys + intent = in + optional = F +[errmsg] + standard_name = ccpp_error_message + long_name = error message for error handling in CCPP + units = none + dimensions = () + type = character + kind = len=* + intent = out + optional = F +[errflg] + standard_name = ccpp_error_flag + long_name = error flag for error handling in CCPP + units = flag + dimensions = () + type = integer + intent = out + optional = F + +######################################################################## +[ccpp-arg-table] + name = GFS_checktracers_timestep_init + type = scheme +[me] + standard_name = mpi_rank + long_name = current MPI-rank + units = index + dimensions = () + type = integer + intent = in + optional = F +[master] + standard_name = mpi_root + long_name = master MPI-rank + units = index + dimensions = () + type = integer + intent = in + optional = F +[im] + standard_name = horizontal_dimension + long_name = horizontal dimension + units = count + dimensions = () + type = integer + intent = in + optional = F +[levs] + standard_name = vertical_layer_dimension + long_name = number of vertical levels + units = count + dimensions = () + type = integer + intent = in + optional = F +[ntracer] + standard_name = number_of_tracers + long_name = number of tracers + units = count + dimensions = () + type = integer + intent = in + optional = F +[kdt] + standard_name = index_of_timestep + long_name = current number of time steps + units = index + dimensions = () + type = integer + intent = in + optional = F +[qgrs] + standard_name = tracer_concentration + long_name = model layer mean tracer concentration + units = kg kg-1 + dimensions = (horizontal_dimension,vertical_layer_dimension,number_of_tracers) + type = real + kind = kind_phys + intent = in + optional = F +[gq0] + standard_name = tracer_concentration_of_new_state + long_name = tracer concentration updated by physics + units = kg kg-1 + dimensions = (horizontal_dimension,vertical_layer_dimension,number_of_tracers) + type = real + kind = kind_phys + intent = in + optional = F +[errmsg] + standard_name = ccpp_error_message + long_name = error message for error handling in CCPP + units = none + dimensions = () + type = character + kind = len=* + intent = out + optional = F +[errflg] + standard_name = ccpp_error_flag + long_name = error flag for error handling in CCPP + units = flag + dimensions = () + type = integer + intent = out + optional = F + +######################################################################## +[ccpp-arg-table] + name = GFS_checktracers_run + type = scheme +[me] + standard_name = mpi_rank + long_name = current MPI-rank + units = index + dimensions = () + type = integer + intent = in + optional = F +[master] + standard_name = mpi_root + long_name = master MPI-rank + units = index + dimensions = () + type = integer + intent = in + optional = F +[blkno] + standard_name = ccpp_block_number + long_name = number of block for explicit data blocking in CCPP + units = index + dimensions = () + type = integer + intent = in + optional = F +[im] + standard_name = horizontal_loop_extent + long_name = horizontal loop extent + units = count + dimensions = () + type = integer + intent = in + optional = F +[levs] + standard_name = vertical_layer_dimension + long_name = number of vertical levels + units = count + dimensions = () + type = integer + intent = in + optional = F +[ntracer] + standard_name = number_of_tracers + long_name = number of tracers + units = count + dimensions = () + type = integer + intent = in + optional = F +[kdt] + standard_name = index_of_timestep + long_name = current number of time steps + units = index + dimensions = () + type = integer + intent = in + optional = F +[qgrs] + standard_name = tracer_concentration + long_name = model layer mean tracer concentration + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) + type = real + kind = kind_phys + intent = in + optional = F +[gq0] + standard_name = tracer_concentration_of_new_state + long_name = tracer concentration updated by physics + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) + type = real + kind = kind_phys + intent = in + optional = F +[errmsg] + standard_name = ccpp_error_message + long_name = error message for error handling in CCPP + units = none + dimensions = () + type = character + kind = len=* + intent = out + optional = F +[errflg] + standard_name = ccpp_error_flag + long_name = error flag for error handling in CCPP + units = flag + dimensions = () + type = integer + intent = out + optional = F From ed3768b9e0c5c226d79ceb52414aaed8578c7206 Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Tue, 5 Oct 2021 22:53:56 +0000 Subject: [PATCH 50/98] Implement positive-definite Total Variation Diminishing (TVD) mass-flux schemes for tracer diffusion in the PBL and advection in cumulus convection schemes. Author: Jongil Han --- physics/samfdeepcnv.f | 442 ++++++++++++++++++++++--- physics/samfshalcnv.f | 390 +++++++++++++++++++--- physics/satmedmfvdifq.F | 647 ++++++++++++++++++++++++++++++++++--- physics/satmedmfvdifq.meta | 8 + 4 files changed, 1354 insertions(+), 133 deletions(-) diff --git a/physics/samfdeepcnv.f b/physics/samfdeepcnv.f index a7ea0009b..f021ebed4 100644 --- a/physics/samfdeepcnv.f +++ b/physics/samfdeepcnv.f @@ -151,7 +151,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & & dt2, dtmax, dtmin, & dxcrtas, dxcrtuf, & dv1h, dv2h, dv3h, - & dv1q, dv2q, dv3q, + & dv2q, & dz, dz1, e1, edtmax, & edtmaxl, edtmaxs, el2orc, elocp, & es, etah, @@ -243,7 +243,11 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & & uo(im,km), vo(im,km), qeso(im,km), & ctr(im,km,ntr), ctro(im,km,ntr) ! for aerosol transport - real(kind=kind_phys) qaero(im,km,ntc) +! real(kind=kind_phys) qaero(im,km,ntc) +c variables for tracer wet deposition, + real(kind=kind_phys), dimension(im,km,ntc) :: chem_c, chem_pw, + & wet_dep +! ! for updraft velocity calculation real(kind=kind_phys) wu2(im,km), buo(im,km), drag(im,km) real(kind=kind_phys) wc(im), scaldfunc(im), sigmagfm(im) @@ -266,6 +270,14 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & & pwo(im,km), pwdo(im,km), c0t(im,km), & tx1(im), sumx(im), cnvwt(im,km) &, rhbar(im) +! +! variables for Total Variation Diminishing (TVD) flux-limiter scheme +! on environmental subsidence and uplifting +! + real(kind=kind_phys) q_diff(im,0:km-1), e_diff(im,0:km-1,ntr), + & flxtvd(im,0:km-1) + real(kind=kind_phys) rrkp, phkp + real(kind=kind_phys) tsumn(im), tsump(im), rtnp(im) ! logical do_aerosols, totflg, cnvflg(im), asqecflg(im), flg(im) ! @@ -318,6 +330,10 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & c c initialize arrays c + chem_c = 0. + chem_pw = 0. + wet_dep = 0. +! do i=1,im cnvflg(i) = .true. sfcpbl(i) = sfclfac * hpbl(i) @@ -1164,7 +1180,12 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & enddo enddo if (.not.hwrf_samfdeep) then - do n = 1, ntr + if (do_aerosols) then + kk = itc -3 + else + kk = ntr + endif + do n = 1, kk do k = 2, km1 do i = 1, im if (cnvflg(i)) then @@ -1179,6 +1200,28 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & enddo enddo enddo + if (do_aerosols) then + do n = 1, ntc + kk = n + itc -3 + do k = 2, km1 + do i = 1, im + if (cnvflg(i)) then + if(k > kb(i) .and. k < kmax(i)) then + dz = zi(i,k) - zi(i,k-1) + tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz + factor = 1. + tem + ecko(i,k,kk) = ((1.-tem)*ecko(i,k-1,kk)+tem* + & (ctro(i,k,kk)+ctro(i,k-1,kk)))/factor + chem_c(i,k,n)=fscav(n)*ecko(i,k,kk) + tem=chem_c(i,k,n)/(1.+c0t(i,k)*dz) + chem_pw(i,k,n)=c0t(i,k)*dz*tem*eta(i,k-1) + ecko(i,k,kk)=tem+ecko(i,k,kk)-chem_c(i,k,n) + endif + endif + enddo + enddo + enddo + endif endif c c taking account into convection inhibition due to existence of @@ -2009,8 +2052,8 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & dp = 1000. * del(i,1) dellah(i,1) = edto(i) * etad(i,1) * (hcdo(i,1) & - heo(i,1)) * grav / dp - dellaq(i,1) = edto(i) * etad(i,1) * (qrcdo(i,1) - & - qo(i,1)) * grav / dp + dellaq(i,1) = edto(i) * etad(i,1) * qrcdo(i,1) + & * grav / dp dellau(i,1) = edto(i) * etad(i,1) * (ucdo(i,1) & - uo(i,1)) * grav / dp dellav(i,1) = edto(i) * etad(i,1) * (vcdo(i,1) @@ -2022,8 +2065,8 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & do i = 1, im if(cnvflg(i)) then dp = 1000. * del(i,1) - dellae(i,1,n) = edto(i) * etad(i,1) * (ecdo(i,1,n) - & - ctro(i,1,n)) * grav / dp + dellae(i,1,n) = edto(i) * etad(i,1) * ecdo(i,1,n) + & * grav / dp endif enddo enddo @@ -2044,9 +2087,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & dv1h = heo(i,k) dv2h = .5 * (heo(i,k) + heo(i,k-1)) dv3h = heo(i,k-1) - dv1q = qo(i,k) dv2q = .5 * (qo(i,k) + qo(i,k-1)) - dv3q = qo(i,k-1) c tem = 0.5 * (xlamue(i,k)+xlamue(i,k-1)) tem1 = 0.5 * (xlamud(i,k)+xlamud(i,k-1)) @@ -2068,9 +2109,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & & ) *grav/dp cj dellaq(i,k) = dellaq(i,k) + - & ((aup*eta(i,k)-adw*edto(i)*etad(i,k))*dv1q - & - (aup*eta(i,k-1)-adw*edto(i)*etad(i,k-1))*dv3q - & - (aup*tem*eta(i,k-1)+adw*edto(i)*ptem*etad(i,k))*dv2q*dz + & (- (aup*tem*eta(i,k-1)+adw*edto(i)*ptem*etad(i,k))*dv2q*dz & + aup*tem1*eta(i,k-1)*.5*(qrcko(i,k)+qcko(i,k-1))*dz & + adw*edto(i)*ptem1*etad(i,k)*.5*(qrcdo(i,k)+qcdo(i,k-1))*dz & ) *grav/dp @@ -2103,10 +2142,10 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & if(k > jmin(i)) adw = 0. dp = 1000. * del(i,k) cj - tem1=eta(i,k)*(ctro(i,k,n)-ecko(i,k,n)) - tem2=eta(i,k-1)*(ctro(i,k-1,n)-ecko(i,k-1,n)) - ptem1=etad(i,k)*(ctro(i,k,n)-ecdo(i,k,n)) - ptem2=etad(i,k-1)*(ctro(i,k-1,n)-ecdo(i,k-1,n)) + tem1 = -eta(i,k) * ecko(i,k,n) + tem2 = -eta(i,k-1) * ecko(i,k-1,n) + ptem1 = -etad(i,k) * ecdo(i,k,n) + ptem2 = -etad(i,k-1) * ecdo(i,k-1,n) dellae(i,k,n) = dellae(i,k,n) + & (aup*(tem1-tem2)-adw*edto(i)*(ptem1-ptem2))*grav/dp cj @@ -2125,9 +2164,8 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & dv1h = heo(i,indx-1) dellah(i,indx) = eta(i,indx-1) * & (hcko(i,indx-1) - dv1h) * grav / dp - dv1q = qo(i,indx-1) dellaq(i,indx) = eta(i,indx-1) * - & (qcko(i,indx-1) - dv1q) * grav / dp + & qcko(i,indx-1) * grav / dp dellau(i,indx) = eta(i,indx-1) * & (ucko(i,indx-1) - uo(i,indx-1)) * grav / dp dellav(i,indx) = eta(i,indx-1) * @@ -2146,11 +2184,180 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & indx = ktcon(i) dp = 1000. * del(i,indx) dellae(i,indx,n) = eta(i,indx-1) * - & (ecko(i,indx-1,n) - ctro(i,indx-1,n)) * grav / dp + & ecko(i,indx-1,n) * grav / dp endif enddo enddo endif +! +! compute change rates due to environmental subsidence & uplift +! using a positive definite TVD flux-limiter scheme +! +! for moisture +! + do k=1,km1 + do i=1,im + if(cnvflg(i) .and. k <= ktcon(i)) then + q_diff(i,k) = q1(i,k) - q1(i,k+1) + endif + enddo + enddo + do i=1,im + if(cnvflg(i)) then + if(q1(i,1) >= 0.) then + q_diff(i,0) = max(0.,2.*q1(i,1)-q1(i,2))- + & q1(i,1) + else + q_diff(i,0) = min(0.,2.*q1(i,1)-q1(i,2))- + & q1(i,1) + endif + endif + enddo +! + flxtvd = 0. + do k = 1, km1 + do i = 1, im + if(cnvflg(i) .and. k < ktcon(i)) then + tem = 0. + if(k >= kb(i)) tem = eta(i,k) + if(k <= jmin(i)) then + tem = tem - edto(i) * etad(i,k) + endif + if(tem > 0.) then + rrkp = 0. + if(abs(q_diff(i,k)) > 1.e-22) + & rrkp = q_diff(i,k+1) / q_diff(i,k) + phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp)) + tem1 = q1(i,k+1) + + & phkp*(qo(i,k)-q1(i,k+1)) + flxtvd(i,k) = tem * tem1 + elseif(tem < 0.) then + rrkp = 0. + if(abs(q_diff(i,k)) > 1.e-22) + & rrkp = q_diff(i,k-1) / q_diff(i,k) + phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp)) + tem1 = q1(i,k) + + & phkp*(qo(i,k)-q1(i,k)) + flxtvd(i,k) = tem * tem1 + else + tem1 = qo(i,k) + flxtvd(i,k) = 0. + endif +! +! subtract the double counting change rates at jmin+1 & kb beforehand +! + if(k == jmin(i)) then + dp = 1000. * del(i,k+1) + dellaq(i,k+1) = dellaq(i,k+1) - + & edto(i) * etad(i,k) * tem1 * grav/dp + endif + if(k == kb(i)) then + dp = 1000. * del(i,k) + dellaq(i,k) = dellaq(i,k) - + & eta(i,k) * tem1 * grav/dp + endif +! + endif + enddo + enddo +! + do k=1,km1 + do i=1,im + if(cnvflg(i) .and. k <= ktcon(i)) then + dp = 1000. * del(i,k) + dellaq(i,k) = dellaq(i,k) + + & (flxtvd(i,k) - flxtvd(i,k-1)) * grav/dp + endif + enddo + enddo +! +! for tracers including TKE & ozone +! + if (.not.hwrf_samfdeep) then +! + do n=1,ntr + do k=1,km1 + do i=1,im + if(cnvflg(i) .and. k <= ktcon(i)) then + e_diff(i,k,n) = ctr(i,k,n) - ctr(i,k+1,n) + endif + enddo + enddo + do i=1,im + if(cnvflg(i)) then + if(ctr(i,1,n) >= 0.) then + e_diff(i,0,n) = max(0.,2.*ctr(i,1,n)-ctr(i,2,n))- + & ctr(i,1,n) + else + e_diff(i,0,n) = min(0.,2.*ctr(i,1,n)-ctr(i,2,n))- + & ctr(i,1,n) + endif + endif + enddo + enddo +! + do n=1,ntr +! + flxtvd = 0. + do k = 1, km1 + do i = 1, im + if(cnvflg(i) .and. k < ktcon(i)) then + tem = 0. + if(k >= kb(i)) tem = eta(i,k) + if(k <= jmin(i)) then + tem = tem - edto(i) * etad(i,k) + endif + if(tem > 0.) then + rrkp = 0. + if(abs(e_diff(i,k,n)) > 1.e-22) + & rrkp = e_diff(i,k+1,n) / e_diff(i,k,n) + phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp)) + tem1 = ctr(i,k+1,n) + + & phkp*(ctro(i,k,n)-ctr(i,k+1,n)) + flxtvd(i,k) = tem * tem1 + elseif(tem < 0.) then + rrkp = 0. + if(abs(e_diff(i,k,n)) > 1.e-22) + & rrkp = e_diff(i,k-1,n) / e_diff(i,k,n) + phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp)) + tem1 = ctr(i,k,n) + + & phkp*(ctro(i,k,n)-ctr(i,k,n)) + flxtvd(i,k) = tem * tem1 + else + tem1 = ctro(i,k,n) + flxtvd(i,k) = 0. + endif +! +! subtract the double counting change rates at jmin+1 & kb beforehand +! + if(k == jmin(i)) then + dp = 1000. * del(i,k+1) + dellae(i,k+1,n) = dellae(i,k+1,n) - + & edto(i)*etad(i,k) * tem1 * grav/dp + endif + if(k == kb(i)) then + dp = 1000. * del(i,k) + dellae(i,k,n) = dellae(i,k,n) - + & eta(i,k) * tem1 * grav/dp + endif +! + endif + enddo + enddo +! + do k=1,km1 + do i=1,im + if(cnvflg(i) .and. k <= ktcon(i)) then + dp = 1000. * del(i,k) + dellae(i,k,n) = dellae(i,k,n) + + & (flxtvd(i,k) - flxtvd(i,k-1)) * grav/dp + endif + enddo + enddo +! + enddo +! + endif c c------- final changed variable per unit mass flux c @@ -2680,13 +2887,13 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & endif !> - Transport aerosols if present - - if (do_aerosols) - & call samfdeepcnv_aerosols(im, im, km, itc, ntc, ntr, delt, - & xlamde, xlamdd, cnvflg, jmin, kb, kmax, kd94, ktcon, fscav, - & edto, xlamd, xmb, c0t, eta, etad, zi, xlamue, xlamud, delp, - & qtr, qaero) - +! +! if (do_aerosols) +! & call samfdeepcnv_aerosols(im, im, km, itc, ntc, ntr, delt, +! & xlamde, xlamdd, cnvflg, jmin, kb, kmax, kd94, ktcon, fscav, +! & edto, xlamd, xmb, c0t, eta, etad, zi, xlamue, xlamud, delp, +! & qtr, qaero) +! c c restore to,qo,uo,vo to t1,q1,u1,v1 in case convection stops c @@ -2706,10 +2913,11 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & enddo if (.not.hwrf_samfdeep) then do n = 1, ntr + kk = n+2 do k = 1, km do i = 1, im if (cnvflg(i) .and. k <= kmax(i)) then - ctro(i,k,n) = ctr(i,k,n) + ctro(i,k,n) = qtr(i,k,kk) endif enddo enddo @@ -2762,22 +2970,164 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & endif enddo enddo +! +! Negative moisture is set to zero after borrowing it from +! positive values within the mass-flux transport layers +! + do i = 1,im + tsumn(i) = 0. + tsump(i) = 0. + rtnp(i) = 1. + enddo + do k = 1,km + do i = 1,im + if(cnvflg(i) .and. k <= ktcon(i)) then + if(q1(i,k) < 0.) tsumn(i) = tsumn(i) + q1(i,k) + if(q1(i,k) > 0.) tsump(i) = tsump(i) + q1(i,k) + endif + enddo + enddo + do i = 1,im + if(cnvflg(i)) then + if(tsump(i) > 0. .and. tsumn(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + rtnp(i) = tsumn(i) / tsump(i) + else + rtnp(i) = tsump(i) / tsumn(i) + endif + endif + endif + enddo + do k = 1,km + do i = 1,im + if(cnvflg(i) .and. k <= ktcon(i)) then + if(rtnp(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + if(q1(i,k) < 0.) q1(i,k) = 0. + if(q1(i,k) > 0.) q1(i,k) = (1.+rtnp(i))*q1(i,k) + else + if(q1(i,k) < 0.) q1(i,k) = (1.+rtnp(i))*q1(i,k) + if(q1(i,k) > 0.) q1(i,k) = 0. + endif + endif + endif + enddo + enddo +! if (.not.hwrf_samfdeep) then do n = 1, ntr - kk = n+2 +! do k = 1, km do i = 1, im if (cnvflg(i) .and. k <= kmax(i)) then if(k <= ktcon(i)) then ctr(i,k,n) = ctr(i,k,n)+dellae(i,k,n)*xmb(i)*dt2 + dp = 1000. * del(i,k) delebar(i,n)=delebar(i,n)+dellae(i,k,n)*xmb(i)*dp/grav - qtr(i,k,kk) = ctr(i,k,n) endif endif enddo enddo +! +! Negative TKE, ozone, and aerosols are set to zero after borrowing them +! from positive values within the mass-flux transport layers +! + do i = 1,im + tsumn(i) = 0. + tsump(i) = 0. + rtnp(i) = 1. + enddo + do k = 1,km + do i = 1,im + if(cnvflg(i) .and. k <= ktcon(i)) then + if(ctr(i,k,n) < 0.) tsumn(i) = tsumn(i) + ctr(i,k,n) + if(ctr(i,k,n) > 0.) tsump(i) = tsump(i) + ctr(i,k,n) + endif + enddo + enddo + do i = 1,im + if(cnvflg(i)) then + if(tsump(i) > 0. .and. tsumn(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + rtnp(i) = tsumn(i) / tsump(i) + else + rtnp(i) = tsump(i) / tsumn(i) + endif + endif + endif + enddo + do k = 1,km + do i = 1,im + if(cnvflg(i) .and. k <= ktcon(i)) then + if(rtnp(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + if(ctr(i,k,n)<0.) ctr(i,k,n)=0. + if(ctr(i,k,n)>0.) ctr(i,k,n)=(1.+rtnp(i))*ctr(i,k,n) + else + if(ctr(i,k,n)<0.) ctr(i,k,n)=(1.+rtnp(i))*ctr(i,k,n) + if(ctr(i,k,n)>0.) ctr(i,k,n)=0. + endif + endif + endif + enddo + enddo +! + kk = n+2 + do k = 1, km + do i = 1, im + if(cnvflg(i) .and. k <= ktcon(i)) then + qtr(i,k,kk) = ctr(i,k,n) + endif + enddo + enddo +! enddo +! + if (do_aerosols) then +! + do n = 1, ntc +! +! convert wet deposition to total mass deposited over dt2 and dp + do k = 2, km1 + do i = 1, im + if (cnvflg(i)) then + if(k > kb(i) .and. k < ktcon(i)) then + dp = 1000. * del(i,k) + wet_dep(i,k,n) = chem_pw(i,k,n)*grav/dp + wet_dep(i,k,n) = wet_dep(i,k,n)*xmb(i)*dt2*dp + endif + endif + enddo + enddo +! + kk = n + itc - 1 + do k = 2, km1 + do i = 1, im + if (cnvflg(i)) then + if(k > kb(i) .and. k < ktcon(i)) then + dp = 1000. * del(i,k) + if (qtr(i,k,kk) < 0.) then +! borrow negative mass from wet deposition + tem = -qtr(i,k,kk)*dp + if(wet_dep(i,k,n) >= tem) then + wet_dep(i,k,n) = wet_dep(i,k,n) - tem + qtr(i,k,kk) = 0. + else + wet_dep(i,k,n) = 0. + qtr(i,k,kk) = qtr(i,k,kk)+wet_dep(i,k,n)/dp + endif + endif + endif + endif + enddo + enddo +! + enddo +! + endif +! endif +! !> - Recalculate saturation specific humidity using the updated temperature. do k = 1, km do i = 1, im @@ -2869,11 +3219,14 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & enddo endif cj -! do i = 1, im +! do i = 1, 4 ! if(me == 31 .and. cnvflg(i)) then ! if(cnvflg(i)) then +! if(i==1) print*,'ntr:ntk= ',ntr,ntk ! print *, ' deep delhbar, delqbar, deltbar = ', ! & delhbar(i),hvap*delqbar(i),cp*deltbar(i) +! print *, ' deep delebar ozone = ',delebar(i,1) +! print *, ' deep delebar tke = ',delebar(i,2) ! print *, ' deep delubar, delvbar = ',delubar(i),delvbar(i) ! print *, ' precip =', hvap*rn(i)*1000./dt2 ! print*,'pdif= ',pfld(i,kbcon(i))-pfld(i,ktcon(i)) @@ -2975,27 +3328,38 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & do i = 1, im if(cnvflg(i) .and. rn(i) <= 0.) then if (k <= kmax(i)) then - ctr(i,k,n)= ctro(i,k,n) - qtr(i,k,kk)= ctr(i,k,n) + qtr(i,k,kk)= ctro(i,k,n) endif endif enddo enddo enddo - -!> - Store aerosol concentrations if present if (do_aerosols) then do n = 1, ntc - kk = n + itc - 1 - do k = 1, km + do k = 2, km1 do i = 1, im - if(cnvflg(i) .and. rn(i) > 0.) then - if (k <= kmax(i)) qtr(i,k,kk) = qaero(i,k,n) + if(cnvflg(i) .and. rn(i) <= 0.) then + if (k <= ktcon(i)) then + wet_dep(i,k,n) = 0. + endif endif enddo enddo enddo - endif + endif +!> - Store aerosol concentrations if present +! if (do_aerosols) then +! do n = 1, ntc +! kk = n + itc - 1 +! do k = 1, km +! do i = 1, im +! if(cnvflg(i) .and. rn(i) > 0.) then +! if (k <= kmax(i)) qtr(i,k,kk) = qaero(i,k,n) +! endif +! enddo +! enddo +! enddo +! endif endif ! ! hchuang code change diff --git a/physics/samfshalcnv.f b/physics/samfshalcnv.f index c314809cc..ae9b349bc 100644 --- a/physics/samfshalcnv.f +++ b/physics/samfshalcnv.f @@ -104,7 +104,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & & dq, dqsdp, dqsdt, dt, & dt2, dtmax, dtmin, dxcrt, & dv1h, dv2h, dv3h, - & dv1q, dv2q, dv3q, + & dv2q, & dz, dz1, e1, & el2orc, elocp, aafac, cm, & es, etah, h1, @@ -188,7 +188,12 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & & uo(im,km), vo(im,km), qeso(im,km), & ctr(im,km,ntr), ctro(im,km,ntr) ! for aerosol transport - real(kind=kind_phys) qaero(im,km,ntc) +! real(kind=kind_phys) qaero(im,km,ntc) +c variables for tracer wet deposition, + real(kind=kind_phys), dimension(im,km,ntc) :: chem_c, chem_pw, + & wet_dep + real(kind=kind_phys), parameter :: escav = 0.8 ! wet scavenging efficiency +! ! for updraft velocity calculation real(kind=kind_phys) wu2(im,km), buo(im,km), drag(im,km) real(kind=kind_phys) wc(im), scaldfunc(im), sigmagfm(im) @@ -208,6 +213,14 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & & zi(im,km), pwo(im,km), c0t(im,km), & sumx(im), tx1(im), cnvwt(im,km) &, rhbar(im) +! +! variables for Total Variation Diminishing (TVD) flux-limiter scheme +! on environmental subsidence and uplifting +! + real(kind=kind_phys) q_diff(im,0:km-1), e_diff(im,0:km-1,ntr), + & flxtvd(im,km-1) + real(kind=kind_phys) rrkp, phkp + real(kind=kind_phys) tsumn(im), tsump(im), rtnp(im) ! logical do_aerosols, totflg, cnvflg(im), flg(im) ! @@ -252,6 +265,11 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & c initialize arrays c !> - Initialize column-integrated and other single-value-per-column variable arrays. +! + chem_c = 0. + chem_pw = 0. + wet_dep = 0. +! if(hwrf_samfshal) then do i=1,im cnvflg(i) = .true. @@ -966,7 +984,12 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & enddo if (.not.hwrf_samfshal) then - do n = 1, ntr + if (do_aerosols) then + kk = itc -3 + else + kk = ntr + endif + do n = 1, kk do k = 2, km1 do i = 1, im if (cnvflg(i)) then @@ -981,6 +1004,28 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & enddo enddo enddo + if (do_aerosols) then + do n = 1, ntc + kk = n + itc -3 + do k = 2, km1 + do i = 1, im + if (cnvflg(i)) then + if(k > kb(i) .and. k < kmax(i)) then + dz = zi(i,k) - zi(i,k-1) + tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz + factor = 1. + tem + ecko(i,k,kk) = ((1.-tem)*ecko(i,k-1,kk)+tem* + & (ctro(i,k,kk)+ctro(i,k-1,kk)))/factor + chem_c(i,k,n)=escav*fscav(n)*ecko(i,k,kk) + tem=chem_c(i,k,n)/(1.+c0t(i,k)*dz) + chem_pw(i,k,n)=c0t(i,k)*dz*tem*eta(i,k-1) + ecko(i,k,kk)=tem+ecko(i,k,kk)-chem_c(i,k,n) + endif + endif + enddo + enddo + enddo + endif endif c c taking account into convection inhibition due to existence of @@ -1520,9 +1565,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & dv1h = heo(i,k) dv2h = .5 * (heo(i,k) + heo(i,k-1)) dv3h = heo(i,k-1) - dv1q = qo(i,k) dv2q = .5 * (qo(i,k) + qo(i,k-1)) - dv3q = qo(i,k-1) c tem = 0.5 * (xlamue(i,k)+xlamue(i,k-1)) tem1 = xlamud(i) @@ -1534,8 +1577,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & & ) *grav/dp cj dellaq(i,k) = dellaq(i,k) + - & ( eta(i,k)*dv1q - eta(i,k-1)*dv3q - & - tem*eta(i,k-1)*dv2q*dz + & ( - tem*eta(i,k-1)*dv2q*dz & + tem1*eta(i,k-1)*.5*(qrcko(i,k)+qcko(i,k-1))*dz & ) *grav/dp cj @@ -1559,8 +1601,8 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & if(k > kb(i) .and. k < ktcon(i)) then dp = 1000. * del(i,k) cj - tem1=eta(i,k)*(ctro(i,k,n)-ecko(i,k,n)) - tem2=eta(i,k-1)*(ctro(i,k-1,n)-ecko(i,k-1,n)) + tem1 = -eta(i,k) * ecko(i,k,n) + tem2 = -eta(i,k-1) * ecko(i,k-1,n) dellae(i,k,n) = dellae(i,k,n) + (tem1-tem2) * grav/dp cj endif @@ -1579,9 +1621,8 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & dv1h = heo(i,indx-1) dellah(i,indx) = eta(i,indx-1) * & (hcko(i,indx-1) - dv1h) * grav / dp - dv1q = qo(i,indx-1) dellaq(i,indx) = eta(i,indx-1) * - & (qcko(i,indx-1) - dv1q) * grav / dp + & qcko(i,indx-1) * grav / dp dellau(i,indx) = eta(i,indx-1) * & (ucko(i,indx-1) - uo(i,indx-1)) * grav / dp dellav(i,indx) = eta(i,indx-1) * @@ -1600,12 +1641,125 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & indx = ktcon(i) dp = 1000. * del(i,indx) dellae(i,indx,n) = eta(i,indx-1) * - & (ecko(i,indx-1,n) - ctro(i,indx-1,n)) * grav / dp + & ecko(i,indx-1,n) * grav / dp endif enddo enddo endif ! +! compute change rates due to environmental subsidence & uplift +! using a positive definite TVD flux-limiter scheme +! +! for moisture +! + do k=1,km1 + do i=1,im + if(cnvflg(i) .and. k <= ktcon(i)) then + q_diff(i,k) = q1(i,k) - q1(i,k+1) + endif + enddo + enddo + do i=1,im + if(cnvflg(i)) then + if(q1(i,1) >= 0.) then + q_diff(i,0) = max(0.,2.*q1(i,1)-q1(i,2))- + & q1(i,1) + else + q_diff(i,0) = min(0.,2.*q1(i,1)-q1(i,2))- + & q1(i,1) + endif + endif + enddo +! + flxtvd = 0. + do k = 1, km1 + do i = 1, im + if(cnvflg(i) .and. + & (k >= kb(i) .and. k < ktcon(i))) then + if(eta(i,k) > 0.) then + rrkp = 0. + if(abs(q_diff(i,k)) > 1.e-22) + & rrkp = q_diff(i,k+1) / q_diff(i,k) + phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp)) + tem1 = q1(i,k+1) + + & phkp*(qo(i,k)-q1(i,k+1)) + flxtvd(i,k) = eta(i,k) * tem1 + endif + endif + enddo + enddo +! + do k = 2, km1 + do i = 1, im + if(cnvflg(i) .and. + & (k > kb(i) .and. k <= ktcon(i))) then + dp = 1000. * del(i,k) + dellaq(i,k) = dellaq(i,k) + + & (flxtvd(i,k) - flxtvd(i,k-1)) * grav/dp + endif + enddo + enddo +! +! for tracers including TKE & ozone +! + if (.not.hwrf_samfshal) then +! + do n=1,ntr + do k=1,km1 + do i=1,im + if(cnvflg(i) .and. k <= ktcon(i)) then + e_diff(i,k,n) = ctr(i,k,n) - ctr(i,k+1,n) + endif + enddo + enddo + do i=1,im + if(cnvflg(i)) then + if(ctr(i,1,n) >= 0.) then + e_diff(i,0,n) = max(0.,2.*ctr(i,1,n)-ctr(i,2,n))- + & ctr(i,1,n) + else + e_diff(i,0,n) = min(0.,2.*ctr(i,1,n)-ctr(i,2,n))- + & ctr(i,1,n) + endif + endif + enddo + enddo +! + do n=1,ntr +! + flxtvd = 0. + do k= 1, km1 + do i = 1, im + if(cnvflg(i) .and. + & (k >= kb(i) .and. k < ktcon(i))) then + if(eta(i,k) > 0.) then + rrkp = 0. + if(abs(e_diff(i,k,n)) > 1.e-22) + & rrkp = e_diff(i,k+1,n) / e_diff(i,k,n) + phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp)) + tem1 = ctr(i,k+1,n) + + & phkp*(ctro(i,k,n)-ctr(i,k+1,n)) + flxtvd(i,k) = eta(i,k) * tem1 + endif + endif + enddo + enddo +! + do k = 2, km1 + do i = 1, im + if(cnvflg(i) .and. + & (k > kb(i) .and. k <= ktcon(i))) then + dp = 1000. * del(i,k) + dellae(i,k,n) = dellae(i,k,n) + + & (flxtvd(i,k) - flxtvd(i,k-1)) * grav/dp + endif + enddo + enddo +! + enddo +! + endif +! ! compute convective turn-over time ! !> - Following Bechtold et al. (2008) \cite bechtold_et_al_2008, calculate the convective turnover time using the mean updraft velocity (wc) and the cloud depth. It is also proportional to the grid size (gdx). @@ -1694,15 +1848,15 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & ! !> - Transport aerosols if present ! - if (.not.hwrf_samfshal) then - if (do_aerosols) - & call samfshalcnv_aerosols(im, im, km, itc, ntc, ntr, delt, -! & xlamde, xlamdd, cnvflg, jmin, kb, kmax, kbcon, ktcon, fscav, - & cnvflg, kb, kmax, kbcon, ktcon, fscav, -! & edto, xlamd, xmb, c0t, eta, etad, zi, xlamue, xlamud, delp, - & xmb, c0t, eta, zi, xlamue, xlamud, delp, - & qtr, qaero) - endif +! if (.not.hwrf_samfshal) then +! if (do_aerosols) +! & call samfshalcnv_aerosols(im, im, km, itc, ntc, ntr, delt, +!! & xlamde, xlamdd, cnvflg, jmin, kb, kmax, kbcon, ktcon, fscav, +! & cnvflg, kb, kmax, ktcon, fscav, +!! & edto, xlamd, xmb, c0t, eta, etad, zi, xlamue, xlamud, delp, +! & xmb, c0t, eta, zi, xlamue, xlamud, delp, +! & qtr, qaero) +! endif ! !> ## 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. !! - Recalculate saturation specific humidity. @@ -1761,21 +1915,173 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & endif enddo enddo +! +! Negative moisture is set to zero after borrowing it from +! positive values within the mass-flux transport layers +! + do i = 1,im + tsumn(i) = 0. + tsump(i) = 0. + rtnp(i) = 1. + enddo + do k = 1,km + do i = 1,im + if (cnvflg(i)) then + if(k > kb(i) .and. k <= ktcon(i)) then + if(q1(i,k) < 0.) tsumn(i) = tsumn(i) + q1(i,k) + if(q1(i,k) > 0.) tsump(i) = tsump(i) + q1(i,k) + endif + endif + enddo + enddo + do i = 1,im + if(cnvflg(i)) then + if(tsump(i) > 0. .and. tsumn(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + rtnp(i) = tsumn(i) / tsump(i) + else + rtnp(i) = tsump(i) / tsumn(i) + endif + endif + endif + enddo + do k = 1,km + do i = 1,im + if (cnvflg(i)) then + if(k > kb(i) .and. k <= ktcon(i)) then + if(rtnp(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + if(q1(i,k) < 0.) q1(i,k)= 0. + if(q1(i,k) > 0.) q1(i,k)=(1.+rtnp(i))*q1(i,k) + else + if(q1(i,k) < 0.) q1(i,k)=(1.+rtnp(i))*q1(i,k) + if(q1(i,k) > 0.) q1(i,k)=0. + endif + endif + endif + endif + enddo + enddo +! if (.not.hwrf_samfshal) then +! do n = 1, ntr - kk = n+2 - do k = 1, km +! + do k = 1, km + do i = 1, im + if (cnvflg(i)) then + if(k > kb(i) .and. k <= ktcon(i)) then + ctr(i,k,n) = ctr(i,k,n)+dellae(i,k,n)*xmb(i)*dt2 + dp = 1000. * del(i,k) + delebar(i,n)=delebar(i,n)+dellae(i,k,n)*xmb(i)*dp/grav + endif + endif + enddo + enddo +! +! Negative TKE, ozone, and aerosols are set to zero after borrowing them +! from positive values within the mass-flux transport layers +! + do i = 1,im + tsumn(i) = 0. + tsump(i) = 0. + rtnp(i) = 1. + enddo + do k = 1,km + do i = 1,im + if (cnvflg(i)) then + if(k > kb(i) .and. k <= ktcon(i)) then + if(ctr(i,k,n) < 0.) tsumn(i) = tsumn(i) + ctr(i,k,n) + if(ctr(i,k,n) > 0.) tsump(i) = tsump(i) + ctr(i,k,n) + endif + endif + enddo + enddo + do i = 1,im + if(cnvflg(i)) then + if(tsump(i) > 0. .and. tsumn(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + rtnp(i) = tsumn(i) / tsump(i) + else + rtnp(i) = tsump(i) / tsumn(i) + endif + endif + endif + enddo + do k = 1,km + do i = 1,im + if (cnvflg(i)) then + if(k > kb(i) .and. k <= ktcon(i)) then + if(rtnp(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + if(ctr(i,k,n)<0.) ctr(i,k,n)=0. + if(ctr(i,k,n)>0.) ctr(i,k,n)=(1.+rtnp(i))*ctr(i,k,n) + else + if(ctr(i,k,n)<0.) ctr(i,k,n)=(1.+rtnp(i))*ctr(i,k,n) + if(ctr(i,k,n)>0.) ctr(i,k,n)=0. + endif + endif + endif + endif + enddo + enddo +! + kk = n+2 + do k = 1, km do i = 1, im - if (cnvflg(i) .and. k <= kmax(i)) then - if(k <= ktcon(i)) then - ctr(i,k,n) = ctr(i,k,n)+dellae(i,k,n)*xmb(i)*dt2 - delebar(i,n)=delebar(i,n)+dellae(i,k,n)*xmb(i)*dp/grav + if (cnvflg(i)) then + if(k > kb(i) .and. k <= ktcon(i)) then qtr(i,k,kk) = ctr(i,k,n) endif endif enddo + enddo +! enddo - enddo +! + if (do_aerosols) then +! + do n = 1, ntc +! +! convert wet deposition to total mass deposited over dt2 and dp + do k = 2, km1 + do i = 1, im + if (cnvflg(i)) then + if(k > kb(i) .and. k < ktcon(i)) then + dp = 1000. * del(i,k) + wet_dep(i,k,n) = chem_pw(i,k,n)*grav/dp + wet_dep(i,k,n) = wet_dep(i,k,n)*xmb(i)*dt2*dp + endif + endif + enddo + enddo +! + kk = n + itc - 1 + do k = 2, km1 + do i = 1, im + if (cnvflg(i)) then + if(k > kb(i) .and. k < ktcon(i)) then + dp = 1000. * del(i,k) + if (qtr(i,k,kk) < 0.) then +! borrow negative mass from wet deposition + tem = -qtr(i,k,kk)*dp + if(wet_dep(i,k,n) >= tem) then + wet_dep(i,k,n) = wet_dep(i,k,n) - tem + qtr(i,k,kk) = 0. + else + wet_dep(i,k,n) = 0. + qtr(i,k,kk) = qtr(i,k,kk)+wet_dep(i,k,n)/dp + endif + endif + endif + endif + enddo + enddo +! + enddo +! + endif +! endif ! !> - Recalculate saturation specific humidity using the updated temperature. @@ -1946,20 +2252,20 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & ! endif !> - Store aerosol concentrations if present - if (.not. hwrf_samfshal) then - if (do_aerosols) then - do n = 1, ntc - kk = n + itc - 1 - do k = 1, km - do i = 1, im - if(cnvflg(i) .and. rn(i) > 0.) then - if (k <= kmax(i)) qtr(i,k,kk) = qaero(i,k,n) - endif - enddo - enddo - enddo - endif - endif +! if (.not. hwrf_samfshal) then +! if (do_aerosols) then +! do n = 1, ntc +! kk = n + itc - 1 +! do k = 1, km +! do i = 1, im +! if(cnvflg(i) .and. rn(i) > 0.) then +! if (k <= kmax(i)) qtr(i,k,kk) = qaero(i,k,n) +! endif +! enddo +! enddo +! enddo +! endif +! endif ! ! hchuang code change ! diff --git a/physics/satmedmfvdifq.F b/physics/satmedmfvdifq.F index bb02ccba9..3123ff507 100644 --- a/physics/satmedmfvdifq.F +++ b/physics/satmedmfvdifq.F @@ -67,7 +67,7 @@ end subroutine satmedmfvdifq_finalize !! (mfscuq.f). !! \section detail_satmedmfvidfq GFS satmedmfvdifq Detailed Algorithm !! @{ - subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & + subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & & grav,rd,cp,rv,hvap,hfus,fv,eps,epsm1, & & dv,du,tdt,rtg,u1,v1,t1,q1,swh,hlw,xmu,garea,zvfun, & & psk,rbsoil,zorl,u10m,v10m,fm,fh, & @@ -86,7 +86,8 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & implicit none ! !---------------------------------------------------------------------- - integer, intent(in) :: im, km, ntrac, ntcw, ntiw, ntke, ntoz,ntqv + integer, intent(in) :: im, km, ntrac, ntcw, ntrw, ntiw, & + & ntke, ntoz, ntqv integer, intent(in) :: sfc_rlm integer, intent(in) :: kinver(:) integer, intent(out) :: kpbl(:) @@ -134,7 +135,8 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & !*** !*** local variables !*** - integer i,is,k,kk,n,ndt,km1,kmpbl,kmscu,ntrac1,idtend + integer i,is,k,n,ndt,km1,kmpbl,kmscu,ntrac1,idtend + integer kps,kbx,kmx integer lcld(im),kcld(im),krad(im),mrad(im) integer kx1(im), kpblx(im) ! @@ -187,6 +189,15 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & real(kind=kind_phys) tcdo(im,km), qcdo(im,km,ntrac), & ucdo(im,km), vcdo(im,km), & buod(im,km), xmfd(im,km) +! +! variables for Total Variation Diminishing (TVD) flux-limiter scheme +! + real(kind=kind_phys) e_half(im,km-1), e_diff(im,0:km-1), + & q_half(im,km-1,ntrac-1), + & qh(im,km-1,ntrac-1), + & q_diff(im,0:km-1,ntrac-1) + real(kind=kind_phys) rrkp, phkp + real(kind=kind_phys) tsumn(im), tsump(im), rtnp(im) ! logical pblflg(im), sfcflg(im), flg(im) logical scuflg(im), pcnvflg(im) @@ -241,7 +252,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & parameter(qmin=1.e-8,qlmin=1.e-12,zfmin=1.e-8) parameter(aphi5=5.,aphi16=16.) parameter(elmfac=1.0,elefac=1.0,cql=100.) - parameter(dw2min=1.e-4,dkmax=1000.,xkgdx=3000.) + parameter(dw2min=1.e-4,dkmax=1000.,xkgdx=1000.) parameter(qlcr=3.5e-5,zstblmax=2500.) parameter(xkinv1=0.15,xkinv2=0.3) parameter(h1=0.33333333,hcrinv=250.) @@ -815,14 +826,14 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & endif enddo enddo - do kk = 1, ntrac1 + do n = 1, ntrac1 do k = 1, km do i = 1, im if(pcnvflg(i)) then - qcko(i,k,kk) = q1(i,k,kk) + qcko(i,k,n) = q1(i,k,n) endif if(scuflg(i)) then - qcdo(i,k,kk) = q1(i,k,kk) + qcdo(i,k,n) = q1(i,k,n) endif enddo enddo @@ -1302,6 +1313,126 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & enddo enddo ! +!-------------------------------------------------------- +! compute variables for TVD flux-limiter scheme +! on environmental subsidence and uplifting +! + kps = max(kmpbl, kmscu) +! +! for moisture and tracers including hydrometeors +! + do n=1,ntrac1 + do k=1,kps + do i=1,im + qh(i,k,n) = 0.5 * (q1(i,k,n)+q1(i,k+1,n)) + enddo + enddo + do k=1,kps + do i=1,im + q_diff(i,k,n) = q1(i,k,n) - q1(i,k+1,n) + enddo + enddo + do i=1,im + if(q1(i,1,n) >= 0.) then + q_diff(i,0,n) = max(0.,2.*q1(i,1,n)-q1(i,2,n))- + & q1(i,1,n) + else + q_diff(i,0,n) = min(0.,2.*q1(i,1,n)-q1(i,2,n))- + & q1(i,1,n) + endif + enddo + enddo +! + do n = 1, ntrac1 +! + do k = 1, kps + do i = 1, im + kmx = max(kpbl(i), krad(i)) + q_half(i,k,n) = qh(i,k,n) + if((pcnvflg(i) .or. scuflg(i)) .and. k < kmx) then + tem = 0. + if(pcnvflg(i) .and. k < kpbl(i)) then + tem = xmf(i,k) + endif + if(scuflg(i) .and. + & (k >= mrad(i) .and. k < krad(i))) then + tem = tem - xmfd(i,k) + endif + if(tem > 0.) then + rrkp = 0. + if(abs(q_diff(i,k,n)) > 1.e-22) + & rrkp = q_diff(i,k+1,n) / q_diff(i,k,n) + phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp)) + q_half(i,k,n) = q1(i,k+1,n) + + & phkp*(qh(i,k,n)-q1(i,k+1,n)) + elseif (tem < 0.) then + rrkp = 0. + if(abs(q_diff(i,k,n)) > 1.e-22) + & rrkp = q_diff(i,k-1,n) / q_diff(i,k,n) + phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp)) + q_half(i,k,n) = q1(i,k,n) + + & phkp*(qh(i,k,n)-q1(i,k,n)) + endif + endif + enddo + enddo +! + enddo +! +! for tke +! + do k=1,kps + do i=1,im + tkeh(i,k) = 0.5 * (tke(i,k)+tke(i,k+1)) + enddo + enddo + do k=1,kps + do i=1,im + e_diff(i,k) = tke(i,k) - tke(i,k+1) + enddo + enddo + do i=1,im + if(tke(i,1) >= 0.) then + e_diff(i,0) = max(0.,2.*tke(i,1)-tke(i,2))- + & tke(i,1) + else + e_diff(i,0) = min(0.,2.*tke(i,1)-tke(i,2))- + & tke(i,1) + endif + enddo +! + do k = 1, kps + do i = 1, im + kmx = max(kpbl(i), krad(i)) + e_half(i,k) = tkeh(i,k) + if((pcnvflg(i) .or. scuflg(i)) .and. (k < kmx)) then + tem = 0. + if(pcnvflg(i) .and. k < kpbl(i)) then + tem = xmf(i,k) + endif + if(scuflg(i) .and. + & (k >= mrad(i) .and. k < krad(i))) then + tem = tem - xmfd(i,k) + endif + if(tem > 0.) then + rrkp = 0. + if(abs(e_diff(i,k)) > 1.e-22) + & rrkp = e_diff(i,k+1) / e_diff(i,k) + phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp)) + e_half(i,k) = tke(i,k+1) + + & phkp*(tkeh(i,k)-tke(i,k+1)) + elseif (tem < 0.) then + rrkp = 0. + if(abs(e_diff(i,k)) > 1.e-22) + & rrkp = e_diff(i,k-1) / e_diff(i,k) + phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp)) + e_half(i,k) = tke(i,k) + + & phkp*(tkeh(i,k)-tke(i,k)) + endif + endif + enddo + enddo +! !---------------------------------------------------------------------- !> - Compute tridiagonal matrix elements for turbulent kinetic energy ! @@ -1328,10 +1459,9 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & ptem = 0.5 * tem2 * xmf(i,k) ptem1 = dtodsd * ptem ptem2 = dtodsu * ptem - tem = tke(i,k) + tke(i,k+1) ptem = qcko(i,k,ntke) + qcko(i,k+1,ntke) - f1(i,k) = f1(i,k)-(ptem-tem)*ptem1 - f1(i,k+1) = tke(i,k+1)+(ptem-tem)*ptem2 + f1(i,k) = f1(i,k) - ptem * ptem1 + f1(i,k+1) = tke(i,k+1) + ptem * ptem2 else f1(i,k+1) = tke(i,k+1) endif @@ -1341,12 +1471,20 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & ptem = 0.5 * tem2 * xmfd(i,k) ptem1 = dtodsd * ptem ptem2 = dtodsu * ptem - tem = tke(i,k) + tke(i,k+1) ptem = qcdo(i,k,ntke) + qcdo(i,k+1,ntke) - f1(i,k) = f1(i,k) + (ptem - tem) * ptem1 - f1(i,k+1) = f1(i,k+1) - (ptem - tem) * ptem2 + f1(i,k) = f1(i,k) + ptem * ptem1 + f1(i,k+1) = f1(i,k+1) - ptem * ptem2 endif endif +! + kmx = max(kpbl(i), krad(i)) + if((pcnvflg(i) .or. scuflg(i)) .and. (k < kmx)) then + ptem = tem2 * (xmf(i,k) - xmfd(i,k)) + ptem1 = dtodsd * ptem + ptem2 = dtodsu * ptem + f1(i,k) = f1(i,k) + e_half(i,k) * ptem1 + f1(i,k+1) = f1(i,k+1) - e_half(i,k) * ptem2 + endif ! enddo enddo @@ -1354,6 +1492,109 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & !> - Call tridit() to solve tridiagonal problem for TKE c call tridit(im,km,1,al,ad,au,f1,au,f1) +! +! Negative TKE is set to zero after borrowing it from positive +! values within the mass-flux transport layers +! + do i = 1,im + tsumn(i) = 0. + tsump(i) = 0. + rtnp(i) = 1. + enddo + do k = 1,kps + do i = 1,im + if(pcnvflg(i) .and. scuflg(i)) then + kbx = 1 + kmx = max(kpbl(i), krad(i)) + elseif(pcnvflg(i) .and. .not. scuflg(i)) then + kbx = 1 + kmx = kpbl(i) + elseif(.not. pcnvflg(i) .and. scuflg(i)) then + kbx = mrad(i) + kmx = krad(i) + endif + if((pcnvflg(i) .or. scuflg(i)) .and. + & (k >= kbx .and. k <= kmx)) then + if(f1(i,k) < 0.) tsumn(i) = tsumn(i) + f1(i,k) + if(f1(i,k) > 0.) tsump(i) = tsump(i) + f1(i,k) + endif + enddo + enddo + do i = 1,im + if(pcnvflg(i) .or. scuflg(i)) then + if(tsump(i) > 0. .and. tsumn(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + rtnp(i) = tsumn(i) / tsump(i) + else + rtnp(i) = tsump(i) / tsumn(i) + endif + endif + endif + enddo + do k = 1,kps + do i = 1,im + if(pcnvflg(i) .and. scuflg(i)) then + kbx = 1 + kmx = max(kpbl(i), krad(i)) + elseif(pcnvflg(i) .and. .not. scuflg(i)) then + kbx = 1 + kmx = kpbl(i) + elseif(.not. pcnvflg(i) .and. scuflg(i)) then + kbx = mrad(i) + kmx = krad(i) + endif + if((pcnvflg(i) .or. scuflg(i)) .and. + & (k >= kbx .and. k <= kmx)) then + if(rtnp(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + if(f1(i,k) < 0.) f1(i,k) = 0. + if(f1(i,k) > 0.) f1(i,k) = (1.+rtnp(i))*f1(i,k) + else + if(f1(i,k) < 0.) f1(i,k) = (1.+rtnp(i))*f1(i,k) + if(f1(i,k) > 0.) f1(i,k) = 0. + endif + endif + endif + enddo + enddo +! +! To remove negative TKEs which were leaked out of the mass-flux transport layers +! by eddy diffusion or potential negative TKEs from the diffusion scheme, +! positive TKEs are borrowed again now from the entire layers +! + do i = 1,im + tsumn(i) = 0. + tsump(i) = 0. + rtnp(i) = 1. + enddo + do k = 1,km + do i = 1,im + if(f1(i,k) < 0.) tsumn(i) = tsumn(i) + f1(i,k) + if(f1(i,k) > 0.) tsump(i) = tsump(i) + f1(i,k) + enddo + enddo + do i = 1,im + if(tsump(i) > 0. .and. tsumn(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + rtnp(i) = tsumn(i) / tsump(i) + else + rtnp(i) = tsump(i) / tsumn(i) + endif + endif + enddo + do k = 1,km + do i = 1,im + if(rtnp(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + if(f1(i,k) < 0.) f1(i,k) = 0. + if(f1(i,k) > 0.) f1(i,k) = (1.+rtnp(i))*f1(i,k) + else + if(f1(i,k) < 0.) f1(i,k) = (1.+rtnp(i))*f1(i,k) + if(f1(i,k) > 0.) f1(i,k) = 0. + endif + endif + enddo + enddo c !> - Recover the tendency of tke c @@ -1380,10 +1621,10 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & f2(i,1) = q1(i,1,1) + dtdz1(i) * evap(i) enddo if(ntrac1 >= 2) then - do kk = 2, ntrac1 - is = (kk-1) * km + do n = 2, ntrac1 + is = (n-1) * km do i = 1, im - f2(i,1+is) = q1(i,1,kk) + f2(i,1+is) = q1(i,1,n) enddo enddo endif @@ -1411,10 +1652,9 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & ptem = tcko(i,k) + tcko(i,k+1) f1(i,k) = f1(i,k)+dtodsd*dsdzt-(ptem-tem)*ptem1 f1(i,k+1) = t1(i,k+1)-dtodsu*dsdzt+(ptem-tem)*ptem2 - tem = q1(i,k,1) + q1(i,k+1,1) ptem = qcko(i,k,1) + qcko(i,k+1,1) - f2(i,k) = f2(i,k) - (ptem - tem) * ptem1 - f2(i,k+1) = q1(i,k+1,1) + (ptem - tem) * ptem2 + f2(i,k) = f2(i,k) - ptem * ptem1 + f2(i,k+1) = q1(i,k+1,1) + ptem * ptem2 else f1(i,k) = f1(i,k)+dtodsd*dsdzt f1(i,k+1) = t1(i,k+1)-dtodsu*dsdzt @@ -1430,51 +1670,64 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & tem = t1(i,k) + t1(i,k+1) f1(i,k) = f1(i,k) + (ptem - tem) * ptem1 f1(i,k+1) = f1(i,k+1) - (ptem - tem) * ptem2 - tem = q1(i,k,1) + q1(i,k+1,1) ptem = qcdo(i,k,1) + qcdo(i,k+1,1) - f2(i,k) = f2(i,k) + (ptem - tem) * ptem1 - f2(i,k+1) = f2(i,k+1) - (ptem - tem) * ptem2 + f2(i,k) = f2(i,k) + ptem * ptem1 + f2(i,k+1) = f2(i,k+1) - ptem * ptem2 endif endif +! + kmx = max(kpbl(i), krad(i)) + if((pcnvflg(i) .or. scuflg(i)) .and. (k < kmx)) then + ptem = tem2 * (xmf(i,k) - xmfd(i,k)) + ptem1 = dtodsd * ptem + ptem2 = dtodsu * ptem + f2(i,k) = f2(i,k) + q_half(i,k,1) * ptem1 + f2(i,k+1) = f2(i,k+1) - q_half(i,k,1) * ptem2 + endif +! enddo enddo ! if(ntrac1 >= 2) then - do kk = 2, ntrac1 - is = (kk-1) * km + do n = 2, ntrac1 + is = (n-1) * km do k = 1, km1 do i = 1, im + dtodsd = dt2/del(i,k) + dtodsu = dt2/del(i,k+1) + dsig = prsl(i,k)-prsl(i,k+1) + tem2 = dsig * rdzt(i,k) +! if(pcnvflg(i) .and. k < kpbl(i)) then - dtodsd = dt2/del(i,k) - dtodsu = dt2/del(i,k+1) - dsig = prsl(i,k)-prsl(i,k+1) - tem = dsig * rdzt(i,k) - ptem = 0.5 * tem * xmf(i,k) + ptem = 0.5 * tem2 * xmf(i,k) ptem1 = dtodsd * ptem ptem2 = dtodsu * ptem - tem1 = qcko(i,k,kk) + qcko(i,k+1,kk) - tem2 = q1(i,k,kk) + q1(i,k+1,kk) - f2(i,k+is) = f2(i,k+is) - (tem1 - tem2) * ptem1 - f2(i,k+1+is)= q1(i,k+1,kk) + (tem1 - tem2) * ptem2 + ptem = qcko(i,k,n) + qcko(i,k+1,n) + f2(i,k+is) = f2(i,k+is) - ptem * ptem1 + f2(i,k+1+is)= q1(i,k+1,n) + ptem * ptem2 else - f2(i,k+1+is) = q1(i,k+1,kk) + f2(i,k+1+is) = q1(i,k+1,n) endif ! if(scuflg(i)) then if(k >= mrad(i) .and. k < krad(i)) then - dtodsd = dt2/del(i,k) - dtodsu = dt2/del(i,k+1) - dsig = prsl(i,k)-prsl(i,k+1) - tem = dsig * rdzt(i,k) - ptem = 0.5 * tem * xmfd(i,k) + ptem = 0.5 * tem2 * xmfd(i,k) ptem1 = dtodsd * ptem ptem2 = dtodsu * ptem - tem1 = qcdo(i,k,kk) + qcdo(i,k+1,kk) - tem2 = q1(i,k,kk) + q1(i,k+1,kk) - f2(i,k+is) = f2(i,k+is) + (tem1 - tem2) * ptem1 - f2(i,k+1+is)= f2(i,k+1+is) - (tem1 - tem2) * ptem2 + ptem = qcdo(i,k,n) + qcdo(i,k+1,n) + f2(i,k+is) = f2(i,k+is) + ptem * ptem1 + f2(i,k+1+is)= f2(i,k+1+is) - ptem * ptem2 endif endif +! + kmx = max(kpbl(i), krad(i)) + if((pcnvflg(i) .or. scuflg(i)) .and. (k < kmx)) then + ptem = tem2 * (xmf(i,k) - xmfd(i,k)) + ptem1 = dtodsd * ptem + ptem2 = dtodsu * ptem + f2(i,k+is) = f2(i,k+is) + q_half(i,k,n) * ptem1 + f2(i,k+1+is) = f2(i,k+1+is) - q_half(i,k,n) * ptem2 + endif ! enddo enddo @@ -1484,6 +1737,296 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & !> - Call tridin() to solve tridiagonal problem for heat and moisture c call tridin(im,km,ntrac1,al,ad,au,f1,f2,au,f1,f2) +! +! Negative moisture is set to zero after borrowing it from +! positive values within the mass-flux transport layers +! + do i = 1,im + tsumn(i) = 0. + tsump(i) = 0. + rtnp(i) = 1. + enddo + do k = 1,kps + do i = 1,im + if(pcnvflg(i) .and. scuflg(i)) then + kbx = 1 + kmx = max(kpbl(i), krad(i)) + elseif(pcnvflg(i) .and. .not. scuflg(i)) then + kbx = 1 + kmx = kpbl(i) + elseif(.not. pcnvflg(i) .and. scuflg(i)) then + kbx = mrad(i) + kmx = krad(i) + endif + if((pcnvflg(i) .or. scuflg(i)) .and. + & (k >= kbx .and. k <= kmx)) then + if(f2(i,k) < 0.) tsumn(i) = tsumn(i) + f2(i,k) + if(f2(i,k) > 0.) tsump(i) = tsump(i) + f2(i,k) + endif + enddo + enddo + do i = 1,im + if(pcnvflg(i) .or. scuflg(i)) then + if(tsump(i) > 0. .and. tsumn(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + rtnp(i) = tsumn(i) / tsump(i) + else + rtnp(i) = tsump(i) / tsumn(i) + endif + endif + endif + enddo + do k = 1,kps + do i = 1,im + if(pcnvflg(i) .and. scuflg(i)) then + kbx = 1 + kmx = max(kpbl(i), krad(i)) + elseif(pcnvflg(i) .and. .not. scuflg(i)) then + kbx = 1 + kmx = kpbl(i) + elseif(.not. pcnvflg(i) .and. scuflg(i)) then + kbx = mrad(i) + kmx = krad(i) + endif + if((pcnvflg(i) .or. scuflg(i)) .and. + & (k >= kbx .and. k <= kmx)) then + if(rtnp(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + if(f2(i,k) < 0.) f2(i,k) = 0. + if(f2(i,k) > 0.) f2(i,k) = (1.+rtnp(i))*f2(i,k) + else + if(f2(i,k) < 0.) f2(i,k) = (1.+rtnp(i))*f2(i,k) + if(f2(i,k) > 0.) f2(i,k) = 0. + endif + endif + endif + enddo + enddo +! +! To remove negative moistures which were leaked out of the mass-flux transport layers +! by eddy diffusion or potential negative moistures from the diffusion scheme +! especially due to downward surface latent heat flux during nighttime, +! positive moistures are borrowed again now from the entire layers +! + do i = 1,im + tsumn(i) = 0. + tsump(i) = 0. + rtnp(i) = 1. + enddo + do k = 1,km + do i = 1,im + if(f2(i,k) < 0.) tsumn(i) = tsumn(i) + f2(i,k) + if(f2(i,k) > 0.) tsump(i) = tsump(i) + f2(i,k) + enddo + enddo + do i = 1,im + if(tsump(i) > 0. .and. tsumn(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + rtnp(i) = tsumn(i) / tsump(i) + else + rtnp(i) = tsump(i) / tsumn(i) + endif + endif + enddo + do k = 1,km + do i = 1,im + if(rtnp(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + if(f2(i,k) < 0.) f2(i,k) = 0. + if(f2(i,k) > 0.) f2(i,k) = (1.+rtnp(i))*f2(i,k) + else + if(f2(i,k) < 0.) f2(i,k) = (1.+rtnp(i))*f2(i,k) + if(f2(i,k) > 0.) f2(i,k) = 0. + endif + endif + enddo + enddo +! +! Negative hydrometeors & tracers are set to zero after +! borrowing them from positive values within the mass-flux +! transport layers +! +! For the negative liquid water, first borrow water from vapor +! and then borrow it from the other layers if there is still +! negative water +! + if(ntrac1 >= 2) then + is = (ntcw-1) * km + do k = 1,kps + do i = 1,im + if(pcnvflg(i) .and. scuflg(i)) then + kbx = 1 + kmx = max(kpbl(i), krad(i)) + elseif(pcnvflg(i) .and. .not. scuflg(i)) then + kbx = 1 + kmx = kpbl(i) + elseif(.not. pcnvflg(i) .and. scuflg(i)) then + kbx = mrad(i) + kmx = krad(i) + endif + if((pcnvflg(i) .or. scuflg(i)) .and. + & (k >= kbx .and. k <= kmx)) then + if(f2(i,k+is) < 0.) then + tem = f2(i,k) + f2(i,k+is) + if(tem >= 0.0) then + f2(i,k) = tem + f1(i,k) = f1(i,k) - elocp * f2(i,k+is) + f2(i,k+is) = 0. + elseif (f2(i,k) > 0.0) then + f2(i,k+is) = tem + f1(i,k) = f1(i,k) + elocp * f2(i,k) + f2(i,k) = 0. + endif + endif + endif + enddo + enddo + endif +! +! For the negative rain water, first borrow water from vapor +! and then borrow it from the other layers if there is still +! negative water +! + if(ntrac1 >= 2) then + is = (ntrw-1) * km + do k = 1,kps + do i = 1,im + if(pcnvflg(i) .and. scuflg(i)) then + kbx = 1 + kmx = max(kpbl(i), krad(i)) + elseif(pcnvflg(i) .and. .not. scuflg(i)) then + kbx = 1 + kmx = kpbl(i) + elseif(.not. pcnvflg(i) .and. scuflg(i)) then + kbx = mrad(i) + kmx = krad(i) + endif + if((pcnvflg(i) .or. scuflg(i)) .and. + & (k >= kbx .and. k <= kmx)) then + if(f2(i,k+is) < 0.) then + tem = f2(i,k) + f2(i,k+is) + if(tem >= 0.0) then + f2(i,k) = tem + f1(i,k) = f1(i,k) - elocp * f2(i,k+is) + f2(i,k+is) = 0. + elseif (f2(i,k) > 0.0) then + f2(i,k+is) = tem + f1(i,k) = f1(i,k) + elocp * f2(i,k) + f2(i,k) = 0. + endif + endif + endif + enddo + enddo + endif +! + if(ntrac1 >= 2) then + do n = 2, ntrac1 + is = (n-1) * km +! + do i = 1,im + tsumn(i) = 0. + tsump(i) = 0. + rtnp(i) = 1. + enddo + do k = 1,kps + do i = 1,im + if(pcnvflg(i) .and. scuflg(i)) then + kbx = 1 + kmx = max(kpbl(i), krad(i)) + elseif(pcnvflg(i) .and. .not. scuflg(i)) then + kbx = 1 + kmx = kpbl(i) + elseif(.not. pcnvflg(i) .and. scuflg(i)) then + kbx = mrad(i) + kmx = krad(i) + endif + if((pcnvflg(i) .or. scuflg(i)) .and. + & (k >= kbx .and. k <= kmx)) then + if(f2(i,k+is) < 0.) tsumn(i) = tsumn(i) + f2(i,k+is) + if(f2(i,k+is) > 0.) tsump(i) = tsump(i) + f2(i,k+is) + endif + enddo + enddo + do i = 1,im + if(pcnvflg(i) .or. scuflg(i)) then + if(tsump(i) > 0. .and. tsumn(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + rtnp(i) = tsumn(i) / tsump(i) + else + rtnp(i) = tsump(i) / tsumn(i) + endif + endif + endif + enddo + do k = 1,kps + do i = 1,im + if(pcnvflg(i) .and. scuflg(i)) then + kbx = 1 + kmx = max(kpbl(i), krad(i)) + elseif(pcnvflg(i) .and. .not. scuflg(i)) then + kbx = 1 + kmx = kpbl(i) + elseif(.not. pcnvflg(i) .and. scuflg(i)) then + kbx = mrad(i) + kmx = krad(i) + endif + if((pcnvflg(i) .or. scuflg(i)) .and. + & (k >= kbx .and. k <= kmx)) then + if(rtnp(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + if(f2(i,k+is)<0.) f2(i,k+is)=0. + if(f2(i,k+is)>0.) f2(i,k+is)=(1.+rtnp(i))*f2(i,k+is) + else + if(f2(i,k+is)<0.) f2(i,k+is)=(1.+rtnp(i))*f2(i,k+is) + if(f2(i,k+is)>0.) f2(i,k+is)=0. + endif + endif + endif + enddo + enddo +! +! To remove negative hydrometeors & tracers which were leaked out of the mass-flux transport layers +! by eddy diffusion or potential negative hydrometeors & tracers from the diffusion scheme +! especially due to downward surface fluxes during nighttime, +! positive hydrometeors & tracers are borrowed again now from the entire layers +! + do i = 1,im + tsumn(i) = 0. + tsump(i) = 0. + rtnp(i) = 1. + enddo + do k = 1,km + do i = 1,im + if(f2(i,k+is) < 0.) tsumn(i) = tsumn(i) + f2(i,k+is) + if(f2(i,k+is) > 0.) tsump(i) = tsump(i) + f2(i,k+is) + enddo + enddo + do i = 1,im + if(tsump(i) > 0. .and. tsumn(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + rtnp(i) = tsumn(i) / tsump(i) + else + rtnp(i) = tsump(i) / tsumn(i) + endif + endif + enddo + do k = 1,km + do i = 1,im + if(rtnp(i) < 0.) then + if(tsump(i) > abs(tsumn(i))) then + if(f2(i,k+is)<0.) f2(i,k+is)=0. + if(f2(i,k+is)>0.) f2(i,k+is)=(1.+rtnp(i))*f2(i,k+is) + else + if(f2(i,k+is)<0.) f2(i,k+is)=(1.+rtnp(i))*f2(i,k+is) + if(f2(i,k+is)>0.) f2(i,k+is)=0. + endif + endif + enddo + enddo +! + enddo + endif c !> - Recover the tendencies of heat and moisture c @@ -1525,25 +2068,25 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, & endif ! if(ntrac1 >= 2) then - do kk = 2, ntrac1 - is = (kk-1) * km + do n = 2, ntrac1 + is = (n-1) * km do k = 1, km do i = 1, im - qtend = (f2(i,k+is)-q1(i,k,kk))*rdt - rtg(i,k,kk) = rtg(i,k,kk)+qtend + qtend = (f2(i,k+is)-q1(i,k,n))*rdt + rtg(i,k,n) = rtg(i,k,n)+qtend enddo enddo enddo if(ldiag3d .and. .not. gen_tend) then ! Send tendencies for all tracers that were selected. - do kk = 2, ntrac1 - is = (kk-1) * km - idtend = dtidx(kk+100,index_of_process_pbl) + do n = 2, ntrac1 + is = (n-1) * km + idtend = dtidx(n+100,index_of_process_pbl) if(idtend>=1) then - if(kk/=ntke) then + if(n/=ntke) then do k = 1, km do i = 1, im - qtend = (f2(i,k+is)-q1(i,k,kk))*rdt + qtend = (f2(i,k+is)-q1(i,k,n))*rdt dtend(i,k,idtend) = dtend(i,k,idtend)+qtend*delt enddo enddo diff --git a/physics/satmedmfvdifq.meta b/physics/satmedmfvdifq.meta index fe449ce68..4e02c4b9e 100644 --- a/physics/satmedmfvdifq.meta +++ b/physics/satmedmfvdifq.meta @@ -85,6 +85,14 @@ type = integer intent = in optional = F +[ntrw] + standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array + long_name = tracer index for rain water + units = index + dimensions = () + type = integer + intent = in + optional = F [ntiw] standard_name = index_for_ice_cloud_condensate_vertical_diffusion_tracer long_name = tracer index for ice water in the vertically diffused tracer array From c1f070603ea912d8a21b952f605beb49b8a6677e Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Wed, 6 Oct 2021 16:32:41 +0000 Subject: [PATCH 51/98] Remove unused input argument for ozone tracer index. --- physics/satmedmfvdifq.F | 4 ++-- physics/satmedmfvdifq.meta | 8 -------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/physics/satmedmfvdifq.F b/physics/satmedmfvdifq.F index 3123ff507..703619816 100644 --- a/physics/satmedmfvdifq.F +++ b/physics/satmedmfvdifq.F @@ -76,7 +76,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & & dspheat,dusfc,dvsfc,dtsfc,dqsfc,hpbl,dkt,dku, & & kinver,xkzm_m,xkzm_h,xkzm_s,dspfac,bl_upfr,bl_dnfr, & & rlmx,elmx,sfc_rlm, & - & ntoz,ntqv,dtend,dtidx,index_of_temperature,index_of_x_wind, & + & ntqv,dtend,dtidx,index_of_temperature,index_of_x_wind, & & index_of_y_wind,index_of_process_pbl,gen_tend,ldiag3d, & & errmsg,errflg) ! @@ -87,7 +87,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & ! !---------------------------------------------------------------------- integer, intent(in) :: im, km, ntrac, ntcw, ntrw, ntiw, & - & ntke, ntoz, ntqv + & ntke, ntqv integer, intent(in) :: sfc_rlm integer, intent(in) :: kinver(:) integer, intent(out) :: kpbl(:) diff --git a/physics/satmedmfvdifq.meta b/physics/satmedmfvdifq.meta index 4e02c4b9e..7250cb6ad 100644 --- a/physics/satmedmfvdifq.meta +++ b/physics/satmedmfvdifq.meta @@ -645,14 +645,6 @@ type = integer intent = in optional = F -[ntoz] - standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array - long_name = tracer index for ozone mixing ratio - units = index - dimensions = () - type = integer - intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) From 2758810934a2a3d3e649f0b913550d728bf1d260 Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Wed, 6 Oct 2021 16:36:12 +0000 Subject: [PATCH 52/98] Use proper index for rain water tracer in vertically-diffused tracer array. --- physics/satmedmfvdifq.meta | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/satmedmfvdifq.meta b/physics/satmedmfvdifq.meta index 7250cb6ad..db7f437f3 100644 --- a/physics/satmedmfvdifq.meta +++ b/physics/satmedmfvdifq.meta @@ -86,8 +86,8 @@ intent = in optional = F [ntrw] - standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array - long_name = tracer index for rain water + standard_name = index_for_rain_water_vertical_diffusion_tracer + long_name = tracer index for rain water in the vertically diffused tracer array units = index dimensions = () type = integer From 9a7131f6318b6fdedb1ffcc015ed4e06f81e2c40 Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Wed, 6 Oct 2021 16:42:30 +0000 Subject: [PATCH 53/98] Adjust negative mixing ratios for rain water only if such tracer is available. --- physics/satmedmfvdifq.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/satmedmfvdifq.F b/physics/satmedmfvdifq.F index 703619816..940bcae68 100644 --- a/physics/satmedmfvdifq.F +++ b/physics/satmedmfvdifq.F @@ -1887,7 +1887,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & ! and then borrow it from the other layers if there is still ! negative water ! - if(ntrac1 >= 2) then + if(ntrw > 0) then is = (ntrw-1) * km do k = 1,kps do i = 1,im From 7d080b8a595bfeb8d9fc91138c5a360134ef0503 Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Wed, 6 Oct 2021 21:17:17 +0000 Subject: [PATCH 54/98] Improve test for rain water tracer. --- physics/satmedmfvdifq.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/satmedmfvdifq.F b/physics/satmedmfvdifq.F index 940bcae68..f2b5c5daa 100644 --- a/physics/satmedmfvdifq.F +++ b/physics/satmedmfvdifq.F @@ -1887,7 +1887,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & ! and then borrow it from the other layers if there is still ! negative water ! - if(ntrw > 0) then + if(ntrac1 >= 2 .and. ntrw > 0) then is = (ntrw-1) * km do k = 1,kps do i = 1,im From 6e520f9327769c39ed5087d80332006abe5487f5 Mon Sep 17 00:00:00 2001 From: uturuncoglu Date: Wed, 6 Oct 2021 16:24:48 -0600 Subject: [PATCH 55/98] fix inconsistent types and log functions --- physics/module_sf_noahmplsm.f90 | 10 +++++----- physics/sfc_noahmp_drv.F90 | 19 ++++++++++--------- physics/sflx.f | 4 ++-- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/physics/module_sf_noahmplsm.f90 b/physics/module_sf_noahmplsm.f90 index 9fcb7edf8..00895d59f 100644 --- a/physics/module_sf_noahmplsm.f90 +++ b/physics/module_sf_noahmplsm.f90 @@ -1769,9 +1769,9 @@ subroutine energy (parameters,ice ,vegtyp ,ist ,nsnow ,nsoil , & !in real (kind=kind_phys) , intent(inout) :: cm !momentum drag coefficient real (kind=kind_phys) , intent(inout) :: ch !sensible heat exchange coefficient real (kind=kind_phys) , intent(inout) :: q1 - real , intent(inout) :: rb !leaf boundary layer resistance (s/m) - real , intent(inout) :: laisun !sunlit leaf area index (m2/m2) - real , intent(inout) :: laisha !shaded leaf area index (m2/m2) + real (kind=kind_phys) , intent(inout) :: rb !leaf boundary layer resistance (s/m) + real (kind=kind_phys) , intent(inout) :: laisun !sunlit leaf area index (m2/m2) + real (kind=kind_phys) , intent(inout) :: laisha !shaded leaf area index (m2/m2) #ifdef CCPP character(len=*) , intent(inout) :: errmsg integer , intent(inout) :: errflg @@ -5868,8 +5868,8 @@ subroutine frh2o (parameters,isoil,free,tkelv,smc,sh2o,& 1001 continue if (.not.( (nlog < 10) .and. (kcount == 0))) goto 1002 nlog = nlog +1 - df = alog ( ( parameters%psisat(isoil) * grav / hfus ) * ( ( 1. + ck * swl )**2.) * & - ( parameters%smcmax(isoil) / (smc - swl) )** bx) - alog ( - ( & + df = log ( ( parameters%psisat(isoil) * grav / hfus ) * ( ( 1. + ck * swl )**2.) * & + ( parameters%smcmax(isoil) / (smc - swl) )** bx) - log ( - ( & tkelv - tfrz)/ tkelv) denom = 2. * ck / ( 1. + ck * swl ) + bx / ( smc - swl ) swlk = swl - df / denom diff --git a/physics/sfc_noahmp_drv.F90 b/physics/sfc_noahmp_drv.F90 index 129601e94..3ac72a4fa 100644 --- a/physics/sfc_noahmp_drv.F90 +++ b/physics/sfc_noahmp_drv.F90 @@ -1467,19 +1467,20 @@ subroutine penman (sfctmp,sfcprs,ch,t2v,th2,prcp,fdown,ssoil, & ! ---------------------------------------------------------------------- ! subroutine penman ! ---------------------------------------------------------------------- + use machine, only: kind_phys implicit none logical, intent(in) :: snowng, frzgra - real, intent(in) :: ch, dqsdt2,fdown,prcp,ffrozp, & + real(kind=kind_phys), intent(in) :: ch, dqsdt2,fdown,prcp,ffrozp, & & q2, q2sat,ssoil, sfcprs, sfctmp, & & t2v, th2,emissi_in,sncovr - real, intent(out) :: etp - real :: epsca,flx2,rch,rr,t24 - real :: a, delta, fnet,rad,rho,emissi,elcp1,lvs - - real, parameter :: elcp = 2.4888e+3, lsubc = 2.501000e+6,cp = 1004.6 - real, parameter :: lsubs = 2.83e+6, rd = 287.05, cph2o = 4.1855e+3 - real, parameter :: cpice = 2.106e+3, lsubf = 3.335e5 - real, parameter :: sigma = 5.6704e-8 + real(kind=kind_phys), intent(out) :: etp + real(kind=kind_phys) :: epsca,flx2,rch,rr,t24 + real(kind=kind_phys) :: a, delta, fnet,rad,rho,emissi,elcp1,lvs + + real(kind=kind_phys), parameter :: elcp = 2.4888e+3, lsubc = 2.501000e+6,cp = 1004.6 + real(kind=kind_phys), parameter :: lsubs = 2.83e+6, rd = 287.05, cph2o = 4.1855e+3 + real(kind=kind_phys), parameter :: cpice = 2.106e+3, lsubf = 3.335e5 + real(kind=kind_phys), parameter :: sigma = 5.6704e-8 ! ---------------------------------------------------------------------- ! executable code begins here: diff --git a/physics/sflx.f b/physics/sflx.f index 2740a70ff..0e317af09 100644 --- a/physics/sflx.f +++ b/physics/sflx.f @@ -3994,8 +3994,8 @@ subroutine frh2o & do while ( (nlog < 10) .and. (kcount == 0) ) nlog = nlog + 1 - df = alog( (psis*gs2/lsubf) * ( (1.0 + ck*swl)**2.0 ) & - & * (smcmax/(smc-swl))**bx ) - alog(-(tkelv-tfreez)/tkelv) + df = log( (psis*gs2/lsubf) * ( (1.0 + ck*swl)**2.0 ) & + & * (smcmax/(smc-swl))**bx ) - log(-(tkelv-tfreez)/tkelv) denom = 2.0*ck/(1.0 + ck*swl) + bx/(smc - swl) swlk = swl - df/denom From efd7e5ae019420c40ddb70f6796f6f1a5ea3e5d1 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 8 Oct 2021 09:22:08 -0600 Subject: [PATCH 56/98] Update documentation for input/output variables in radiation_surface.f / setemis --- physics/radiation_surface.f | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 41e22bf08..7e9027d44 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -755,9 +755,11 @@ subroutine setemis & ! tsknf (IMAX) - ground surface temperature in k ! ! tairf (IMAX) - lowest model layer air temperature in k ! ! hprif (IMAX) - topographic sdv in m ! +! IMAX - array horizontal dimension ! +! ! +! inputs/outputs: ! ! semis_lnd (IMAX) - land emissivity ! ! semis_ice (IMAX) - ice emissivity ! -! IMAX - array horizontal dimension ! ! ! ! outputs: ! ! sfcemis(IMAX) - surface emissivity ! From 4fb84dbcfd9315c11fa694d899ebaa8afee837f4 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 8 Oct 2021 11:59:02 -0600 Subject: [PATCH 57/98] Bug fix in physics/rrtmgp_lw_gas_optics.meta --- physics/rrtmgp_lw_gas_optics.meta | 2 ++ 1 file changed, 2 insertions(+) diff --git a/physics/rrtmgp_lw_gas_optics.meta b/physics/rrtmgp_lw_gas_optics.meta index 53960c6c8..dbf416021 100644 --- a/physics/rrtmgp_lw_gas_optics.meta +++ b/physics/rrtmgp_lw_gas_optics.meta @@ -109,6 +109,8 @@ units = flag dimensions = () type = integer + intent = out + optional = F ######################################################################## [ccpp-arg-table] From 014b8d7038b21e85fd5eb213e17dc62ed2088154 Mon Sep 17 00:00:00 2001 From: "denise.worthen" Date: Sat, 9 Oct 2021 08:05:21 -0400 Subject: [PATCH 58/98] reduce memory footprint for merra2 aerosols * switch aerin and aer_pres to r*4. time and space bilinear interp will be done on r*4 variables and type promotion to r*8 will occur there --- physics/aerclm_def.F | 6 +++--- physics/aerinterp.F90 | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/physics/aerclm_def.F b/physics/aerclm_def.F index 157c7b961..82e89ed48 100644 --- a/physics/aerclm_def.F +++ b/physics/aerclm_def.F @@ -10,13 +10,13 @@ module aerclm_def real (kind=kind_phys), allocatable, dimension(:) :: aer_lat real (kind=kind_phys), allocatable, dimension(:) :: aer_lon - real (kind=kind_phys), allocatable, dimension(:,:,:,:) :: aer_pres - real (kind=kind_phys), allocatable, dimension(:,:,:,:,:) :: aerin + real (kind=kind_io4), allocatable, dimension(:,:,:,:) :: aer_pres + real (kind=kind_io4), allocatable, dimension(:,:,:,:,:) :: aerin data aer_time/15.5, 45., 74.5, 105., 135.5, 166., 196.5, & 227.5, 258., 288.5, 319., 349.5, 380.5/ - data specname /'DU001','DU002','DU003','DU004','DU005', + data specname /'DU001','DU002','DU003','DU004','DU005', & 'SS001','SS002','SS003','SS004','SS005','SO4', & 'BCPHOBIC','BCPHILIC','OCPHOBIC','OCPHILIC'/ diff --git a/physics/aerinterp.F90 b/physics/aerinterp.F90 index dbcf73603..4b3232ab1 100644 --- a/physics/aerinterp.F90 +++ b/physics/aerinterp.F90 @@ -181,7 +181,7 @@ SUBROUTINE read_aerdataf (iamin, iamax, jamin, jamax, & endif do i = iamin, iamax aerin(i,j,k,ii,imon) = 1.d0*buffx(i,j,klev,1) - if(aerin(i,j,k,ii,imon) < 0 .or. aerin(i,j,k,ii,imon) > 1.) then + if(aerin(i,j,k,ii,imon) < 0. .or. aerin(i,j,k,ii,imon) > 1.) then aerin(i,j,k,ii,imon) = 1.e-15 endif enddo !i-loop (lon) From 8651624a7da69208ea78b06853628aab6b3e2059 Mon Sep 17 00:00:00 2001 From: "denise.worthen" Date: Sat, 9 Oct 2021 06:35:11 -0600 Subject: [PATCH 59/98] add reqd kind variable --- physics/aerclm_def.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/aerclm_def.F b/physics/aerclm_def.F index 82e89ed48..e66825278 100644 --- a/physics/aerclm_def.F +++ b/physics/aerclm_def.F @@ -1,5 +1,5 @@ module aerclm_def - use machine , only : kind_phys + use machine , only : kind_phys, kind_io4 implicit none integer, parameter :: levsaer=72, ntrcaerm=15, timeaer=12 From 85ffbb223f73990ac8763b8da49b23c3c65b92f3 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Sat, 9 Oct 2021 23:47:38 +0000 Subject: [PATCH 60/98] fixing some errors in radiation_surface and rearranging dcyc2.meta to match fortran --- physics/dcyc2.meta | 70 ++++++++++++++++++------------------- physics/radiation_surface.f | 21 ++++++----- 2 files changed, 47 insertions(+), 44 deletions(-) diff --git a/physics/dcyc2.meta b/physics/dcyc2.meta index b90195c3b..da9476e84 100644 --- a/physics/dcyc2.meta +++ b/physics/dcyc2.meta @@ -61,24 +61,6 @@ kind = kind_phys intent = in optional = F -[xlon] - standard_name = longitude - long_name = longitude of grid box - units = radian - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F -[coszen] - standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep - long_name = average of cosine of zenith angle over daytime shortwave call time interval - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -115,6 +97,24 @@ kind = kind_phys intent = in optional = F +[xlon] + standard_name = longitude + long_name = longitude of grid box + units = radian + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in + optional = F +[coszen] + standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep + long_name = average of cosine of zenith angle over daytime shortwave call time interval + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in + optional = F [tsfc_lnd] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -169,15 +169,6 @@ kind = kind_phys intent = in optional = F -[tsfc_radtime] - standard_name = surface_skin_temperature_on_radiation_timestep - long_name = surface skin temperature on radiation timestep - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F [sfcemis_lnd] standard_name = surface_longwave_emissivity_over_land long_name = surface lw emissivity in fraction over land @@ -398,14 +389,6 @@ type = logical intent = in optional = F -[use_LW_jacobian] - standard_name = flag_to_calc_RRTMGP_LW_jacobian - long_name = logical flag to control RRTMGP LW calculation - units = flag - dimensions = () - type = logical - intent = in - optional = F [damp_LW_fluxadj] standard_name = flag_to_damp_RRTMGP_LW_jacobian_flux_adjustment long_name = logical flag to control RRTMGP LW calculation @@ -432,6 +415,14 @@ kind = kind_phys intent = in optional = F +[use_LW_jacobian] + standard_name = flag_to_calc_RRTMGP_LW_jacobian + long_name = logical flag to control RRTMGP LW calculation + units = flag + dimensions = () + type = logical + intent = in + optional = F [sfculw] standard_name = surface_upwelling_longwave_flux_on_radiation_timestep long_name = total sky sfc upward lw flux @@ -519,6 +510,15 @@ type = logical intent = in optional = F +[tsfc_radtime] + standard_name = surface_skin_temperature_on_radiation_timestep + long_name = surface skin temperature on radiation timestep + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in + optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = total radiative heating rate at current time diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 41e22bf08..3bb53be73 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -120,12 +120,12 @@ module module_radiation_surface ! --- constant parameters integer, parameter, public :: NF_ALBD = 4 !< number of surface albedo components - integer, parameter, public :: IMXEMS = 360 !< number of longtitude points in global emis-type map - integer, parameter, public :: JMXEMS = 180 !< number of latitude points in global emis-type map + integer, parameter, public :: IMXEMS = 360 !< number of longtitude points in global emis-type map + integer, parameter, public :: JMXEMS = 180 !< number of latitude points in global emis-type map real (kind=kind_phys), parameter :: f_zero = 0.0 real (kind=kind_phys), parameter :: f_one = 1.0 real (kind=kind_phys), parameter :: epsln = 1.0e-6 - real (kind=kind_phys), parameter :: rad2dg= 180.0 / con_pi + real (kind=kind_phys), parameter :: rad2dg = 180.0 / con_pi integer, allocatable :: idxems(:,:) !< global surface emissivity index array integer :: iemslw = 1 !< global surface emissivity control flag set up in 'sfc_init' ! @@ -830,19 +830,21 @@ subroutine setemis & lab_do_IMAX : do i = 1, IMAX - snowc = sncovr(i) + snowc = sncovr(i) * fracl(i) if (.not. cplice .or. lakefrac(i) > f_zero) then semis_ice(i) = emsref(7) - snowc = sncovr(i) + sncovr_ice(i) + snowc = sncovr(i) + sncovr_ice(i)*fraci(i) endif if (fracl(i) < epsln) then ! no land if ( abs(fraco(i)-f_one) < epsln ) then ! open water point sfcemis(i) = emsref(1) - elseif ( abs(fraci(i)-f_one) > epsln ) then ! complete sea/lake ice - sfcemis(i) = emsref(7) + elseif ( abs(fraci(i)-f_one) < epsln ) then ! complete sea/lake ice +! sfcemis(i) = emsref(7) + sfcemis(i) = semis_ice(i) else !-- fractional sea ice - sfcemis(i) = fraco(i)*emsref(1) + fraci(i)*emsref(7) +! sfcemis(i) = fraco(i)*emsref(1) + fraci(i)*emsref(7) + sfcemis(i) = fraco(i)*emsref(1) + fraci(i)*semis_ice(i) endif else ! land or fractional grid @@ -900,7 +902,8 @@ subroutine setemis & semis_lnd(i) = semis_lnd(i) * (f_one - sncovr(i)) & & + emsref(8) * sncovr(i) endif - if (sncovr_ice(i) > f_zero .and. .not. cplice) then + if (sncovr_ice(i) > f_zero .and. & + & (lakefrac(i) > f_zero .or. .not. cplice)) then semis_ice(i) = semis_ice(i) * (f_one - sncovr_ice(i)) & & + emsref(8) * sncovr_ice(i) endif From abb367def38650cf7879c836b74720e2eaa17245 Mon Sep 17 00:00:00 2001 From: Ruiyu Sun Date: Tue, 12 Oct 2021 13:02:07 +0000 Subject: [PATCH 61/98] make changes in response to reviews --- physics/module_mp_thompson.F90 | 67 +++++++++++++--------------------- 1 file changed, 26 insertions(+), 41 deletions(-) diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 index 46ec5aa56..d0b1d3b74 100644 --- a/physics/module_mp_thompson.F90 +++ b/physics/module_mp_thompson.F90 @@ -1914,8 +1914,6 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & REAL, DIMENSION(kts:kte):: temp, pres, qv REAL, DIMENSION(kts:kte):: rc, ri, rr, rs, rg, ni, nr, nc, nwfa, nifa REAL, DIMENSION(kts:kte):: rr_tmp,vtrk_tmp,nr_tmp,vtnrk_tmp - REAL, DIMENSION(kts:kte):: ri_tmp,vtik_tmp,ni_tmp,vtnik_tmp - REAL, DIMENSION(kts:kte):: rs_tmp,vtsk_tmp,rg_tmp,vtgk_tmp REAL, DIMENSION(kts:kte):: rho, rhof, rhof2 REAL, DIMENSION(kts:kte):: qvs, qvsi, delQvs REAL, DIMENSION(kts:kte):: satw, sati, ssatw, ssati @@ -3933,25 +3931,25 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & niter = 1 dtcfl = dt if(sedi_semi_decfl) then - niter = ifix(nstep/decfl) + 1 + niter = int(nstep/decfl) + 1 dtcfl = dt/niter endif do n = 1, niter rr_tmp(:) = rr(:) nr_tmp(:) = nr(:) - do k = 1,kte + do k = kts,kte vtrk_tmp(k) = vtrk(k) vtnrk_tmp(k) = vtnrk(k) enddo - call nislfv_rain_ppm(kte,rho,rhof,temp,dzq,vtrk_tmp,rr,precip,dtcfl,1,0,R1) - call nislfv_rain_ppm(kte,rho,rhof,temp,dzq,vtnrk_tmp,nr,vtr,dtcfl,1,0,R2) + call nislfv_rain_ppm(kte,dzq,vtrk_tmp,rr,precip,dtcfl,R1) + call nislfv_rain_ppm(kte,dzq,vtnrk_tmp,nr,vtr,dtcfl,R2) do k = kts, kte qrten(k) = qrten(k) + (rr(k) - rr_tmp(k))/rho(k)/dt nrten(k) = nrten(k) + (nr(k) - nr_tmp(k))/rho(k)/dt enddo + if (rr(kts).gt.R1*10.) & !Songyou: is this needed? pptrain = pptrain + precip - if(sedi_semi_update) then do k = kte+1, kts, -1 vtrk(k) = 0. @@ -6109,7 +6107,7 @@ subroutine calc_refl10cm (qv1d, qc1d, qr1d, nr1d, qs1d, qg1d, & end subroutine calc_refl10cm ! !------------------------------------------------------------------- - SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) + SUBROUTINE nislfv_rain_ppm(km,dzl,wwl,rql,precip,dt,R1) !------------------------------------------------------------------- ! ! for non-iteration semi-Lagrangain forward advection for cloud @@ -6119,58 +6117,49 @@ SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) ! ! dzl depth of model layer in meter ! wwl terminal velocity at model layer m/s -! rql cloud density*mixing ratio -! precip precipitation +! rql dry air density*mixing ratio +! precip precipitation at surface ! dt time step -! id kind of precip: 0 test case; 1 raindrop -! iter how many time to guess mean terminal velocity: 0 pure forward. -! 0 : use departure wind for advection -! 1 : use mean wind for advection -! > 1 : use mean wind after iter-1 iterations ! ! author: hann-ming henry juang ! implemented by song-you hong ! implicit none - integer km,id - real dt - real dzl(km),wwl(km),rql(km),precip - real denl(km),denfacl(km),tkl(km) -! for thompson scheme - real R1 - integer i,k,n,m,kk,kb,kt,iter,ii,jj + + integer, intent(in) :: km + real, intent(in) :: dt, R1 + real, intent(in) :: dzl(km),wwl(km) + real, intent(out) :: precip + real, intent(inout) :: rql(km) + integer k,m,kk,kb,kt real tl,tl2,qql,dql,qqd real th,th2,qqh,dqh - real zsum,qsum,dim,dip,c1,con1,fa1,fa2 - real allold, allnew, zz, dzamin, cflmax, decfl - real dz(km), ww(km), qq(km), wd(km), wa(km), was(km) - real den(km), denfac(km), tk(km) + real zsum,qsum,dim,dip,con1,fa1,fa2 + real allold, decfl + real dz(km), ww(km), qq(km) real wi(km+1), zi(km+1), za(km+2) !hmhj - real qn(km), qr(km),tmp(km),tmp1(km),tmp2(km),tmp3(km) + real qn(km) real dza(km+1), qa(km+1), qmi(km+1), qpi(km+1) ! precip = 0.0 qa(:) = 0.0 qq(:) = 0.0 - -! ----------------------------------- dz(:) = dzl(:) ww(:) = wwl(:) do k = 1,km - if(rql(k).gt.R1) qq(k) = rql(k) - if(qq(k).le.R1) ww(k) = 0.0 + if(rql(k).gt.R1) then + qq(k) = rql(k) + else + ww(k) = 0.0 + endif enddo - den(:) = denl(:) - denfac(:) = denfacl(:) - tk(:) = tkl(:) ! skip for no precipitation for all layers allold = 0.0 do k=1,km allold = allold + qq(k) enddo if(allold.le.0.0) then -! cycle i_loop - go to 158 + return endif ! ! compute interface values @@ -6178,9 +6167,7 @@ SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) do k=1,km zi(k+1) = zi(k)+dz(k) enddo -! save departure wind - wd(:) = ww(:) - n=1 +! n=1 ! plm is 2nd order, we can use 2nd order wi or 3rd order wi ! 2nd order interpolation to get wi wi(1) = ww(1) @@ -6225,7 +6212,6 @@ SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) ! computer deformation at arrival point do k=1,km qa(k) = qq(k)*dz(k)/dza(k) - qr(k) = qa(k)/den(k) enddo qa(km+1) = 0.0 ! @@ -6337,7 +6323,6 @@ SUBROUTINE nislfv_rain_ppm(km,denl,denfacl,tkl,dzl,wwl,rql,precip,dt,id,iter,R1) ! replace the new values rql(:) = max(qn(:),R1) ! - 158 continue ! ---------------------------------- ! END SUBROUTINE nislfv_rain_ppm From f8f4716a460213301ea6a2bf35b80f04a1e6143f Mon Sep 17 00:00:00 2001 From: Ruiyu Sun Date: Wed, 13 Oct 2021 02:32:17 +0000 Subject: [PATCH 62/98] remove variables that are not used --- physics/module_mp_thompson.F90 | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 index d0b1d3b74..62af3ac2f 100644 --- a/physics/module_mp_thompson.F90 +++ b/physics/module_mp_thompson.F90 @@ -1913,7 +1913,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & REAL, DIMENSION(kts:kte):: temp, pres, qv REAL, DIMENSION(kts:kte):: rc, ri, rr, rs, rg, ni, nr, nc, nwfa, nifa - REAL, DIMENSION(kts:kte):: rr_tmp,vtrk_tmp,nr_tmp,vtnrk_tmp + REAL, DIMENSION(kts:kte):: rr_tmp,nr_tmp REAL, DIMENSION(kts:kte):: rho, rhof, rhof2 REAL, DIMENSION(kts:kte):: qvs, qvsi, delQvs REAL, DIMENSION(kts:kte):: satw, sati, ssatw, ssati @@ -3937,12 +3937,8 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & do n = 1, niter rr_tmp(:) = rr(:) nr_tmp(:) = nr(:) - do k = kts,kte - vtrk_tmp(k) = vtrk(k) - vtnrk_tmp(k) = vtnrk(k) - enddo - call nislfv_rain_ppm(kte,dzq,vtrk_tmp,rr,precip,dtcfl,R1) - call nislfv_rain_ppm(kte,dzq,vtnrk_tmp,nr,vtr,dtcfl,R2) + call nislfv_rain_ppm(kte,dzq,vtrk,rr,precip,dtcfl,R1) + call nislfv_rain_ppm(kte,dzq,vtnrk,nr,vtr,dtcfl,R2) do k = kts, kte qrten(k) = qrten(k) + (rr(k) - rr_tmp(k))/rho(k)/dt nrten(k) = nrten(k) + (nr(k) - nr_tmp(k))/rho(k)/dt From 125455629a226c6d61d650207642b1c3a14233fd Mon Sep 17 00:00:00 2001 From: Ruiyu Sun Date: Thu, 14 Oct 2021 16:33:21 +0000 Subject: [PATCH 63/98] added a few minor changes in style --- physics/module_mp_thompson.F90 | 64 +++++++++++++++++----------------- physics/mp_thompson.F90 | 6 ++-- physics/mp_thompson.meta | 20 +++++------ 3 files changed, 45 insertions(+), 45 deletions(-) diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 index 62af3ac2f..2d8321c36 100644 --- a/physics/module_mp_thompson.F90 +++ b/physics/module_mp_thompson.F90 @@ -1908,7 +1908,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & DOUBLE PRECISION, PARAMETER:: zeroD0 = 0.0d0 REAL, PARAMETER :: decfl = 8.0 - REAL :: dtcfl,precip + REAL :: dtcfl,rainsfc INTEGER :: niter REAL, DIMENSION(kts:kte):: temp, pres, qv @@ -3899,34 +3899,34 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & nstep = NINT(1./onstep(1)) if(.not. sedi_semi) then - do n = 1, nstep - do k = kte, kts, -1 - sed_r(k) = vtrk(k)*rr(k) - sed_n(k) = vtnrk(k)*nr(k) - enddo - k = kte - odzq = 1./dzq(k) - orho = 1./rho(k) - qrten(k) = qrten(k) - sed_r(k)*odzq*onstep(1)*orho - nrten(k) = nrten(k) - sed_n(k)*odzq*onstep(1)*orho - rr(k) = MAX(R1, rr(k) - sed_r(k)*odzq*DT*onstep(1)) - nr(k) = MAX(R2, nr(k) - sed_n(k)*odzq*DT*onstep(1)) - do k = ksed1(1), kts, -1 - odzq = 1./dzq(k) - orho = 1./rho(k) - qrten(k) = qrten(k) + (sed_r(k+1)-sed_r(k)) & - *odzq*onstep(1)*orho - nrten(k) = nrten(k) + (sed_n(k+1)-sed_n(k)) & - *odzq*onstep(1)*orho - rr(k) = MAX(R1, rr(k) + (sed_r(k+1)-sed_r(k)) & - *odzq*DT*onstep(1)) - nr(k) = MAX(R2, nr(k) + (sed_n(k+1)-sed_n(k)) & - *odzq*DT*onstep(1)) - enddo + do n = 1, nstep + do k = kte, kts, -1 + sed_r(k) = vtrk(k)*rr(k) + sed_n(k) = vtnrk(k)*nr(k) + enddo + k = kte + odzq = 1./dzq(k) + orho = 1./rho(k) + qrten(k) = qrten(k) - sed_r(k)*odzq*onstep(1)*orho + nrten(k) = nrten(k) - sed_n(k)*odzq*onstep(1)*orho + rr(k) = MAX(R1, rr(k) - sed_r(k)*odzq*DT*onstep(1)) + nr(k) = MAX(R2, nr(k) - sed_n(k)*odzq*DT*onstep(1)) + do k = ksed1(1), kts, -1 + odzq = 1./dzq(k) + orho = 1./rho(k) + qrten(k) = qrten(k) + (sed_r(k+1)-sed_r(k)) & + *odzq*onstep(1)*orho + nrten(k) = nrten(k) + (sed_n(k+1)-sed_n(k)) & + *odzq*onstep(1)*orho + rr(k) = MAX(R1, rr(k) + (sed_r(k+1)-sed_r(k)) & + *odzq*DT*onstep(1)) + nr(k) = MAX(R2, nr(k) + (sed_n(k+1)-sed_n(k)) & + *odzq*DT*onstep(1)) + enddo - if (rr(kts).gt.R1*10.) & - pptrain = pptrain + sed_r(kts)*DT*onstep(1) - enddo + if (rr(kts).gt.R1*10.) & + pptrain = pptrain + sed_r(kts)*DT*onstep(1) + enddo else !if(.not. sedi_semi) niter = 1 dtcfl = dt @@ -3937,14 +3937,14 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & do n = 1, niter rr_tmp(:) = rr(:) nr_tmp(:) = nr(:) - call nislfv_rain_ppm(kte,dzq,vtrk,rr,precip,dtcfl,R1) + call nislfv_rain_ppm(kte,dzq,vtrk,rr,rainsfc,dtcfl,R1) call nislfv_rain_ppm(kte,dzq,vtnrk,nr,vtr,dtcfl,R2) do k = kts, kte qrten(k) = qrten(k) + (rr(k) - rr_tmp(k))/rho(k)/dt nrten(k) = nrten(k) + (nr(k) - nr_tmp(k))/rho(k)/dt enddo if (rr(kts).gt.R1*10.) & !Songyou: is this needed? - pptrain = pptrain + precip + pptrain = pptrain + rainsfc if(sedi_semi_update) then do k = kte+1, kts, -1 @@ -3955,7 +3955,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & vtr = 0. if (rr(k).gt. R1) then lamr = (am_r*crg(3)*org2*nr(k)/rr(k))**obmr - vtr = rhof(k)*av_r*crg(6)*org3 * lamr**cre(3) & + vtr = rhof(k)*av_r*crg(6)*org3 * lamr**cre(3) & *((lamr+fv_r)**(-cre(6))) vtrk(k) = vtr ! First below is technically correct: @@ -3963,7 +3963,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & ! *((lamr+fv_r)**(-cre(5))) ! Test: make number fall faster (but still slower than mass) ! Goal: less prominent size sorting - vtr = rhof(k)*av_r*crg(7)/crg(12) * lamr**cre(12) & + vtr = rhof(k)*av_r*crg(7)/crg(12) * lamr**cre(12) & *((lamr+fv_r)**(-cre(7))) vtnrk(k) = vtr endif diff --git a/physics/mp_thompson.F90 b/physics/mp_thompson.F90 index adfe72eb3..ffe02b0e8 100644 --- a/physics/mp_thompson.F90 +++ b/physics/mp_thompson.F90 @@ -334,10 +334,10 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & spechum, qc, qr, qi, qs, qg, ni, nr, & is_aerosol_aware, nc, nwfa, nifa, & nwfa2d, nifa2d, & - tgrs, prsl, phii, omega, dt_inner, & + tgrs, prsl, phii, omega, & sedi_semi, sedi_semi_update, & - sedi_semi_decfl, & - dtp, first_time_step, istep, nsteps, & + sedi_semi_decfl, dtp, dt_inner, & + first_time_step, istep, nsteps, & prcp, rain, graupel, ice, snow, sr, & refl_10cm, reset_dBZ, do_radar_ref, & re_cloud, re_ice, re_snow, & diff --git a/physics/mp_thompson.meta b/physics/mp_thompson.meta index 321b26494..090682333 100644 --- a/physics/mp_thompson.meta +++ b/physics/mp_thompson.meta @@ -1,4 +1,4 @@ -[ccpp-table-properties] +uccpp-table-properties] name = mp_thompson type = scheme dependencies = machine.F,module_mp_radar.F90,module_mp_thompson.F90,module_mp_thompson_make_number_concentrations.F90 @@ -553,15 +553,6 @@ kind = kind_phys intent = in optional = F -[dt_inner] - standard_name = time_step_for_inner_loop - long_name = time step for inner loop - units = s - dimensions = () - type = real - kind = kind_phys - intent = in - optional = F [sedi_semi] standard_name = flag_for_semi_Lagrangian_sedi_rain long_name = flag for semi Lagrangian sedi of rain @@ -595,6 +586,15 @@ kind = kind_phys intent = in optional = F +[dt_inner] + standard_name = time_step_for_inner_loop + long_name = time step for inner loop + units = s + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [first_time_step] standard_name = flag_for_first_timestep long_name = flag for first time step for time integration loop (cold/warmstart) From b6d102fff34ae8e9d6ace117b4c1026332ce1713 Mon Sep 17 00:00:00 2001 From: Ruiyu Sun Date: Thu, 14 Oct 2021 16:50:41 +0000 Subject: [PATCH 64/98] correct a typo --- physics/mp_thompson.meta | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/mp_thompson.meta b/physics/mp_thompson.meta index 090682333..ecd765fa4 100644 --- a/physics/mp_thompson.meta +++ b/physics/mp_thompson.meta @@ -1,4 +1,4 @@ -uccpp-table-properties] +[ccpp-table-properties] name = mp_thompson type = scheme dependencies = machine.F,module_mp_radar.F90,module_mp_thompson.F90,module_mp_thompson_make_number_concentrations.F90 From b381861d0408e4296902c1e9c76d5dce2d59f96b Mon Sep 17 00:00:00 2001 From: Ruiyu Sun Date: Thu, 14 Oct 2021 16:59:01 +0000 Subject: [PATCH 65/98] remove a comment --- physics/module_mp_thompson.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 index 2d8321c36..9630c9ab4 100644 --- a/physics/module_mp_thompson.F90 +++ b/physics/module_mp_thompson.F90 @@ -3943,7 +3943,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & qrten(k) = qrten(k) + (rr(k) - rr_tmp(k))/rho(k)/dt nrten(k) = nrten(k) + (nr(k) - nr_tmp(k))/rho(k)/dt enddo - if (rr(kts).gt.R1*10.) & !Songyou: is this needed? + if (rr(kts).gt.R1*10.) & pptrain = pptrain + rainsfc if(sedi_semi_update) then From 40afbadc1f9cf5a8c7525ea0e2e2adb2a0e807bf Mon Sep 17 00:00:00 2001 From: Ruiyu Sun Date: Thu, 14 Oct 2021 17:15:23 +0000 Subject: [PATCH 66/98] remove an if condition --- physics/module_mp_thompson.F90 | 1 - 1 file changed, 1 deletion(-) diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 index 9630c9ab4..b2846fb2c 100644 --- a/physics/module_mp_thompson.F90 +++ b/physics/module_mp_thompson.F90 @@ -3943,7 +3943,6 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & qrten(k) = qrten(k) + (rr(k) - rr_tmp(k))/rho(k)/dt nrten(k) = nrten(k) + (nr(k) - nr_tmp(k))/rho(k)/dt enddo - if (rr(kts).gt.R1*10.) & pptrain = pptrain + rainsfc if(sedi_semi_update) then From e7dfdefe90cc2db965faba2f0dc8e5d145cc1f26 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Fri, 15 Oct 2021 16:18:31 +0000 Subject: [PATCH 67/98] additional updates to emissivity calculation etc --- physics/GFS_debug.F90 | 2 +- physics/GFS_radiation_surface.F90 | 24 +++---- physics/GFS_radiation_surface.meta | 24 ++++++- physics/GFS_surface_composites.F90 | 27 +++---- physics/GFS_surface_composites.meta | 36 ---------- physics/radiation_surface.f | 107 +++++++++++----------------- physics/rte-rrtmgp | 2 +- 7 files changed, 90 insertions(+), 132 deletions(-) diff --git a/physics/GFS_debug.F90 b/physics/GFS_debug.F90 index deb88458b..33e5beec0 100644 --- a/physics/GFS_debug.F90 +++ b/physics/GFS_debug.F90 @@ -1307,7 +1307,7 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%scmpsw%visdf ', Interstitial%scmpsw%visdf ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%semis_ice ', Interstitial%semis_ice ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%semis_land ', Interstitial%semis_land ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%semis_water ', Interstitial%semis_water ) +! call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%semis_water ', Interstitial%semis_water ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%sfcalb ', Interstitial%sfcalb ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%sigma ', Interstitial%sigma ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%sigmaf ', Interstitial%sigmaf ) diff --git a/physics/GFS_radiation_surface.F90 b/physics/GFS_radiation_surface.F90 index 02d0f1c57..d48bce332 100644 --- a/physics/GFS_radiation_surface.F90 +++ b/physics/GFS_radiation_surface.F90 @@ -58,11 +58,11 @@ end subroutine GFS_radiation_surface_init subroutine GFS_radiation_surface_run ( & im, frac_grid, lslwr, lsswr, lsm, lsm_noahmp, lsm_ruc, & xlat, xlon, slmsk, lndp_type, n_var_lndp, sfc_alb_pert, & - lndp_var_list, lndp_prt_list, landfrac, snowd, sncovr, & + lndp_var_list, lndp_prt_list, landfrac, snodl, snodi, sncovr, & sncovr_ice, fice, zorl, hprime, tsfg, tsfa, tisfc, coszen, & cplice, min_seaice, min_lakeice, lakefrac, use_flake, & alvsf, alnsf, alvwf, alnwf, facsf, facwf, & - semis_lnd, semis_ice, snoalb, use_cice_alb, & + semis_lnd, semis_ice, semis_wat, snoalb, use_cice_alb, & albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, & albdvis_ice, albdnir_ice, albivis_ice, albinir_ice, & semisbase, semis, sfcalb, sfc_alb_dif, errmsg, errflg) @@ -82,7 +82,7 @@ subroutine GFS_radiation_surface_run ( & real(kind=kind_phys), dimension(:), intent(in) :: xlat, xlon, slmsk, & sfc_alb_pert, lndp_prt_list, & landfrac, lakefrac, & - snowd, sncovr, & + snodl, snodi, sncovr, & sncovr_ice, fice, zorl, & hprime, tsfg, tsfa, tisfc, & coszen, alvsf, alnsf, alvwf, & @@ -93,7 +93,7 @@ subroutine GFS_radiation_surface_run ( & real(kind=kind_phys), dimension(:), intent(inout) :: albdvis_lnd, albdnir_lnd, & albivis_lnd, albinir_lnd, & - semis_lnd, semis_ice + semis_lnd, semis_ice, semis_wat real(kind=kind_phys), dimension(:), intent(inout) :: semisbase, semis real(kind=kind_phys), dimension(:,:), intent(inout) :: sfcalb real(kind=kind_phys), dimension(:), intent(inout) :: sfc_alb_dif @@ -161,13 +161,13 @@ subroutine GFS_radiation_surface_run ( & if (lslwr) then !> - Call module_radiation_surface::setemis(),to set up surface !! emissivity for LW radiation. - call setemis (lsm, lsm_noahmp, lsm_ruc, frac_grid, cplice, & - use_flake, lakefrac, xlon, xlat, slmsk, & -! frac_grid, min_seaice, xlon, xlat, slmsk, & - snowd, sncovr, sncovr_ice, zorl, tsfg, tsfa, & - hprime, semis_lnd, semis_ice, im, & - fracl, fraco, fraci, icy, & ! --- inputs - semisbase, semis) ! --- outputs + call setemis (lsm, lsm_noahmp, lsm_ruc, frac_grid, cplice, & + use_flake, lakefrac, xlon, xlat, slmsk, & +! frac_grid, min_seaice, xlon, xlat, slmsk, & + snodl, snodi, sncovr, sncovr_ice, zorl, tsfg, & + tsfa, hprime, semis_lnd, semis_ice, semis_wat,& + im, fracl, fraco, fraci, icy, & ! --- inputs + semisbase, semis) ! --- outputs endif if (lsswr) then @@ -184,7 +184,7 @@ subroutine GFS_radiation_surface_run ( & !> - Call module_radiation_surface::setalb(),to set up surface !! albedor for SW radiation. - call setalb (slmsk, lsm, lsm_noahmp, lsm_ruc, use_cice_alb, snowd, sncovr, sncovr_ice, & + call setalb (slmsk, lsm, lsm_noahmp, lsm_ruc, use_cice_alb, snodl, sncovr, sncovr_ice, & snoalb, zorl, coszen, tsfg, tsfa, hprime, frac_grid, lakefrac, & ! snoalb, zorl, coszen, tsfg, tsfa, hprime, frac_grid, min_seaice, & alvsf, alnsf, alvwf, alnwf, facsf, facwf, fice, tisfc, & diff --git a/physics/GFS_radiation_surface.meta b/physics/GFS_radiation_surface.meta index d360b37d8..5aa40ff1f 100644 --- a/physics/GFS_radiation_surface.meta +++ b/physics/GFS_radiation_surface.meta @@ -197,9 +197,18 @@ kind = kind_phys intent = in optional = F -[snowd] - standard_name = lwe_surface_snow - long_name = water equivalent snow depth +[snodl] + standard_name = surface_snow_thickness_water_equivalent_over_land + long_name = water equivalent snow depth over land + units = mm + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in + optional = F +[snodi] + standard_name = surface_snow_thickness_water_equivalent_over_ice + long_name = water equivalent snow depth over ice units = mm dimensions = (horizontal_loop_extent) type = real @@ -402,6 +411,15 @@ kind = kind_phys intent = in optional = F +[semis_wat] + standard_name = surface_longwave_emissivity_over_water + long_name = surface lw emissivity in fraction over water + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout + optional = F [snoalb] standard_name = upper_bound_of_max_albedo_assuming_deep_snow long_name = maximum snow albedo diff --git a/physics/GFS_surface_composites.F90 b/physics/GFS_surface_composites.F90 index ca5ea2765..2ad6ef3d8 100644 --- a/physics/GFS_surface_composites.F90 +++ b/physics/GFS_surface_composites.F90 @@ -34,8 +34,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra tprcp_lnd, tprcp_ice, uustar, uustar_wat, uustar_lnd, uustar_ice, & weasd, weasd_lnd, weasd_ice, ep1d_ice, tsfc, tsfco, tsfcl, tsfc_wat, & tisfc, tsurf_wat, tsurf_lnd, tsurf_ice, & - gflx_ice, tgice, islmsk, islmsk_cice, slmsk, semis_wat, semis_lnd, semis_ice, & - qss, qss_wat, qss_lnd, qss_ice, & + gflx_ice, tgice, islmsk, islmsk_cice, slmsk, qss, qss_wat, qss_lnd, qss_ice, & min_lakeice, min_seaice, kdt, huge, errmsg, errflg) implicit none @@ -57,7 +56,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra qss_wat, qss_lnd, qss_ice, ep1d_ice, gflx_ice real(kind=kind_phys), intent(in ) :: tgice integer, dimension(:), intent(inout) :: islmsk, islmsk_cice - real(kind=kind_phys), dimension(:), intent(inout) :: semis_wat, semis_lnd, semis_ice, slmsk + real(kind=kind_phys), dimension(:), intent(inout) :: slmsk real(kind=kind_phys), intent(in ) :: min_lakeice, min_seaice, huge ! real(kind=kind_phys), dimension(:), intent(inout) :: zorlo, zorll, zorli @@ -212,11 +211,6 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra uustar_wat(i) = uustar(i) tsfc_wat(i) = tsfco(i) tsurf_wat(i) = tsfco(i) - !-- reference emiss value for surface emissivity in setemis - ! 1-open water, 2-grass/shrub land, 3-bare soil, tundra, - ! 4-sandy desert, 5-rocky desert, 6-forest, 7-ice, 8-snow - !data emsref / 0.97, 0.95, 0.94, 0.90, 0.93, 0.96, 0.96, 0.99 / - semis_wat(i) = 0.97_kind_phys ! consistent with setemis ! DH* else zorlo(i) = huge @@ -325,8 +319,9 @@ end subroutine GFS_surface_composites_inter_finalize !> \section arg_table_GFS_surface_composites_inter_run Argument Table !! \htmlinclude GFS_surface_composites_inter_run.html !! - subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_wat, semis_lnd, semis_ice, adjsfcdlw, & - gabsbdlw_lnd, gabsbdlw_ice, gabsbdlw_wat, & +! subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_wat, semis_lnd, semis_ice, adjsfcdlw, & + subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_lnd, semis_ice, adjsfcdlw, & + gabsbdlw_lnd, gabsbdlw_ice, gabsbdlw_wat, & adjsfcusw, adjsfcdsw, adjsfcnsw, errmsg, errflg) implicit none @@ -334,7 +329,8 @@ subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_wat, semis ! Interface variables integer, intent(in ) :: im logical, dimension(:), intent(in ) :: dry, icy, wet - real(kind=kind_phys), dimension(:), intent(in ) :: semis_wat, semis_lnd, semis_ice, adjsfcdlw, & +! real(kind=kind_phys), dimension(:), intent(in ) :: semis_wat, semis_lnd, semis_ice, adjsfcdlw, & + real(kind=kind_phys), dimension(:), intent(in ) :: semis_lnd, semis_ice, adjsfcdlw, & adjsfcdsw, adjsfcnsw real(kind=kind_phys), dimension(:), intent(inout) :: gabsbdlw_lnd, gabsbdlw_ice, gabsbdlw_wat real(kind=kind_phys), dimension(:), intent(out) :: adjsfcusw @@ -343,6 +339,13 @@ subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_wat, semis character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg +! + !-- reference emiss value for surface emissivity in setemis + ! 1-open water, 2-grass/shrub land, 3-bare soil, tundra, + ! 4-sandy desert, 5-rocky desert, 6-forest, 7-ice, 8-snow + !data emsref / 0.97, 0.95, 0.94, 0.90, 0.93, 0.96, 0.96, 0.99 / + real(kind=kind_phys), parameter :: semis_wat = 0.97_kind_phys ! consistent with setemis + ! Local variables integer :: i @@ -371,7 +374,7 @@ subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_wat, semis do i=1,im if (dry(i)) gabsbdlw_lnd(i) = semis_lnd(i) * adjsfcdlw(i) if (icy(i)) gabsbdlw_ice(i) = semis_ice(i) * adjsfcdlw(i) - if (wet(i)) gabsbdlw_wat(i) = semis_wat(i) * adjsfcdlw(i) + if (wet(i)) gabsbdlw_wat(i) = semis_wat * adjsfcdlw(i) adjsfcusw(i) = adjsfcdsw(i) - adjsfcnsw(i) enddo diff --git a/physics/GFS_surface_composites.meta b/physics/GFS_surface_composites.meta index a8f76e2ed..7d60d2b82 100644 --- a/physics/GFS_surface_composites.meta +++ b/physics/GFS_surface_composites.meta @@ -459,33 +459,6 @@ kind = kind_phys intent = inout optional = F -[semis_wat] - standard_name = surface_longwave_emissivity_over_water - long_name = surface lw emissivity in fraction over water - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[semis_lnd] - standard_name = surface_longwave_emissivity_over_land - long_name = surface lw emissivity in fraction over land - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F -[semis_ice] - standard_name = surface_longwave_emissivity_over_ice - long_name = surface lw emissivity in fraction over ice - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = F [qss] standard_name = surface_specific_humidity long_name = surface air saturation specific humidity @@ -617,15 +590,6 @@ type = logical intent = in optional = F -[semis_wat] - standard_name = surface_longwave_emissivity_over_water - long_name = surface lw emissivity in fraction over water - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = F [semis_lnd] standard_name = surface_longwave_emissivity_over_land long_name = surface lw emissivity in fraction over land diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 3bb53be73..29cae3992 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -298,7 +298,7 @@ end subroutine sfc_init !! \n 1) climatological surface albedo scheme (\cite briegleb_1992) !! \n 2) MODIS retrieval based scheme from Boston univ. !!\param slmsk (IMAX), sea(0),land(1),ice(2) mask on fcst model grid -!!\param snowf (IMAX), snow depth water equivalent in mm +!!\param snowf (IMAX), snow depth water equivalent in mm over land !!\param sncovr (IMAX), snow cover over land !!\param snoalb (IMAX), maximum snow albedo over land (for deep snow) !!\param zorlf (IMAX), surface roughness in cm @@ -712,7 +712,8 @@ end subroutine setalb !! or -pi -> +pi ranges !!\param xlat (IMAX), latitude in radiance, default to pi/2 -> !! -pi/2 range, otherwise see in-line comment -!!\param snowf (IMAX), snow depth water equivalent in mm +!!\param snodl (IMAX), snow depth water equivalent in mm land +!!\param snodi (IMAX), snow depth water equivalent in mm ice !!\param sncovr (IMAX), snow cover over land !!\param zorlf (IMAX), surface roughness in cm !!\param tsknf (IMAX), ground surface temperature in K @@ -725,9 +726,9 @@ end subroutine setalb !----------------------------------- subroutine setemis & & ( lsm,lsm_noahmp,lsm_ruc,frac_grid,cplice,use_flake, & ! --- inputs: - & lakefrac,xlon,xlat,slmsk,snowf,sncovr,sncovr_ice, & + & lakefrac,xlon,xlat,slmsk,snodl,snodi,sncovr,sncovr_ice, & & zorlf,tsknf,tairf,hprif, & - & semis_lnd,semis_ice,IMAX,fracl,fraco,fraci,icy, & + & semis_lnd,semis_ice,semis_wat,IMAX,fracl,fraco,fraci,icy, & & semisbase, sfcemis & ! --- outputs: & ) @@ -748,7 +749,8 @@ subroutine setemis & ! xlat (IMAX) - latitude in radiance, default to pi/2 -> -pi/2 ! ! range, otherwise see in-line comment ! ! slmsk (IMAX) - sea(0),land(1),ice(2) mask on fcst model grid ! -! snowf (IMAX) - snow depth water equivalent in mm ! +! snodl (IMAX) - snow depth water equivalent in mm over land ! +! snodi (IMAX) - snow depth water equivalent in mm over ice ! ! sncovr(IMAX) - ialbflg=1: snow cover over land in fraction ! ! sncovr_ice(IMAX) - snow cover over ice in fraction ! ! zorlf (IMAX) - surface roughness in cm ! @@ -757,6 +759,7 @@ subroutine setemis & ! hprif (IMAX) - topographic sdv in m ! ! semis_lnd (IMAX) - land emissivity ! ! semis_ice (IMAX) - ice emissivity ! +! semis_wat (IMAX) - water emissivity ! ! IMAX - array horizontal dimension ! ! ! ! outputs: ! @@ -787,12 +790,12 @@ subroutine setemis & real (kind=kind_phys), dimension(:), intent(in) :: lakefrac real (kind=kind_phys), dimension(:), intent(in) :: & - & xlon,xlat, slmsk, snowf,sncovr, sncovr_ice, & + & xlon,xlat, slmsk, snodl, snodi, sncovr, sncovr_ice, & & zorlf, tsknf, tairf, hprif real (kind=kind_phys), dimension(:), intent(in) :: & & fracl, fraco, fraci real (kind=kind_phys), dimension(:), intent(inout) :: & - & semis_lnd, semis_ice + & semis_lnd, semis_ice, semis_wat logical, dimension(:), intent(in) :: & & icy @@ -805,7 +808,7 @@ subroutine setemis & integer :: ivgtyp real (kind=kind_phys) :: dltg, hdlt, tmp1, tmp2, & - & asnow, argh, hrgh, fsno, fsnol, fsnoi, snowc + & asnow, argh, hrgh, fsno real (kind=kind_phys) :: sfcemis_land, sfcemis_ice ! --- reference emiss value for diff surface emiss index @@ -819,6 +822,8 @@ subroutine setemis & !===> ... begin here ! !> -# Set emissivity by surface type and conditions + + semis_wat = emsref(1) if ( iemslw == 1 ) then dltg = 360.0 / float(IMXEMS) @@ -830,20 +835,16 @@ subroutine setemis & lab_do_IMAX : do i = 1, IMAX - snowc = sncovr(i) * fracl(i) if (.not. cplice .or. lakefrac(i) > f_zero) then semis_ice(i) = emsref(7) - snowc = sncovr(i) + sncovr_ice(i)*fraci(i) endif if (fracl(i) < epsln) then ! no land if ( abs(fraco(i)-f_one) < epsln ) then ! open water point sfcemis(i) = emsref(1) elseif ( abs(fraci(i)-f_one) < epsln ) then ! complete sea/lake ice -! sfcemis(i) = emsref(7) sfcemis(i) = semis_ice(i) else !-- fractional sea ice -! sfcemis(i) = fraco(i)*emsref(1) + fraci(i)*emsref(7) sfcemis(i) = fraco(i)*emsref(1) + fraci(i)*semis_ice(i) endif @@ -889,65 +890,39 @@ subroutine setemis & semisbase(i) = sfcemis(i) semis_lnd(i) = emsref(idx) - endif ! end if_slmsk_block + endif !> - Check for snow covered area. +!> it is assume here that "sncovr" is the fraction of land covered by snow +!> and "sncovr_ice" is the fraction of ice coverd by snow - if (snowc > f_zero) then ! input land/ice area snow cover - -! it is assume here that "sncovr" is the fraction of land covered by snow -! and "sncovr_ice" is the fraction of ice coverd by snow - + if (fracl(i) > epsln) then if (sncovr(i) > f_zero) then semis_lnd(i) = semis_lnd(i) * (f_one - sncovr(i)) & & + emsref(8) * sncovr(i) + elseif (snodl(i) > f_zero) then + asnow = 0.02*snodl(i) + argh = min(0.50, max(.025, 0.01*zorlf(i))) + hrgh = min(f_one, max(0.20, 1.0577-1.1538e-3*hprif(i) ) ) + fsno = min(f_one, max(f_zero, asnow/(argh+asnow) * hrgh)) + semis_lnd(i) = semis_lnd(i)*(f_one-fsno) + emsref(8)*fsno endif - if (sncovr_ice(i) > f_zero .and. & - & (lakefrac(i) > f_zero .or. .not. cplice)) then + endif + if (fraci(i) > epsln .and. & + & (lakefrac(i) > f_zero .or. .not. cplice)) then + if (sncovr_ice(i) > f_zero) then semis_ice(i) = semis_ice(i) * (f_one - sncovr_ice(i)) & & + emsref(8) * sncovr_ice(i) - endif - sfcemis(i) = fracl(i)*semis_lnd(i) + fraco(i)*emsref(1) & - & + fraci(i)*semis_ice(i) - - else ! compute snow cover from snow depth - if (abs(fraco(i)-f_one) > epsln .and. & - & snowf(i) > f_zero) then - asnow = 0.02*snowf(i) + elseif (snodi(i) > f_zero) then + asnow = 0.02*snodi(i) argh = min(0.50, max(.025, 0.01*zorlf(i))) hrgh = min(f_one, max(0.20, 1.0577-1.1538e-3*hprif(i) ) ) - tmp1 = fracl(i) + fraci(i) - if (tmp1 > f_zero) then - fsno = min(tmp1, asnow / (argh + asnow) * hrgh) - tmp2 = fsno / tmp1 - fsnol = fracl(i) * tmp2 - fsnoi = fraci(i) * tmp2 - - if (fracl(i) > f_zero) then - if (fracl(i) <= fsnol) then - semis_lnd(i) = emsref(8) - else - tmp1 = (fracl(i)-fsnol) / fracl(i) - semis_lnd(i) = semis_lnd(i) * tmp1 & - & + emsref(8) * (f_one-tmp1) - endif - endif - if (fraci(i) > f_zero .and. & - & (lakefrac(i) > f_zero .or. .not. cplice)) then - if (fraci(i) <= fsnoi) then - semis_ice(i) = emsref(8) - else - tmp1 = (fraci(i)-fsnoi) / fraci(i) - semis_ice(i) = semis_ice(i) * tmp1 & - & + emsref(8) * (f_one-tmp1) - endif - endif - endif + fsno = min(f_one, max(f_zero, asnow/(argh+asnow) * hrgh)) + semis_ice(i) = semis_ice(i)*(f_one-fsno) + emsref(8)*fsno endif - sfcemis(i) = fracl(i)*semis_lnd(i) + fraco(i)*emsref(1) & - & + fraci(i)*semis_ice(i) - - endif ! end if_ialbflg + endif + sfcemis(i) = fracl(i)*semis_lnd(i) + fraco(i)*emsref(1) & + & + fraci(i)*semis_ice(i) enddo lab_do_IMAX @@ -964,13 +939,12 @@ subroutine setemis & if (sncovr_ice(i) > f_zero) then sfcemis_ice = emsref(7) * (f_one-sncovr_ice(i)) & & + emsref(8) * sncovr_ice(i) - elseif (snowf(i) > f_zero) then - asnow = 0.02*snowf(i) + elseif (snodi(i) > f_zero) then + asnow = 0.02*snodi(i) argh = min(0.50, max(.025,0.01*zorlf(i))) hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i))) fsno = asnow / (argh + asnow) * hrgh - fsnoi = min(f_one, fsno / (fraci(i)+fracl(i))) - sfcemis_ice = emsref(7)*(f_one-fsnoi)+emsref(8)*fsnoi + sfcemis_ice = emsref(7)*(f_one-fsno) + emsref(8)*fsno endif semis_ice(i) = sfcemis_ice else @@ -981,13 +955,12 @@ subroutine setemis & if (sncovr_ice(i) > f_zero) then sfcemis_ice = emsref(7) * (f_one-sncovr_ice(i)) & & + emsref(8) * sncovr_ice(i) - elseif (snowf(i) > f_zero) then - asnow = 0.02*snowf(i) + elseif (snodi(i) > f_zero) then + asnow = 0.02*snodi(i) argh = min(0.50, max(.025,0.01*zorlf(i))) hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i))) fsno = asnow / (argh + asnow) * hrgh - fsnoi = min(f_one, fsno / (fraci(i)+fracl(i))) - sfcemis_ice = emsref(7)*(f_one-fsnoi)+emsref(8)*fsnoi + sfcemis_ice = emsref(7)*(f_one-fsno) + emsref(8)*fsno endif semis_ice(i) = sfcemis_ice else diff --git a/physics/rte-rrtmgp b/physics/rte-rrtmgp index 9588c7bd8..d9594c46c 160000 --- a/physics/rte-rrtmgp +++ b/physics/rte-rrtmgp @@ -1 +1 @@ -Subproject commit 9588c7bd89e4f51a924f766e313bc42830fb4479 +Subproject commit d9594c46c877a2ab8001f5cd37961efdcf08ad8e From 7c1b474bd0de3e048794d191c248563a5c708952 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Mon, 18 Oct 2021 14:31:56 +0000 Subject: [PATCH 68/98] updating rte-rrtmgp pointer --- physics/rte-rrtmgp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/rte-rrtmgp b/physics/rte-rrtmgp index d9594c46c..9588c7bd8 160000 --- a/physics/rte-rrtmgp +++ b/physics/rte-rrtmgp @@ -1 +1 @@ -Subproject commit d9594c46c877a2ab8001f5cd37961efdcf08ad8e +Subproject commit 9588c7bd89e4f51a924f766e313bc42830fb4479 From 98a69eaac9ee57494598da7023ce98dc8c3f8993 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 19 Oct 2021 07:34:44 -0600 Subject: [PATCH 69/98] Correct spelling of janic in CCPP standard names, must be janjic --- physics/module_MYJPBL_wrapper.meta | 6 +++--- physics/module_MYJSFC_wrapper.meta | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/physics/module_MYJPBL_wrapper.meta b/physics/module_MYJPBL_wrapper.meta index 08ac65749..5b0ed43ad 100644 --- a/physics/module_MYJPBL_wrapper.meta +++ b/physics/module_MYJPBL_wrapper.meta @@ -8,7 +8,7 @@ name = myjpbl_wrapper_init type = scheme [do_myjpbl] - standard_name = flag_for_mellor_yamada_janic_pbl_scheme + standard_name = flag_for_mellor_yamada_janjic_pbl_scheme long_name = flag to activate MYJ PBL scheme units = flag dimensions = () @@ -46,7 +46,7 @@ intent = in optional = F [do_myjsfc] - standard_name = flag_for_mellor_yamada_janic_surface_layer_scheme + standard_name = flag_for_mellor_yamada_janjic_surface_layer_scheme long_name = flag for MYJ surface layer scheme units = flag dimensions = () @@ -341,7 +341,7 @@ intent = inout optional = F [phy_myj_elflx] - standard_name = surface_upward_specific_humidity_flux_for_mellor_yamada_janic_surface_layer_scheme + standard_name = surface_upward_specific_humidity_flux_for_mellor_yamada_janjic_surface_layer_scheme long_name = kinematic surface latent heat flux units = m s-1 kg kg-1 dimensions = (horizontal_loop_extent) diff --git a/physics/module_MYJSFC_wrapper.meta b/physics/module_MYJSFC_wrapper.meta index 4f909ef91..542300620 100644 --- a/physics/module_MYJSFC_wrapper.meta +++ b/physics/module_MYJSFC_wrapper.meta @@ -8,7 +8,7 @@ name = myjsfc_wrapper_init type = scheme [do_myjsfc] - standard_name = flag_for_mellor_yamada_janic_surface_layer_scheme + standard_name = flag_for_mellor_yamada_janjic_surface_layer_scheme long_name = flag to activate MYJ surface layer scheme units = flag dimensions = () @@ -322,7 +322,7 @@ intent = inout optional = F [phy_myj_elflx] - standard_name = surface_upward_specific_humidity_flux_for_mellor_yamada_janic_surface_layer_scheme + standard_name = surface_upward_specific_humidity_flux_for_mellor_yamada_janjic_surface_layer_scheme long_name = kinematic surface latent heat flux units = m s-1 kg kg-1 dimensions = (horizontal_loop_extent) From f6f3ce0540c64355e89270ddfac209257a4716b4 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Tue, 19 Oct 2021 14:56:16 +0000 Subject: [PATCH 70/98] updating GFS_surface_composites to import sfcemis_wat --- physics/GFS_surface_composites.F90 | 19 +++++-------------- physics/GFS_surface_composites.meta | 9 +++++++++ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/physics/GFS_surface_composites.F90 b/physics/GFS_surface_composites.F90 index 2ad6ef3d8..879f6e79e 100644 --- a/physics/GFS_surface_composites.F90 +++ b/physics/GFS_surface_composites.F90 @@ -319,9 +319,8 @@ end subroutine GFS_surface_composites_inter_finalize !> \section arg_table_GFS_surface_composites_inter_run Argument Table !! \htmlinclude GFS_surface_composites_inter_run.html !! -! subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_wat, semis_lnd, semis_ice, adjsfcdlw, & - subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_lnd, semis_ice, adjsfcdlw, & - gabsbdlw_lnd, gabsbdlw_ice, gabsbdlw_wat, & + subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_wat, semis_lnd, semis_ice, & + adjsfcdlw, gabsbdlw_lnd, gabsbdlw_ice, gabsbdlw_wat,& adjsfcusw, adjsfcdsw, adjsfcnsw, errmsg, errflg) implicit none @@ -329,23 +328,15 @@ subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_lnd, semis ! Interface variables integer, intent(in ) :: im logical, dimension(:), intent(in ) :: dry, icy, wet -! real(kind=kind_phys), dimension(:), intent(in ) :: semis_wat, semis_lnd, semis_ice, adjsfcdlw, & - real(kind=kind_phys), dimension(:), intent(in ) :: semis_lnd, semis_ice, adjsfcdlw, & - adjsfcdsw, adjsfcnsw + real(kind=kind_phys), dimension(:), intent(in ) :: semis_wat, semis_lnd, semis_ice, adjsfcdlw, & + adjsfcdlw, adjsfcdsw, adjsfcnsw real(kind=kind_phys), dimension(:), intent(inout) :: gabsbdlw_lnd, gabsbdlw_ice, gabsbdlw_wat real(kind=kind_phys), dimension(:), intent(out) :: adjsfcusw ! CCPP error handling character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg - ! - !-- reference emiss value for surface emissivity in setemis - ! 1-open water, 2-grass/shrub land, 3-bare soil, tundra, - ! 4-sandy desert, 5-rocky desert, 6-forest, 7-ice, 8-snow - !data emsref / 0.97, 0.95, 0.94, 0.90, 0.93, 0.96, 0.96, 0.99 / - real(kind=kind_phys), parameter :: semis_wat = 0.97_kind_phys ! consistent with setemis - ! Local variables integer :: i @@ -374,7 +365,7 @@ subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_lnd, semis do i=1,im if (dry(i)) gabsbdlw_lnd(i) = semis_lnd(i) * adjsfcdlw(i) if (icy(i)) gabsbdlw_ice(i) = semis_ice(i) * adjsfcdlw(i) - if (wet(i)) gabsbdlw_wat(i) = semis_wat * adjsfcdlw(i) + if (wet(i)) gabsbdlw_wat(i) = semis_wat(i) * adjsfcdlw(i) adjsfcusw(i) = adjsfcdsw(i) - adjsfcnsw(i) enddo diff --git a/physics/GFS_surface_composites.meta b/physics/GFS_surface_composites.meta index 7d60d2b82..f5cc0ce46 100644 --- a/physics/GFS_surface_composites.meta +++ b/physics/GFS_surface_composites.meta @@ -590,6 +590,15 @@ type = logical intent = in optional = F +[sfcemis_wat] + standard_name = surface_longwave_emissivity_over_water + long_name = surface lw emissivity in fraction over water + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in + optional = F [semis_lnd] standard_name = surface_longwave_emissivity_over_land long_name = surface lw emissivity in fraction over land From 42e7b97d3fe12a23285c43972dc9a3e5e9784c34 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Tue, 19 Oct 2021 15:04:39 +0000 Subject: [PATCH 71/98] fix a typo in GFS_radiation_surface.F90 --- physics/GFS_surface_composites.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/GFS_surface_composites.F90 b/physics/GFS_surface_composites.F90 index 879f6e79e..14bc48cd7 100644 --- a/physics/GFS_surface_composites.F90 +++ b/physics/GFS_surface_composites.F90 @@ -328,7 +328,7 @@ subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_wat, semis ! Interface variables integer, intent(in ) :: im logical, dimension(:), intent(in ) :: dry, icy, wet - real(kind=kind_phys), dimension(:), intent(in ) :: semis_wat, semis_lnd, semis_ice, adjsfcdlw, & + real(kind=kind_phys), dimension(:), intent(in ) :: semis_wat, semis_lnd, semis_ice, & adjsfcdlw, adjsfcdsw, adjsfcnsw real(kind=kind_phys), dimension(:), intent(inout) :: gabsbdlw_lnd, gabsbdlw_ice, gabsbdlw_wat real(kind=kind_phys), dimension(:), intent(out) :: adjsfcusw From bc6a7c3006cc58bac76e6cf7b04fdd5207a239b0 Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Tue, 19 Oct 2021 16:15:46 +0000 Subject: [PATCH 72/98] fix typo in GFS_surface_composites.meta --- physics/GFS_surface_composites.meta | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/GFS_surface_composites.meta b/physics/GFS_surface_composites.meta index f5cc0ce46..06678f1cb 100644 --- a/physics/GFS_surface_composites.meta +++ b/physics/GFS_surface_composites.meta @@ -590,7 +590,7 @@ type = logical intent = in optional = F -[sfcemis_wat] +[semis_wat] standard_name = surface_longwave_emissivity_over_water long_name = surface lw emissivity in fraction over water units = frac From 3d4e05642bfc11c1993fb0aa86303fccfa45b49c Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Wed, 20 Oct 2021 18:12:48 +0000 Subject: [PATCH 73/98] replacing snodl by snodi in call to setalb --- physics/GFS_radiation_surface.F90 | 2 +- physics/radiation_surface.f | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/physics/GFS_radiation_surface.F90 b/physics/GFS_radiation_surface.F90 index d48bce332..69cb25e81 100644 --- a/physics/GFS_radiation_surface.F90 +++ b/physics/GFS_radiation_surface.F90 @@ -184,7 +184,7 @@ subroutine GFS_radiation_surface_run ( & !> - Call module_radiation_surface::setalb(),to set up surface !! albedor for SW radiation. - call setalb (slmsk, lsm, lsm_noahmp, lsm_ruc, use_cice_alb, snodl, sncovr, sncovr_ice, & + call setalb (slmsk, lsm, lsm_noahmp, lsm_ruc, use_cice_alb, snodi, sncovr, sncovr_ice, & snoalb, zorl, coszen, tsfg, tsfa, hprime, frac_grid, lakefrac, & ! snoalb, zorl, coszen, tsfg, tsfa, hprime, frac_grid, min_seaice, & alvsf, alnsf, alvwf, alnwf, facsf, facwf, fice, tisfc, & diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 05e62ae88..c432b3ac9 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -332,7 +332,7 @@ end subroutine sfc_init !! @{ !----------------------------------- subroutine setalb & - & ( slmsk,lsm,lsm_noahmp,lsm_ruc,use_cice_alb,snowf, & ! --- inputs: + & ( slmsk,lsm,lsm_noahmp,lsm_ruc,use_cice_alb,snodi, & ! --- inputs: & sncovr,sncovr_ice,snoalb,zorlf,coszf, & & tsknf,tairf,hprif,frac_grid, lakefrac, & & alvsf,alnsf,alvwf,alnwf,facsf,facwf,fice,tisfc, & @@ -358,7 +358,7 @@ subroutine setalb & ! ! ! inputs: ! ! slmsk (IMAX) - sea(0),land(1),ice(2) mask on fcst model grid ! -! snowf (IMAX) - snow depth water equivalent in mm ! +! snodi (IMAX) - snow depth water equivalent in mm over ice ! ! sncovr(IMAX) - ialgflg=0: not used ! ! ialgflg=1: snow cover over land in fraction ! ! sncovr_ice(IMAX) - ialgflg=0: not used ! @@ -410,7 +410,7 @@ subroutine setalb & real (kind=kind_phys), dimension(:), intent(in) :: & & lakefrac, & - & slmsk, snowf, zorlf, coszf, tsknf, tairf, hprif, & + & slmsk, snodi, zorlf, coszf, tsknf, tairf, hprif, & & alvsf, alnsf, alvwf, alnwf, facsf, facwf, fice, tisfc, & & icealbdvis, icealbdnir, icealbivis, icealbinir, & & sncovr, sncovr_ice, snoalb, albPpert ! sfc-perts, mgehne @@ -478,7 +478,7 @@ subroutine setalb & asevb_ice = icealbdvis(i) asenb_ice = icealbdnir(i) else - asnow = 0.02*snowf(i) + asnow = 0.02*snodi(i) argh = min(0.50, max(.025, 0.01*zorlf(i))) hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i))) fsno0 = asnow / (argh + asnow) * hrgh ! snow fraction on ice @@ -614,7 +614,7 @@ subroutine setalb & asenb_ice = icealbdnir(i) else !-- Computation of ice albedo - asnow = 0.02*snowf(i) + asnow = 0.02*snodi(i) argh = min(0.50, max(.025, 0.01*zorlf(i))) hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i))) fsno0 = asnow / (argh + asnow) * hrgh @@ -750,7 +750,7 @@ subroutine setemis & ! range, otherwise see in-line comment ! ! slmsk (IMAX) - sea(0),land(1),ice(2) mask on fcst model grid ! ! snodl (IMAX) - snow depth water equivalent in mm over land ! -! snodi (IMAX) - snow depth water equivalent in mm over ice ! +! snodi (IMAX) - snow depth water equivalent in mm over ice ! ! sncovr(IMAX) - ialbflg=1: snow cover over land in fraction ! ! sncovr_ice(IMAX) - snow cover over ice in fraction ! ! zorlf (IMAX) - surface roughness in cm ! From 6c0183e6c6ff6459caf297498b4819d36625d94b Mon Sep 17 00:00:00 2001 From: "Shrinivas.Moorthi" Date: Wed, 20 Oct 2021 18:52:16 +0000 Subject: [PATCH 74/98] updating comments in radiation_surface.f --- physics/radiation_surface.f | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index c432b3ac9..066bcfbef 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -20,18 +20,22 @@ ! ! ! 'setalb' -- set up four-component surface albedoes ! ! inputs: ! -! (slmsk,snowf,sncovr,snoalb,zorlf,coszf,tsknf,tairf,hprif, ! +! (slmsk,snodi,sncovr,snoalb,zorlf,coszf,tsknf,tairf,hprif, ! ! alvsf,alnsf,alvwf,alnwf,facsf,facwf,fice,tisfc ! ! IMAX) ! ! outputs: ! ! (sfcalb) ! ! ! ! 'setemis' -- set up surface emissivity for lw radiation ! -! inputs: ! -! (xlon,xlat,slmsk,snowf,sncovr,zorlf,tsknf,tairf,hprif, ! -! IMAX) ! -! outputs: ! -! (sfcemis) ! +! ( lsm,lsm_noahmp,lsm_ruc,frac_grid,cplice,use_flake, ! +! --- inputs: +! lakefrac,xlon,xlat,slmsk,snodl,snodi,sncovr,sncovr_ice, ! +! zorlf,tsknf,tairf,hprif, ! +! semis_lnd,semis_ice,semis_wat,IMAX,fracl,fraco,fraci,icy, ! +! +! --- outputs: +! semisbase, sfcemis ! +! ! ! ! external modules referenced: ! ! ! @@ -298,7 +302,7 @@ end subroutine sfc_init !! \n 1) climatological surface albedo scheme (\cite briegleb_1992) !! \n 2) MODIS retrieval based scheme from Boston univ. !!\param slmsk (IMAX), sea(0),land(1),ice(2) mask on fcst model grid -!!\param snowf (IMAX), snow depth water equivalent in mm over land +!!\param snodi (IMAX), snow depth water equivalent in mm over ice !!\param sncovr (IMAX), snow cover over land !!\param snoalb (IMAX), maximum snow albedo over land (for deep snow) !!\param zorlf (IMAX), surface roughness in cm From c68c8640cab84617a28a75038b1e6bdd0f2e60c7 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 22 Oct 2021 07:44:08 -0600 Subject: [PATCH 75/98] Fix soil initialization for RUC LSM by using correct skin temperature over water --- physics/sfc_drv_ruc.meta | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/sfc_drv_ruc.meta b/physics/sfc_drv_ruc.meta index 52b768254..692f17124 100644 --- a/physics/sfc_drv_ruc.meta +++ b/physics/sfc_drv_ruc.meta @@ -199,7 +199,7 @@ intent = in optional = F [tsfc_wat] - standard_name = surface_skin_temperature_over_water + standard_name = sea_surface_temperature long_name = surface skin temperature over water units = K dimensions = (horizontal_dimension) From b63905d9c9470776e8a0c8f2931da7754812f376 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 25 Oct 2021 07:33:26 -0600 Subject: [PATCH 76/98] Remove optional attribute and several optional variable arguments from CCPP metadata --- physics/GFS_DCNV_generic.meta | 94 --------- physics/GFS_GWD_generic.meta | 49 ----- physics/GFS_MP_generic.meta | 101 --------- physics/GFS_PBL_generic.meta | 164 --------------- physics/GFS_SCNV_generic.meta | 90 -------- physics/GFS_cloud_diagnostics.meta | 18 -- physics/GFS_debug.meta | 87 -------- physics/GFS_phys_time_vary.fv3.meta | 243 ---------------------- physics/GFS_phys_time_vary.scm.meta | 180 ---------------- physics/GFS_rad_time_vary.fv3.meta | 27 --- physics/GFS_rad_time_vary.scm.meta | 27 --- physics/GFS_radiation_surface.meta | 59 ------ physics/GFS_rrtmg_post.meta | 36 ---- physics/GFS_rrtmg_pre.meta | 137 ------------ physics/GFS_rrtmg_setup.meta | 42 ---- physics/GFS_rrtmgp_cloud_overlap_pre.meta | 30 --- physics/GFS_rrtmgp_gfdlmp_pre.meta | 39 ---- physics/GFS_rrtmgp_lw_post.meta | 31 --- physics/GFS_rrtmgp_pre.meta | 44 ---- physics/GFS_rrtmgp_setup.meta | 45 ---- physics/GFS_rrtmgp_sw_post.meta | 46 ---- physics/GFS_rrtmgp_sw_pre.meta | 18 -- physics/GFS_rrtmgp_thompsonmp_pre.meta | 49 ----- physics/GFS_rrtmgp_zhaocarr_pre.meta | 45 ---- physics/GFS_stochastics.meta | 64 ------ physics/GFS_suite_interstitial.meta | 242 --------------------- physics/GFS_surface_composites.meta | 217 ------------------- physics/GFS_surface_generic.meta | 177 ---------------- physics/GFS_surface_loop_control.meta | 17 -- physics/GFS_time_vary_pre.fv3.meta | 30 --- physics/GFS_time_vary_pre.scm.meta | 29 --- physics/cires_ugwp.meta | 110 ---------- physics/cires_ugwp_post.meta | 34 --- physics/cnvc90.meta | 15 -- physics/cs_conv.meta | 77 ------- physics/cs_conv_aw_adj.meta | 23 -- physics/cu_gf_driver.meta | 63 ------ physics/cu_gf_driver_post.meta | 9 - physics/cu_gf_driver_pre.meta | 15 -- physics/cu_ntiedtke.meta | 41 ---- physics/cu_ntiedtke_post.meta | 6 - physics/cu_ntiedtke_pre.meta | 13 -- physics/dcyc2.meta | 80 ------- physics/drag_suite.meta | 81 -------- physics/flake_driver.meta | 38 ---- physics/gcm_shoc.meta | 51 ----- physics/get_prs_fv3.meta | 21 -- physics/gfdl_cloud_microphys.meta | 60 ------ physics/gfdl_fv_sat_adj.meta | 56 ----- physics/gfdl_sfc_layer.meta | 94 --------- physics/gscond.meta | 37 ---- physics/gwdc.meta | 74 ------- physics/gwdps.meta | 41 ---- physics/h2ophys.meta | 15 -- physics/m_micro.meta | 107 ---------- physics/m_micro_interstitial.meta | 55 ----- physics/maximum_hourly_diagnostics.meta | 31 --- physics/module_MYJPBL_wrapper.meta | 83 -------- physics/module_MYJSFC_wrapper.meta | 94 --------- physics/module_MYNNPBL_wrapper.meta | 166 --------------- physics/module_MYNNSFC_wrapper.meta | 107 ---------- physics/module_SGSCloud_RadPost.meta | 10 - physics/module_SGSCloud_RadPre.meta | 45 ---- physics/moninedmf.meta | 75 ------- physics/moninshoc.meta | 65 ------ physics/mp_fer_hires.meta | 50 ----- physics/mp_thompson.meta | 116 ++--------- physics/mp_thompson_post.meta | 18 -- physics/mp_thompson_pre.meta | 6 - physics/ozphys.meta | 26 --- physics/ozphys_2015.meta | 26 --- physics/phys_tend.meta | 12 -- physics/precpd.meta | 33 --- physics/radlw_main.meta | 45 ---- physics/radsw_main.meta | 53 ----- physics/rascnv.meta | 78 ------- physics/rayleigh_damp.meta | 24 --- physics/rrtmg_lw_post.meta | 17 -- physics/rrtmg_lw_pre.meta | 2 - physics/rrtmg_sw_post.meta | 32 --- physics/rrtmg_sw_pre.meta | 7 - physics/rrtmgp_lw_aerosol_optics.meta | 19 -- physics/rrtmgp_lw_cloud_optics.meta | 30 --- physics/rrtmgp_lw_cloud_sampling.meta | 27 --- physics/rrtmgp_lw_gas_optics.meta | 25 --- physics/rrtmgp_lw_pre.meta | 5 - physics/rrtmgp_lw_rte.meta | 20 -- physics/rrtmgp_sw_aerosol_optics.meta | 21 -- physics/rrtmgp_sw_cloud_optics.meta | 37 ---- physics/rrtmgp_sw_cloud_sampling.meta | 28 --- physics/rrtmgp_sw_gas_optics.meta | 27 --- physics/rrtmgp_sw_rte.meta | 25 --- physics/samfdeepcnv.meta | 77 ------- physics/samfshalcnv.meta | 54 ----- physics/sascnvn.meta | 64 ------ physics/satmedmfvdif.meta | 75 ------- physics/satmedmfvdifq.meta | 83 -------- physics/scm_sfc_flux_spec.meta | 38 ---- physics/sfc_cice.meta | 30 --- physics/sfc_diag.meta | 26 --- physics/sfc_diag_post.meta | 25 --- physics/sfc_diff.meta | 73 ------- physics/sfc_drv.meta | 92 -------- physics/sfc_drv_ruc.meta | 202 ------------------ physics/sfc_noah_wrfv4.meta | 86 -------- physics/sfc_noah_wrfv4_interstitial.meta | 123 ----------- physics/sfc_noahmp_drv.meta | 143 ------------- physics/sfc_nst.meta | 118 ----------- physics/sfc_ocean.meta | 33 --- physics/sfc_sice.meta | 52 ----- physics/shalcnv.meta | 51 ----- physics/shinhongvdif.meta | 60 ------ physics/ugwpv1_gsldrag.meta | 142 ------------- physics/ugwpv1_gsldrag_post.meta | 33 --- physics/unified_ugwp.meta | 154 -------------- physics/unified_ugwp_post.meta | 34 --- physics/ysuvdif.meta | 62 ------ 117 files changed, 20 insertions(+), 7088 deletions(-) diff --git a/physics/GFS_DCNV_generic.meta b/physics/GFS_DCNV_generic.meta index c64e1fadb..90a869fe3 100644 --- a/physics/GFS_DCNV_generic.meta +++ b/physics/GFS_DCNV_generic.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [qdiag3d] standard_name = flag_for_tracer_diagnostics_3D long_name = flag for 3d tracer diagnostic fields @@ -38,7 +35,6 @@ dimensions = () type = logical intent = in - optional = F [do_cnvgwd] standard_name = flag_for_convective_gravity_wave_drag long_name = flag for convective gravity wave drag (gwd) @@ -46,7 +42,6 @@ dimensions = () type = logical intent = in - optional = F [cplchm] standard_name = flag_for_chemistry_coupling long_name = flag controlling cplchm collection (default off) @@ -54,7 +49,6 @@ dimensions = () type = logical intent = in - optional = F [gu0] standard_name = x_wind_of_new_state long_name = zonal wind updated by physics @@ -63,7 +57,6 @@ type = real kind = kind_phys intent = in - optional = F [gv0] standard_name = y_wind_of_new_state long_name = meridional wind updated by physics @@ -72,7 +65,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -81,7 +73,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -90,7 +81,6 @@ type = real kind = kind_phys intent = inout - optional = F [nsamftrac] standard_name = number_of_tracers_for_samf long_name = number of tracers for scale-aware mass flux schemes @@ -98,7 +88,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -106,7 +95,6 @@ dimensions = () type = integer intent = in - optional = F [save_u] standard_name = x_wind_save long_name = x-wind before entering a physics scheme @@ -115,7 +103,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_v] standard_name = y_wind_save long_name = y-wind before entering a physics scheme @@ -124,7 +111,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_t] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -133,7 +119,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_q] standard_name = tracer_concentration_save long_name = tracer concentration before entering a physics scheme @@ -142,7 +127,6 @@ type = real kind = kind_phys intent = in - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -150,7 +134,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_process_dcnv] standard_name = index_of_deep_convection_process_process_in_cumulative_change_index long_name = index of deep convection process in second dimension of array cumulative change index @@ -158,7 +141,6 @@ dimensions = () type = integer intent = in - optional = F [cscnv] standard_name = flag_for_Chikira_Sugiyama_deep_convection long_name = flag for Chikira-Sugiyama convection @@ -166,7 +148,6 @@ dimensions = () type = logical intent = in - optional = F [satmedmf] standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL long_name = flag for scale-aware TKE moist EDMF PBL scheme @@ -174,7 +155,6 @@ dimensions = () type = logical intent = in - optional = F [trans_trac] standard_name = flag_for_convective_transport_of_tracers long_name = flag for convective transport of tracers @@ -182,7 +162,6 @@ dimensions = () type = logical intent = in - optional = F [ras] standard_name = flag_for_relaxed_arakawa_schubert_deep_convection long_name = flag for ras convection scheme @@ -190,7 +169,6 @@ dimensions = () type = logical intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -198,7 +176,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -206,7 +183,6 @@ dimensions = () type = integer intent = in - optional = F [ntclamt] standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer @@ -214,7 +190,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -222,7 +197,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -230,7 +204,6 @@ dimensions = () type = integer intent = in - optional = F [ntrnc] standard_name = index_of_mass_number_concentration_of_rain_in_tracer_concentration_array long_name = tracer index for rain number concentration @@ -238,7 +211,6 @@ dimensions = () type = integer intent = in - optional = F [ntsnc] standard_name = index_of_mass_number_concentration_of_snow_in_tracer_concentration_array long_name = tracer index for snow number concentration @@ -246,7 +218,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -254,7 +225,6 @@ dimensions = () type = integer intent = in - optional = F [ntgnc] standard_name = index_of_mass_number_concentration_of_graupel_in_tracer_concentration_array long_name = tracer index for graupel number concentration @@ -262,7 +232,6 @@ dimensions = () type = integer intent = in - optional = F [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -271,7 +240,6 @@ type = real kind = kind_phys intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -279,7 +247,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -288,7 +255,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -296,7 +262,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -315,7 +280,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -323,7 +287,6 @@ dimensions = () type = integer intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -331,7 +294,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -339,7 +301,6 @@ dimensions = () type = logical intent = in - optional = F [qdiag3d] standard_name = flag_for_tracer_diagnostics_3D long_name = flag for 3d tracer diagnostic fields @@ -347,7 +308,6 @@ dimensions = () type = logical intent = in - optional = F [ras] standard_name = flag_for_relaxed_arakawa_schubert_deep_convection long_name = flag for ras convection scheme @@ -355,7 +315,6 @@ dimensions = () type = logical intent = in - optional = F [frain] standard_name = dynamics_to_physics_timestep_ratio long_name = ratio of dynamics timestep to physics timestep @@ -364,7 +323,6 @@ type = real kind = kind_phys intent = in - optional = F [rain1] standard_name = lwe_thickness_of_deep_convective_precipitation_amount long_name = deep convective rainfall amount on physics timestep @@ -373,7 +331,6 @@ type = real kind = kind_phys intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -382,7 +339,6 @@ type = real kind = kind_phys intent = in - optional = F [cld1d] standard_name = cloud_work_function long_name = cloud work function @@ -391,7 +347,6 @@ type = real kind = kind_phys intent = in - optional = F [save_u] standard_name = x_wind_save long_name = x-wind before entering a physics scheme @@ -400,7 +355,6 @@ type = real kind = kind_phys intent = in - optional = F [save_v] standard_name = y_wind_save long_name = y-wind before entering a physics scheme @@ -409,7 +363,6 @@ type = real kind = kind_phys intent = in - optional = F [save_t] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -418,7 +371,6 @@ type = real kind = kind_phys intent = in - optional = F [gu0] standard_name = x_wind_of_new_state long_name = zonal wind updated by physics @@ -427,7 +379,6 @@ type = real kind = kind_phys intent = in - optional = F [gv0] standard_name = y_wind_of_new_state long_name = meridional wind updated by physics @@ -436,7 +387,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -445,7 +395,6 @@ type = real kind = kind_phys intent = in - optional = F [ud_mf] standard_name = instantaneous_atmosphere_updraft_convective_mass_flux long_name = (updraft mass flux) * delt @@ -454,7 +403,6 @@ type = real kind = kind_phys intent = in - optional = F [dd_mf] standard_name = instantaneous_atmosphere_downdraft_convective_mass_flux long_name = (downdraft mass flux) * delt @@ -463,7 +411,6 @@ type = real kind = kind_phys intent = in - optional = F [dt_mf] standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux long_name = (detrainment mass flux) * delt @@ -472,7 +419,6 @@ type = real kind = kind_phys intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -481,7 +427,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -489,7 +434,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_process_dcnv] standard_name = index_of_deep_convection_process_process_in_cumulative_change_index long_name = index of deep convection process in second dimension of array cumulative change index @@ -497,7 +441,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -505,7 +448,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -513,7 +455,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -521,7 +462,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -529,7 +469,6 @@ dimensions = () type = integer intent = in - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -538,7 +477,6 @@ type = real kind = kind_phys intent = in - optional = F [save_q] standard_name = tracer_concentration_save long_name = tracer concentration before entering a physics scheme @@ -547,7 +485,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -556,7 +493,6 @@ type = real kind = kind_phys intent = in - optional = F [npdf3d] standard_name = number_of_pdf_based_variables_in_xyz_dimensioned_restart_array long_name = number of 3d arrays associated with pdf based clouds/mp @@ -564,7 +500,6 @@ dimensions = () type = integer intent = in - optional = F [num_p3d] standard_name = number_of_microphysics_variables_in_xyz_dimensioned_restart_array long_name = number of 3D arrays needed for microphysics @@ -572,7 +507,6 @@ dimensions = () type = integer intent = in - optional = F [ncnvcld3d] standard_name = number_of_convective_cloud_variables_in_xyz_dimensioned_restart_array long_name = number of convective 3d clouds fields @@ -580,7 +514,6 @@ dimensions = () type = integer intent = in - optional = F [nsamftrac] standard_name = number_of_tracers_for_samf long_name = number of tracers for scale-aware mass flux schemes @@ -588,7 +521,6 @@ dimensions = () type = integer intent = in - optional = F [rainc] standard_name = lwe_thickness_of_convective_precipitation_amount_on_dynamics_timestep long_name = convective rain at this time step @@ -597,7 +529,6 @@ type = real kind = kind_phys intent = inout - optional = F [cldwrk] standard_name = cumulative_cloud_work_function long_name = cumulative cloud work function (valid only with sas) @@ -606,7 +537,6 @@ type = real kind = kind_phys intent = inout - optional = F [upd_mf] standard_name = cumulative_atmosphere_updraft_convective_mass_flux long_name = cumulative updraft mass flux @@ -615,7 +545,6 @@ type = real kind = kind_phys intent = inout - optional = F [dwn_mf] standard_name = cumulative_atmosphere_downdraft_convective_mass_flux long_name = cumulative downdraft mass flux @@ -624,7 +553,6 @@ type = real kind = kind_phys intent = inout - optional = F [det_mf] standard_name = cumulative_atmosphere_detrainment_convective_mass_flux long_name = cumulative detrainment mass flux @@ -633,7 +561,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvw] standard_name = convective_cloud_water_mixing_ratio long_name = moist convective cloud water mixing ratio @@ -642,7 +569,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvc] standard_name = convective_cloud_cover long_name = convective cloud cover @@ -651,7 +577,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvw_phy_f3d] standard_name = convective_cloud_condensate_mixing_ratio long_name = convective cloud water mixing ratio in the phy_f3d array @@ -660,7 +585,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvc_phy_f3d] standard_name = convective_cloud_area_fraction long_name = convective cloud cover in the phy_f3d array @@ -669,7 +593,6 @@ type = real kind = kind_phys intent = inout - optional = F [flag_for_dcnv_generic_tend] standard_name = flag_for_generic_tendency_due_to_deep_convection long_name = true if GFS_DCNV_generic should calculate tendencies @@ -677,7 +600,6 @@ dimensions = () type = logical intent = in - optional = F [cscnv] standard_name = flag_for_Chikira_Sugiyama_deep_convection long_name = flag for Chikira-Sugiyama convection @@ -685,7 +607,6 @@ dimensions = () type = logical intent = in - optional = F [satmedmf] standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL long_name = flag for scale-aware TKE moist EDMF PBL scheme @@ -693,7 +614,6 @@ dimensions = () type = logical intent = in - optional = F [trans_trac] standard_name = flag_for_convective_transport_of_tracers long_name = flag for convective transport of tracers @@ -701,7 +621,6 @@ dimensions = () type = logical intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -709,7 +628,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -717,7 +635,6 @@ dimensions = () type = integer intent = in - optional = F [ntclamt] standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer @@ -725,7 +642,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -733,7 +649,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -741,7 +656,6 @@ dimensions = () type = integer intent = in - optional = F [ntrnc] standard_name = index_of_mass_number_concentration_of_rain_in_tracer_concentration_array long_name = tracer index for rain number concentration @@ -749,7 +663,6 @@ dimensions = () type = integer intent = in - optional = F [ntsnc] standard_name = index_of_mass_number_concentration_of_snow_in_tracer_concentration_array long_name = tracer index for snow number concentration @@ -757,7 +670,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -765,7 +677,6 @@ dimensions = () type = integer intent = in - optional = F [ntgnc] standard_name = index_of_mass_number_concentration_of_graupel_in_tracer_concentration_array long_name = tracer index for graupel number concentration @@ -773,7 +684,6 @@ dimensions = () type = integer intent = in - optional = F [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -782,7 +692,6 @@ type = real kind = kind_phys intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -790,7 +699,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -799,7 +707,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -807,4 +714,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_GWD_generic.meta b/physics/GFS_GWD_generic.meta index adaa9a077..4921684cd 100644 --- a/physics/GFS_GWD_generic.meta +++ b/physics/GFS_GWD_generic.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [nmtvr] standard_name = number_of_statistical_measures_of_subgrid_orography long_name = number of statistical measures of subgrid height_above_mean_sea_level @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [mntvar] standard_name = statistical_measures_of_subgrid_orography_collection_array long_name = array of statistical measures of subgrid height_above_mean_sea_level @@ -39,7 +36,6 @@ type = real kind = kind_phys intent = in - optional = F [oc] standard_name = convexity_of_subgrid_orography long_name = convexity of subgrid height_above_mean_sea_level @@ -48,7 +44,6 @@ type = real kind = kind_phys intent = out - optional = F [oa4] standard_name = asymmetry_of_subgrid_orography long_name = asymmetry of subgrid height_above_mean_sea_level @@ -57,7 +52,6 @@ type = real kind = kind_phys intent = out - optional = F [clx] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height long_name = horizontal fraction of grid box covered by subgrid height_above_mean_sea_level higher than critical height @@ -66,7 +60,6 @@ type = real kind = kind_phys intent = out - optional = F [theta] standard_name = angle_from_east_of_maximum_subgrid_orographic_variations long_name = angle with_respect to east of maximum subgrid orographic variations @@ -75,7 +68,6 @@ type = real kind = kind_phys intent = out - optional = F [varss] standard_name = standard_deviation_of_subgrid_orography_small_scale long_name = standard deviation of subgrid height_above_mean_sea_level small scale @@ -84,7 +76,6 @@ type = real kind = kind_phys intent = out - optional = F [ocss] standard_name = convexity_of_subgrid_orography_small_scale long_name = convexity of subgrid height_above_mean_sea_level small scale @@ -93,7 +84,6 @@ type = real kind = kind_phys intent = out - optional = F [oa4ss] standard_name = asymmetry_of_subgrid_orography_small_scale long_name = asymmetry of subgrid height_above_mean_sea_level small scale @@ -102,7 +92,6 @@ type = real kind = kind_phys intent = out - optional = F [clxss] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height_small_scale long_name = horizontal fraction of grid box covered by subgrid height_above_mean_sea_level higher than critical height small scale @@ -111,7 +100,6 @@ type = real kind = kind_phys intent = out - optional = F [sigma] standard_name = slope_of_subgrid_orography long_name = slope of subgrid height_above_mean_sea_level @@ -120,7 +108,6 @@ type = real kind = kind_phys intent = out - optional = F [gamma] standard_name = anisotropy_of_subgrid_orography long_name = anisotropy of subgrid height_above_mean_sea_level @@ -129,7 +116,6 @@ type = real kind = kind_phys intent = out - optional = F [elvmax] standard_name = maximum_subgrid_orography long_name = maximum of subgrid height_above_mean_sea_level @@ -138,7 +124,6 @@ type = real kind = kind_phys intent = out - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -146,7 +131,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -154,7 +138,6 @@ dimensions = () type = logical intent = in - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics @@ -163,7 +146,6 @@ type = real kind = kind_phys intent = in - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics @@ -172,7 +154,6 @@ type = real kind = kind_phys intent = in - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -181,7 +162,6 @@ type = real kind = kind_phys intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -190,7 +170,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -198,7 +177,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -206,7 +184,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -214,7 +191,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -222,7 +198,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_orographic_gwd] standard_name = index_of_orographic_gravity_wave_drag_process_in_cumulative_change_index long_name = index of orographic gravity wave drag process in second dimension of array cumulative change index @@ -230,7 +205,6 @@ dimensions = () type = integer intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -239,7 +213,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_for_gwd_generic_tend] standard_name = flag_for_generic_tendency_due_to_gravity_wave_drag long_name = true if GFS_GWD_generic should calculate tendencies @@ -247,7 +220,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -256,7 +228,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -264,7 +235,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -283,7 +253,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for calculating 3-D diagnostic fields @@ -291,7 +260,6 @@ dimensions = () type = logical intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics time step @@ -300,7 +268,6 @@ type = real kind = kind_phys intent = in - optional = F [dusfcg] standard_name = instantaneous_x_stress_due_to_gravity_wave_drag long_name = zonal surface stress due to orographic gravity wave drag @@ -309,7 +276,6 @@ type = real kind = kind_phys intent = in - optional = F [dvsfcg] standard_name = instantaneous_y_stress_due_to_gravity_wave_drag long_name = meridional surface stress due to orographic gravity wave drag @@ -318,7 +284,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics @@ -327,7 +292,6 @@ type = real kind = kind_phys intent = in - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics @@ -336,7 +300,6 @@ type = real kind = kind_phys intent = in - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = air temperature tendency due to model physics @@ -345,7 +308,6 @@ type = real kind = kind_phys intent = in - optional = F [dugwd] standard_name = time_integral_of_x_stress_due_to_gravity_wave_drag long_name = integral over time of zonal stress due to gravity wave drag @@ -354,7 +316,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvgwd] standard_name = time_integral_of_y_stress_due_to_gravity_wave_drag long_name = integral over time of meridional stress due to gravity wave drag @@ -363,7 +324,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -372,7 +332,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -380,7 +339,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -388,7 +346,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -396,7 +353,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -404,7 +360,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_orographic_gwd] standard_name = index_of_orographic_gravity_wave_drag_process_in_cumulative_change_index long_name = index of orographic gravity wave drag process in second dimension of array cumulative change index @@ -412,7 +367,6 @@ dimensions = () type = integer intent = in - optional = F [flag_for_gwd_generic_tend] standard_name = flag_for_generic_tendency_due_to_gravity_wave_drag long_name = true if GFS_GWD_generic should calculate tendencies @@ -420,7 +374,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -429,7 +382,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -437,4 +389,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_MP_generic.meta b/physics/GFS_MP_generic.meta index a87cfe578..358d935dd 100644 --- a/physics/GFS_MP_generic.meta +++ b/physics/GFS_MP_generic.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = logical flag for 3D diagnostics @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [qdiag3d] standard_name = flag_for_tracer_diagnostics_3D long_name = logical flag for 3D tracer diagnostics @@ -38,7 +35,6 @@ dimensions = () type = logical intent = in - optional = F [do_aw] standard_name = flag_for_Arakawa_Wu_adjustment long_name = flag for Arakawa Wu scale-aware adjustment @@ -46,7 +42,6 @@ dimensions = () type = logical intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [nncl] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -70,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -79,7 +71,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -88,7 +79,6 @@ type = real kind = kind_phys intent = in - optional = F [save_t] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -97,7 +87,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_q] standard_name = tracer_concentration_save long_name = tracer concentration before entering a physics scheme @@ -106,7 +95,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -115,7 +103,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -123,7 +110,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -142,7 +128,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -150,7 +135,6 @@ dimensions = () type = integer intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current time step index @@ -158,7 +142,6 @@ dimensions = () type = integer intent = in - optional = F [rainmin] standard_name = lwe_thickness_of_minimum_rain_amount long_name = minimum rain amount @@ -167,7 +150,6 @@ type = real kind = kind_phys intent = in - optional = F [nrcm] standard_name = number_of_random_numbers long_name = second dimension of random number stream for RAS @@ -175,7 +157,6 @@ dimensions = () type = integer intent = in - optional = F [nncl] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -183,7 +164,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -191,7 +171,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -199,7 +178,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -207,7 +185,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -215,7 +192,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -223,7 +199,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -231,7 +206,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_fer_hires] standard_name = identifier_for_fer_hires_microphysics_scheme long_name = choice of Ferrier-Aligo microphysics scheme @@ -239,7 +213,6 @@ dimensions = () type = integer intent = in - optional = F [cal_pre] standard_name = flag_for_dominant_precipitation_type_partition long_name = flag controls precip type algorithm @@ -247,7 +220,6 @@ dimensions = () type = logical intent = in - optional = F [cplflx] standard_name = flag_for_surface_flux_coupling long_name = flag controlling cplflx collection (default off) @@ -255,7 +227,6 @@ dimensions = () type = logical intent = in - optional = F [cplchm] standard_name = flag_for_chemistry_coupling long_name = flag controlling cplchm collection (default off) @@ -263,7 +234,6 @@ dimensions = () type = logical intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -272,7 +242,6 @@ type = real kind = kind_phys intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -281,7 +250,6 @@ type = real kind = kind_phys intent = in - optional = F [frain] standard_name = dynamics_to_physics_timestep_ratio long_name = ratio of dynamics timestep to physics timestep @@ -290,7 +258,6 @@ type = real kind = kind_phys intent = in - optional = F [rainc] standard_name = lwe_thickness_of_convective_precipitation_amount_on_dynamics_timestep long_name = convective rain at this time step @@ -299,7 +266,6 @@ type = real kind = kind_phys intent = inout - optional = F [rain1] standard_name = lwe_thickness_of_explicit_precipitation_amount long_name = explicit rainfall amount on physics timestep @@ -308,7 +274,6 @@ type = real kind = kind_phys intent = in - optional = F [rann] standard_name = random_number long_name = random number array (0-1) @@ -317,7 +282,6 @@ type = real kind = kind_phys intent = in - optional = F [xlat] standard_name = latitude long_name = latitude @@ -326,7 +290,6 @@ type = real kind = kind_phys intent = in - optional = F [xlon] standard_name = longitude long_name = longitude @@ -335,7 +298,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -344,7 +306,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -353,7 +314,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = layer mean pressure @@ -362,7 +322,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = pressure at layer interface @@ -371,7 +330,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -380,7 +338,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -389,7 +346,6 @@ type = real kind = kind_phys intent = in - optional = F [ice] standard_name = lwe_thickness_of_ice_amount_on_dynamics_timestep long_name = ice fall at this time step @@ -398,7 +354,6 @@ type = real kind = kind_phys intent = inout - optional = F [snow] standard_name = lwe_thickness_of_snow_amount_on_dynamics_timestep long_name = snow fall at this time step @@ -407,7 +362,6 @@ type = real kind = kind_phys intent = inout - optional = F [graupel] standard_name = lwe_thickness_of_graupel_amount_on_dynamics_timestep long_name = graupel fall at this time step @@ -416,7 +370,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_t] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -425,7 +378,6 @@ type = real kind = kind_phys intent = in - optional = F [save_q] standard_name = tracer_concentration_save long_name = tracer concentration before entering a physics scheme @@ -434,7 +386,6 @@ type = real kind = kind_phys intent = inout - optional = F [rain0] standard_name = lwe_thickness_of_explicit_rain_amount long_name = explicit rain on physics timestep @@ -443,7 +394,6 @@ type = real kind = kind_phys intent = in - optional = F [ice0] standard_name = lwe_thickness_of_ice_amount long_name = ice fall on physics timestep @@ -452,7 +402,6 @@ type = real kind = kind_phys intent = in - optional = F [snow0] standard_name = lwe_thickness_of_snow_amount long_name = snow fall on physics timestep @@ -461,7 +410,6 @@ type = real kind = kind_phys intent = in - optional = F [graupel0] standard_name = lwe_thickness_of_graupel_amount long_name = graupel fall on physics timestep @@ -470,7 +418,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = air pressure difference between midlayers @@ -479,7 +426,6 @@ type = real kind = kind_phys intent = in - optional = F [rain] standard_name = lwe_thickness_of_precipitation_amount_on_dynamics_timestep long_name = total rain at this time step @@ -488,7 +434,6 @@ type = real kind = kind_phys intent = inout - optional = F [domr_diag] standard_name = dominant_rain_type long_name = dominant rain type @@ -497,7 +442,6 @@ type = real kind = kind_phys intent = inout - optional = F [domzr_diag] standard_name = dominant_freezing_rain_type long_name = dominant freezing rain type @@ -506,7 +450,6 @@ type = real kind = kind_phys intent = inout - optional = F [domip_diag] standard_name = dominant_sleet_type long_name = dominant sleet type @@ -515,7 +458,6 @@ type = real kind = kind_phys intent = inout - optional = F [doms_diag] standard_name = dominant_snow_type long_name = dominant snow type @@ -524,7 +466,6 @@ type = real kind = kind_phys intent = inout - optional = F [tprcp] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep long_name = total precipitation amount in each time step @@ -533,7 +474,6 @@ type = real kind = kind_phys intent = inout - optional = F [srflag] standard_name = precipitation_type long_name = snow/rain flag for precipitation @@ -542,7 +482,6 @@ type = real kind = kind_phys intent = inout - optional = F [sr] standard_name = ratio_of_snowfall_to_rainfall long_name = snow ratio: ratio of snow to total precipitation @@ -551,7 +490,6 @@ type = real kind = kind_phys intent = in - optional = F [cnvprcp] standard_name = cumulative_lwe_thickness_of_convective_precipitation_amount long_name = cumulative convective precipitation @@ -560,7 +498,6 @@ type = real kind = kind_phys intent = inout - optional = F [totprcp] standard_name = accumulated_lwe_thickness_of_precipitation_amount long_name = accumulated total precipitation @@ -569,7 +506,6 @@ type = real kind = kind_phys intent = inout - optional = F [totice] standard_name = accumulated_lwe_thickness_of_ice_amount long_name = accumulated ice precipitation @@ -578,7 +514,6 @@ type = real kind = kind_phys intent = inout - optional = F [totsnw] standard_name = accumulated_lwe_thickness_of_snow_amount long_name = accumulated snow precipitation @@ -587,7 +522,6 @@ type = real kind = kind_phys intent = inout - optional = F [totgrp] standard_name = accumulated_lwe_thickness_of_graupel_amount long_name = accumulated graupel precipitation @@ -596,7 +530,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvprcpb] standard_name = cumulative_lwe_thickness_of_convective_precipitation_amount_in_bucket long_name = cumulative convective precipitation in bucket @@ -605,7 +538,6 @@ type = real kind = kind_phys intent = inout - optional = F [totprcpb] standard_name = accumulated_lwe_thickness_of_precipitation_amount_in_bucket long_name = accumulated total precipitation in bucket @@ -614,7 +546,6 @@ type = real kind = kind_phys intent = inout - optional = F [toticeb] standard_name = accumulated_lwe_thickness_of_ice_amount_in_bucket long_name = accumulated ice precipitation in bucket @@ -623,7 +554,6 @@ type = real kind = kind_phys intent = inout - optional = F [totsnwb] standard_name = accumulated_lwe_thickness_of_snow_amount_in_bucket long_name = accumulated snow precipitation in bucket @@ -632,7 +562,6 @@ type = real kind = kind_phys intent = inout - optional = F [totgrpb] standard_name = accumulated_lwe_thickness_of_graupel_amount_in_bucket long_name = accumulated graupel precipitation in bucket @@ -641,7 +570,6 @@ type = real kind = kind_phys intent = inout - optional = F [rain_cpl] standard_name = cumulative_lwe_thickness_of_precipitation_amount_for_coupling long_name = total rain precipitation @@ -650,7 +578,6 @@ type = real kind = kind_phys intent = inout - optional = F [rainc_cpl] standard_name = cumulative_lwe_thickness_of_convective_precipitation_amount_for_coupling long_name = total convective precipitation @@ -659,7 +586,6 @@ type = real kind = kind_phys intent = inout - optional = F [snow_cpl] standard_name = cumulative_lwe_thickness_of_snow_amount_for_coupling long_name = total snow precipitation @@ -668,7 +594,6 @@ type = real kind = kind_phys intent = inout - optional = F [pwat] standard_name = column_precipitable_water long_name = precipitable water @@ -677,7 +602,6 @@ type = real kind = kind_phys intent = inout - optional = F [drain_cpl] standard_name = tendency_of_lwe_thickness_of_rain_amount_on_dynamics_timestep_for_coupling long_name = change in rain_cpl (coupling_type) @@ -686,7 +610,6 @@ type = real kind = kind_phys intent = inout - optional = F [dsnow_cpl] standard_name = tendency_of_lwe_thickness_of_snowfall_amount_on_dynamics_timestep_for_coupling long_name = change in show_cpl (coupling_type) @@ -695,7 +618,6 @@ type = real kind = kind_phys intent = inout - optional = F [lsm] standard_name = control_for_land_surface_scheme long_name = flag for land surface model @@ -703,7 +625,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model @@ -711,7 +632,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model @@ -719,7 +639,6 @@ dimensions = () type = integer intent = in - optional = F [raincprv] standard_name = lwe_thickness_of_convective_precipitation_amount_on_previous_timestep long_name = convective_precipitation_amount from previous timestep @@ -728,7 +647,6 @@ type = real kind = kind_phys intent = inout - optional = F [rainncprv] standard_name = lwe_thickness_of_explicit_precipitation_amount_on_previous_timestep long_name = explicit rainfall from previous timestep @@ -737,7 +655,6 @@ type = real kind = kind_phys intent = inout - optional = F [iceprv] standard_name = lwe_thickness_of_ice_precipitation_amount_on_previous_timestep long_name = ice amount from previous timestep @@ -746,7 +663,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowprv] standard_name = snow_mass_on_previous_timestep long_name = snow amount from previous timestep @@ -755,7 +671,6 @@ type = real kind = kind_phys intent = inout - optional = F [graupelprv] standard_name = lwe_thickness_of_graupel_amount_on_previous_timestep long_name = graupel amount from previous timestep @@ -764,7 +679,6 @@ type = real kind = kind_phys intent = inout - optional = F [draincprv] standard_name = convective_precipitation_rate_on_previous_timestep long_name = convective precipitation rate from previous timestep @@ -773,7 +687,6 @@ type = real kind = kind_phys intent = inout - optional = F [drainncprv] standard_name = explicit_precipitation_rate_on_previous_timestep long_name = explicit rainfall rate previous timestep @@ -782,7 +695,6 @@ type = real kind = kind_phys intent = inout - optional = F [diceprv] standard_name = ice_precipitation_rate_on_previous_timestep long_name = ice precipitation rate from previous timestep @@ -791,7 +703,6 @@ type = real kind = kind_phys intent = inout - optional = F [dsnowprv] standard_name = snowfall_rate_on_previous_timestep long_name = snow precipitation rate from previous timestep @@ -800,7 +711,6 @@ type = real kind = kind_phys intent = inout - optional = F [dgraupelprv] standard_name = graupel_precipitation_rate_on_previous_timestep long_name = graupel precipitation rate from previous timestep @@ -809,7 +719,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -818,7 +727,6 @@ type = real kind = kind_phys intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -827,7 +735,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -835,7 +742,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -843,7 +749,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_mp] standard_name = index_of_microphysics_process_process_in_cumulative_change_index long_name = index of microphysics transport process in second dimension of array cumulative change index @@ -851,7 +756,6 @@ dimensions = () type = integer intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -859,7 +763,6 @@ dimensions = () type = logical intent = in - optional = F [qdiag3d] standard_name = flag_for_tracer_diagnostics_3D long_name = logical flag for 3D tracer diagnostics @@ -867,7 +770,6 @@ dimensions = () type = logical intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -875,7 +777,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -884,7 +785,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -892,5 +792,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_PBL_generic.meta b/physics/GFS_PBL_generic.meta index 59501e467..bdd30a598 100644 --- a/physics/GFS_PBL_generic.meta +++ b/physics/GFS_PBL_generic.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [nvdiff] standard_name = number_of_vertical_diffusion_tracers long_name = number of tracers to diffuse vertically @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [rtg_ozone_index] standard_name = vertically_diffused_tracer_index_of_ozone long_name = number of tracers @@ -46,7 +42,6 @@ dimensions = () type = integer intent = out - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -70,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -78,7 +70,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -86,7 +77,6 @@ dimensions = () type = integer intent = in - optional = F [ntlnc] standard_name = index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array long_name = tracer index for liquid number concentration @@ -94,7 +84,6 @@ dimensions = () type = integer intent = in - optional = F [ntinc] standard_name = index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array long_name = tracer index for ice number concentration @@ -102,7 +91,6 @@ dimensions = () type = integer intent = in - optional = F [ntrnc] standard_name = index_of_mass_number_concentration_of_rain_in_tracer_concentration_array long_name = tracer index for rain number concentration @@ -110,7 +98,6 @@ dimensions = () type = integer intent = in - optional = F [ntsnc] standard_name = index_of_mass_number_concentration_of_snow_in_tracer_concentration_array long_name = tracer index for snow number concentration @@ -118,7 +105,6 @@ dimensions = () type = integer intent = in - optional = F [ntgnc] standard_name = index_of_mass_number_concentration_of_graupel_in_tracer_concentration_array long_name = tracer index for graupel number concentration @@ -126,7 +112,6 @@ dimensions = () type = integer intent = in - optional = F [ntwa] standard_name = index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array long_name = tracer index for water friendly aerosol @@ -134,7 +119,6 @@ dimensions = () type = integer intent = in - optional = F [ntia] standard_name = index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array long_name = tracer index for ice friendly aerosol @@ -142,7 +126,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -150,7 +133,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -158,7 +140,6 @@ dimensions = () type = integer intent = in - optional = F [ntke] standard_name = index_of_turbulent_kinetic_energy_in_tracer_concentration_array long_name = tracer index for turbulent kinetic energy @@ -166,7 +147,6 @@ dimensions = () type = integer intent = in - optional = F [ntkev] standard_name = index_for_turbulent_kinetic_energy_vertical_diffusion_tracer long_name = index for turbulent kinetic energy in the vertically diffused tracer array @@ -174,7 +154,6 @@ dimensions = () type = integer intent = in - optional = F [nqrimef] standard_name = index_of_mass_weighted_rime_factor_in_tracer_concentration_array long_name = tracer index for mass weighted rime factor @@ -182,7 +161,6 @@ dimensions = () type = integer intent = in - optional = F [trans_aero] standard_name = flag_for_aerosol_convective_transport_and_PBL_diffusion long_name = flag for aerosol convective transport and PBL diffusion @@ -190,7 +168,6 @@ dimensions = () type = logical intent = in - optional = F [ntchs] standard_name = index_of_first_chemical_tracer_in_tracer_concentration_array long_name = tracer index for first chemical tracer @@ -198,7 +175,6 @@ dimensions = () type = integer intent = in - optional = F [ntchm] standard_name = number_of_chemical_tracers long_name = number of chemical tracers @@ -206,7 +182,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -214,7 +189,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -222,7 +196,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -230,7 +203,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_wsm6] standard_name = identifier_for_wsm6_microphysics_scheme long_name = choice of WSM6 microphysics scheme @@ -238,7 +210,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr] standard_name = identifier_for_zhao_carr_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme @@ -246,7 +217,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -254,7 +224,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_fer_hires] standard_name = identifier_for_fer_hires_microphysics_scheme long_name = choice of Ferrier-Aligo microphysics scheme @@ -262,7 +231,6 @@ dimensions = () type = integer intent = in - optional = F [ltaerosol] standard_name = flag_for_aerosol_physics long_name = flag for aerosol physics @@ -270,7 +238,6 @@ dimensions = () type = logical intent = in - optional = F [hybedmf] standard_name = flag_for_hybrid_edmf_pbl_scheme long_name = flag for hybrid edmf pbl scheme (moninedmf) @@ -278,7 +245,6 @@ dimensions = () type = logical intent = in - optional = F [do_shoc] standard_name = flag_for_shoc long_name = flag for SHOC @@ -286,7 +252,6 @@ dimensions = () type = logical intent = in - optional = F [satmedmf] standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL long_name = flag for scale-aware TKE moist EDMF PBL scheme @@ -294,7 +259,6 @@ dimensions = () type = logical intent = in - optional = F [qgrs] standard_name = tracer_concentration long_name = model layer mean tracer concentration @@ -303,7 +267,6 @@ type = real kind = kind_phys intent = in - optional = F [vdftra] standard_name = vertically_diffused_tracer_concentration long_name = tracer concentration diffused by PBL scheme @@ -312,7 +275,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_u] standard_name = x_wind_save long_name = x-wind before entering a physics scheme @@ -321,7 +283,6 @@ type = real kind = kind_phys intent = out - optional = F [save_v] standard_name = y_wind_save long_name = y-wind before entering a physics scheme @@ -330,7 +291,6 @@ type = real kind = kind_phys intent = out - optional = F [save_t] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -339,7 +299,6 @@ type = real kind = kind_phys intent = out - optional = F [save_q] standard_name = tracer_concentration_save long_name = tracer concentration before entering a physics scheme @@ -348,7 +307,6 @@ type = real kind = kind_phys intent = out - optional = F [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 @@ -356,7 +314,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -364,7 +321,6 @@ dimensions = () type = logical intent = in - optional = F [qdiag3d] standard_name = flag_for_tracer_diagnostics_3D long_name = flag for 3d tracer diagnostic fields @@ -372,7 +328,6 @@ dimensions = () type = logical intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -380,7 +335,6 @@ dimensions = () type = logical intent = in - optional = F [ugrs] standard_name = x_wind long_name = zonal wind @@ -389,7 +343,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs] standard_name = y_wind long_name = meridional wind @@ -398,7 +351,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -407,7 +359,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -416,7 +367,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -424,7 +374,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -443,7 +392,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -451,7 +399,6 @@ dimensions = () type = integer intent = in - optional = F [nvdiff] standard_name = number_of_vertical_diffusion_tracers long_name = number of tracers to diffuse vertically @@ -459,7 +406,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -467,7 +413,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -475,7 +420,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -483,7 +427,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -491,7 +434,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -499,7 +441,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -507,7 +448,6 @@ dimensions = () type = integer intent = in - optional = F [ntlnc] standard_name = index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array long_name = tracer index for liquid number concentration @@ -515,7 +455,6 @@ dimensions = () type = integer intent = in - optional = F [ntinc] standard_name = index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array long_name = tracer index for ice number concentration @@ -523,7 +462,6 @@ dimensions = () type = integer intent = in - optional = F [ntrnc] standard_name = index_of_mass_number_concentration_of_rain_in_tracer_concentration_array long_name = tracer index for rain number concentration @@ -531,7 +469,6 @@ dimensions = () type = integer intent = in - optional = F [ntsnc] standard_name = index_of_mass_number_concentration_of_snow_in_tracer_concentration_array long_name = tracer index for snow number concentration @@ -539,7 +476,6 @@ dimensions = () type = integer intent = in - optional = F [ntgnc] standard_name = index_of_mass_number_concentration_of_graupel_in_tracer_concentration_array long_name = tracer index for graupel number concentration @@ -547,7 +483,6 @@ dimensions = () type = integer intent = in - optional = F [ntwa] standard_name = index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array long_name = tracer index for water friendly aerosol @@ -555,7 +490,6 @@ dimensions = () type = integer intent = in - optional = F [ntia] standard_name = index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array long_name = tracer index for ice friendly aerosol @@ -563,7 +497,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -571,7 +504,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -579,7 +511,6 @@ dimensions = () type = integer intent = in - optional = F [ntke] standard_name = index_of_turbulent_kinetic_energy_in_tracer_concentration_array long_name = tracer index for turbulent kinetic energy @@ -587,7 +518,6 @@ dimensions = () type = integer intent = in - optional = F [ntkev] standard_name = index_for_turbulent_kinetic_energy_vertical_diffusion_tracer long_name = index for turbulent kinetic energy in the vertically diffused tracer array @@ -595,7 +525,6 @@ dimensions = () type = integer intent = in - optional = F [nqrimef] standard_name = index_of_mass_weighted_rime_factor_in_tracer_concentration_array long_name = tracer index for mass weighted rime factor @@ -603,7 +532,6 @@ dimensions = () type = integer intent = in - optional = F [trans_aero] standard_name = flag_for_aerosol_convective_transport_and_PBL_diffusion long_name = flag for aerosol convective transport and PBL diffusion @@ -611,7 +539,6 @@ dimensions = () type = logical intent = in - optional = F [ntchs] standard_name = index_of_first_chemical_tracer_in_tracer_concentration_array long_name = tracer index for first chemical tracer @@ -619,7 +546,6 @@ dimensions = () type = integer intent = in - optional = F [ntchm] standard_name = number_of_chemical_tracers long_name = number of chemical tracers @@ -627,7 +553,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -635,7 +560,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -643,7 +567,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -651,7 +574,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_wsm6] standard_name = identifier_for_wsm6_microphysics_scheme long_name = choice of WSM6 microphysics scheme @@ -659,7 +581,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr] standard_name = identifier_for_zhao_carr_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme @@ -667,7 +588,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -675,7 +595,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_fer_hires] standard_name = identifier_for_fer_hires_microphysics_scheme long_name = choice of Ferrier-Aligo microphysics scheme @@ -683,7 +602,6 @@ dimensions = () type = integer intent = in - optional = F [ltaerosol] standard_name = flag_for_aerosol_physics long_name = flag for aerosol physics @@ -691,7 +609,6 @@ dimensions = () type = logical intent = in - optional = F [cplflx] standard_name = flag_for_surface_flux_coupling long_name = flag controlling cplflx collection (default off) @@ -699,7 +616,6 @@ dimensions = () type = logical intent = in - optional = F [cplchm] standard_name = flag_for_chemistry_coupling long_name = flag controlling cplchm collection (default off) @@ -707,7 +623,6 @@ dimensions = () type = logical intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -715,7 +630,6 @@ dimensions = () type = logical intent = in - optional = F [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 @@ -723,7 +637,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -731,7 +644,6 @@ dimensions = () type = logical intent = in - optional = F [lsidea] standard_name = flag_for_integrated_dynamics_through_earths_atmosphere long_name = flag for idealized physics @@ -739,7 +651,6 @@ dimensions = () type = logical intent = in - optional = F [hybedmf] standard_name = flag_for_hybrid_edmf_pbl_scheme long_name = flag for hybrid edmf pbl scheme (moninedmf) @@ -747,7 +658,6 @@ dimensions = () type = logical intent = in - optional = F [do_shoc] standard_name = flag_for_shoc long_name = flag for SHOC @@ -755,7 +665,6 @@ dimensions = () type = logical intent = in - optional = F [satmedmf] standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL long_name = flag for scale-aware TKE moist EDMF PBL scheme @@ -763,7 +672,6 @@ dimensions = () type = logical intent = in - optional = F [shinhong] standard_name = flag_for_scale_aware_Shinhong_PBL long_name = flag for scale-aware Shinhong PBL scheme @@ -771,7 +679,6 @@ dimensions = () type = logical intent = in - optional = F [do_ysu] standard_name = flag_for_ysu_pbl_scheme long_name = flag for YSU PBL scheme @@ -779,7 +686,6 @@ dimensions = () type = logical intent = in - optional = F [dvdftra] standard_name = tendency_of_vertically_diffused_tracer_concentration long_name = updated tendency of the tracers due to vertical diffusion in PBL scheme @@ -788,7 +694,6 @@ type = real kind = kind_phys intent = in - optional = F [dusfc1] standard_name = instantaneous_surface_x_momentum_flux long_name = surface momentum flux in the x-direction valid for current call @@ -797,7 +702,6 @@ type = real kind = kind_phys intent = in - optional = F [dvsfc1] standard_name = instantaneous_surface_y_momentum_flux long_name = surface momentum flux in the y-direction valid for current call @@ -806,7 +710,6 @@ type = real kind = kind_phys intent = in - optional = F [dtsfc1] standard_name = instantaneous_surface_upward_sensible_heat_flux long_name = surface upward sensible heat flux valid for current call @@ -815,7 +718,6 @@ type = real kind = kind_phys intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -824,7 +726,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -832,7 +733,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -840,7 +740,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -848,7 +747,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -856,7 +754,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_pbl] standard_name = index_of_subgrid_scale_vertical_mixing_process_in_cumulative_change_index long_name = index of subgrid scale vertical mixing process in second dimension of array cumulative change index @@ -864,7 +761,6 @@ dimensions = () type = integer intent = in - optional = F [dqsfc1] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux valid for current call @@ -873,7 +769,6 @@ type = real kind = kind_phys intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -882,7 +777,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind @@ -891,7 +785,6 @@ type = real kind = kind_phys intent = in - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = updated tendency of the y wind @@ -900,7 +793,6 @@ type = real kind = kind_phys intent = in - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -909,7 +801,6 @@ type = real kind = kind_phys intent = in - optional = F [htrsw] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky sw heating rate @@ -918,7 +809,6 @@ type = real kind = kind_phys intent = in - optional = F [htrlw] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky lw heating rate @@ -927,7 +817,6 @@ type = real kind = kind_phys intent = in - optional = F [xmu] standard_name = zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes long_name = zenith angle temporal adjustment factor for shortwave @@ -936,7 +825,6 @@ type = real kind = kind_phys intent = in - optional = F [dqdt] standard_name = process_split_cumulative_tendency_of_tracers long_name = updated tendency of the tracers due to model physics @@ -945,7 +833,6 @@ type = real kind = kind_phys intent = inout - optional = F [dusfc_cpl] standard_name = cumulative_surface_x_momentum_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc u momentum flux multiplied by timestep @@ -954,7 +841,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvsfc_cpl] standard_name = cumulative_surface_y_momentum_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc v momentum flux multiplied by timestep @@ -963,7 +849,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtsfc_cpl] standard_name = cumulative_surface_upward_sensible_heat_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc sensible heat flux multiplied by timestep @@ -972,7 +857,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqsfc_cpl] standard_name = cumulative_surface_upward_latent_heat_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc latent heat flux multiplied by timestep @@ -981,7 +865,6 @@ type = real kind = kind_phys intent = inout - optional = F [dusfci_cpl] standard_name = surface_x_momentum_flux_for_coupling long_name = instantaneous sfc u momentum flux @@ -990,7 +873,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvsfci_cpl] standard_name = surface_y_momentum_flux_for_coupling long_name = instantaneous sfc v momentum flux @@ -999,7 +881,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtsfci_cpl] standard_name = surface_upward_sensible_heat_flux_for_coupling long_name = instantaneous sfc sensible heat flux @@ -1008,7 +889,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqsfci_cpl] standard_name = surface_upward_latent_heat_flux_for_coupling long_name = instantaneous sfc latent heat flux @@ -1017,7 +897,6 @@ type = real kind = kind_phys intent = inout - optional = F [dusfc_diag] standard_name = cumulative_surface_x_momentum_flux_for_diag_multiplied_by_timestep long_name = cumulative sfc x momentum flux multiplied by timestep @@ -1026,7 +905,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvsfc_diag] standard_name = cumulative_surface_y_momentum_flux_for_diag_multiplied_by_timestep long_name = cumulative sfc y momentum flux multiplied by timestep @@ -1035,7 +913,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtsfc_diag] standard_name = cumulative_surface_upward_sensible_heat_flux_for_diag_multiplied_by_timestep long_name = cumulative sfc sensible heat flux multiplied by timestep @@ -1044,7 +921,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqsfc_diag] standard_name = cumulative_surface_upward_latent_heat_flux_for_diag_multiplied_by_timestep long_name = cumulative sfc latent heat flux multiplied by timestep @@ -1053,7 +929,6 @@ type = real kind = kind_phys intent = inout - optional = F [dusfci_diag] standard_name = instantaneous_surface_x_momentum_flux_for_diag long_name = instantaneous sfc x momentum flux multiplied by timestep @@ -1062,7 +937,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvsfci_diag] standard_name = instantaneous_surface_y_momentum_flux_for_diag long_name = instantaneous sfc y momentum flux multiplied by timestep @@ -1071,7 +945,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtsfci_diag] standard_name = instantaneous_surface_upward_sensible_heat_flux_for_diag long_name = instantaneous sfc sensible heat flux multiplied by timestep @@ -1080,7 +953,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqsfci_diag] standard_name = instantaneous_surface_upward_latent_heat_flux_for_diag long_name = instantaneous sfc latent heat flux multiplied by timestep @@ -1089,7 +961,6 @@ type = real kind = kind_phys intent = inout - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -1098,7 +969,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -1107,7 +977,6 @@ type = real kind = kind_phys intent = in - optional = F [fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -1116,7 +985,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -1125,7 +993,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_lowest_model_layer_for_diag long_name = layer 1 temperature for diag @@ -1134,7 +1001,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = water_vapor_specific_humidity_at_lowest_model_layer_for_diag long_name = layer 1 specific humidity for diag @@ -1143,7 +1009,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -1152,7 +1017,6 @@ type = real kind = kind_phys intent = in - optional = F [hflx] standard_name = surface_upward_temperature_flux long_name = kinematic surface upward sensible heat flux @@ -1161,7 +1025,6 @@ type = real kind = kind_phys intent = in - optional = F [ushfsfci] standard_name = surface_upward_sensible_heat_flux_for_chemistry_coupling long_name = instantaneous upward sensible heat flux for chemistry coupling @@ -1170,7 +1033,6 @@ type = real kind = kind_phys intent = out - optional = F [oceanfrac] standard_name = sea_area_fraction long_name = fraction of horizontal grid area occupied by ocean @@ -1179,7 +1041,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -1187,7 +1048,6 @@ dimensions = () type = integer intent = in - optional = F [dusfc_cice] standard_name = surface_x_momentum_flux_from_coupled_process long_name = sfc x momentum flux for coupling @@ -1196,7 +1056,6 @@ type = real kind = kind_phys intent = in - optional = F [dvsfc_cice] standard_name = surface_y_momentum_flux_from_coupled_process long_name = sfc y momentum flux for coupling @@ -1205,7 +1064,6 @@ type = real kind = kind_phys intent = in - optional = F [dtsfc_cice] standard_name = surface_upward_sensible_heat_flux_from_coupled_process long_name = sfc sensible heat flux for coupling @@ -1214,7 +1072,6 @@ type = real kind = kind_phys intent = in - optional = F [dqsfc_cice] standard_name = surface_upward_latent_heat_flux_from_coupled_process long_name = sfc latent heat flux for coupling @@ -1223,7 +1080,6 @@ type = real kind = kind_phys intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -1231,7 +1087,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -1239,7 +1094,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -1247,7 +1101,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -1256,7 +1109,6 @@ type = real kind = kind_phys intent = in - optional = F [stress_wat] standard_name = surface_wind_stress_over_water long_name = surface wind stress over water @@ -1265,7 +1117,6 @@ type = real kind = kind_phys intent = in - optional = F [hflx_wat] standard_name = kinematic_surface_upward_sensible_heat_flux_over_water long_name = kinematic surface upward sensible heat flux over water @@ -1274,7 +1125,6 @@ type = real kind = kind_phys intent = in - optional = F [evap_wat] standard_name = kinematic_surface_upward_latent_heat_flux_over_water long_name = kinematic surface upward latent heat flux over water @@ -1283,7 +1133,6 @@ type = real kind = kind_phys intent = in - optional = F [ugrs1] standard_name = x_wind_at_surface_adjacent_layer long_name = zonal wind at lowest model layer @@ -1292,7 +1141,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs1] standard_name = y_wind_at_surface_adjacent_layer long_name = meridional wind at lowest model layer @@ -1301,7 +1149,6 @@ type = real kind = kind_phys intent = in - optional = F [hffac] standard_name = surface_upward_sensible_heat_flux_reduction_factor long_name = surface upward sensible heat flux reduction factor from canopy heat storage @@ -1310,7 +1157,6 @@ type = real kind = kind_phys intent = in - optional = F [ugrs] standard_name = x_wind long_name = zonal wind @@ -1319,7 +1165,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs] standard_name = y_wind long_name = meridional wind @@ -1328,7 +1173,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -1337,7 +1181,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs] standard_name = tracer_concentration long_name = model layer mean tracer concentration @@ -1346,7 +1189,6 @@ type = real kind = kind_phys intent = in - optional = F [save_u] standard_name = x_wind_save long_name = x-wind before entering a physics scheme @@ -1355,7 +1197,6 @@ type = real kind = kind_phys intent = in - optional = F [save_v] standard_name = y_wind_save long_name = y-wind before entering a physics scheme @@ -1364,7 +1205,6 @@ type = real kind = kind_phys intent = in - optional = F [save_t] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -1373,7 +1213,6 @@ type = real kind = kind_phys intent = in - optional = F [save_q] standard_name = tracer_concentration_save long_name = tracer concentration before entering a physics scheme @@ -1382,7 +1221,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1391,7 +1229,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1399,4 +1236,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_SCNV_generic.meta b/physics/GFS_SCNV_generic.meta index adf82ed92..6c671a1f8 100644 --- a/physics/GFS_SCNV_generic.meta +++ b/physics/GFS_SCNV_generic.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [qdiag3d] standard_name = flag_for_tracer_diagnostics_3D long_name = flag for 3d tracer diagnostic fields @@ -38,7 +35,6 @@ dimensions = () type = logical intent = in - optional = F [gu0] standard_name = x_wind_of_new_state long_name = updated x-direction wind @@ -47,7 +43,6 @@ type = real kind = kind_phys intent = in - optional = F [gv0] standard_name = y_wind_of_new_state long_name = updated y-direction wind @@ -56,7 +51,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -65,7 +59,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -74,7 +67,6 @@ type = real kind = kind_phys intent = in - optional = F [save_u] standard_name = x_wind_save long_name = x-wind before entering a physics scheme @@ -83,7 +75,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_v] standard_name = y_wind_save long_name = y-wind before entering a physics scheme @@ -92,7 +83,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_t] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -101,7 +91,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_q] standard_name = tracer_concentration_save long_name = tracer concentration before entering a physics scheme @@ -110,7 +99,6 @@ type = real kind = kind_phys intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -118,7 +106,6 @@ dimensions = () type = integer intent = in - optional = F [nsamftrac] standard_name = number_of_tracers_for_samf long_name = number of tracers for scale-aware mass flux schemes @@ -126,7 +113,6 @@ dimensions = () type = integer intent = in - optional = F [flag_for_scnv_generic_tend] standard_name = flag_for_generic_tendency_due_to_shallow_convection long_name = true if GFS_SCNV_generic should calculate tendencies @@ -134,7 +120,6 @@ dimensions = () type = logical intent = in - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -142,7 +127,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_process_scnv] standard_name = index_of_shallow_convection_process_process_in_cumulative_change_index long_name = index of shallow convection process in second dimension of array cumulative change index @@ -150,7 +134,6 @@ dimensions = () type = integer intent = in - optional = F [cscnv] standard_name = flag_for_Chikira_Sugiyama_deep_convection long_name = flag for Chikira-Sugiyama convection @@ -158,7 +141,6 @@ dimensions = () type = logical intent = in - optional = F [satmedmf] standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL long_name = flag for scale-aware TKE moist EDMF PBL scheme @@ -166,7 +148,6 @@ dimensions = () type = logical intent = in - optional = F [trans_trac] standard_name = flag_for_convective_transport_of_tracers long_name = flag for convective transport of tracers @@ -174,7 +155,6 @@ dimensions = () type = logical intent = in - optional = F [ras] standard_name = flag_for_relaxed_arakawa_schubert_deep_convection long_name = flag for ras convection scheme @@ -182,7 +162,6 @@ dimensions = () type = logical intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -190,7 +169,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -198,7 +176,6 @@ dimensions = () type = integer intent = in - optional = F [ntclamt] standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer @@ -206,7 +183,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -214,7 +190,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -222,7 +197,6 @@ dimensions = () type = integer intent = in - optional = F [ntrnc] standard_name = index_of_mass_number_concentration_of_rain_in_tracer_concentration_array long_name = tracer index for rain number concentration @@ -230,7 +204,6 @@ dimensions = () type = integer intent = in - optional = F [ntsnc] standard_name = index_of_mass_number_concentration_of_snow_in_tracer_concentration_array long_name = tracer index for snow number concentration @@ -238,7 +211,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -246,7 +218,6 @@ dimensions = () type = integer intent = in - optional = F [ntgnc] standard_name = index_of_mass_number_concentration_of_graupel_in_tracer_concentration_array long_name = tracer index for graupel number concentration @@ -254,7 +225,6 @@ dimensions = () type = integer intent = in - optional = F [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -263,7 +233,6 @@ type = real kind = kind_phys intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -271,7 +240,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -280,7 +248,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -288,7 +255,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -307,7 +273,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -315,7 +280,6 @@ dimensions = () type = integer intent = in - optional = F [nn] standard_name = number_of_tracers_for_convective_transport long_name = number of tracers for convective transport @@ -323,7 +287,6 @@ dimensions = () type = integer intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -331,7 +294,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -339,7 +301,6 @@ dimensions = () type = logical intent = in - optional = F [qdiag3d] standard_name = flag_for_tracer_diagnostics_3D long_name = flag for 3d tracer diagnostic fields @@ -347,7 +308,6 @@ dimensions = () type = logical intent = in - optional = F [frain] standard_name = dynamics_to_physics_timestep_ratio long_name = ratio of dynamics timestep to physics timestep @@ -356,7 +316,6 @@ type = real kind = kind_phys intent = in - optional = F [gu0] standard_name = x_wind_of_new_state long_name = updated x-direction wind @@ -365,7 +324,6 @@ type = real kind = kind_phys intent = in - optional = F [gv0] standard_name = y_wind_of_new_state long_name = updated y-direction wind @@ -374,7 +332,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -383,7 +340,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -392,7 +348,6 @@ type = real kind = kind_phys intent = in - optional = F [save_u] standard_name = x_wind_save long_name = x-wind before entering a physics scheme @@ -401,7 +356,6 @@ type = real kind = kind_phys intent = in - optional = F [save_v] standard_name = y_wind_save long_name = y-wind before entering a physics scheme @@ -410,7 +364,6 @@ type = real kind = kind_phys intent = in - optional = F [save_t] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -419,7 +372,6 @@ type = real kind = kind_phys intent = in - optional = F [save_q] standard_name = tracer_concentration_save long_name = tracer concentration before entering a physics scheme @@ -428,7 +380,6 @@ type = real kind = kind_phys intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -437,7 +388,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -445,7 +395,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -453,7 +402,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -461,7 +409,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -469,7 +416,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_scnv] standard_name = index_of_shallow_convection_process_process_in_cumulative_change_index long_name = index of shallow convection process in second dimension of array cumulative change index @@ -477,7 +423,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -485,7 +430,6 @@ dimensions = () type = integer intent = in - optional = F [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -494,7 +438,6 @@ type = real kind = kind_phys intent = inout - optional = F [shcnvcw] standard_name = flag_for_saving_shallow_convective_cloud_area_fraction long_name = flag for shallow convective cloud @@ -502,7 +445,6 @@ dimensions = () type = logical intent = in - optional = F [rain1] standard_name = lwe_thickness_of_shallow_convective_precipitation_amount long_name = shallow convective rainfall amount on physics timestep @@ -511,7 +453,6 @@ type = real kind = kind_phys intent = in - optional = F [npdf3d] standard_name = number_of_pdf_based_variables_in_xyz_dimensioned_restart_array long_name = number of 3d arrays associated with pdf based clouds/mp @@ -519,7 +460,6 @@ dimensions = () type = integer intent = in - optional = F [num_p3d] standard_name = number_of_microphysics_variables_in_xyz_dimensioned_restart_array long_name = number of 3D arrays needed for microphysics @@ -527,7 +467,6 @@ dimensions = () type = integer intent = in - optional = F [ncnvcld3d] standard_name = number_of_convective_cloud_variables_in_xyz_dimensioned_restart_array long_name = number of convective 3d clouds fields @@ -535,7 +474,6 @@ dimensions = () type = integer intent = in - optional = F [cnvc] standard_name = convective_cloud_cover long_name = convective cloud cover @@ -544,7 +482,6 @@ type = real kind = kind_phys intent = in - optional = F [cnvw] standard_name = convective_cloud_water_mixing_ratio long_name = moist convective cloud water mixing ratio @@ -553,7 +490,6 @@ type = real kind = kind_phys intent = in - optional = F [nsamftrac] standard_name = number_of_tracers_for_samf long_name = number of tracers for scale-aware mass flux schemes @@ -561,7 +497,6 @@ dimensions = () type = integer intent = in - optional = F [rainc] standard_name = lwe_thickness_of_convective_precipitation_amount_on_dynamics_timestep long_name = convective rain at this time step @@ -570,7 +505,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvprcp] standard_name = cumulative_lwe_thickness_of_convective_precipitation_amount long_name = cumulative convective precipitation @@ -579,7 +513,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvprcpb] standard_name = cumulative_lwe_thickness_of_convective_precipitation_amount_in_bucket long_name = cumulative convective precipitation in bucket @@ -588,7 +521,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvw_phy_f3d] standard_name = convective_cloud_condensate_mixing_ratio long_name = convective cloud water mixing ratio in the phy_f3d array @@ -597,7 +529,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvc_phy_f3d] standard_name = convective_cloud_area_fraction long_name = convective cloud cover in the phy_f3d array @@ -606,7 +537,6 @@ type = real kind = kind_phys intent = inout - optional = F [flag_for_scnv_generic_tend] standard_name = flag_for_generic_tendency_due_to_shallow_convection long_name = true if GFS_SCNV_generic should calculate tendencies @@ -614,7 +544,6 @@ dimensions = () type = logical intent = in - optional = F [imfshalcnv] standard_name = control_for_shallow_convection_scheme long_name = flag for mass-flux shallow convection scheme @@ -622,7 +551,6 @@ dimensions = () type = integer intent = in - optional = F [imfshalcnv_sas] standard_name = identifier_for_simplified_arakawa_schubert_shallow_convection long_name = flag for SAS shallow convection scheme @@ -630,7 +558,6 @@ dimensions = () type = integer intent = in - optional = F [imfshalcnv_samf] standard_name = identifier_for_scale_aware_mass_flux_shallow_convection long_name = flag for SAMF shallow convection scheme @@ -638,7 +565,6 @@ dimensions = () type = integer intent = in - optional = F [cscnv] standard_name = flag_for_Chikira_Sugiyama_deep_convection long_name = flag for Chikira-Sugiyama convection @@ -646,7 +572,6 @@ dimensions = () type = logical intent = in - optional = F [satmedmf] standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL long_name = flag for scale-aware TKE moist EDMF PBL scheme @@ -654,7 +579,6 @@ dimensions = () type = logical intent = in - optional = F [trans_trac] standard_name = flag_for_convective_transport_of_tracers long_name = flag for convective transport of tracers @@ -662,7 +586,6 @@ dimensions = () type = logical intent = in - optional = F [ras] standard_name = flag_for_relaxed_arakawa_schubert_deep_convection long_name = flag for ras convection scheme @@ -670,7 +593,6 @@ dimensions = () type = logical intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -678,7 +600,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -686,7 +607,6 @@ dimensions = () type = integer intent = in - optional = F [ntclamt] standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer @@ -694,7 +614,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -702,7 +621,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -710,7 +628,6 @@ dimensions = () type = integer intent = in - optional = F [ntrnc] standard_name = index_of_mass_number_concentration_of_rain_in_tracer_concentration_array long_name = tracer index for rain number concentration @@ -718,7 +635,6 @@ dimensions = () type = integer intent = in - optional = F [ntsnc] standard_name = index_of_mass_number_concentration_of_snow_in_tracer_concentration_array long_name = tracer index for snow number concentration @@ -726,7 +642,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -734,7 +649,6 @@ dimensions = () type = integer intent = in - optional = F [ntgnc] standard_name = index_of_mass_number_concentration_of_graupel_in_tracer_concentration_array long_name = tracer index for graupel number concentration @@ -742,7 +656,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -750,7 +663,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -759,7 +671,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -767,4 +678,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_cloud_diagnostics.meta b/physics/GFS_cloud_diagnostics.meta index 3b6d75212..986548b5a 100644 --- a/physics/GFS_cloud_diagnostics.meta +++ b/physics/GFS_cloud_diagnostics.meta @@ -13,7 +13,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -21,7 +20,6 @@ dimensions = () type = integer intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -29,7 +27,6 @@ dimensions = () type = logical intent = in - optional = F [lslwr] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -37,7 +34,6 @@ dimensions = () type = logical intent = in - optional = F [lat] standard_name = latitude long_name = latitude @@ -46,7 +42,6 @@ type = real intent = in kind = kind_phys - optional = F [de_lgth] standard_name = cloud_decorrelation_length long_name = cloud decorrelation length @@ -55,7 +50,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure at vertical layer for radiation calculation @@ -64,7 +58,6 @@ type = real kind = kind_phys intent = in - optional = F [cld_frac] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -73,7 +66,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure at vertical interface for radiation calculation @@ -82,7 +74,6 @@ type = real kind = kind_phys intent = in - optional = F [deltaZ] standard_name = layer_thickness long_name = layer_thickness @@ -91,7 +82,6 @@ type = real kind = kind_phys intent = in - optional = F [cloud_overlap_param] standard_name = cloud_overlap_param long_name = cloud overlap parameter @@ -100,7 +90,6 @@ type = real kind = kind_phys intent = in - optional = F [precip_overlap_param] standard_name = precip_overlap_param long_name = precipitation overlap parameter @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -118,7 +106,6 @@ type = real kind = kind_phys intent = in - optional = F [mtopa] standard_name = model_layer_number_at_cloud_top long_name = vertical indices for low, middle and high cloud tops @@ -126,7 +113,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = out - optional = F [mbota] standard_name = model_layer_number_at_cloud_base long_name = vertical indices for low, middle and high cloud bases @@ -134,7 +120,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = out - optional = F [cldsa] standard_name = cloud_area_fraction_for_radiation long_name = fraction of clouds for low, middle, high, total and BL @@ -143,7 +128,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -152,7 +136,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -160,4 +143,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_debug.meta b/physics/GFS_debug.meta index fb77772eb..94605682f 100644 --- a/physics/GFS_debug.meta +++ b/physics/GFS_debug.meta @@ -14,7 +14,6 @@ dimensions = () type = GFS_control_type intent = in - optional = F [Data] standard_name = GFS_data_type_instance_all_blocks long_name = instance of derived type GFS_data_type @@ -22,7 +21,6 @@ dimensions = (ccpp_block_count) type = GFS_data_type intent = in - optional = F [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads long_name = instance of derived type GFS_interstitial_type @@ -30,7 +28,6 @@ dimensions = (number_of_openmp_threads) type = GFS_interstitial_type intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -39,7 +36,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -47,7 +43,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -60,7 +55,6 @@ dimensions = () type = GFS_control_type intent = in - optional = F [Data] standard_name = GFS_data_type_instance_all_blocks long_name = instance of derived type GFS_data_type @@ -68,7 +62,6 @@ dimensions = (ccpp_block_count) type = GFS_data_type intent = in - optional = F [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads long_name = instance of derived type GFS_interstitial_type @@ -76,7 +69,6 @@ dimensions = (number_of_openmp_threads) type = GFS_interstitial_type intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -85,7 +77,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -93,7 +84,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -106,7 +96,6 @@ dimensions = () type = GFS_control_type intent = in - optional = F [Statein] standard_name = GFS_statein_type_instance long_name = instance of derived type GFS_statein_type in FV3 @@ -114,7 +103,6 @@ dimensions = () type = GFS_statein_type intent = in - optional = F [Stateout] standard_name = GFS_stateout_type_instance long_name = instance of derived type GFS_stateout_type @@ -122,7 +110,6 @@ dimensions = () type = GFS_stateout_type intent = in - optional = F [Sfcprop] standard_name = GFS_sfcprop_type_instance long_name = instance of type GFS_sfcprop_type in FV3 @@ -130,7 +117,6 @@ dimensions = () type = GFS_sfcprop_type intent = in - optional = F [Coupling] standard_name = GFS_coupling_type_instance long_name = instance of type GFS_coupling_type in FV3 @@ -138,7 +124,6 @@ dimensions = () type = GFS_coupling_type intent = in - optional = F [Grid] standard_name = GFS_grid_type_instance long_name = instance of type GFS_grid_type in FV3 @@ -146,7 +131,6 @@ dimensions = () type = GFS_grid_type intent = in - optional = F [Tbd] standard_name = GFS_tbd_type_instance long_name = instance of type GFS_tbd_type in FV3 @@ -154,7 +138,6 @@ dimensions = () type = GFS_tbd_type intent = in - optional = F [Cldprop] standard_name = GFS_cldprop_type_instance long_name = instance of type GFS_cldprop_type in FV3 @@ -162,7 +145,6 @@ dimensions = () type = GFS_cldprop_type intent = in - optional = F [Radtend] standard_name = GFS_radtend_type_instance long_name = instance of type GFS_radtend_type in FV3 @@ -170,7 +152,6 @@ dimensions = () type = GFS_radtend_type intent = in - optional = F [Diag] standard_name = GFS_diag_type_instance long_name = instance of type GFS_diag_type in FV3 @@ -178,7 +159,6 @@ dimensions = () type = GFS_diag_type intent = in - optional = F [Interstitial] standard_name = GFS_interstitial_type_instance long_name = instance of type GFS_interstitial_type in FV3 @@ -186,7 +166,6 @@ dimensions = () type = GFS_interstitial_type intent = in - optional = F [nthreads] standard_name = number_of_openmp_threads long_name = number of OpenMP threads or fast physics schemes @@ -194,7 +173,6 @@ dimensions = () type = integer intent = in - optional = F [blkno] standard_name = ccpp_block_number long_name = number of block for explicit data blocking in CCPP @@ -202,7 +180,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -211,7 +188,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -219,7 +195,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -238,7 +213,6 @@ dimensions = () type = GFS_control_type intent = in - optional = F [Data] standard_name = GFS_data_type_instance_all_blocks long_name = instance of derived type GFS_data_type @@ -246,7 +220,6 @@ dimensions = (ccpp_block_count) type = GFS_data_type intent = in - optional = F [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads long_name = instance of derived type GFS_interstitial_type @@ -254,7 +227,6 @@ dimensions = (number_of_openmp_threads) type = GFS_interstitial_type intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -263,7 +235,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -271,7 +242,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -284,7 +254,6 @@ dimensions = () type = GFS_control_type intent = in - optional = F [Data] standard_name = GFS_data_type_instance_all_blocks long_name = instance of derived type GFS_data_type @@ -292,7 +261,6 @@ dimensions = (ccpp_block_count) type = GFS_data_type intent = in - optional = F [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads long_name = instance of derived type GFS_interstitial_type @@ -300,7 +268,6 @@ dimensions = (number_of_openmp_threads) type = GFS_interstitial_type intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -309,7 +276,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -317,7 +283,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -330,7 +295,6 @@ dimensions = () type = GFS_control_type intent = in - optional = F [Statein] standard_name = GFS_statein_type_instance long_name = instance of derived type GFS_statein_type @@ -338,7 +302,6 @@ dimensions = () type = GFS_statein_type intent = in - optional = F [Stateout] standard_name = GFS_stateout_type_instance long_name = instance of derived type GFS_stateout_type @@ -346,7 +309,6 @@ dimensions = () type = GFS_stateout_type intent = in - optional = F [Sfcprop] standard_name = GFS_sfcprop_type_instance long_name = instance of derived type GFS_sfcprop_type @@ -354,7 +316,6 @@ dimensions = () type = GFS_sfcprop_type intent = in - optional = F [Coupling] standard_name = GFS_coupling_type_instance long_name = instance of derived type GFS_coupling_type @@ -362,7 +323,6 @@ dimensions = () type = GFS_coupling_type intent = in - optional = F [Grid] standard_name = GFS_grid_type_instance long_name = instance of derived type GFS_grid_type @@ -370,7 +330,6 @@ dimensions = () type = GFS_grid_type intent = in - optional = F [Tbd] standard_name = GFS_tbd_type_instance long_name = instance of derived type GFS_tbd_type @@ -378,7 +337,6 @@ dimensions = () type = GFS_tbd_type intent = in - optional = F [Cldprop] standard_name = GFS_cldprop_type_instance long_name = instance of derived type GFS_cldprop_type @@ -386,7 +344,6 @@ dimensions = () type = GFS_cldprop_type intent = in - optional = F [Radtend] standard_name = GFS_radtend_type_instance long_name = instance of derived type GFS_radtend_type @@ -394,7 +351,6 @@ dimensions = () type = GFS_radtend_type intent = in - optional = F [Diag] standard_name = GFS_diag_type_instance long_name = instance of derived type GFS_diag_type @@ -402,7 +358,6 @@ dimensions = () type = GFS_diag_type intent = in - optional = F [Interstitial] standard_name = GFS_interstitial_type_instance long_name = instance of derived type GFS_interstitial_type @@ -410,7 +365,6 @@ dimensions = () type = GFS_interstitial_type intent = in - optional = F [nthreads] standard_name = number_of_openmp_threads long_name = number of OpenMP threads or fast physics schemes @@ -418,7 +372,6 @@ dimensions = () type = integer intent = in - optional = F [blkno] standard_name = ccpp_block_number long_name = number of block for explicit data blocking in CCPP @@ -426,7 +379,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -435,7 +387,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -443,7 +394,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -462,7 +412,6 @@ dimensions = () type = GFS_control_type intent = in - optional = F [blkno] standard_name = ccpp_block_number long_name = number of block for explicit data blocking in CCPP @@ -470,7 +419,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -479,7 +427,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -487,7 +434,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -506,7 +452,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = master MPI-rank @@ -514,7 +459,6 @@ dimensions = () type = integer intent = in - optional = F [blkno] standard_name = ccpp_block_number long_name = number of block for explicit data blocking in CCPP @@ -522,7 +466,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -530,7 +473,6 @@ dimensions = () type = integer intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current number of time steps @@ -538,7 +480,6 @@ dimensions = () type = integer intent = in - optional = F [iter] standard_name = ccpp_loop_counter long_name = loop counter for subcycling loops in CCPP @@ -546,7 +487,6 @@ dimensions = () type = integer intent = in - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -554,7 +494,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_guess] standard_name = flag_for_guess_run long_name = flag for guess run @@ -562,7 +501,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_init] standard_name = flag_for_first_timestep long_name = flag signaling first time step for time integration loop @@ -570,7 +508,6 @@ dimensions = () type = logical intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -578,7 +515,6 @@ dimensions = () type = logical intent = in - optional = F [frac_grid] standard_name = flag_for_fractional_landmask long_name = flag for fractional grid @@ -586,7 +522,6 @@ dimensions = () type = logical intent = in - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -594,7 +529,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -602,7 +536,6 @@ dimensions = () type = integer intent = in - optional = F [stype] standard_name = soil_type_classification long_name = soil type for lsm @@ -610,7 +543,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [vtype] standard_name = vegetation_type_classification long_name = vegetation type for lsm @@ -618,7 +550,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [slope] standard_name = surface_slope_classification long_name = sfc slope type for lsm @@ -626,7 +557,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating some land surface area fraction @@ -634,7 +564,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating some sea ice surface area fraction @@ -642,7 +571,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating some ocean or lake surface area fraction @@ -650,7 +578,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [lake] standard_name = flag_nonzero_lake_surface_fraction long_name = flag indicating some lake surface area fraction @@ -658,7 +585,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [ocean] standard_name = flag_nonzero_ocean_surface_fraction long_name = flag indicating some ocean surface area fraction @@ -666,7 +592,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [oceanfrac] standard_name = sea_area_fraction long_name = fraction of horizontal grid area occupied by ocean @@ -675,7 +600,6 @@ type = real kind = kind_phys intent = in - optional = F [landfrac] standard_name = land_area_fraction long_name = fraction of horizontal grid area occupied by land @@ -684,7 +608,6 @@ type = real kind = kind_phys intent = in - optional = F [lakefrac] standard_name = lake_area_fraction long_name = fraction of horizontal grid area occupied by lake @@ -693,7 +616,6 @@ type = real kind = kind_phys intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -702,7 +624,6 @@ type = real kind = kind_phys intent = in - optional = F [islmsk] standard_name = sea_land_ice_mask long_name = sea/land/ice mask (=0/1/2) @@ -710,7 +631,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length @@ -719,7 +639,6 @@ type = real kind = kind_phys intent = in - optional = F [zorlw] standard_name = surface_roughness_length_over_water long_name = surface roughness length over water @@ -728,7 +647,6 @@ type = real kind = kind_phys intent = in - optional = F [zorll] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land @@ -737,7 +655,6 @@ type = real kind = kind_phys intent = in - optional = F [zorli] standard_name = surface_roughness_length_over_ice long_name = surface roughness length over ice @@ -746,7 +663,6 @@ type = real kind = kind_phys intent = in - optional = F [fice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -755,7 +671,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -764,7 +679,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -772,4 +686,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_phys_time_vary.fv3.meta b/physics/GFS_phys_time_vary.fv3.meta index 979200a85..47764457b 100644 --- a/physics/GFS_phys_time_vary.fv3.meta +++ b/physics/GFS_phys_time_vary.fv3.meta @@ -16,7 +16,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = master MPI-rank @@ -24,7 +23,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -32,7 +30,6 @@ dimensions = () type = integer intent = in - optional = F [h2o_phys] standard_name = flag_for_stratospheric_water_vapor_physics long_name = flag for stratospheric water vapor physics @@ -40,7 +37,6 @@ dimensions = () type = logical intent = in - optional = F [iaerclm] standard_name = flag_for_aerosol_input_MG_radiation long_name = flag for using aerosols in Morrison-Gettelman MP_radiation @@ -48,7 +44,6 @@ dimensions = () type = logical intent = in - optional = F [iccn] standard_name = control_for_ice_cloud_condensation_nuclei_forcing long_name = flag for IN and CCN forcing for morrison gettelman microphysics @@ -56,7 +51,6 @@ dimensions = () type = integer intent = in - optional = F [iflip] standard_name = control_for_vertical_index_direction long_name = iflip - is not the same as flipv @@ -64,7 +58,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_dimension long_name = horizontal dimension @@ -72,7 +65,6 @@ dimensions = () type = integer intent = in - optional = F [nx] standard_name = number_of_points_in_x_direction_for_this_MPI_rank long_name = number of points in x direction for this MPI rank @@ -80,7 +72,6 @@ dimensions = () type = integer intent = in - optional = F [ny] standard_name = number_of_points_in_y_direction_for_this_MPI_rank long_name = number of points in y direction for this MPI rank @@ -88,7 +79,6 @@ dimensions = () type = integer intent = in - optional = F [idate] standard_name = date_and_time_at_model_initialization_in_united_states_order long_name = initial date with different size and ordering @@ -96,7 +86,6 @@ dimensions = (4) type = integer intent = in - optional = F [xlat_d] standard_name = latitude_in_degree long_name = latitude in degree north @@ -105,7 +94,6 @@ type = real kind = kind_phys intent = in - optional = F [xlon_d] standard_name = longitude_in_degree long_name = longitude in degree east @@ -114,7 +102,6 @@ type = real kind = kind_phys intent = in - optional = F [jindx1_o3] standard_name = lower_latitude_index_of_ozone_forcing_for_interpolation long_name = interpolation low index for ozone @@ -122,7 +109,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jindx2_o3] standard_name = upper_latitude_index_of_ozone_forcing_for_interpolation long_name = interpolation high index for ozone @@ -130,7 +116,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddy_o3] standard_name = latitude_interpolation_weight_for_ozone_forcing long_name = interpolation high index for ozone @@ -139,7 +124,6 @@ type = real kind = kind_phys intent = inout - optional = F [ozpl] standard_name = ozone_forcing long_name = ozone forcing data @@ -148,7 +132,6 @@ type = real kind = kind_phys intent = in - optional = F [jindx1_h] standard_name = lower_latitude_index_of_stratospheric_water_vapor_forcing_for_interpolation long_name = interpolation low index for stratospheric water vapor @@ -156,7 +139,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jindx2_h] standard_name = upper_latitude_index_of_stratospheric_water_vapor_forcing_for_interpolation long_name = interpolation high index for stratospheric water vapor @@ -164,7 +146,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddy_h] standard_name = latitude_interpolation_weight_for_stratospheric_water_vapor_forcing long_name = interpolation high index for stratospheric water vapor @@ -173,7 +154,6 @@ type = real kind = kind_phys intent = inout - optional = F [h2opl] standard_name = stratospheric_water_vapor_forcing long_name = water forcing data @@ -182,7 +162,6 @@ type = real kind = kind_phys intent = in - optional = F [jindx1_aer] standard_name = lower_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the y direction @@ -190,7 +169,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jindx2_aer] standard_name = upper_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation high index for prescribed aerosols in the y direction @@ -198,7 +176,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddy_aer] standard_name = latitude_interpolation_weight_for_aerosol_forcing long_name = interpolation high index for prescribed aerosols in the y direction @@ -207,7 +184,6 @@ type = real kind = kind_phys intent = inout - optional = F [iindx1_aer] standard_name = lower_longitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the x direction @@ -215,7 +191,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [iindx2_aer] standard_name = upper_longitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation high index for prescribed aerosols in the x direction @@ -223,7 +198,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddx_aer] standard_name = longitude_interpolation_weight_for_aerosol_forcing long_name = interpolation high index for prescribed aerosols in the x direction @@ -232,7 +206,6 @@ type = real kind = kind_phys intent = inout - optional = F [aer_nm] standard_name = mass_number_concentration_of_aerosol_from_gocart_climatology long_name = GOCART aerosol climatology number concentration @@ -241,7 +214,6 @@ type = real kind = kind_phys intent = in - optional = F [jindx1_ci] standard_name = lower_latitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation low index for ice and cloud condensation nuclei in the y direction @@ -249,7 +221,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jindx2_ci] standard_name = upper_latitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation high index for ice and cloud condensation nuclei in the y direction @@ -257,7 +228,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddy_ci] standard_name = latitude_interpolation_weight_for_cloud_nuclei_forcing long_name = interpolation high index for ice and cloud condensation nuclei in the y direction @@ -266,7 +236,6 @@ type = real kind = kind_phys intent = inout - optional = F [iindx1_ci] standard_name = lower_longitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation low index for ice and cloud condensation nuclei in the x direction @@ -274,7 +243,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [iindx2_ci] standard_name = upper_longitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation high index for ice and cloud condensation nuclei in the x direction @@ -282,7 +250,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddx_ci] standard_name = longitude_interpolation_weight_for_cloud_nuclei_forcing long_name = interpolation high index for ice and cloud condensation nuclei in the x direction @@ -291,7 +258,6 @@ type = real kind = kind_phys intent = inout - optional = F [imap] standard_name = map_of_block_column_number_to_global_i_index long_name = map of local index ix to global index i for this block @@ -299,7 +265,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jmap] standard_name = map_of_block_column_number_to_global_j_index long_name = map of local index ix to global index j for this block @@ -307,7 +272,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [do_ugwp_v1] standard_name = flag_for_ugwp_version_1 long_name = flag to activate ver 1 CIRES UGWP @@ -315,7 +279,6 @@ dimensions = () type = logical intent = in - optional = F [jindx1_tau] standard_name = lower_latitude_index_of_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag_for_interpolation long_name = index1 for weight1 for tau NGWs @@ -323,7 +286,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jindx2_tau] standard_name = upper_latitude_index_of_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag_for_interpolation long_name = index2 for weight2 for tau NGWs @@ -331,7 +293,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddy_j1tau] standard_name = latitude_interpolation_weight_complement_for_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag long_name = interpolation weight1 for tau NGWs @@ -340,7 +301,6 @@ type = real intent = inout kind = kind_phys - optional = F [ddy_j2tau] standard_name = latitude_interpolation_weight_for_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag long_name = interpolation weight2 for tau NGWs @@ -349,7 +309,6 @@ type = real intent = inout kind = kind_phys - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -357,7 +316,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -365,7 +323,6 @@ dimensions = () type = integer intent = in - optional = F [nlunit] standard_name = iounit_of_namelist long_name = fortran unit number for file opens @@ -373,7 +330,6 @@ dimensions = () type = integer intent = in - optional = F [sncovr] standard_name = surface_snow_area_fraction_over_land long_name = surface snow area fraction @@ -382,7 +338,6 @@ type = real kind = kind_phys intent = inout - optional = F [sncovr_ice] standard_name = surface_snow_area_fraction_over_ice long_name = surface snow area fraction over ice @@ -391,7 +346,6 @@ type = real kind = kind_phys intent = inout - optional = F [lsm] standard_name = control_for_land_surface_scheme long_name = flag for land surface model @@ -399,7 +353,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model @@ -407,7 +360,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model @@ -415,7 +367,6 @@ dimensions = () type = integer intent = in - optional = F [min_seaice] standard_name = min_sea_ice_area_fraction long_name = minimum sea ice value @@ -424,7 +375,6 @@ type = real kind = kind_phys intent = in - optional = F [fice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -433,7 +383,6 @@ type = real kind = kind_phys intent = in - optional = F [landfrac] standard_name = land_area_fraction long_name = fraction of horizontal grid area occupied by land @@ -442,7 +391,6 @@ type = real kind = kind_phys intent = in - optional = F [vtype] standard_name = vegetation_type_classification long_name = vegetation type for lsm @@ -450,7 +398,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [weasd] standard_name = lwe_thickness_of_surface_snow_amount long_name = water equiv of acc snow depth over land and sea ice @@ -459,7 +406,6 @@ type = real kind = kind_phys intent = inout - optional = F [lsoil] standard_name = vertical_dimension_of_soil long_name = number of soil layers @@ -467,7 +413,6 @@ dimensions = () type = integer intent = in - optional = F [zs] standard_name = depth_of_soil_layers long_name = depth of soil levels for land surface model @@ -476,7 +421,6 @@ type = real kind = kind_phys intent = in - optional = F [dzs] standard_name = thickness_of_soil_layers_for_land_surface_model long_name = thickness of soil levels for land surface model @@ -485,7 +429,6 @@ type = real kind = kind_phys intent = in - optional = F [lsnow_lsm_lbound] standard_name = lower_bound_of_vertical_dimension_of_surface_snow long_name = lower bound of of snow-related arrays for land surface model @@ -493,7 +436,6 @@ dimensions = () type = integer intent = in - optional = F [lsnow_lsm_ubound] standard_name = upper_bound_of_vertical_dimension_of_surface_snow long_name = upper bound of of snow-related arrays for land surface model @@ -501,7 +443,6 @@ dimensions = () type = integer intent = in - optional = F [tvxy] standard_name = canopy_temperature long_name = vegetation temperature @@ -510,7 +451,6 @@ type = real kind = kind_phys intent = inout - optional = F [tgxy] standard_name = ground_temperature long_name = ground temperature for noahmp @@ -519,7 +459,6 @@ type = real kind = kind_phys intent = inout - optional = F [tahxy] standard_name = air_temperature_in_canopy long_name = canopy air temperature @@ -528,7 +467,6 @@ type = real kind = kind_phys intent = inout - optional = F [canicexy] standard_name = canopy_intercepted_ice_mass long_name = canopy intercepted ice mass @@ -537,7 +475,6 @@ type = real kind = kind_phys intent = inout - optional = F [canliqxy] standard_name = canopy_intercepted_liquid_water long_name = canopy intercepted liquid water @@ -546,7 +483,6 @@ type = real kind = kind_phys intent = inout - optional = F [eahxy] standard_name = air_vapor_pressure_in_canopy long_name = canopy air vapor pressure @@ -555,7 +491,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmxy] standard_name = surface_drag_coefficient_for_momentum_for_noahmp long_name = surface drag coefficient for momentum for noahmp @@ -564,7 +499,6 @@ type = real kind = kind_phys intent = inout - optional = F [chxy] standard_name = surface_drag_coefficient_for_heat_and_moisture_for_noahmp long_name = surface exchange coeff heat & moisture for noahmp @@ -573,7 +507,6 @@ type = real kind = kind_phys intent = inout - optional = F [fwetxy] standard_name = wet_canopy_area_fraction long_name = area fraction of canopy that is wetted/snowed @@ -582,7 +515,6 @@ type = real kind = kind_phys intent = inout - optional = F [sneqvoxy] standard_name = lwe_thickness_of_snowfall_amount_on_previous_timestep long_name = snow mass at previous time step @@ -591,7 +523,6 @@ type = real kind = kind_phys intent = inout - optional = F [alboldxy] standard_name = surface_albedo_assuming_deep_snow_on_previous_timestep long_name = snow albedo at previous time step @@ -600,7 +531,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsnowxy] standard_name = lwe_snowfall_rate long_name = snow precipitation rate at surface @@ -609,7 +539,6 @@ type = real kind = kind_phys intent = inout - optional = F [wslakexy] standard_name = water_storage_in_lake long_name = lake water storage @@ -618,7 +547,6 @@ type = real kind = kind_phys intent = inout - optional = F [taussxy] standard_name = dimensionless_age_of_surface_snow long_name = non-dimensional snow age @@ -627,7 +555,6 @@ type = real kind = kind_phys intent = inout - optional = F [waxy] standard_name = water_storage_in_aquifer long_name = water storage in aquifer @@ -636,7 +563,6 @@ type = real kind = kind_phys intent = inout - optional = F [wtxy] standard_name = water_storage_in_aquifer_and_saturated_soil long_name = water storage in aquifer and saturated soil @@ -645,7 +571,6 @@ type = real kind = kind_phys intent = inout - optional = F [zwtxy] standard_name = water_table_depth long_name = water table depth @@ -654,7 +579,6 @@ type = real kind = kind_phys intent = inout - optional = F [xlaixy] standard_name = leaf_area_index long_name = leaf area index @@ -663,7 +587,6 @@ type = real kind = kind_phys intent = inout - optional = F [xsaixy] standard_name = stem_area_index long_name = stem area index @@ -672,7 +595,6 @@ type = real kind = kind_phys intent = inout - optional = F [lfmassxy] standard_name = leaf_mass_content long_name = leaf mass @@ -681,7 +603,6 @@ type = real kind = kind_phys intent = inout - optional = F [stmassxy] standard_name = stem_mass_content long_name = stem mass @@ -690,7 +611,6 @@ type = real kind = kind_phys intent = inout - optional = F [rtmassxy] standard_name = fine_root_mass_content long_name = fine root mass @@ -699,7 +619,6 @@ type = real kind = kind_phys intent = inout - optional = F [woodxy] standard_name = wood_mass_content long_name = wood mass including woody roots @@ -708,7 +627,6 @@ type = real kind = kind_phys intent = inout - optional = F [stblcpxy] standard_name = slow_soil_pool_mass_content_of_carbon long_name = stable carbon in deep soil @@ -717,7 +635,6 @@ type = real kind = kind_phys intent = inout - optional = F [fastcpxy] standard_name = fast_soil_pool_mass_content_of_carbon long_name = short-lived carbon in shallow soil @@ -726,7 +643,6 @@ type = real kind = kind_phys intent = inout - optional = F [smcwtdxy] standard_name = volumetric_soil_moisture_between_soil_bottom_and_water_table long_name = soil water content between the bottom of the soil and the water table @@ -735,7 +651,6 @@ type = real kind = kind_phys intent = inout - optional = F [deeprechxy] standard_name = water_table_recharge_assuming_deep long_name = recharge to or from the water table when deep @@ -744,7 +659,6 @@ type = real kind = kind_phys intent = inout - optional = F [rechxy] standard_name = water_table_recharge_assuming_shallow long_name = recharge to or from the water table when shallow @@ -753,7 +667,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdvis_lnd] standard_name = surface_albedo_direct_visible_over_land long_name = direct surface albedo visible band over land @@ -762,7 +675,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdnir_lnd] standard_name = surface_albedo_direct_NIR_over_land long_name = direct surface albedo NIR band over land @@ -771,7 +683,6 @@ type = real kind = kind_phys intent = inout - optional = F [albivis_lnd] standard_name = surface_albedo_diffuse_visible_over_land long_name = diffuse surface albedo visible band over land @@ -780,7 +691,6 @@ type = real kind = kind_phys intent = inout - optional = F [albinir_lnd] standard_name = surface_albedo_diffuse_NIR_over_land long_name = diffuse surface albedo NIR band over land @@ -789,7 +699,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdvis_ice] standard_name = surface_albedo_direct_visible_over_ice long_name = direct surface albedo visible band over ice @@ -798,7 +707,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdnir_ice] standard_name = surface_albedo_direct_NIR_over_ice long_name = direct surface albedo NIR band over ice @@ -807,7 +715,6 @@ type = real kind = kind_phys intent = inout - optional = F [albivis_ice] standard_name = surface_albedo_diffuse_visible_over_ice long_name = diffuse surface albedo visible band over ice @@ -816,7 +723,6 @@ type = real kind = kind_phys intent = inout - optional = F [albinir_ice] standard_name = surface_albedo_diffuse_NIR_over_ice long_name = diffuse surface albedo NIR band over ice @@ -825,7 +731,6 @@ type = real kind = kind_phys intent = inout - optional = F [emiss_lnd] standard_name = surface_longwave_emissivity_over_land long_name = surface lw emissivity in fraction over land @@ -834,7 +739,6 @@ type = real kind = kind_phys intent = inout - optional = F [emiss_ice] standard_name = surface_longwave_emissivity_over_ice long_name = surface lw emissivity in fraction over ice @@ -843,7 +747,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowxy] standard_name = number_of_snow_layers long_name = number of snow layers @@ -852,7 +755,6 @@ type = real kind = kind_phys intent = inout - optional = F [snicexy] standard_name = lwe_thickness_of_ice_in_surface_snow long_name = snow layer ice @@ -861,7 +763,6 @@ type = real kind = kind_phys intent = inout - optional = F [snliqxy] standard_name = lwe_thickness_of_liquid_water_in_surface_snow long_name = snow layer liquid water @@ -870,7 +771,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsnoxy] standard_name = temperature_in_surface_snow long_name = temperature_in_surface_snow @@ -879,7 +779,6 @@ type = real kind = kind_phys intent = inout - optional = F [smoiseq] standard_name = volumetric_equilibrium_soil_moisture long_name = equilibrium soil water content @@ -888,7 +787,6 @@ type = real kind = kind_phys intent = inout - optional = F [zsnsoxy] standard_name = depth_from_snow_surface_at_bottom_interface long_name = depth from the top of the snow surface at the bottom of the layer @@ -897,7 +795,6 @@ type = real kind = kind_phys intent = inout - optional = F [slc] standard_name = volume_fraction_of_unfrozen_water_in_soil long_name = liquid soil moisture @@ -906,7 +803,6 @@ type = real kind = kind_phys intent = inout - optional = F [smc] standard_name = volume_fraction_of_condensed_water_in_soil long_name = total soil moisture @@ -915,7 +811,6 @@ type = real kind = kind_phys intent = inout - optional = F [stc] standard_name = soil_temperature long_name = soil temperature @@ -924,7 +819,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfcl] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -933,7 +827,6 @@ type = real kind = kind_phys intent = in - optional = F [snowd] standard_name = lwe_surface_snow long_name = water equivalent snow depth @@ -942,7 +835,6 @@ type = real kind = kind_phys intent = in - optional = F [canopy] standard_name = canopy_water_amount long_name = canopy water amount @@ -951,7 +843,6 @@ type = real kind = kind_phys intent = in - optional = F [tg3] standard_name = deep_soil_temperature long_name = deep soil temperature @@ -960,7 +851,6 @@ type = real kind = kind_phys intent = in - optional = F [stype] standard_name = soil_type_classification long_name = soil type for lsm @@ -968,7 +858,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [con_t0c] standard_name = temperature_at_zero_celsius long_name = temperature at 0 degree Celsius @@ -977,7 +866,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -985,7 +873,6 @@ dimensions = () type = logical intent = in - optional = F [nthrds] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available for physics schemes @@ -993,7 +880,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1002,7 +888,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1010,7 +895,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -1024,7 +908,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1032,7 +915,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -1045,7 +927,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = master MPI-rank @@ -1053,7 +934,6 @@ dimensions = () type = integer intent = in - optional = F [cnx] standard_name = number_of_x_points_for_current_cubed_sphere_tile long_name = number of points in x direction for this cubed sphere face @@ -1061,7 +941,6 @@ dimensions = () type = integer intent = in - optional = F [cny] standard_name = number_of_y_points_for_current_cubed_sphere_tile long_name = number of points in y direction for this cubed sphere face @@ -1069,7 +948,6 @@ dimensions = () type = integer intent = in - optional = F [isc] standard_name = starting_x_index_for_this_MPI_rank long_name = starting index in the x direction for this MPI rank @@ -1077,7 +955,6 @@ dimensions = () type = integer intent = in - optional = F [jsc] standard_name = starting_y_index_for_this_MPI_rank long_name = starting index in the y direction for this MPI rank @@ -1085,7 +962,6 @@ dimensions = () type = integer intent = in - optional = F [nrcm] standard_name = number_of_random_numbers long_name = second dimension of random number stream for RAS @@ -1093,7 +969,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_dimension long_name = horizontal dimension @@ -1101,7 +976,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -1109,7 +983,6 @@ dimensions = () type = integer intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -1117,7 +990,6 @@ dimensions = () type = integer intent = in - optional = F [idate] standard_name = date_and_time_at_model_initialization_in_united_states_order long_name = initial date with different size and ordering @@ -1125,7 +997,6 @@ dimensions = (4) type = integer intent = in - optional = F [nsswr] standard_name = number_of_timesteps_between_shortwave_radiation_calls long_name = number of timesteps between shortwave radiation calls @@ -1133,7 +1004,6 @@ dimensions = () type = integer intent = in - optional = F [fhswr] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -1142,7 +1012,6 @@ type = real kind = kind_phys intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -1150,7 +1019,6 @@ dimensions = () type = logical intent = in - optional = F [fhour] standard_name = forecast_time long_name = current forecast time @@ -1159,7 +1027,6 @@ type = real kind = kind_phys intent = in - optional = F [imfdeepcnv] standard_name = control_for_deep_convection_scheme long_name = flag for mass-flux deep convection scheme @@ -1167,7 +1034,6 @@ dimensions = () type = integer intent = in - optional = F [cal_pre] standard_name = flag_for_dominant_precipitation_type_partition long_name = flag controls precip type algorithm @@ -1175,7 +1041,6 @@ dimensions = () type = logical intent = in - optional = F [random_clds] standard_name = flag_for_random_clouds_for_RAS long_name = flag for using random clouds with the RAS scheme @@ -1183,7 +1048,6 @@ dimensions = () type = logical intent = in - optional = F [nscyc] standard_name = number_of_timesteps_between_surface_cycling_calls long_name = number of timesteps between surface cycling calls @@ -1191,7 +1055,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -1199,7 +1062,6 @@ dimensions = () type = integer intent = in - optional = F [h2o_phys] standard_name = flag_for_stratospheric_water_vapor_physics long_name = flag for stratospheric water vapor physics @@ -1207,7 +1069,6 @@ dimensions = () type = logical intent = in - optional = F [iaerclm] standard_name = flag_for_aerosol_input_MG_radiation long_name = flag for using aerosols in Morrison-Gettelman MP_radiation @@ -1215,7 +1076,6 @@ dimensions = () type = logical intent = in - optional = F [iccn] standard_name = control_for_ice_cloud_condensation_nuclei_forcing long_name = flag for IN and CCN forcing for morrison gettelman microphysics @@ -1223,7 +1083,6 @@ dimensions = () type = integer intent = in - optional = F [clstp] standard_name = control_for_convective_cloud_diagnostics long_name = index used by cnvc90 (for convective clouds) @@ -1232,7 +1091,6 @@ type = real kind = kind_phys intent = out - optional = F [jindx1_o3] standard_name = lower_latitude_index_of_ozone_forcing_for_interpolation long_name = interpolation low index for ozone @@ -1240,7 +1098,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jindx2_o3] standard_name = upper_latitude_index_of_ozone_forcing_for_interpolation long_name = interpolation high index for ozone @@ -1248,7 +1105,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddy_o3] standard_name = latitude_interpolation_weight_for_ozone_forcing long_name = interpolation high index for ozone @@ -1257,7 +1113,6 @@ type = real kind = kind_phys intent = in - optional = F [ozpl] standard_name = ozone_forcing long_name = ozone forcing data @@ -1266,7 +1121,6 @@ type = real kind = kind_phys intent = inout - optional = F [jindx1_h] standard_name = lower_latitude_index_of_stratospheric_water_vapor_forcing_for_interpolation long_name = interpolation low index for stratospheric water vapor @@ -1274,7 +1128,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jindx2_h] standard_name = upper_latitude_index_of_stratospheric_water_vapor_forcing_for_interpolation long_name = interpolation high index for stratospheric water vapor @@ -1282,7 +1135,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddy_h] standard_name = latitude_interpolation_weight_for_stratospheric_water_vapor_forcing long_name = interpolation high index for stratospheric water vapor @@ -1291,7 +1143,6 @@ type = real kind = kind_phys intent = in - optional = F [h2opl] standard_name = stratospheric_water_vapor_forcing long_name = water forcing data @@ -1300,7 +1151,6 @@ type = real kind = kind_phys intent = inout - optional = F [jindx1_aer] standard_name = lower_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the y direction @@ -1308,7 +1158,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jindx2_aer] standard_name = upper_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation high index for prescribed aerosols in the y direction @@ -1316,7 +1165,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddy_aer] standard_name = latitude_interpolation_weight_for_aerosol_forcing long_name = interpolation high index for prescribed aerosols in the y direction @@ -1325,7 +1173,6 @@ type = real kind = kind_phys intent = in - optional = F [iindx1_aer] standard_name = lower_longitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the x direction @@ -1333,7 +1180,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [iindx2_aer] standard_name = upper_longitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation high index for prescribed aerosols in the x direction @@ -1341,7 +1187,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddx_aer] standard_name = longitude_interpolation_weight_for_aerosol_forcing long_name = interpolation high index for prescribed aerosols in the x direction @@ -1350,7 +1195,6 @@ type = real kind = kind_phys intent = in - optional = F [aer_nm] standard_name = mass_number_concentration_of_aerosol_from_gocart_climatology long_name = GOCART aerosol climatology number concentration @@ -1359,7 +1203,6 @@ type = real kind = kind_phys intent = inout - optional = F [jindx1_ci] standard_name = lower_latitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation low index for ice and cloud condensation nuclei in the y direction @@ -1367,7 +1210,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jindx2_ci] standard_name = upper_latitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation high index for ice and cloud condensation nuclei in the y direction @@ -1375,7 +1217,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddy_ci] standard_name = latitude_interpolation_weight_for_cloud_nuclei_forcing long_name = interpolation high index for ice and cloud condensation nuclei in the y direction @@ -1384,7 +1225,6 @@ type = real kind = kind_phys intent = in - optional = F [iindx1_ci] standard_name = lower_longitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation low index for ice and cloud condensation nuclei in the x direction @@ -1392,7 +1232,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [iindx2_ci] standard_name = upper_longitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation high index for ice and cloud condensation nuclei in the x direction @@ -1400,7 +1239,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddx_ci] standard_name = longitude_interpolation_weight_for_cloud_nuclei_forcing long_name = interpolation high index for ice and cloud condensation nuclei in the x direction @@ -1409,7 +1247,6 @@ type = real kind = kind_phys intent = in - optional = F [in_nm] standard_name = ice_nucleation_number_from_climatology long_name = ice nucleation number in MG MP @@ -1418,7 +1255,6 @@ type = real kind = kind_phys intent = inout - optional = F [ccn_nm] standard_name = tendency_of_activated_cloud_condensation_nuclei_from_climatology long_name = tendency of ccn activated number @@ -1427,7 +1263,6 @@ type = real kind = kind_phys intent = inout - optional = F [imap] standard_name = map_of_block_column_number_to_global_i_index long_name = map of local index ix to global index i for this block @@ -1435,7 +1270,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jmap] standard_name = map_of_block_column_number_to_global_j_index long_name = map of local index ix to global index j for this block @@ -1443,7 +1277,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -1452,7 +1285,6 @@ type = real kind = kind_phys intent = in - optional = F [seed0] standard_name = seed_random_numbers_RAS long_name = random number seed for the RAS scheme @@ -1460,7 +1292,6 @@ dimensions = () type = integer intent = in - optional = F [rann] standard_name = random_number long_name = random number array (0-1) @@ -1469,7 +1300,6 @@ type = real kind = kind_phys intent = inout - optional = F [nthrds] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available for physics schemes @@ -1477,7 +1307,6 @@ dimensions = () type = integer intent = in - optional = F [nx] standard_name = number_of_points_in_x_direction_for_this_MPI_rank long_name = number of points in x direction for this MPI rank @@ -1485,7 +1314,6 @@ dimensions = () type = integer intent = in - optional = F [ny] standard_name = number_of_points_in_y_direction_for_this_MPI_rank long_name = number of points in y direction for this MPI rank @@ -1493,7 +1321,6 @@ dimensions = () type = integer intent = in - optional = F [nsst] standard_name = control_for_nsstm long_name = NSSTM flag: off/uncoupled/coupled=0/1/2 @@ -1501,7 +1328,6 @@ dimensions = () type = integer intent = in - optional = F [tile_num] standard_name = index_of_cubed_sphere_tile long_name = tile number @@ -1509,7 +1335,6 @@ dimensions = () type = integer intent = in - optional = F [nlunit] standard_name = iounit_of_namelist long_name = fortran unit number for file opens @@ -1517,7 +1342,6 @@ dimensions = () type = integer intent = in - optional = F [lsoil] standard_name = vertical_dimension_of_soil long_name = number of soil layers @@ -1525,7 +1349,6 @@ dimensions = () type = integer intent = in - optional = F [lsoil_lsm] standard_name = vertical_dimension_of_soil_internal_to_land_surface_scheme long_name = number of soil layers internal to land surface model @@ -1533,7 +1356,6 @@ dimensions = () type = integer intent = in - optional = F [kice] standard_name = vertical_dimension_of_sea_ice long_name = vertical loop extent for ice levels, start at 1 @@ -1541,7 +1363,6 @@ dimensions = () type = integer intent = in - optional = F [ialb] standard_name = control_for_surface_albedo long_name = flag for using climatology alb, based on sfc type @@ -1549,7 +1370,6 @@ dimensions = () type = integer intent = in - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -1557,7 +1377,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -1565,7 +1384,6 @@ dimensions = () type = integer intent = in - optional = F [input_nml_file] standard_name = filename_of_internal_namelist long_name = namelist filename for internal file reads @@ -1574,7 +1392,6 @@ type = character kind = len=256 intent = in - optional = F [use_ufo] standard_name = flag_for_gcycle_surface_option long_name = flag for gcycle surface option @@ -1582,7 +1399,6 @@ dimensions = () type = logical intent = in - optional = F [nst_anl] standard_name = flag_for_nsstm_analysis_in_gcycle long_name = flag for NSSTM analysis in gcycle/sfcsub @@ -1590,7 +1406,6 @@ dimensions = () type = logical intent = in - optional = F [frac_grid] standard_name = flag_for_fractional_landmask long_name = flag for fractional grid @@ -1598,7 +1413,6 @@ dimensions = () type = logical intent = in - optional = F [fhcyc] standard_name = frequency_for_surface_cycling_calls long_name = frequency for surface cycling calls @@ -1607,7 +1421,6 @@ type = real kind = kind_phys intent = in - optional = F [phour] standard_name = forecast_time_on_previous_timestep long_name = forecast time at the previous timestep @@ -1616,7 +1429,6 @@ type = real kind = kind_phys intent = in - optional = F [lakefrac] standard_name = lake_area_fraction long_name = fraction of horizontal grid area occupied by lake @@ -1625,7 +1437,6 @@ type = real kind = kind_phys intent = in - optional = F [min_seaice] standard_name = min_sea_ice_area_fraction long_name = minimum sea ice value @@ -1634,7 +1445,6 @@ type = real kind = kind_phys intent = in - optional = F [min_lakeice] standard_name = min_lake_ice_area_fraction long_name = minimum lake ice value @@ -1643,7 +1453,6 @@ type = real kind = kind_phys intent = in - optional = F [smc] standard_name = volume_fraction_of_condensed_water_in_soil long_name = total soil moisture @@ -1652,7 +1461,6 @@ type = real kind = kind_phys intent = inout - optional = F [slc] standard_name = volume_fraction_of_unfrozen_water_in_soil long_name = liquid soil moisture @@ -1661,7 +1469,6 @@ type = real kind = kind_phys intent = inout - optional = F [stc] standard_name = soil_temperature long_name = soil temperature @@ -1670,7 +1477,6 @@ type = real kind = kind_phys intent = inout - optional = F [smois] standard_name = volume_fraction_of_soil_moisture_for_land_surface_model long_name = volumetric fraction of soil moisture for lsm @@ -1679,7 +1485,6 @@ type = real kind = kind_phys intent = inout - optional = F [sh2o] standard_name = volume_fraction_of_unfrozen_soil_moisture_for_land_surface_model long_name = volume fraction of unfrozen soil moisture for lsm @@ -1688,7 +1493,6 @@ type = real kind = kind_phys intent = inout - optional = F [tslb] standard_name = soil_temperature_for_land_surface_model long_name = soil temperature for land surface model @@ -1697,7 +1501,6 @@ type = real kind = kind_phys intent = inout - optional = F [tiice] standard_name = temperature_in_ice_layer long_name = sea ice internal temperature @@ -1706,7 +1509,6 @@ type = real kind = kind_phys intent = inout - optional = F [tg3] standard_name = deep_soil_temperature long_name = deep soil temperature @@ -1715,7 +1517,6 @@ type = real kind = kind_phys intent = inout - optional = F [tref] standard_name = reference_sea_surface_temperature long_name = sea surface reference temperature @@ -1724,7 +1525,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfc] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -1733,7 +1533,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfco] standard_name = sea_surface_temperature long_name = sea surface temperature @@ -1742,7 +1541,6 @@ type = real kind = kind_phys intent = inout - optional = F [tisfc] standard_name = sea_ice_temperature long_name = sea ice surface skin temperature @@ -1751,7 +1549,6 @@ type = real kind = kind_phys intent = inout - optional = F [hice] standard_name = sea_ice_thickness long_name = sea ice thickness @@ -1760,7 +1557,6 @@ type = real kind = kind_phys intent = inout - optional = F [fice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -1769,7 +1565,6 @@ type = real kind = kind_phys intent = inout - optional = F [facsf] standard_name =strong_cosz_area_fraction long_name = fractional coverage with strong cosz dependency @@ -1778,7 +1573,6 @@ type = real kind = kind_phys intent = inout - optional = F [facwf] standard_name = weak_cosz_area_fraction long_name = fractional coverage with weak cosz dependency @@ -1787,7 +1581,6 @@ type = real kind = kind_phys intent = inout - optional = F [alvsf] standard_name = vis_albedo_strong_cosz long_name = mean vis albedo with strong cosz dependency @@ -1796,7 +1589,6 @@ type = real kind = kind_phys intent = inout - optional = F [alvwf] standard_name = vis_albedo_weak_cosz long_name = mean vis albedo with weak cosz dependency @@ -1805,7 +1597,6 @@ type = real kind = kind_phys intent = inout - optional = F [alnsf] standard_name = nir_albedo_strong_cosz long_name = mean nir albedo with strong cosz dependency @@ -1814,7 +1605,6 @@ type = real kind = kind_phys intent = inout - optional = F [alnwf] standard_name = nir_albedo_weak_cosz long_name = mean nir albedo with weak cosz dependency @@ -1823,7 +1613,6 @@ type = real kind = kind_phys intent = inout - optional = F [zorli] standard_name = surface_roughness_length_over_ice long_name = surface roughness length over ice @@ -1832,7 +1621,6 @@ type = real kind = kind_phys intent = inout - optional = F [zorll] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land @@ -1841,7 +1629,6 @@ type = real kind = kind_phys intent = inout - optional = F [zorlo] standard_name = surface_roughness_length_over_water long_name = surface roughness length over water @@ -1850,7 +1637,6 @@ type = real kind = kind_phys intent = inout - optional = F [weasd] standard_name = lwe_thickness_of_surface_snow_amount long_name = water equiv of acc snow depth over land and sea ice @@ -1859,7 +1645,6 @@ type = real kind = kind_phys intent = inout - optional = F [slope] standard_name = surface_slope_classification long_name = sfc slope type for lsm @@ -1867,7 +1652,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [snoalb] standard_name = upper_bound_of_max_albedo_assuming_deep_snow long_name = maximum snow albedo @@ -1876,7 +1660,6 @@ type = real kind = kind_phys intent = inout - optional = F [canopy] standard_name = canopy_water_amount long_name = canopy water amount @@ -1885,7 +1668,6 @@ type = real kind = kind_phys intent = inout - optional = F [vfrac] standard_name = vegetation_area_fraction long_name = areal fractional cover of green vegetation @@ -1894,7 +1676,6 @@ type = real kind = kind_phys intent = inout - optional = F [vtype] standard_name = vegetation_type_classification long_name = vegetation type for lsm @@ -1902,7 +1683,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [stype] standard_name = soil_type_classification long_name = soil type for lsm @@ -1910,7 +1690,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [shdmin] standard_name = min_vegetation_area_fraction long_name = min fractional coverage of green vegetation @@ -1919,7 +1698,6 @@ type = real kind = kind_phys intent = inout - optional = F [shdmax] standard_name = max_vegetation_area_fraction long_name = max fractional coverage of green vegetation @@ -1928,7 +1706,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowd] standard_name = lwe_surface_snow long_name = water equivalent snow depth @@ -1937,7 +1714,6 @@ type = real kind = kind_phys intent = inout - optional = F [cv] standard_name = convective_cloud_area_fraction_between_sw_radiation_calls_from_cnvc90 long_name = fraction of convective cloud @@ -1946,7 +1722,6 @@ type = real kind = kind_phys intent = inout - optional = F [cvb] standard_name = pressure_at_convective_cloud_base_between_sw_radiation_calls_from_cnvc90 long_name = convective cloud bottom pressure @@ -1955,7 +1730,6 @@ type = real kind = kind_phys intent = inout - optional = F [cvt] standard_name = pressure_at_convective_cloud_top_between_sw_radiation_calls_from_cnvc90 long_name = convective cloud top pressure @@ -1964,7 +1738,6 @@ type = real kind = kind_phys intent = inout - optional = F [oro] standard_name = height_above_mean_sea_level long_name = height_above_mean_sea_level @@ -1973,7 +1746,6 @@ type = real kind = kind_phys intent = inout - optional = F [oro_uf] standard_name = unfiltered_height_above_mean_sea_level long_name = unfiltered height_above_mean_sea_level @@ -1982,7 +1754,6 @@ type = real kind = kind_phys intent = inout - optional = F [xlat_d] standard_name = latitude_in_degree long_name = latitude in degree north @@ -1991,7 +1762,6 @@ type = real kind = kind_phys intent = inout - optional = F [xlon_d] standard_name = longitude_in_degree long_name = longitude in degree east @@ -2000,7 +1770,6 @@ type = real kind = kind_phys intent = inout - optional = F [landfrac] standard_name = land_area_fraction long_name = fraction of horizontal grid area occupied by land @@ -2009,7 +1778,6 @@ type = real kind = kind_phys intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -2018,7 +1786,6 @@ type = real kind = kind_phys intent = inout - optional = F [do_ugwp_v1] standard_name = flag_for_ugwp_version_1 long_name = flag to activate ver 1 CIRES UGWP @@ -2026,7 +1793,6 @@ dimensions = () type = logical intent = in - optional = F [jindx1_tau] standard_name = lower_latitude_index_of_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag_for_interpolation long_name = index1 for weight1 for tau NGWs @@ -2034,7 +1800,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jindx2_tau] standard_name = upper_latitude_index_of_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag_for_interpolation long_name = index2 for weight2 for tau NGWs @@ -2042,7 +1807,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddy_j1tau] standard_name = latitude_interpolation_weight_complement_for_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag long_name = interpolation weight1 for tau NGWs @@ -2051,7 +1815,6 @@ type = real intent = in kind = kind_phys - optional = F [ddy_j2tau] standard_name = latitude_interpolation_weight_for_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag long_name = interpolation weight2 for tau NGWs @@ -2060,7 +1823,6 @@ type = real intent = in kind = kind_phys - optional = F [tau_amf] standard_name = absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag long_name = ngw_absolute_momentum_flux @@ -2069,7 +1831,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -2078,7 +1839,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -2086,7 +1846,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -2100,7 +1859,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -2108,4 +1866,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_phys_time_vary.scm.meta b/physics/GFS_phys_time_vary.scm.meta index a075e8d82..a7de26fe1 100644 --- a/physics/GFS_phys_time_vary.scm.meta +++ b/physics/GFS_phys_time_vary.scm.meta @@ -16,7 +16,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = master MPI-rank @@ -24,7 +23,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -32,7 +30,6 @@ dimensions = () type = integer intent = in - optional = F [h2o_phys] standard_name = flag_for_stratospheric_water_vapor_physics long_name = flag for stratospheric water vapor physics @@ -40,7 +37,6 @@ dimensions = () type = logical intent = in - optional = F [iaerclm] standard_name = flag_for_aerosol_input_MG_radiation long_name = flag for using aerosols in Morrison-Gettelman MP_radiation @@ -48,7 +44,6 @@ dimensions = () type = logical intent = in - optional = F [iccn] standard_name = control_for_ice_cloud_condensation_nuclei_forcing long_name = flag for IN and CCN forcing for morrison gettelman microphysics @@ -56,7 +51,6 @@ dimensions = () type = integer intent = in - optional = F [iflip] standard_name = control_for_vertical_index_direction long_name = iflip - is not the same as flipv @@ -64,7 +58,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_dimension long_name = horizontal dimension @@ -72,7 +65,6 @@ dimensions = () type = integer intent = in - optional = F [nx] standard_name = number_of_points_in_x_direction_for_this_MPI_rank long_name = number of points in x direction for this MPI rank @@ -80,7 +72,6 @@ dimensions = () type = integer intent = in - optional = F [ny] standard_name = number_of_points_in_y_direction_for_this_MPI_rank long_name = number of points in y direction for this MPI rank @@ -88,7 +79,6 @@ dimensions = () type = integer intent = in - optional = F [idate] standard_name = date_and_time_at_model_initialization_in_united_states_order long_name = initial date with different size and ordering @@ -96,7 +86,6 @@ dimensions = (4) type = integer intent = in - optional = F [xlat_d] standard_name = latitude_in_degree long_name = latitude in degree north @@ -105,7 +94,6 @@ type = real kind = kind_phys intent = in - optional = F [xlon_d] standard_name = longitude_in_degree long_name = longitude in degree east @@ -114,7 +102,6 @@ type = real kind = kind_phys intent = in - optional = F [jindx1_o3] standard_name = lower_latitude_index_of_ozone_forcing_for_interpolation long_name = interpolation low index for ozone @@ -122,7 +109,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jindx2_o3] standard_name = upper_latitude_index_of_ozone_forcing_for_interpolation long_name = interpolation high index for ozone @@ -130,7 +116,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddy_o3] standard_name = latitude_interpolation_weight_for_ozone_forcing long_name = interpolation high index for ozone @@ -139,7 +124,6 @@ type = real kind = kind_phys intent = inout - optional = F [ozpl] standard_name = ozone_forcing long_name = ozone forcing data @@ -148,7 +132,6 @@ type = real kind = kind_phys intent = in - optional = F [jindx1_h] standard_name = lower_latitude_index_of_stratospheric_water_vapor_forcing_for_interpolation long_name = interpolation low index for stratospheric water vapor @@ -156,7 +139,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jindx2_h] standard_name = upper_latitude_index_of_stratospheric_water_vapor_forcing_for_interpolation long_name = interpolation high index for stratospheric water vapor @@ -164,7 +146,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddy_h] standard_name = latitude_interpolation_weight_for_stratospheric_water_vapor_forcing long_name = interpolation high index for stratospheric water vapor @@ -173,7 +154,6 @@ type = real kind = kind_phys intent = inout - optional = F [h2opl] standard_name = stratospheric_water_vapor_forcing long_name = water forcing data @@ -182,7 +162,6 @@ type = real kind = kind_phys intent = in - optional = F [jindx1_aer] standard_name = lower_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the y direction @@ -190,7 +169,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jindx2_aer] standard_name = upper_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation high index for prescribed aerosols in the y direction @@ -198,7 +176,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddy_aer] standard_name = latitude_interpolation_weight_for_aerosol_forcing long_name = interpolation high index for prescribed aerosols in the y direction @@ -207,7 +184,6 @@ type = real kind = kind_phys intent = inout - optional = F [iindx1_aer] standard_name = lower_longitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the x direction @@ -215,7 +191,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [iindx2_aer] standard_name = upper_longitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation high index for prescribed aerosols in the x direction @@ -223,7 +198,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddx_aer] standard_name = longitude_interpolation_weight_for_aerosol_forcing long_name = interpolation high index for prescribed aerosols in the x direction @@ -232,7 +206,6 @@ type = real kind = kind_phys intent = inout - optional = F [aer_nm] standard_name = mass_number_concentration_of_aerosol_from_gocart_climatology long_name = GOCART aerosol climatology number concentration @@ -241,7 +214,6 @@ type = real kind = kind_phys intent = in - optional = F [jindx1_ci] standard_name = lower_latitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation low index for ice and cloud condensation nuclei in the y direction @@ -249,7 +221,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jindx2_ci] standard_name = upper_latitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation high index for ice and cloud condensation nuclei in the y direction @@ -257,7 +228,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddy_ci] standard_name = latitude_interpolation_weight_for_cloud_nuclei_forcing long_name = interpolation high index for ice and cloud condensation nuclei in the y direction @@ -266,7 +236,6 @@ type = real kind = kind_phys intent = inout - optional = F [iindx1_ci] standard_name = lower_longitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation low index for ice and cloud condensation nuclei in the x direction @@ -274,7 +243,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [iindx2_ci] standard_name = upper_longitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation high index for ice and cloud condensation nuclei in the x direction @@ -282,7 +250,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddx_ci] standard_name = longitude_interpolation_weight_for_cloud_nuclei_forcing long_name = interpolation high index for ice and cloud condensation nuclei in the x direction @@ -291,7 +258,6 @@ type = real kind = kind_phys intent = inout - optional = F [imap] standard_name = map_of_block_column_number_to_global_i_index long_name = map of local index ix to global index i for this block @@ -299,7 +265,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jmap] standard_name = map_of_block_column_number_to_global_j_index long_name = map of local index ix to global index j for this block @@ -307,7 +272,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [do_ugwp_v1] standard_name = flag_for_ugwp_version_1 long_name = flag to activate ver 1 CIRES UGWP @@ -315,7 +279,6 @@ dimensions = () type = logical intent = in - optional = F [jindx1_tau] standard_name = lower_latitude_index_of_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag_for_interpolation long_name = index1 for weight1 for tau NGWs @@ -323,7 +286,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [jindx2_tau] standard_name = upper_latitude_index_of_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag_for_interpolation long_name = index2 for weight2 for tau NGWs @@ -331,7 +293,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [ddy_j1tau] standard_name = latitude_interpolation_weight_complement_for_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag long_name = interpolation weight1 for tau NGWs @@ -340,7 +301,6 @@ type = real intent = inout kind = kind_phys - optional = F [ddy_j2tau] standard_name = latitude_interpolation_weight_for_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag long_name = interpolation weight2 for tau NGWs @@ -349,7 +309,6 @@ type = real intent = inout kind = kind_phys - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -357,7 +316,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -365,7 +323,6 @@ dimensions = () type = integer intent = in - optional = F [nlunit] standard_name = iounit_of_namelist long_name = fortran unit number for file opens @@ -373,7 +330,6 @@ dimensions = () type = integer intent = in - optional = F [sncovr] standard_name = surface_snow_area_fraction_over_land long_name = surface snow area fraction @@ -382,7 +338,6 @@ type = real kind = kind_phys intent = inout - optional = F [sncovr_ice] standard_name = surface_snow_area_fraction_over_ice long_name = surface snow area fraction over ice @@ -391,7 +346,6 @@ type = real kind = kind_phys intent = inout - optional = F [lsm] standard_name = control_for_land_surface_scheme long_name = flag for land surface model @@ -399,7 +353,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model @@ -407,7 +360,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model @@ -415,7 +367,6 @@ dimensions = () type = integer intent = in - optional = F [min_seaice] standard_name = min_sea_ice_area_fraction long_name = minimum sea ice value @@ -424,7 +375,6 @@ type = real kind = kind_phys intent = in - optional = F [fice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -433,7 +383,6 @@ type = real kind = kind_phys intent = in - optional = F [landfrac] standard_name = land_area_fraction long_name = fraction of horizontal grid area occupied by land @@ -442,7 +391,6 @@ type = real kind = kind_phys intent = in - optional = F [vtype] standard_name = vegetation_type_classification long_name = vegetation type for lsm @@ -450,7 +398,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [weasd] standard_name = lwe_thickness_of_surface_snow_amount long_name = water equiv of acc snow depth over land and sea ice @@ -459,7 +406,6 @@ type = real kind = kind_phys intent = inout - optional = F [lsoil] standard_name = vertical_dimension_of_soil long_name = number of soil layers @@ -467,7 +413,6 @@ dimensions = () type = integer intent = in - optional = F [zs] standard_name = depth_of_soil_layers long_name = depth of soil levels for land surface model @@ -476,7 +421,6 @@ type = real kind = kind_phys intent = in - optional = F [dzs] standard_name = thickness_of_soil_layers_for_land_surface_model long_name = thickness of soil levels for land surface model @@ -485,7 +429,6 @@ type = real kind = kind_phys intent = in - optional = F [lsnow_lsm_lbound] standard_name = lower_bound_of_vertical_dimension_of_surface_snow long_name = lower bound of of snow-related arrays for land surface model @@ -493,7 +436,6 @@ dimensions = () type = integer intent = in - optional = F [lsnow_lsm_ubound] standard_name = upper_bound_of_vertical_dimension_of_surface_snow long_name = upper bound of of snow-related arrays for land surface model @@ -501,7 +443,6 @@ dimensions = () type = integer intent = in - optional = F [tvxy] standard_name = canopy_temperature long_name = vegetation temperature @@ -510,7 +451,6 @@ type = real kind = kind_phys intent = inout - optional = F [tgxy] standard_name = ground_temperature long_name = ground temperature for noahmp @@ -519,7 +459,6 @@ type = real kind = kind_phys intent = inout - optional = F [tahxy] standard_name = air_temperature_in_canopy long_name = canopy air temperature @@ -528,7 +467,6 @@ type = real kind = kind_phys intent = inout - optional = F [canicexy] standard_name = canopy_intercepted_ice_mass long_name = canopy intercepted ice mass @@ -537,7 +475,6 @@ type = real kind = kind_phys intent = inout - optional = F [canliqxy] standard_name = canopy_intercepted_liquid_water long_name = canopy intercepted liquid water @@ -546,7 +483,6 @@ type = real kind = kind_phys intent = inout - optional = F [eahxy] standard_name = air_vapor_pressure_in_canopy long_name = canopy air vapor pressure @@ -555,7 +491,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmxy] standard_name = surface_drag_coefficient_for_momentum_for_noahmp long_name = surface drag coefficient for momentum for noahmp @@ -564,7 +499,6 @@ type = real kind = kind_phys intent = inout - optional = F [chxy] standard_name = surface_drag_coefficient_for_heat_and_moisture_for_noahmp long_name = surface exchange coeff heat & moisture for noahmp @@ -573,7 +507,6 @@ type = real kind = kind_phys intent = inout - optional = F [fwetxy] standard_name = wet_canopy_area_fraction long_name = area fraction of canopy that is wetted/snowed @@ -582,7 +515,6 @@ type = real kind = kind_phys intent = inout - optional = F [sneqvoxy] standard_name = lwe_thickness_of_snowfall_amount_on_previous_timestep long_name = snow mass at previous time step @@ -591,7 +523,6 @@ type = real kind = kind_phys intent = inout - optional = F [alboldxy] standard_name = surface_albedo_assuming_deep_snow_on_previous_timestep long_name = snow albedo at previous time step @@ -600,7 +531,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsnowxy] standard_name = lwe_snowfall_rate long_name = snow precipitation rate at surface @@ -609,7 +539,6 @@ type = real kind = kind_phys intent = inout - optional = F [wslakexy] standard_name = water_storage_in_lake long_name = lake water storage @@ -618,7 +547,6 @@ type = real kind = kind_phys intent = inout - optional = F [taussxy] standard_name = dimensionless_age_of_surface_snow long_name = non-dimensional snow age @@ -627,7 +555,6 @@ type = real kind = kind_phys intent = inout - optional = F [waxy] standard_name = water_storage_in_aquifer long_name = water storage in aquifer @@ -636,7 +563,6 @@ type = real kind = kind_phys intent = inout - optional = F [wtxy] standard_name = water_storage_in_aquifer_and_saturated_soil long_name = water storage in aquifer and saturated soil @@ -645,7 +571,6 @@ type = real kind = kind_phys intent = inout - optional = F [zwtxy] standard_name = water_table_depth long_name = water table depth @@ -654,7 +579,6 @@ type = real kind = kind_phys intent = inout - optional = F [xlaixy] standard_name = leaf_area_index long_name = leaf area index @@ -663,7 +587,6 @@ type = real kind = kind_phys intent = inout - optional = F [xsaixy] standard_name = stem_area_index long_name = stem area index @@ -672,7 +595,6 @@ type = real kind = kind_phys intent = inout - optional = F [lfmassxy] standard_name = leaf_mass_content long_name = leaf mass @@ -681,7 +603,6 @@ type = real kind = kind_phys intent = inout - optional = F [stmassxy] standard_name = stem_mass_content long_name = stem mass @@ -690,7 +611,6 @@ type = real kind = kind_phys intent = inout - optional = F [rtmassxy] standard_name = fine_root_mass_content long_name = fine root mass @@ -699,7 +619,6 @@ type = real kind = kind_phys intent = inout - optional = F [woodxy] standard_name = wood_mass_content long_name = wood mass including woody roots @@ -708,7 +627,6 @@ type = real kind = kind_phys intent = inout - optional = F [stblcpxy] standard_name = slow_soil_pool_mass_content_of_carbon long_name = stable carbon in deep soil @@ -717,7 +635,6 @@ type = real kind = kind_phys intent = inout - optional = F [fastcpxy] standard_name = fast_soil_pool_mass_content_of_carbon long_name = short-lived carbon in shallow soil @@ -726,7 +643,6 @@ type = real kind = kind_phys intent = inout - optional = F [smcwtdxy] standard_name = volumetric_soil_moisture_between_soil_bottom_and_water_table long_name = soil water content between the bottom of the soil and the water table @@ -735,7 +651,6 @@ type = real kind = kind_phys intent = inout - optional = F [deeprechxy] standard_name = water_table_recharge_assuming_deep long_name = recharge to or from the water table when deep @@ -744,7 +659,6 @@ type = real kind = kind_phys intent = inout - optional = F [rechxy] standard_name = water_table_recharge_assuming_shallow long_name = recharge to or from the water table when shallow @@ -753,7 +667,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdvis_lnd] standard_name = surface_albedo_direct_visible_over_land long_name = direct surface albedo visible band over land @@ -762,7 +675,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdnir_lnd] standard_name = surface_albedo_direct_NIR_over_land long_name = direct surface albedo NIR band over land @@ -771,7 +683,6 @@ type = real kind = kind_phys intent = inout - optional = F [albivis_lnd] standard_name = surface_albedo_diffuse_visible_over_land long_name = diffuse surface albedo visible band over land @@ -780,7 +691,6 @@ type = real kind = kind_phys intent = inout - optional = F [albinir_lnd] standard_name = surface_albedo_diffuse_NIR_over_land long_name = diffuse surface albedo NIR band over land @@ -789,7 +699,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdvis_ice] standard_name = surface_albedo_direct_visible_over_ice long_name = direct surface albedo visible band over ice @@ -798,7 +707,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdnir_ice] standard_name = surface_albedo_direct_NIR_over_ice long_name = direct surface albedo NIR band over ice @@ -807,7 +715,6 @@ type = real kind = kind_phys intent = inout - optional = F [albivis_ice] standard_name = surface_albedo_diffuse_visible_over_ice long_name = diffuse surface albedo visible band over ice @@ -816,7 +723,6 @@ type = real kind = kind_phys intent = inout - optional = F [albinir_ice] standard_name = surface_albedo_diffuse_NIR_over_ice long_name = diffuse surface albedo NIR band over ice @@ -825,7 +731,6 @@ type = real kind = kind_phys intent = inout - optional = F [emiss_lnd] standard_name = surface_longwave_emissivity_over_land long_name = surface lw emissivity in fraction over land @@ -834,7 +739,6 @@ type = real kind = kind_phys intent = inout - optional = F [emiss_ice] standard_name = surface_longwave_emissivity_over_ice long_name = surface lw emissivity in fraction over ice @@ -843,7 +747,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowxy] standard_name = number_of_snow_layers long_name = number of snow layers @@ -852,7 +755,6 @@ type = real kind = kind_phys intent = inout - optional = F [snicexy] standard_name = lwe_thickness_of_ice_in_surface_snow long_name = snow layer ice @@ -861,7 +763,6 @@ type = real kind = kind_phys intent = inout - optional = F [snliqxy] standard_name = lwe_thickness_of_liquid_water_in_surface_snow long_name = snow layer liquid water @@ -870,7 +771,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsnoxy] standard_name = temperature_in_surface_snow long_name = temperature_in_surface_snow @@ -879,7 +779,6 @@ type = real kind = kind_phys intent = inout - optional = F [smoiseq] standard_name = volumetric_equilibrium_soil_moisture long_name = equilibrium soil water content @@ -888,7 +787,6 @@ type = real kind = kind_phys intent = inout - optional = F [zsnsoxy] standard_name = depth_from_snow_surface_at_bottom_interface long_name = depth from the top of the snow surface at the bottom of the layer @@ -897,7 +795,6 @@ type = real kind = kind_phys intent = inout - optional = F [slc] standard_name = volume_fraction_of_unfrozen_water_in_soil long_name = liquid soil moisture @@ -906,7 +803,6 @@ type = real kind = kind_phys intent = inout - optional = F [smc] standard_name = volume_fraction_of_condensed_water_in_soil long_name = total soil moisture @@ -915,7 +811,6 @@ type = real kind = kind_phys intent = inout - optional = F [stc] standard_name = soil_temperature long_name = soil temperature @@ -924,7 +819,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfcl] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -933,7 +827,6 @@ type = real kind = kind_phys intent = in - optional = F [snowd] standard_name = lwe_surface_snow long_name = water equivalent snow depth @@ -942,7 +835,6 @@ type = real kind = kind_phys intent = in - optional = F [canopy] standard_name = canopy_water_amount long_name = canopy water amount @@ -951,7 +843,6 @@ type = real kind = kind_phys intent = in - optional = F [tg3] standard_name = deep_soil_temperature long_name = deep soil temperature @@ -960,7 +851,6 @@ type = real kind = kind_phys intent = in - optional = F [stype] standard_name = soil_type_classification long_name = soil type for lsm @@ -968,7 +858,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [con_t0c] standard_name = temperature_at_zero_celsius long_name = temperature at 0 degree Celsius @@ -977,7 +866,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -985,7 +873,6 @@ dimensions = () type = logical intent = in - optional = F [nthrds] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available for physics schemes @@ -993,7 +880,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1002,7 +888,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1010,7 +895,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -1024,7 +908,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1032,7 +915,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -1045,7 +927,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = master MPI-rank @@ -1053,7 +934,6 @@ dimensions = () type = integer intent = in - optional = F [cnx] standard_name = number_of_x_points_for_current_cubed_sphere_tile long_name = number of points in x direction for this cubed sphere face @@ -1061,7 +941,6 @@ dimensions = () type = integer intent = in - optional = F [cny] standard_name = number_of_y_points_for_current_cubed_sphere_tile long_name = number of points in y direction for this cubed sphere face @@ -1069,7 +948,6 @@ dimensions = () type = integer intent = in - optional = F [isc] standard_name = starting_x_index_for_this_MPI_rank long_name = starting index in the x direction for this MPI rank @@ -1077,7 +955,6 @@ dimensions = () type = integer intent = in - optional = F [jsc] standard_name = starting_y_index_for_this_MPI_rank long_name = starting index in the y direction for this MPI rank @@ -1085,7 +962,6 @@ dimensions = () type = integer intent = in - optional = F [nrcm] standard_name = number_of_random_numbers long_name = second dimension of random number stream for RAS @@ -1093,7 +969,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_dimension long_name = horizontal dimension @@ -1101,7 +976,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -1109,7 +983,6 @@ dimensions = () type = integer intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -1117,7 +990,6 @@ dimensions = () type = integer intent = in - optional = F [idate] standard_name = date_and_time_at_model_initialization_in_united_states_order long_name = initial date with different size and ordering @@ -1125,7 +997,6 @@ dimensions = (4) type = integer intent = in - optional = F [nsswr] standard_name = number_of_timesteps_between_shortwave_radiation_calls long_name = number of timesteps between shortwave radiation calls @@ -1133,7 +1004,6 @@ dimensions = () type = integer intent = in - optional = F [fhswr] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -1142,7 +1012,6 @@ type = real kind = kind_phys intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -1150,7 +1019,6 @@ dimensions = () type = logical intent = in - optional = F [fhour] standard_name = forecast_time long_name = current forecast time @@ -1159,7 +1027,6 @@ type = real kind = kind_phys intent = in - optional = F [imfdeepcnv] standard_name = control_for_deep_convection_scheme long_name = flag for mass-flux deep convection scheme @@ -1167,7 +1034,6 @@ dimensions = () type = integer intent = in - optional = F [cal_pre] standard_name = flag_for_dominant_precipitation_type_partition long_name = flag controls precip type algorithm @@ -1175,7 +1041,6 @@ dimensions = () type = logical intent = in - optional = F [random_clds] standard_name = flag_for_random_clouds_for_RAS long_name = flag for using random clouds with the RAS scheme @@ -1183,7 +1048,6 @@ dimensions = () type = logical intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -1191,7 +1055,6 @@ dimensions = () type = integer intent = in - optional = F [h2o_phys] standard_name = flag_for_stratospheric_water_vapor_physics long_name = flag for stratospheric water vapor physics @@ -1199,7 +1062,6 @@ dimensions = () type = logical intent = in - optional = F [iaerclm] standard_name = flag_for_aerosol_input_MG_radiation long_name = flag for using aerosols in Morrison-Gettelman MP_radiation @@ -1207,7 +1069,6 @@ dimensions = () type = logical intent = in - optional = F [iccn] standard_name = control_for_ice_cloud_condensation_nuclei_forcing long_name = flag for IN and CCN forcing for morrison gettelman microphysics @@ -1215,7 +1076,6 @@ dimensions = () type = integer intent = in - optional = F [clstp] standard_name = control_for_convective_cloud_diagnostics long_name = index used by cnvc90 (for convective clouds) @@ -1224,7 +1084,6 @@ type = real kind = kind_phys intent = out - optional = F [jindx1_o3] standard_name = lower_latitude_index_of_ozone_forcing_for_interpolation long_name = interpolation low index for ozone @@ -1232,7 +1091,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jindx2_o3] standard_name = upper_latitude_index_of_ozone_forcing_for_interpolation long_name = interpolation high index for ozone @@ -1240,7 +1098,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddy_o3] standard_name = latitude_interpolation_weight_for_ozone_forcing long_name = interpolation high index for ozone @@ -1249,7 +1106,6 @@ type = real kind = kind_phys intent = in - optional = F [ozpl] standard_name = ozone_forcing long_name = ozone forcing data @@ -1258,7 +1114,6 @@ type = real kind = kind_phys intent = inout - optional = F [jindx1_h] standard_name = lower_latitude_index_of_stratospheric_water_vapor_forcing_for_interpolation long_name = interpolation low index for stratospheric water vapor @@ -1266,7 +1121,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jindx2_h] standard_name = upper_latitude_index_of_stratospheric_water_vapor_forcing_for_interpolation long_name = interpolation high index for stratospheric water vapor @@ -1274,7 +1128,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddy_h] standard_name = latitude_interpolation_weight_for_stratospheric_water_vapor_forcing long_name = interpolation high index for stratospheric water vapor @@ -1283,7 +1136,6 @@ type = real kind = kind_phys intent = in - optional = F [h2opl] standard_name = stratospheric_water_vapor_forcing long_name = water forcing data @@ -1292,7 +1144,6 @@ type = real kind = kind_phys intent = inout - optional = F [jindx1_aer] standard_name = lower_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the y direction @@ -1300,7 +1151,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jindx2_aer] standard_name = upper_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation high index for prescribed aerosols in the y direction @@ -1308,7 +1158,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddy_aer] standard_name = latitude_interpolation_weight_for_aerosol_forcing long_name = interpolation high index for prescribed aerosols in the y direction @@ -1317,7 +1166,6 @@ type = real kind = kind_phys intent = in - optional = F [iindx1_aer] standard_name = lower_longitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the x direction @@ -1325,7 +1173,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [iindx2_aer] standard_name = upper_longitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation high index for prescribed aerosols in the x direction @@ -1333,7 +1180,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddx_aer] standard_name = longitude_interpolation_weight_for_aerosol_forcing long_name = interpolation high index for prescribed aerosols in the x direction @@ -1342,7 +1188,6 @@ type = real kind = kind_phys intent = in - optional = F [aer_nm] standard_name = mass_number_concentration_of_aerosol_from_gocart_climatology long_name = GOCART aerosol climatology number concentration @@ -1351,7 +1196,6 @@ type = real kind = kind_phys intent = inout - optional = F [jindx1_ci] standard_name = lower_latitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation low index for ice and cloud condensation nuclei in the y direction @@ -1359,7 +1203,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jindx2_ci] standard_name = upper_latitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation high index for ice and cloud condensation nuclei in the y direction @@ -1367,7 +1210,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddy_ci] standard_name = latitude_interpolation_weight_for_cloud_nuclei_forcing long_name = interpolation high index for ice and cloud condensation nuclei in the y direction @@ -1376,7 +1218,6 @@ type = real kind = kind_phys intent = in - optional = F [iindx1_ci] standard_name = lower_longitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation low index for ice and cloud condensation nuclei in the x direction @@ -1384,7 +1225,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [iindx2_ci] standard_name = upper_longitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation high index for ice and cloud condensation nuclei in the x direction @@ -1392,7 +1232,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddx_ci] standard_name = longitude_interpolation_weight_for_cloud_nuclei_forcing long_name = interpolation high index for ice and cloud condensation nuclei in the x direction @@ -1401,7 +1240,6 @@ type = real kind = kind_phys intent = in - optional = F [in_nm] standard_name = ice_nucleation_number_from_climatology long_name = ice nucleation number in MG MP @@ -1410,7 +1248,6 @@ type = real kind = kind_phys intent = inout - optional = F [ccn_nm] standard_name = tendency_of_activated_cloud_condensation_nuclei_from_climatology long_name = tendency of ccn activated number @@ -1419,7 +1256,6 @@ type = real kind = kind_phys intent = inout - optional = F [imap] standard_name = map_of_block_column_number_to_global_i_index long_name = map of local index ix to global index i for this block @@ -1427,7 +1263,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jmap] standard_name = map_of_block_column_number_to_global_j_index long_name = map of local index ix to global index j for this block @@ -1435,7 +1270,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -1444,7 +1278,6 @@ type = real kind = kind_phys intent = in - optional = F [seed0] standard_name = seed_random_numbers_RAS long_name = random number seed for the RAS scheme @@ -1452,7 +1285,6 @@ dimensions = () type = integer intent = in - optional = F [rann] standard_name = random_number long_name = random number array (0-1) @@ -1461,7 +1293,6 @@ type = real kind = kind_phys intent = inout - optional = F [do_ugwp_v1] standard_name = flag_for_ugwp_version_1 long_name = flag to activate ver 1 CIRES UGWP @@ -1469,7 +1300,6 @@ dimensions = () type = logical intent = in - optional = F [jindx1_tau] standard_name = lower_latitude_index_of_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag_for_interpolation long_name = index1 for weight1 for tau NGWs @@ -1477,7 +1307,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jindx2_tau] standard_name = upper_latitude_index_of_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag_for_interpolation long_name = index2 for weight2 for tau NGWs @@ -1485,7 +1314,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [ddy_j1tau] standard_name = latitude_interpolation_weight_complement_for_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag long_name = interpolation weight1 for tau NGWs @@ -1494,7 +1322,6 @@ type = real intent = in kind = kind_phys - optional = F [ddy_j2tau] standard_name = latitude_interpolation_weight_for_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag long_name = interpolation weight2 for tau NGWs @@ -1503,7 +1330,6 @@ type = real intent = in kind = kind_phys - optional = F [tau_amf] standard_name = absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag long_name = ngw_absolute_momentum_flux @@ -1512,7 +1338,6 @@ type = real kind = kind_phys intent = inout - optional = F [nthrds] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available for physics schemes @@ -1520,7 +1345,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1529,7 +1353,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1537,7 +1360,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -1551,7 +1373,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1559,4 +1380,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rad_time_vary.fv3.meta b/physics/GFS_rad_time_vary.fv3.meta index 6d0833fa7..8a4938667 100644 --- a/physics/GFS_rad_time_vary.fv3.meta +++ b/physics/GFS_rad_time_vary.fv3.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [isubc_lw] standard_name = flag_for_lw_clouds_sub_grid_approximation long_name = flag for lw clouds sub-grid approximation @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [isubc_sw] standard_name = flag_for_sw_clouds_grid_approximation long_name = flag for sw clouds sub-grid approximation @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [icsdsw] standard_name = random_number_seed_for_mcica_shortwave long_name = random seeds for sub-column cloud generators sw @@ -46,7 +42,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [icsdlw] standard_name = random_number_seed_for_mcica_longwave long_name = random seeds for sub-column cloud generators lw @@ -54,7 +49,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [cnx] standard_name = number_of_x_points_for_current_cubed_sphere_tile long_name = number of points in x direction for this cubed sphere face @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [cny] standard_name = number_of_y_points_for_current_cubed_sphere_tile long_name = number of points in y direction for this cubed sphere face @@ -70,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [isc] standard_name = starting_x_index_for_this_MPI_rank long_name = starting index in the x direction for this MPI rank @@ -78,7 +70,6 @@ dimensions = () type = integer intent = in - optional = F [jsc] standard_name = starting_y_index_for_this_MPI_rank long_name = starting index in the y direction for this MPI rank @@ -86,7 +77,6 @@ dimensions = () type = integer intent = in - optional = F [imap] standard_name = map_of_block_column_number_to_global_i_index long_name = map of local index ix to global index i for this block @@ -94,7 +84,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jmap] standard_name = map_of_block_column_number_to_global_j_index long_name = map of local index ix to global index j for this block @@ -102,7 +91,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [sec] standard_name = forecast_time_in_seconds long_name = seconds elapsed since model initialization @@ -111,7 +99,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -119,7 +106,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -127,7 +113,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr] standard_name = identifier_for_zhao_carr_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme @@ -135,7 +120,6 @@ dimensions = () type = integer intent = in - optional = F [ps_2delt] standard_name = surface_air_pressure_two_timesteps_back long_name = surface air pressure two timesteps back @@ -144,7 +128,6 @@ type = real kind = kind_phys intent = inout - optional = F [ps_1delt] standard_name = surface_air_pressure_on_previous_timestep long_name = surface air pressure at previous timestep @@ -153,7 +136,6 @@ type = real kind = kind_phys intent = inout - optional = F [t_2delt] standard_name = air_temperature_two_timesteps_back long_name = air temperature two timesteps back @@ -162,7 +144,6 @@ type = real kind = kind_phys intent = inout - optional = F [t_1delt] standard_name = air_temperature_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = air temperature at previous timestep @@ -171,7 +152,6 @@ type = real kind = kind_phys intent = inout - optional = F [qv_2delt] standard_name = specific_humidity_two_timesteps_back long_name = water vapor specific humidity two timesteps back @@ -180,7 +160,6 @@ type = real kind = kind_phys intent = inout - optional = F [qv_1delt] standard_name = specific_humidity_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = water vapor specific humidity at previous timestep @@ -189,7 +168,6 @@ type = real kind = kind_phys intent = inout - optional = F [t] standard_name = air_temperature long_name = model layer mean temperature @@ -198,7 +176,6 @@ type = real kind = kind_phys intent = in - optional = F [qv] standard_name = specific_humidity long_name = water vapor specific humidity @@ -207,7 +184,6 @@ type = real kind = kind_phys intent = in - optional = F [ps] standard_name = air_pressure_at_lowest_model_interface long_name = air pressure at lowest model interface @@ -216,7 +192,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -225,7 +200,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -233,5 +207,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rad_time_vary.scm.meta b/physics/GFS_rad_time_vary.scm.meta index 6d0833fa7..8a4938667 100644 --- a/physics/GFS_rad_time_vary.scm.meta +++ b/physics/GFS_rad_time_vary.scm.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [isubc_lw] standard_name = flag_for_lw_clouds_sub_grid_approximation long_name = flag for lw clouds sub-grid approximation @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [isubc_sw] standard_name = flag_for_sw_clouds_grid_approximation long_name = flag for sw clouds sub-grid approximation @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [icsdsw] standard_name = random_number_seed_for_mcica_shortwave long_name = random seeds for sub-column cloud generators sw @@ -46,7 +42,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [icsdlw] standard_name = random_number_seed_for_mcica_longwave long_name = random seeds for sub-column cloud generators lw @@ -54,7 +49,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [cnx] standard_name = number_of_x_points_for_current_cubed_sphere_tile long_name = number of points in x direction for this cubed sphere face @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [cny] standard_name = number_of_y_points_for_current_cubed_sphere_tile long_name = number of points in y direction for this cubed sphere face @@ -70,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [isc] standard_name = starting_x_index_for_this_MPI_rank long_name = starting index in the x direction for this MPI rank @@ -78,7 +70,6 @@ dimensions = () type = integer intent = in - optional = F [jsc] standard_name = starting_y_index_for_this_MPI_rank long_name = starting index in the y direction for this MPI rank @@ -86,7 +77,6 @@ dimensions = () type = integer intent = in - optional = F [imap] standard_name = map_of_block_column_number_to_global_i_index long_name = map of local index ix to global index i for this block @@ -94,7 +84,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [jmap] standard_name = map_of_block_column_number_to_global_j_index long_name = map of local index ix to global index j for this block @@ -102,7 +91,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [sec] standard_name = forecast_time_in_seconds long_name = seconds elapsed since model initialization @@ -111,7 +99,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -119,7 +106,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -127,7 +113,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr] standard_name = identifier_for_zhao_carr_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme @@ -135,7 +120,6 @@ dimensions = () type = integer intent = in - optional = F [ps_2delt] standard_name = surface_air_pressure_two_timesteps_back long_name = surface air pressure two timesteps back @@ -144,7 +128,6 @@ type = real kind = kind_phys intent = inout - optional = F [ps_1delt] standard_name = surface_air_pressure_on_previous_timestep long_name = surface air pressure at previous timestep @@ -153,7 +136,6 @@ type = real kind = kind_phys intent = inout - optional = F [t_2delt] standard_name = air_temperature_two_timesteps_back long_name = air temperature two timesteps back @@ -162,7 +144,6 @@ type = real kind = kind_phys intent = inout - optional = F [t_1delt] standard_name = air_temperature_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = air temperature at previous timestep @@ -171,7 +152,6 @@ type = real kind = kind_phys intent = inout - optional = F [qv_2delt] standard_name = specific_humidity_two_timesteps_back long_name = water vapor specific humidity two timesteps back @@ -180,7 +160,6 @@ type = real kind = kind_phys intent = inout - optional = F [qv_1delt] standard_name = specific_humidity_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = water vapor specific humidity at previous timestep @@ -189,7 +168,6 @@ type = real kind = kind_phys intent = inout - optional = F [t] standard_name = air_temperature long_name = model layer mean temperature @@ -198,7 +176,6 @@ type = real kind = kind_phys intent = in - optional = F [qv] standard_name = specific_humidity long_name = water vapor specific humidity @@ -207,7 +184,6 @@ type = real kind = kind_phys intent = in - optional = F [ps] standard_name = air_pressure_at_lowest_model_interface long_name = air pressure at lowest model interface @@ -216,7 +192,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -225,7 +200,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -233,5 +207,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_radiation_surface.meta b/physics/GFS_radiation_surface.meta index 6b8fb1e18..a4f66d84b 100644 --- a/physics/GFS_radiation_surface.meta +++ b/physics/GFS_radiation_surface.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [sfcalb] standard_name = surface_albedo_components long_name = surface albedo IR/UV/VIS components @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [ialb] standard_name = control_for_surface_albedo long_name = flag for using climatology alb, based on sfc type @@ -31,7 +29,6 @@ dimensions = () type = integer intent = in - optional = F [iems] standard_name = control_for_surface_emissivity long_name = surface emissivity control flag, use fixed value of 1 @@ -39,7 +36,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -48,7 +44,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -56,7 +51,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -69,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [frac_grid] standard_name = flag_for_fractional_landmask long_name = flag for fractional grid @@ -77,7 +70,6 @@ dimensions = () type = logical intent = in - optional = F [lslwr] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -85,7 +77,6 @@ dimensions = () type = logical intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -93,7 +84,6 @@ dimensions = () type = logical intent = in - optional = F [lsm] standard_name = control_for_land_surface_scheme long_name = flag for land surface model @@ -101,7 +91,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model @@ -109,7 +98,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model @@ -117,7 +105,6 @@ dimensions = () type = integer intent = in - optional = F [xlat] standard_name = latitude long_name = latitude @@ -126,7 +113,6 @@ type = real kind = kind_phys intent = in - optional = F [xlon] standard_name = longitude long_name = longitude @@ -135,7 +121,6 @@ type = real kind = kind_phys intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -144,7 +129,6 @@ type = real kind = kind_phys intent = in - optional = F [lndp_type] standard_name = control_for_stochastic_land_surface_perturbation long_name = index for stochastic land surface perturbations type @@ -152,7 +136,6 @@ dimensions = () type = integer intent = in - optional = F [n_var_lndp] standard_name = number_of_perturbed_land_surface_variables long_name = number of land surface variables perturbed @@ -160,7 +143,6 @@ dimensions = () type = integer intent = in - optional = F [sfc_alb_pert] standard_name = surface_albedo_perturbation long_name = surface albedo perturbation @@ -169,7 +151,6 @@ type = real kind = kind_phys intent = in - optional = F [lndp_var_list] standard_name = land_surface_perturbation_variables long_name = variables to be perturbed for landperts @@ -178,7 +159,6 @@ type = character kind = len=3 intent = in - optional = F [lndp_prt_list] standard_name = land_surface_perturbation_magnitudes long_name = magnitude of perturbations for landperts @@ -187,7 +167,6 @@ type = real kind = kind_phys intent = in - optional = F [landfrac] standard_name = land_area_fraction long_name = fraction of horizontal grid area occupied by land @@ -196,7 +175,6 @@ type = real kind = kind_phys intent = in - optional = F [snowd] standard_name = lwe_surface_snow long_name = water equivalent snow depth @@ -205,7 +183,6 @@ type = real kind = kind_phys intent = in - optional = F [sncovr] standard_name = surface_snow_area_fraction_over_land long_name = surface snow area fraction @@ -214,7 +191,6 @@ type = real kind = kind_phys intent = in - optional = F [sncovr_ice] standard_name = surface_snow_area_fraction_over_ice long_name = surface snow area fraction over ice @@ -223,7 +199,6 @@ type = real kind = kind_phys intent = in - optional = F [fice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -232,7 +207,6 @@ type = real kind = kind_phys intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length @@ -241,7 +215,6 @@ type = real kind = kind_phys intent = in - optional = F [hprime] standard_name = standard_deviation_of_subgrid_orography long_name = standard deviation of subgrid height_above_mean_sea_level @@ -250,7 +223,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfg] standard_name = surface_ground_temperature_for_radiation long_name = surface ground temperature for radiation @@ -259,7 +231,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfa] standard_name = surface_air_temperature_for_radiation long_name = lowest model layer air temperature for radiation @@ -268,7 +239,6 @@ type = real kind = kind_phys intent = in - optional = F [tisfc] standard_name = sea_ice_temperature long_name = sea ice surface skin temperature @@ -277,7 +247,6 @@ type = real kind = kind_phys intent = in - optional = F [coszen] standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep long_name = mean cos of zenith angle over rad call period @@ -286,7 +255,6 @@ type = real kind = kind_phys intent = in - optional = F [min_seaice] standard_name = min_sea_ice_area_fraction long_name = minimum sea ice value @@ -295,7 +263,6 @@ type = real kind = kind_phys intent = in - optional = F [min_lakeice] standard_name = min_lake_ice_area_fraction long_name = minimum lake ice value @@ -304,7 +271,6 @@ type = real kind = kind_phys intent = in - optional = F [lakefrac] standard_name = lake_area_fraction long_name = fraction of horizontal grid area occupied by lake @@ -313,7 +279,6 @@ type = real kind = kind_phys intent = in - optional = F [alvsf] standard_name = vis_albedo_strong_cosz long_name = mean vis albedo with strong cosz dependency @@ -322,7 +287,6 @@ type = real kind = kind_phys intent = in - optional = F [alnsf] standard_name = nir_albedo_strong_cosz long_name = mean nir albedo with strong cosz dependency @@ -331,7 +295,6 @@ type = real kind = kind_phys intent = in - optional = F [alvwf] standard_name = vis_albedo_weak_cosz long_name = mean vis albedo with weak cosz dependency @@ -340,7 +303,6 @@ type = real kind = kind_phys intent = in - optional = F [alnwf] standard_name = nir_albedo_weak_cosz long_name = mean nir albedo with weak cosz dependency @@ -349,7 +311,6 @@ type = real kind = kind_phys intent = in - optional = F [facsf] standard_name =strong_cosz_area_fraction long_name = fractional coverage with strong cosz dependency @@ -358,7 +319,6 @@ type = real kind = kind_phys intent = in - optional = F [facwf] standard_name = weak_cosz_area_fraction long_name = fractional coverage with weak cosz dependency @@ -367,7 +327,6 @@ type = real kind = kind_phys intent = in - optional = F [semis_lnd] standard_name = surface_longwave_emissivity_over_land long_name = surface lw emissivity in fraction over land @@ -376,7 +335,6 @@ type = real kind = kind_phys intent = in - optional = F [semis_ice] standard_name = surface_longwave_emissivity_over_ice long_name = surface lw emissivity in fraction over ice @@ -385,7 +343,6 @@ type = real kind = kind_phys intent = in - optional = F [snoalb] standard_name = upper_bound_of_max_albedo_assuming_deep_snow long_name = maximum snow albedo @@ -394,7 +351,6 @@ type = real kind = kind_phys intent = in - optional = F [use_cice_alb] standard_name = flag_for_cice_albedo long_name = flag for using ice albedos form CICE when coupled (default on) @@ -402,7 +358,6 @@ dimensions = () type = logical intent = in - optional = F [albdvis_lnd] standard_name = surface_albedo_direct_visible_over_land long_name = direct surface albedo visible band over land @@ -411,7 +366,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdnir_lnd] standard_name = surface_albedo_direct_NIR_over_land long_name = direct surface albedo NIR band over land @@ -420,7 +374,6 @@ type = real kind = kind_phys intent = inout - optional = F [albivis_lnd] standard_name = surface_albedo_diffuse_visible_over_land long_name = diffuse surface albedo visible band over land @@ -429,7 +382,6 @@ type = real kind = kind_phys intent = inout - optional = F [albinir_lnd] standard_name = surface_albedo_diffuse_NIR_over_land long_name = diffuse surface albedo NIR band over land @@ -438,7 +390,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdvis_ice] standard_name = surface_albedo_direct_visible_over_ice long_name = direct surface albedo visible band over ice @@ -447,7 +398,6 @@ type = real kind = kind_phys intent = in - optional = F [albdnir_ice] standard_name = surface_albedo_direct_NIR_over_ice long_name = direct surface albedo NIR band over ice @@ -456,7 +406,6 @@ type = real kind = kind_phys intent = in - optional = F [albivis_ice] standard_name = surface_albedo_diffuse_visible_over_ice long_name = diffuse surface albedo visible band over ice @@ -465,7 +414,6 @@ type = real kind = kind_phys intent = in - optional = F [albinir_ice] standard_name = surface_albedo_diffuse_NIR_over_ice long_name = diffuse surface albedo NIR band over ice @@ -474,7 +422,6 @@ type = real kind = kind_phys intent = in - optional = F [semisbase] standard_name = baseline_surface_longwave_emissivity long_name = baseline surface lw emissivity in fraction @@ -483,7 +430,6 @@ type = real kind = kind_phys intent = inout - optional = F [semis] standard_name = surface_longwave_emissivity long_name = surface lw emissivity in fraction @@ -492,7 +438,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcalb] standard_name = surface_albedo_components long_name = surface albedo IR/UV/VIS components @@ -501,7 +446,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfc_alb_dif] standard_name = surface_albedo_for_diffused_shortwave_on_radiation_timestep long_name = mean surface diffused sw albedo @@ -510,7 +454,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -519,7 +462,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -527,4 +469,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmg_post.meta b/physics/GFS_rrtmg_post.meta index 6564f5025..0de8b7907 100644 --- a/physics/GFS_rrtmg_post.meta +++ b/physics/GFS_rrtmg_post.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [kmp1] standard_name = vertical_interface_dimension long_name = number of vertical levels plus one @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [lm] standard_name = vertical_dimension_for_radiation long_name = number of vertical layers for radiation calculation @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [ltp] standard_name = extra_top_layer long_name = extra top layers @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [kt] standard_name = vertical_index_difference_between_layer_and_upper_bound long_name = vertical index difference between layer and upper bound @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [kb] standard_name = vertical_index_difference_between_layer_and_lower_bound long_name = vertical index difference between layer and lower bound @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [kd] standard_name = vertical_index_difference_between_inout_and_local long_name = vertical index difference between in/out and local @@ -70,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [nspc1] standard_name = number_of_species_for_aerosol_optical_depth long_name = number of species for output aerosol optical depth plus total @@ -78,7 +70,6 @@ dimensions = () type = integer intent = in - optional = F [nfxr] standard_name = number_of_diagnostics_variables_for_radiation long_name = number of variables stored in the fluxr array @@ -86,7 +77,6 @@ dimensions = () type = integer intent = in - optional = F [nday] standard_name = daytime_points_dimension long_name = daytime points dimension @@ -94,7 +84,6 @@ dimensions = () type = integer intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -102,7 +91,6 @@ dimensions = () type = logical intent = in - optional = F [lslwr] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -110,7 +98,6 @@ dimensions = () type = logical intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -118,7 +105,6 @@ dimensions = () type = logical intent = in - optional = F [fhlwr] standard_name = period_of_longwave_radiation_calls long_name = frequency for longwave radiation @@ -127,7 +113,6 @@ type = real kind = kind_phys intent = in - optional = F [fhswr] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -136,7 +121,6 @@ type = real kind = kind_phys intent = in - optional = F [raddt] standard_name = time_step_for_radiation long_name = radiation time step @@ -145,7 +129,6 @@ type = real kind = kind_phys intent = in - optional = F [coszen] standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep long_name = mean cos of zenith angle over rad call period @@ -154,7 +137,6 @@ type = real kind = kind_phys intent = in - optional = F [coszdg] standard_name = cosine_of_solar_zenith_angle_on_radiation_timestep long_name = daytime mean cosz over rad call period @@ -163,7 +145,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -172,7 +153,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -181,7 +161,6 @@ type = real kind = kind_phys intent = in - optional = F [aerodp] standard_name = atmosphere_optical_thickness_due_to_ambient_aerosol_particles long_name = vertical integrated optical depth for various aerosol species @@ -190,7 +169,6 @@ type = real kind = kind_phys intent = in - optional = F [cldsa] standard_name = cloud_area_fraction_for_radiation long_name = fraction of clouds for low, middle, high, total and BL @@ -199,7 +177,6 @@ type = real kind = kind_phys intent = in - optional = F [mtopa] standard_name = model_layer_number_at_cloud_top long_name = vertical indices for low, middle and high cloud tops @@ -207,7 +184,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = in - optional = F [mbota] standard_name = model_layer_number_at_cloud_base long_name = vertical indices for low, middle and high cloud bases @@ -215,7 +191,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = in - optional = F [clouds1] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -224,7 +199,6 @@ type = real kind = kind_phys intent = in - optional = F [cldtaulw] standard_name = cloud_optical_depth_layers_at_10mu_band long_name = approx 10mu band layer cloud optical depth @@ -233,7 +207,6 @@ type = real kind = kind_phys intent = in - optional = F [cldtausw] standard_name = cloud_optical_depth_layers_at_0p55mu_band long_name = approx .55mu band layer cloud optical depth @@ -242,7 +215,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcflw] standard_name = surface_lw_fluxes_assuming_total_and_clear_sky_on_radiation_timestep long_name = lw radiation fluxes at sfc @@ -250,7 +222,6 @@ dimensions = (horizontal_loop_extent) type = sfcflw_type intent = in - optional = F [sfcfsw] standard_name = surface_sw_fluxes_assuming_total_and_clear_sky_on_radiation_timestep long_name = sw radiation fluxes at sfc @@ -258,7 +229,6 @@ dimensions = (horizontal_loop_extent) type = sfcfsw_type intent = in - optional = F [topflw] standard_name = lw_fluxes_top_atmosphere long_name = lw radiation fluxes at top @@ -266,7 +236,6 @@ dimensions = (horizontal_loop_extent) type = topflw_type intent = in - optional = F [topfsw] standard_name = sw_fluxes_top_atmosphere long_name = sw radiation fluxes at toa @@ -274,7 +243,6 @@ dimensions = (horizontal_loop_extent) type = topfsw_type intent = in - optional = F [scmpsw] standard_name = components_of_surface_downward_shortwave_fluxes long_name = derived type for special components of surface downward shortwave fluxes @@ -282,7 +250,6 @@ dimensions = (horizontal_loop_extent) type = cmpfsw_type intent = in - optional = F [fluxr] standard_name = cumulative_radiation_diagnostic long_name = time-accumulated 2D radiation-related diagnostic fields @@ -291,7 +258,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -300,7 +266,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -308,4 +273,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmg_pre.meta b/physics/GFS_rrtmg_pre.meta index 48ddc586d..09ed62f7c 100644 --- a/physics/GFS_rrtmg_pre.meta +++ b/physics/GFS_rrtmg_pre.meta @@ -16,7 +16,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -24,7 +23,6 @@ dimensions = () type = integer intent = in - optional = F [lm] standard_name = vertical_dimension_for_radiation long_name = number of vertical layers for radiation calculation @@ -32,7 +30,6 @@ dimensions = () type = integer intent = in - optional = F [lmk] standard_name = adjusted_vertical_layer_dimension_for_radiation long_name = number of vertical layers for radiation @@ -40,7 +37,6 @@ dimensions = () type = integer intent = in - optional = F [lmp] standard_name = adjusted_vertical_level_dimension_for_radiation long_name = number of vertical levels for radiation @@ -48,7 +44,6 @@ dimensions = () type = integer intent = in - optional = F [n_var_lndp] standard_name = number_of_perturbed_land_surface_variables long_name = number of land surface variables perturbed @@ -56,7 +51,6 @@ dimensions = () type = integer intent = in - optional = F [imfdeepcnv] standard_name = control_for_deep_convection_scheme long_name = flag for mass-flux deep convection scheme @@ -64,7 +58,6 @@ dimensions = () type = integer intent = in - optional = F [imfdeepcnv_gf] standard_name = identifier_for_grell_freitas_deep_convection long_name = flag for Grell-Freitas deep convection scheme @@ -72,7 +65,6 @@ dimensions = () type = integer intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -80,7 +72,6 @@ dimensions = () type = integer intent = in - optional = F [ncnd] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -88,7 +79,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -96,7 +86,6 @@ dimensions = () type = integer intent = in - optional = F [num_p3d] standard_name = number_of_microphysics_variables_in_xyz_dimensioned_restart_array long_name = number of 3D arrays needed for microphysics @@ -104,7 +93,6 @@ dimensions = () type = integer intent = in - optional = F [npdf3d] standard_name = number_of_pdf_based_variables_in_xyz_dimensioned_restart_array long_name = number of 3d arrays associated with pdf based clouds/mp @@ -112,7 +100,6 @@ dimensions = () type = integer intent = in - optional = F [ncnvcld3d] standard_name = number_of_convective_cloud_variables_in_xyz_dimensioned_restart_array long_name = number of convective 3d clouds fields @@ -120,7 +107,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -128,7 +114,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -136,7 +121,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -144,7 +128,6 @@ dimensions = () type = integer intent = in - optional = F [ntlnc] standard_name = index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array long_name = tracer index for liquid number concentration @@ -152,7 +135,6 @@ dimensions = () type = integer intent = in - optional = F [ntinc] standard_name = index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array long_name = tracer index for ice number concentration @@ -160,7 +142,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -168,7 +149,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -176,7 +156,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -184,7 +163,6 @@ dimensions = () type = integer intent = in - optional = F [ntwa] standard_name = index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array long_name = tracer index for water friendly aerosol @@ -192,7 +170,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -200,7 +177,6 @@ dimensions = () type = integer intent = in - optional = F [ntclamt] standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer @@ -208,7 +184,6 @@ dimensions = () type = integer intent = in - optional = F [nleffr] standard_name = index_of_cloud_liquid_water_effective_radius_in_xyz_dimensioned_restart_array long_name = the index of cloud liquid water effective radius in phy_f3d @@ -216,7 +191,6 @@ dimensions = () type = integer intent = in - optional = F [nieffr] standard_name = index_of_cloud_ice_effective_radius_in_xyz_dimensioned_restart_array long_name = the index of ice effective radius in phy_f3d @@ -224,7 +198,6 @@ dimensions = () type = integer intent = in - optional = F [nseffr] standard_name = index_of_snow_effective_radius_in_xyz_dimensioned_restart_array long_name = the index of snow effective radius in phy_f3d @@ -232,7 +205,6 @@ dimensions = () type = integer intent = in - optional = F [lndp_type] standard_name = control_for_stochastic_land_surface_perturbation long_name = index for stochastic land surface perturbations type @@ -240,7 +212,6 @@ dimensions = () type = integer intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -248,7 +219,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -256,7 +226,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -264,7 +233,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -272,7 +240,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr] standard_name = identifier_for_zhao_carr_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme @@ -280,7 +247,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr_pdf] standard_name = identifier_for_zhao_carr_pdf_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme with PDF clouds @@ -288,7 +254,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -296,7 +261,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_wsm6] standard_name = identifier_for_wsm6_microphysics_scheme long_name = choice of WSM6 microphysics scheme @@ -304,7 +268,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_fer_hires] standard_name = identifier_for_fer_hires_microphysics_scheme long_name = choice of Ferrier-Aligo microphysics scheme @@ -312,7 +275,6 @@ dimensions = () type = integer intent = in - optional = F [julian] standard_name = forecast_julian_day long_name = julian day @@ -321,7 +283,6 @@ type = real kind = kind_phys intent = in - optional = F [yearlen] standard_name = number_of_days_in_current_year long_name = number of days in a year @@ -329,7 +290,6 @@ dimensions = () type = integer intent = in - optional = F [lndp_var_list] standard_name = land_surface_perturbation_variables long_name = variables to be perturbed for landperts @@ -338,7 +298,6 @@ type = character kind = len=3 intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -346,7 +305,6 @@ dimensions = () type = logical intent = in - optional = F [lslwr] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -354,7 +312,6 @@ dimensions = () type = logical intent = in - optional = F [ltaerosol] standard_name = flag_for_aerosol_physics long_name = flag for aerosol physics @@ -362,7 +319,6 @@ dimensions = () type = logical intent = in - optional = F [lgfdlmprad] standard_name = flag_for_GFDL_microphysics_radiation_interaction long_name = flag for GFDL microphysics-radiation interaction @@ -370,7 +326,6 @@ dimensions = () type = logical intent = in - optional = F [uni_cld] standard_name = flag_for_shoc_cloud_area_fraction_for_radiation long_name = flag for uni_cld @@ -378,7 +333,6 @@ dimensions = () type = logical intent = in - optional = F [effr_in] standard_name = flag_for_cloud_effective_radii long_name = flag for cloud effective radii calculations in GFDL microphysics @@ -386,7 +340,6 @@ dimensions = () type = logical intent = in - optional = F [do_mynnedmf] standard_name = flag_for_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate MYNN-EDMF @@ -394,7 +347,6 @@ dimensions = () type = logical intent = in - optional = F [lmfshal] standard_name = flag_for_cloud_area_fraction_option_for_radiation long_name = flag for lmfshal @@ -402,7 +354,6 @@ dimensions = () type = logical intent = in - optional = F [lmfdeep2] standard_name = flag_for_scale_aware_mass_flux_deep_convection_for_radiation long_name = flag for some scale-aware mass-flux convection scheme active @@ -410,7 +361,6 @@ dimensions = () type = logical intent = in - optional = F [fhswr] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -419,7 +369,6 @@ type = real kind = kind_phys intent = in - optional = F [fhlwr] standard_name = period_of_longwave_radiation_calls long_name = frequency for longwave radiation @@ -428,7 +377,6 @@ type = real kind = kind_phys intent = in - optional = F [solhr] standard_name = forecast_utc_hour long_name = time in hours after 00z at the current timestep @@ -437,7 +385,6 @@ type = real kind = kind_phys intent = in - optional = F [sup] standard_name = tunable_parameter_for_ice_supersaturation long_name = ice supersaturation parameter for PDF clouds @@ -446,7 +393,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -455,7 +401,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -464,7 +409,6 @@ type = real kind = kind_phys intent = in - optional = F [fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -473,7 +417,6 @@ type = real kind = kind_phys intent = in - optional = F [rog] standard_name = ratio_of_gas_constant_dry_air_to_gravitational_acceleration long_name = (rd/g) @@ -482,7 +425,6 @@ type = real kind = kind_phys intent = in - optional = F [rocp] standard_name = ratio_of_gas_constant_dry_air_to_specific_heat_of_dry_air_at_constant_pressure long_name = (rd/cp) @@ -491,7 +433,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -500,7 +441,6 @@ type = real kind = kind_phys intent = in - optional = F [xlat_d] standard_name = latitude_in_degree long_name = latitude in degree north @@ -509,7 +449,6 @@ type = real kind = kind_phys intent = in - optional = F [xlat] standard_name = latitude long_name = latitude @@ -518,7 +457,6 @@ type = real kind = kind_phys intent = in - optional = F [xlon] standard_name = longitude long_name = longitude @@ -527,7 +465,6 @@ type = real kind = kind_phys intent = in - optional = F [coslat] standard_name = cosine_of_latitude long_name = cosine of latitude @@ -536,7 +473,6 @@ type = real kind = kind_phys intent = in - optional = F [sinlat] standard_name = sine_of_latitude long_name = sine of latitude @@ -545,7 +481,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -554,7 +489,6 @@ type = real kind = kind_phys intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -563,7 +497,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -572,7 +505,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -581,7 +513,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers @@ -590,7 +521,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -599,7 +529,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_wts] standard_name = surface_stochastic_weights_from_coupled_process long_name = weights for stochastic surface physics perturbation @@ -608,7 +537,6 @@ type = real kind = kind_phys intent = in - optional = F [mg_cld] standard_name = cloud_fraction_for_MG long_name = cloud fraction used by Morrison-Gettelman MP @@ -617,7 +545,6 @@ type = real kind = kind_phys intent = in - optional = F [effrr_in] standard_name = effective_radius_of_stratiform_cloud_rain_particle long_name = effective radius of cloud rain particle in micrometers @@ -626,7 +553,6 @@ type = real kind = kind_phys intent = in - optional = F [pert_clds] standard_name = flag_for_stochastic_cloud_fraction_perturbations long_name = flag for stochastic cloud fraction physics perturbations @@ -634,7 +560,6 @@ dimensions = () type = logical intent = in - optional = F [sppt_wts] standard_name = sppt_weights_from_coupled_process long_name = weights for stochastic sppt perturbation @@ -643,7 +568,6 @@ type = real kind = kind_phys intent = in - optional = F [sppt_amp] standard_name = total_amplitude_of_sppt_perturbation long_name = toal ampltidue of stochastic sppt perturbation @@ -652,7 +576,6 @@ type = real kind = kind_phys intent = in - optional = F [cnvw_in] standard_name = convective_cloud_condensate_mixing_ratio long_name = convective cloud water mixing ratio in the phy_f3d array @@ -661,7 +584,6 @@ type = real kind = kind_phys intent = in - optional = F [cnvc_in] standard_name = convective_cloud_area_fraction long_name = convective cloud cover in the phy_f3d array @@ -670,7 +592,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs] standard_name = tracer_concentration long_name = model layer mean tracer concentration @@ -679,7 +600,6 @@ type = real kind = kind_phys intent = in - optional = F [aer_nm] standard_name = mass_number_concentration_of_aerosol_from_gocart_climatology long_name = GOCART aerosol climatology number concentration @@ -688,7 +608,6 @@ type = real kind = kind_phys intent = in - optional = F [dx] standard_name = characteristic_grid_lengthscale long_name = relative dx for the grid cell @@ -697,7 +616,6 @@ type = real kind = kind_phys intent = in - optional = F [icloud] standard_name = control_for_cloud_area_fraction_option long_name = cloud effect to the optical depth and cloud fraction in radiation @@ -705,7 +623,6 @@ dimensions = () type = integer intent = in - optional = F [coszen] standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep long_name = mean cos of zenith angle over rad call period @@ -714,7 +631,6 @@ type = real kind = kind_phys intent = inout - optional = F [coszdg] standard_name = cosine_of_solar_zenith_angle_on_radiation_timestep long_name = daytime mean cosz over rad call period @@ -723,7 +639,6 @@ type = real kind = kind_phys intent = inout - optional = F [effrl_inout] standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle long_name = eff. radius of cloud liquid water particle in micrometer @@ -732,7 +647,6 @@ type = real kind = kind_phys intent = inout - optional = F [effri_inout] standard_name = effective_radius_of_stratiform_cloud_ice_particle long_name = eff. radius of cloud ice water particle in micrometer @@ -741,7 +655,6 @@ type = real kind = kind_phys intent = inout - optional = F [effrs_inout] standard_name = effective_radius_of_stratiform_cloud_snow_particle long_name = effective radius of cloud snow particle in micrometers @@ -750,7 +663,6 @@ type = real kind = kind_phys intent = inout - optional = F [clouds1] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -759,7 +671,6 @@ type = real kind = kind_phys intent = inout - optional = F [clouds2] standard_name = cloud_liquid_water_path long_name = layer cloud liquid water path @@ -768,7 +679,6 @@ type = real kind = kind_phys intent = inout - optional = F [clouds3] standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud @@ -777,7 +687,6 @@ type = real kind = kind_phys intent = inout - optional = F [clouds4] standard_name = cloud_ice_water_path long_name = layer cloud ice water path @@ -786,7 +695,6 @@ type = real kind = kind_phys intent = inout - optional = F [clouds5] standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud @@ -795,7 +703,6 @@ type = real kind = kind_phys intent = inout - optional = F [kd] standard_name = vertical_index_difference_between_inout_and_local long_name = vertical index difference between in/out and local @@ -803,7 +710,6 @@ dimensions = () type = integer intent = out - optional = F [kt] standard_name = vertical_index_difference_between_layer_and_upper_bound long_name = vertical index difference between layer and upper bound @@ -811,7 +717,6 @@ dimensions = () type = integer intent = out - optional = F [kb] standard_name = vertical_index_difference_between_layer_and_lower_bound long_name = vertical index difference between layer and lower bound @@ -819,7 +724,6 @@ dimensions = () type = integer intent = out - optional = F [mtopa] standard_name = model_layer_number_at_cloud_top long_name = vertical indices for low, middle and high cloud tops @@ -827,7 +731,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = out - optional = F [mbota] standard_name = model_layer_number_at_cloud_base long_name = vertical indices for low, middle and high cloud bases @@ -835,7 +738,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = out - optional = F [raddt] standard_name = time_step_for_radiation long_name = radiation time step @@ -844,7 +746,6 @@ type = real kind = kind_phys intent = out - optional = F [tsfg] standard_name = surface_ground_temperature_for_radiation long_name = surface ground temperature for radiation @@ -853,7 +754,6 @@ type = real kind = kind_phys intent = out - optional = F [tsfa] standard_name = surface_air_temperature_for_radiation long_name = lowest model layer air temperature for radiation @@ -862,7 +762,6 @@ type = real kind = kind_phys intent = out - optional = F [de_lgth] standard_name = cloud_decorrelation_length long_name = cloud decorrelation length @@ -871,7 +770,6 @@ type = real kind = kind_phys intent = out - optional = F [alb1d] standard_name = surface_albedo_perturbation long_name = surface albedo perturbation @@ -880,7 +778,6 @@ type = real kind = kind_phys intent = out - optional = F [delp] standard_name = layer_pressure_thickness_for_radiation long_name = layer pressure thickness on radiation levels @@ -889,7 +786,6 @@ type = real kind = kind_phys intent = out - optional = F [dz] standard_name = layer_thickness_for_radiation long_name = layer thickness on radiation levels @@ -898,7 +794,6 @@ type = real kind = kind_phys intent = out - optional = F [plvl] standard_name = air_pressure_at_interface_for_radiation_in_hPa long_name = air pressure at vertical interface for radiation calculation @@ -907,7 +802,6 @@ type = real kind = kind_phys intent = out - optional = F [plyr] standard_name = air_pressure_at_layer_for_radiation_in_hPa long_name = air pressure at vertical layer for radiation calculation @@ -916,7 +810,6 @@ type = real kind = kind_phys intent = out - optional = F [tlvl] standard_name = air_temperature_at_interface_for_radiation long_name = air temperature at vertical interface for radiation calculation @@ -925,7 +818,6 @@ type = real kind = kind_phys intent = out - optional = F [tlyr] standard_name = air_temperature_at_layer_for_radiation long_name = air temperature at vertical layer for radiation calculation @@ -934,7 +826,6 @@ type = real kind = kind_phys intent = out - optional = F [qlyr] standard_name = water_vapor_specific_humidity_at_layer_for_radiation long_name = water vapor specific humidity at vertical layer for radiation calculation @@ -943,7 +834,6 @@ type = real kind = kind_phys intent = out - optional = F [olyr] standard_name = ozone_concentration_at_layer_for_radiation long_name = ozone concentration @@ -952,7 +842,6 @@ type = real kind = kind_phys intent = out - optional = F [gasvmr_co2] standard_name = volume_mixing_ratio_of_co2 long_name = CO2 volume mixing ratio @@ -961,7 +850,6 @@ type = real kind = kind_phys intent = out - optional = F [gasvmr_n2o] standard_name = volume_mixing_ratio_of_n2o long_name = N2O volume mixing ratio @@ -970,7 +858,6 @@ type = real kind = kind_phys intent = out - optional = F [gasvmr_ch4] standard_name = volume_mixing_ratio_of_ch4 long_name = CH4 volume mixing ratio @@ -979,7 +866,6 @@ type = real kind = kind_phys intent = out - optional = F [gasvmr_o2] standard_name = volume_mixing_ratio_of_o2 long_name = O2 volume mixing ratio @@ -988,7 +874,6 @@ type = real kind = kind_phys intent = out - optional = F [gasvmr_co] standard_name = volume_mixing_ratio_of_co long_name = CO volume mixing ratio @@ -997,7 +882,6 @@ type = real kind = kind_phys intent = out - optional = F [gasvmr_cfc11] standard_name = volume_mixing_ratio_of_cfc11 long_name = CFC11 volume mixing ratio @@ -1006,7 +890,6 @@ type = real kind = kind_phys intent = out - optional = F [gasvmr_cfc12] standard_name = volume_mixing_ratio_of_cfc12 long_name = CFC12 volume mixing ratio @@ -1015,7 +898,6 @@ type = real kind = kind_phys intent = out - optional = F [gasvmr_cfc22] standard_name = volume_mixing_ratio_of_cfc22 long_name = CFC22 volume mixing ratio @@ -1024,7 +906,6 @@ type = real kind = kind_phys intent = out - optional = F [gasvmr_ccl4] standard_name = volume_mixing_ratio_of_ccl4 long_name = CCL4 volume mixing ratio @@ -1033,7 +914,6 @@ type = real kind = kind_phys intent = out - optional = F [gasvmr_cfc113] standard_name = volume_mixing_ratio_of_cfc113 long_name = CFC113 volume mixing ratio @@ -1042,7 +922,6 @@ type = real kind = kind_phys intent = out - optional = F [aerodp] standard_name = atmosphere_optical_thickness_due_to_ambient_aerosol_particles long_name = vertical integrated optical depth for various aerosol species @@ -1051,7 +930,6 @@ type = real kind = kind_phys intent = out - optional = F [clouds6] standard_name = cloud_rain_water_path long_name = cloud rain water path @@ -1060,7 +938,6 @@ type = real kind = kind_phys intent = out - optional = F [clouds7] standard_name = mean_effective_radius_for_rain_drop long_name = mean effective radius for rain drop @@ -1069,7 +946,6 @@ type = real kind = kind_phys intent = out - optional = F [clouds8] standard_name = cloud_snow_water_path long_name = cloud snow water path @@ -1078,7 +954,6 @@ type = real kind = kind_phys intent = out - optional = F [clouds9] standard_name = mean_effective_radius_for_snow_flake long_name = mean effective radius for snow flake @@ -1087,7 +962,6 @@ type = real kind = kind_phys intent = out - optional = F [cldsa] standard_name = cloud_area_fraction_for_radiation long_name = fraction of clouds for low, middle,high, total and BL @@ -1096,7 +970,6 @@ type = real kind = kind_phys intent = out - optional = F [cldfra] standard_name = instantaneous_3d_cloud_fraction long_name = instantaneous 3D cloud fraction for all MPs @@ -1105,7 +978,6 @@ type = real kind = kind_phys intent = out - optional = F [faersw1] standard_name = aerosol_optical_depth_for_shortwave_bands_01_16 long_name = aerosol optical depth for shortwave bands 01-16 @@ -1114,7 +986,6 @@ type = real kind = kind_phys intent = out - optional = F [faersw2] standard_name = aerosol_single_scattering_albedo_for_shortwave_bands_01_16 long_name = aerosol single scattering albedo for shortwave bands 01-16 @@ -1123,7 +994,6 @@ type = real kind = kind_phys intent = out - optional = F [faersw3] standard_name = aerosol_asymmetry_parameter_for_shortwave_bands_01_16 long_name = aerosol asymmetry parameter for shortwave bands 01-16 @@ -1132,7 +1002,6 @@ type = real kind = kind_phys intent = out - optional = F [faerlw1] standard_name = aerosol_optical_depth_for_longwave_bands_01_16 long_name = aerosol optical depth for longwave bands 01-16 @@ -1141,7 +1010,6 @@ type = real kind = kind_phys intent = out - optional = F [faerlw2] standard_name = aerosol_single_scattering_albedo_for_longwave_bands_01_16 long_name = aerosol single scattering albedo for longwave bands 01-16 @@ -1150,7 +1018,6 @@ type = real kind = kind_phys intent = out - optional = F [faerlw3] standard_name = aerosol_asymmetry_parameter_for_longwave_bands_01_16 long_name = aerosol asymmetry parameter for longwave bands 01-16 @@ -1159,7 +1026,6 @@ type = real kind = kind_phys intent = out - optional = F [alpha] standard_name = cloud_overlap_decorrelation_parameter long_name = cloud overlap decorrelation parameter @@ -1168,7 +1034,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1177,7 +1042,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1185,4 +1049,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmg_setup.meta b/physics/GFS_rrtmg_setup.meta index e882841cf..805f49f4a 100644 --- a/physics/GFS_rrtmg_setup.meta +++ b/physics/GFS_rrtmg_setup.meta @@ -16,7 +16,6 @@ type = real kind = kind_phys intent = in - optional = F [levr] standard_name = vertical_dimension_for_radiation long_name = number of vertical levels for radiation calculations @@ -24,7 +23,6 @@ dimensions = () type = integer intent = in - optional = F [ictm] standard_name = flag_for_initial_time_date_control long_name = flag for initial conditions and forcing @@ -32,7 +30,6 @@ dimensions = () type = integer intent = in - optional = F [isol] standard_name = control_for_solar_constant long_name = use prescribed solar constant @@ -40,7 +37,6 @@ dimensions = () type = integer intent = in - optional = F [ico2] standard_name = control_for_co2 long_name = prescribed global mean value (old opernl) @@ -48,7 +44,6 @@ dimensions = () type = integer intent = in - optional = F [iaer] standard_name = control_for_shortwave_radiation_aerosols long_name = default aerosol effect in sw only @@ -56,7 +51,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -64,7 +58,6 @@ dimensions = () type = integer intent = in - optional = F [num_p3d] standard_name = number_of_microphysics_variables_in_xyz_dimensioned_restart_array long_name = number of 3D arrays needed for microphysics @@ -72,7 +65,6 @@ dimensions = () type = integer intent = in - optional = F [npdf3d] standard_name = number_of_pdf_based_variables_in_xyz_dimensioned_restart_array long_name = number of 3d arrays associated with pdf based clouds/mp @@ -80,7 +72,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -88,7 +79,6 @@ dimensions = () type = integer intent = in - optional = F [iovr] standard_name = flag_for_cloud_overlap_method_for_radiation long_name = max-random overlap clouds @@ -96,7 +86,6 @@ dimensions = () type = integer intent = in - optional = F [isubc_sw] standard_name = flag_for_sw_clouds_grid_approximation long_name = flag for sw clouds sub-grid approximation @@ -104,7 +93,6 @@ dimensions = () type = integer intent = in - optional = F [isubc_lw] standard_name = flag_for_lw_clouds_sub_grid_approximation long_name = flag for lw clouds sub-grid approximation @@ -112,7 +100,6 @@ dimensions = () type = integer intent = in - optional = F [icliq_sw] standard_name = control_for_shortwave_radiation_liquid_clouds long_name = sw optical property for liquid clouds @@ -120,7 +107,6 @@ dimensions = () type = integer intent = in - optional = F [crick_proof] standard_name = flag_for_CRICK_proof_cloud_water long_name = flag for CRICK-Proof cloud water @@ -128,7 +114,6 @@ dimensions = () type = logical intent = in - optional = F [ccnorm] standard_name = flag_for_in_cloud_condensate long_name = flag for cloud condensate normalized by cloud cover @@ -136,7 +121,6 @@ dimensions = () type = logical intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -144,7 +128,6 @@ dimensions = () type = integer intent = in - optional = F [norad_precip] standard_name = flag_for_turning_off_precipitation_radiative_effect long_name = radiation precip flag for Ferrier/Moorthi @@ -152,7 +135,6 @@ dimensions = () type = logical intent = in - optional = F [idate] standard_name = date_and_time_at_model_initialization_in_united_states_order long_name = initialization date and time @@ -160,7 +142,6 @@ dimensions = (4) type = integer intent = in - optional = F [iflip] standard_name = control_for_vertical_index_direction long_name = flag for vertical index direction control @@ -168,7 +149,6 @@ dimensions = () type = integer intent = in - optional = F [do_RRTMGP] standard_name = flag_for_rrtmgp_radiation_scheme long_name = flag for RRTMGP scheme @@ -176,7 +156,6 @@ dimensions = () type = logical intent = in - optional = F [im] standard_name = horizontal_dimension long_name = horizontal dimension @@ -184,7 +163,6 @@ dimensions = () type = integer intent = in - optional = F [faerlw] standard_name = aerosol_optical_properties_for_longwave_bands_01_16 long_name = optical properties for longwave bands 01-16 @@ -193,7 +171,6 @@ type = real kind = kind_phys intent = in - optional = F [faersw] standard_name = aerosol_optical_properties_for_shortwave_bands_01_16 long_name = aerosol optical properties for shortwave bands 01-16 @@ -202,7 +179,6 @@ type = real kind = kind_phys intent = in - optional = F [aerodp] standard_name = atmosphere_optical_thickness_due_to_ambient_aerosol_particles long_name = vertical integrated optical depth for various aerosol species @@ -211,7 +187,6 @@ type = real kind = kind_phys intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -219,7 +194,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -228,7 +202,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -236,7 +209,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -249,7 +221,6 @@ dimensions = (8) type = integer intent = in - optional = F [jdate] standard_name = date_and_time_of_forecast_in_united_states_order long_name = current forecast date and time @@ -257,7 +228,6 @@ dimensions = (8) type = integer intent = in - optional = F [deltsw] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -266,7 +236,6 @@ type = real kind = kind_phys intent = in - optional = F [deltim] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -275,7 +244,6 @@ type = real kind = kind_phys intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -283,7 +251,6 @@ dimensions = () type = logical intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -291,7 +258,6 @@ dimensions = () type = integer intent = in - optional = F [slag] standard_name = equation_of_time long_name = equation of time (radian) @@ -300,7 +266,6 @@ type = real kind = kind_phys intent = out - optional = F [sdec] standard_name = sine_of_solar_declination_angle long_name = sin of the solar declination angle @@ -309,7 +274,6 @@ type = real kind = kind_phys intent = out - optional = F [cdec] standard_name = cosine_of_solar_declination_angle long_name = cos of the solar declination angle @@ -318,7 +282,6 @@ type = real kind = kind_phys intent = out - optional = F [solcon] standard_name = solar_constant long_name = solar constant (sun-earth distant adjusted) @@ -327,7 +290,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -336,7 +298,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -344,7 +305,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -358,7 +318,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -366,4 +325,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmgp_cloud_overlap_pre.meta b/physics/GFS_rrtmgp_cloud_overlap_pre.meta index 24dbeab8e..5a143f1ac 100644 --- a/physics/GFS_rrtmgp_cloud_overlap_pre.meta +++ b/physics/GFS_rrtmgp_cloud_overlap_pre.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [yearlen] standard_name = number_of_days_in_current_year long_name = number of days in a year @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [doSWrad] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -38,7 +35,6 @@ dimensions = () type = logical intent = in - optional = F [doLWrad] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -46,7 +42,6 @@ dimensions = () type = logical intent = in - optional = F [julian] standard_name = forecast_julian_day long_name = julian day @@ -55,7 +50,6 @@ type = real kind = kind_phys intent = in - optional = F [lat] standard_name = latitude long_name = latitude @@ -64,7 +58,6 @@ type = real intent = in kind = kind_phys - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure at vertical interface for radiation calculation @@ -73,7 +66,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure at vertical layer for radiation calculation @@ -82,7 +74,6 @@ type = real kind = kind_phys intent = in - optional = F [tv_lay] standard_name = virtual_temperature long_name = layer virtual temperature @@ -91,7 +82,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -100,7 +90,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -118,7 +106,6 @@ type = real kind = kind_phys intent = in - optional = F [con_epsq] standard_name = minimum_value_of_specific_humidity long_name = floor value for specific humidity @@ -127,7 +114,6 @@ type = real kind = kind_phys intent = in - optional = F [dcorr_con] standard_name = decorrelation_length_used_by_overlap_method long_name = decorrelation length (default) used by cloud overlap method (iovr) @@ -136,7 +122,6 @@ type = real intent = in kind = kind_phys - optional = F [idcor] standard_name = flag_for_decorrelation_length_method long_name = flag for decorrelation length method used in cloud overlap method (iovr) @@ -144,7 +129,6 @@ dimensions = () type = integer intent = in - optional = F [iovr] standard_name = flag_for_cloud_overlap_method_for_radiation long_name = flag for cloud overlap method @@ -152,7 +136,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_dcorr] standard_name = flag_for_decorrelation_length_cloud_overlap_method long_name = choice of decorrelation-length cloud overlap method @@ -160,7 +143,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_exp] standard_name = flag_for_exponential_cloud_overlap_method long_name = choice of exponential cloud overlap method @@ -168,7 +150,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_exprand] standard_name = flag_for_exponential_random_cloud_overlap_method long_name = choice of exponential-random cloud overlap method @@ -176,7 +157,6 @@ dimensions = () type = integer intent = in - optional = F [idcor_con] standard_name = flag_for_constant_decorrelation_length_method long_name = choice of decorrelation length computation (costant) @@ -184,7 +164,6 @@ dimensions = () type = integer intent = in - optional = F [idcor_hogan] standard_name = flag_for_hogan_decorrelation_length_method long_name = choice of decorrelation length computation (hogan) @@ -192,7 +171,6 @@ dimensions = () type = integer intent = in - optional = F [idcor_oreopoulos] standard_name = flag_for_oreopoulos_decorrelation_length_method long_name = choice of decorrelation length computation (oreopoulos) @@ -200,7 +178,6 @@ dimensions = () type = integer intent = in - optional = F [cld_frac] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -209,7 +186,6 @@ type = real kind = kind_phys intent = in - optional = F [de_lgth] standard_name = cloud_decorrelation_length long_name = cloud decorrelation length @@ -218,7 +194,6 @@ type = real kind = kind_phys intent = out - optional = F [cloud_overlap_param] standard_name = cloud_overlap_param long_name = cloud overlap parameter @@ -227,7 +202,6 @@ type = real kind = kind_phys intent = out - optional = F [precip_overlap_param] standard_name = precip_overlap_param long_name = precipitation overlap parameter @@ -236,7 +210,6 @@ type = real kind = kind_phys intent = out - optional = F [deltaZc] standard_name = layer_thickness long_name = layer_thickness @@ -245,7 +218,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -254,7 +226,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -262,4 +233,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmgp_gfdlmp_pre.meta b/physics/GFS_rrtmgp_gfdlmp_pre.meta index 6ce429504..1f0a7745b 100644 --- a/physics/GFS_rrtmgp_gfdlmp_pre.meta +++ b/physics/GFS_rrtmgp_gfdlmp_pre.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [nTracers] standard_name = number_of_tracers long_name = number of tracers @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [ncnd] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldliq] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldice] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldrain] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldsnow] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -70,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldgrpl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -78,7 +70,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldtot] standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer @@ -86,7 +77,6 @@ dimensions = () type = integer intent = in - optional = F [doSWrad] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -94,7 +84,6 @@ dimensions = () type = logical intent = in - optional = F [doLWrad] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -102,7 +91,6 @@ dimensions = () type = logical intent = in - optional = F [effr_in] standard_name = flag_for_cloud_effective_radii long_name = flag for cloud effective radii calculations in GFDL microphysics @@ -110,7 +98,6 @@ dimensions = () type = logical intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -118,7 +105,6 @@ dimensions = () type = integer intent = in - optional = F [do_mynnedmf] standard_name = flag_for_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate MYNN-EDMF @@ -126,7 +112,6 @@ dimensions = () type = logical intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure at vertical interface for radiation calculation @@ -135,7 +120,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure at vertical layer for radiation calculation @@ -144,7 +128,6 @@ type = real kind = kind_phys intent = in - optional = F [tv_lay] standard_name = virtual_temperature long_name = layer virtual temperature @@ -153,7 +136,6 @@ type = real kind = kind_phys intent = in - optional = F [effrin_cldliq] standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle long_name = eff. radius of cloud liquid water particle in micrometer @@ -162,7 +144,6 @@ type = real kind = kind_phys intent = in - optional = F [effrin_cldice] standard_name = effective_radius_of_stratiform_cloud_ice_particle long_name = eff. radius of cloud ice water particle in micrometer @@ -171,7 +152,6 @@ type = real kind = kind_phys intent = in - optional = F [effrin_cldrain] standard_name = effective_radius_of_stratiform_cloud_rain_particle long_name = effective radius of cloud rain particle in micrometers @@ -180,7 +160,6 @@ type = real kind = kind_phys intent = in - optional = F [effrin_cldsnow] standard_name = effective_radius_of_stratiform_cloud_snow_particle long_name = effective radius of cloud snow particle in micrometers @@ -189,7 +168,6 @@ type = real kind = kind_phys intent = in - optional = F [tracer] standard_name = chemical_tracers long_name = chemical tracers @@ -198,7 +176,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -207,7 +184,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -216,7 +192,6 @@ type = real kind = kind_phys intent = in - optional = F [doGP_cldoptics_PADE] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_PADE long_name = logical flag to control cloud optics scheme. @@ -224,7 +199,6 @@ dimensions = () type = logical intent = in - optional = F [doGP_cldoptics_LUT] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_LUT long_name = logical flag to control cloud optics scheme. @@ -232,7 +206,6 @@ dimensions = () type = logical intent = in - optional = F [cld_frac] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -241,7 +214,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_lwp] standard_name = cloud_liquid_water_path long_name = layer cloud liquid water path @@ -250,7 +222,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_reliq] standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud @@ -259,7 +230,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_iwp] standard_name = cloud_ice_water_path long_name = layer cloud ice water path @@ -268,7 +238,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_reice] standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud @@ -277,7 +246,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_swp] standard_name = cloud_snow_water_path long_name = layer cloud snow water path @@ -286,7 +254,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_resnow] standard_name = mean_effective_radius_for_snow_flake long_name = mean effective radius for snow cloud @@ -295,7 +262,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_rwp] standard_name = cloud_rain_water_path long_name = layer cloud rain water path @@ -304,7 +270,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_rerain] standard_name = mean_effective_radius_for_rain_drop long_name = mean effective radius for rain cloud @@ -313,7 +278,6 @@ type = real kind = kind_phys intent = inout - optional = F [precip_frac] standard_name = precipitation_fraction_by_layer long_name = precipitation fraction in each layer @@ -322,7 +286,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -331,7 +294,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -339,4 +301,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmgp_lw_post.meta b/physics/GFS_rrtmgp_lw_post.meta index 5fb4d57bb..eddf84a5d 100644 --- a/physics/GFS_rrtmgp_lw_post.meta +++ b/physics/GFS_rrtmgp_lw_post.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [lslwr] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [do_lw_clrsky_hr] standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output lw heating rate @@ -38,7 +35,6 @@ dimensions = () type = logical intent = in - optional = F [save_diag] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -46,7 +42,6 @@ dimensions = () type = logical intent = in - optional = F [fhlwr] standard_name = period_of_longwave_radiation_calls long_name = frequency for longwave radiation @@ -55,7 +50,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfa] standard_name = surface_air_temperature_for_radiation long_name = lowest model layer air temperature for radiation @@ -64,7 +58,6 @@ type = real kind = kind_phys intent = in - optional = F [t_lay] standard_name = air_temperature_at_layer_for_RRTMGP long_name = air temperature at vertical layer for radiation calculation @@ -73,7 +66,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure level @@ -82,7 +74,6 @@ type = real kind = kind_phys intent = in - optional = F [fluxlwUP_allsky] standard_name = RRTMGP_lw_flux_profile_upward_allsky long_name = RRTMGP upward longwave all-sky flux profile @@ -91,7 +82,6 @@ type = real kind = kind_phys intent = in - optional = F [fluxlwDOWN_allsky] standard_name = RRTMGP_lw_flux_profile_downward_allsky long_name = RRTMGP downward longwave all-sky flux profile @@ -100,7 +90,6 @@ type = real kind = kind_phys intent = in - optional = F [fluxlwUP_clrsky] standard_name = RRTMGP_lw_flux_profile_upward_clrsky long_name = RRTMGP upward longwave clr-sky flux profile @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = in - optional = F [fluxlwDOWN_clrsky] standard_name = RRTMGP_lw_flux_profile_downward_clrsky long_name = RRTMGP downward longwave clr-sky flux profile @@ -118,7 +106,6 @@ type = real kind = kind_phys intent = in - optional = F [raddt] standard_name = time_step_for_radiation long_name = radiation time step @@ -127,7 +114,6 @@ type = real kind = kind_phys intent = in - optional = F [aerodp] standard_name = atmosphere_optical_thickness_due_to_ambient_aerosol_particles long_name = vertical integrated optical depth for various aerosol species @@ -136,7 +122,6 @@ type = real kind = kind_phys intent = in - optional = F [cldsa] standard_name = cloud_area_fraction_for_radiation long_name = fraction of clouds for low, middle, high, total and BL @@ -145,7 +130,6 @@ type = real kind = kind_phys intent = in - optional = F [mtopa] standard_name = model_layer_number_at_cloud_top long_name = vertical indices for low, middle and high cloud tops @@ -153,7 +137,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = in - optional = F [mbota] standard_name = model_layer_number_at_cloud_base long_name = vertical indices for low, middle and high cloud bases @@ -161,7 +144,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = in - optional = F [cld_frac] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -170,7 +152,6 @@ type = real kind = kind_phys intent = in - optional = F [cldtaulw] standard_name = cloud_optical_depth_layers_at_10mu_band long_name = approx 10mu band layer cloud optical depth @@ -179,7 +160,6 @@ type = real kind = kind_phys intent = in - optional = F [fluxr] standard_name = cumulative_radiation_diagnostic long_name = time-accumulated 2D radiation-related diagnostic fields @@ -188,7 +168,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcdlw] standard_name = surface_downwelling_longwave_flux_on_radiation_timestep long_name = total sky sfc downward lw flux @@ -197,7 +176,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfculw] standard_name = surface_upwelling_longwave_flux_on_radiation_timestep long_name = total sky sfc upward lw flux @@ -206,7 +184,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcflw] standard_name = surface_lw_fluxes_assuming_total_and_clear_sky_on_radiation_timestep long_name = lw radiation fluxes at sfc @@ -214,7 +191,6 @@ dimensions = (horizontal_loop_extent) type = sfcflw_type intent = inout - optional = F [tsflw] standard_name = air_temperature_at_surface_adjacent_layer_on_radiation_timestep long_name = surface air temp during lw calculation @@ -223,7 +199,6 @@ type = real kind = kind_phys intent = inout - optional = F [htrlw] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky lw heating rate @@ -232,7 +207,6 @@ type = real kind = kind_phys intent = inout - optional = F [topflw] standard_name = lw_fluxes_top_atmosphere long_name = lw radiation fluxes at top @@ -240,7 +214,6 @@ dimensions = (horizontal_loop_extent) type = topflw_type intent = out - optional = F [flxprf_lw] standard_name = RRTMGP_lw_fluxes long_name = lw fluxes total sky / csk and up / down at levels @@ -248,7 +221,6 @@ dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = proflw_type intent = inout - optional = T [htrlwc] standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_timestep long_name = longwave clear sky heating rate @@ -257,7 +229,6 @@ type = real kind = kind_phys intent = inout - optional = T [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -266,7 +237,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -274,4 +244,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmgp_pre.meta b/physics/GFS_rrtmgp_pre.meta index 43812d870..79711e797 100644 --- a/physics/GFS_rrtmgp_pre.meta +++ b/physics/GFS_rrtmgp_pre.meta @@ -16,7 +16,6 @@ type = character kind = len=128 intent = in - optional = F [nGases] standard_name = number_of_active_gases_used_by_RRTMGP long_name = number of gases available used by RRTMGP (Model%nGases) @@ -24,7 +23,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -33,7 +31,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -41,7 +38,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -54,7 +50,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -62,7 +57,6 @@ dimensions = () type = integer intent = in - optional = F [nTracers] standard_name = number_of_tracers long_name = number of tracers @@ -70,7 +64,6 @@ dimensions = () type = integer intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -78,7 +71,6 @@ dimensions = () type = logical intent = in - optional = F [lslwr] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -86,7 +78,6 @@ dimensions = () type = logical intent = in - optional = F [i_o3] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -94,7 +85,6 @@ dimensions = () type = integer intent = in - optional = F [fhswr] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -103,7 +93,6 @@ type = real kind = kind_phys intent = in - optional = F [fhlwr] standard_name = period_of_longwave_radiation_calls long_name = frequency for longwave radiation @@ -112,7 +101,6 @@ type = real kind = kind_phys intent = in - optional = F [xlat] standard_name = latitude long_name = latitude @@ -121,7 +109,6 @@ type = real kind = kind_phys intent = in - optional = F [xlon] standard_name = longitude long_name = longitude @@ -130,7 +117,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -139,7 +125,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers @@ -148,7 +133,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -157,7 +141,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -166,7 +149,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs] standard_name = tracer_concentration long_name = model layer mean tracer concentration @@ -175,7 +157,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -184,7 +165,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -193,7 +173,6 @@ type = real kind = kind_phys intent = in - optional = F [con_epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -202,7 +181,6 @@ type = real kind = kind_phys intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -211,7 +189,6 @@ type = real kind = kind_phys intent = in - optional = F [con_epsqs] standard_name = minimum_value_of_saturation_mixing_ratio long_name = floor value for saturation mixing ratio @@ -220,7 +197,6 @@ type = real kind = kind_phys intent = in - optional = F [minGPpres] standard_name = minimum_pressure_in_RRTMGP long_name = minimum pressure allowed in RRTMGP @@ -229,7 +205,6 @@ type = real kind = kind_phys intent = in - optional = F [maxGPpres] standard_name = maximum_pressure_in_RRTMGP long_name = maximum pressure allowed in RRTMGP @@ -238,7 +213,6 @@ type = real kind = kind_phys intent = in - optional = F [minGPtemp] standard_name = minimum_temperature_in_RRTMGP long_name = minimum temperature allowed in RRTMGP @@ -247,7 +221,6 @@ type = real kind = kind_phys intent = in - optional = F [maxGPtemp] standard_name = maximum_temperature_in_RRTMGP long_name = maximum temperature allowed in RRTMGP @@ -256,7 +229,6 @@ type = real kind = kind_phys intent = in - optional = F [raddt] standard_name = time_step_for_radiation long_name = radiation time step @@ -265,7 +237,6 @@ type = real kind = kind_phys intent = inout - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure at vertical layer for radiation calculation @@ -274,7 +245,6 @@ type = real kind = kind_phys intent = inout - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure at vertical interface for radiation calculation @@ -283,7 +253,6 @@ type = real kind = kind_phys intent = inout - optional = F [t_lay] standard_name = air_temperature_at_layer_for_RRTMGP long_name = air temperature at vertical layer for radiation calculation @@ -292,7 +261,6 @@ type = real kind = kind_phys intent = inout - optional = F [t_lev] standard_name = air_temperature_at_interface_for_RRTMGP long_name = air temperature at vertical interface for radiation calculation @@ -301,7 +269,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfc_radtime] standard_name = surface_skin_temperature_on_radiation_timestep long_name = surface skin temperature on radiation timestep @@ -310,7 +277,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfg] standard_name = surface_ground_temperature_for_radiation long_name = surface ground temperature for radiation @@ -319,7 +285,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfa] standard_name = surface_air_temperature_for_radiation long_name = lowest model layer air temperature for radiation @@ -328,7 +293,6 @@ type = real kind = kind_phys intent = inout - optional = F [tv_lay] standard_name = virtual_temperature long_name = layer virtual temperature @@ -337,7 +301,6 @@ type = real kind = kind_phys intent = inout - optional = F [relhum] standard_name = relative_humidity long_name = layer relative humidity @@ -346,7 +309,6 @@ type = real kind = kind_phys intent = inout - optional = F [qs_lay] standard_name = saturation_vapor_pressure long_name = saturation vapor pressure @@ -355,7 +317,6 @@ type = real kind = kind_phys intent = inout - optional = F [q_lay] standard_name = water_vapor_mixing_ratio long_name = water vaport mixing ratio @@ -364,7 +325,6 @@ type = real kind = kind_phys intent = inout - optional = F [tracer] standard_name = chemical_tracers long_name = chemical tracers @@ -373,7 +333,6 @@ type = real kind = kind_phys intent = inout - optional = F [gas_concentrations] standard_name = Gas_concentrations_for_RRTMGP_suite long_name = DDT containing gas concentrations for RRTMGP radiation scheme @@ -381,7 +340,6 @@ dimensions = () type = ty_gas_concs intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -390,7 +348,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -398,4 +355,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmgp_setup.meta b/physics/GFS_rrtmgp_setup.meta index 4abf0a2b1..4043392a9 100644 --- a/physics/GFS_rrtmgp_setup.meta +++ b/physics/GFS_rrtmgp_setup.meta @@ -15,7 +15,6 @@ dimensions = () type = logical intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -23,7 +22,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_fer_hires] standard_name = identifier_for_fer_hires_microphysics_scheme long_name = choice of Ferrier-Aligo microphysics scheme @@ -31,7 +29,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -39,7 +36,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -47,17 +43,14 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_wsm6] intent = in - optional = F standard_name = identifier_for_wsm6_microphysics_scheme long_name = choice of WSM6 microphysics scheme units = flag dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr] standard_name = identifier_for_zhao_carr_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme @@ -65,7 +58,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr_pdf] standard_name = identifier_for_zhao_carr_pdf_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme with PDF clouds @@ -73,7 +65,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -81,7 +72,6 @@ dimensions = () type = integer intent = in - optional = F [si] standard_name = sigma_pressure_hybrid_vertical_coordinate long_name = vertical sigma coordinate for radiation initialization @@ -90,7 +80,6 @@ type = real kind = kind_phys intent = in - optional = F [levr] standard_name = vertical_dimension_for_radiation long_name = number of vertical levels for radiation calculations @@ -98,7 +87,6 @@ dimensions = () type = integer intent = in - optional = F [ictm] standard_name = flag_for_initial_time_date_control long_name = flag for initial conditions and forcing @@ -106,7 +94,6 @@ dimensions = () type = integer intent = in - optional = F [isol] standard_name = control_for_solar_constant long_name = use prescribed solar constant @@ -114,7 +101,6 @@ dimensions = () type = integer intent = in - optional = F [ico2] standard_name = control_for_co2 long_name = prescribed global mean value (old opernl) @@ -122,7 +108,6 @@ dimensions = () type = integer intent = in - optional = F [iaer] standard_name = control_for_shortwave_radiation_aerosols long_name = default aerosol effect in sw only @@ -130,7 +115,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -138,7 +122,6 @@ dimensions = () type = integer intent = in - optional = F [num_p3d] standard_name = number_of_microphysics_variables_in_xyz_dimensioned_restart_array long_name = number of 3D arrays needed for microphysics @@ -146,7 +129,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -154,7 +136,6 @@ dimensions = () type = integer intent = in - optional = F [iovr] standard_name = flag_for_cloud_overlap_method_for_radiation long_name = max-random overlap clouds @@ -162,7 +143,6 @@ dimensions = () type = integer intent = in - optional = F [isubc_sw] standard_name = flag_for_sw_clouds_grid_approximation long_name = flag for sw clouds sub-grid approximation @@ -170,7 +150,6 @@ dimensions = () type = integer intent = in - optional = F [isubc_lw] standard_name = flag_for_lw_clouds_sub_grid_approximation long_name = flag for lw clouds sub-grid approximation @@ -178,7 +157,6 @@ dimensions = () type = integer intent = in - optional = F [icliq_sw] standard_name = control_for_shortwave_radiation_liquid_clouds long_name = sw optical property for liquid clouds @@ -186,7 +164,6 @@ dimensions = () type = integer intent = in - optional = F [crick_proof] standard_name = flag_for_CRICK_proof_cloud_water long_name = flag for CRICK-Proof cloud water @@ -194,7 +171,6 @@ dimensions = () type = logical intent = in - optional = F [ccnorm] standard_name = flag_for_in_cloud_condensate long_name = flag for cloud condensate normalized by cloud cover @@ -202,7 +178,6 @@ dimensions = () type = logical intent = in - optional = F [norad_precip] standard_name = flag_for_turning_off_precipitation_radiative_effect long_name = radiation precip flag for Ferrier/Moorthi @@ -210,7 +185,6 @@ dimensions = () type = logical intent = in - optional = F [idate] standard_name = date_and_time_at_model_initialization_in_united_states_order long_name = initialization date and time @@ -218,7 +192,6 @@ dimensions = (4) type = integer intent = in - optional = F [iflip] standard_name = control_for_vertical_index_direction long_name = flag for vertical index direction control @@ -226,7 +199,6 @@ dimensions = () type = integer intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -234,7 +206,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -243,7 +214,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -251,7 +221,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -264,7 +233,6 @@ dimensions = (8) type = integer intent = in - optional = F [jdate] standard_name = date_and_time_of_forecast_in_united_states_order long_name = current forecast date and time @@ -272,7 +240,6 @@ dimensions = (8) type = integer intent = in - optional = F [deltsw] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -281,7 +248,6 @@ type = real kind = kind_phys intent = in - optional = F [deltim] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -290,7 +256,6 @@ type = real kind = kind_phys intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -298,7 +263,6 @@ dimensions = () type = logical intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -306,7 +270,6 @@ dimensions = () type = integer intent = in - optional = F [slag] standard_name = equation_of_time long_name = equation of time (radian) @@ -315,7 +278,6 @@ type = real kind = kind_phys intent = out - optional = F [sdec] standard_name = sine_of_solar_declination_angle long_name = sin of the solar declination angle @@ -324,7 +286,6 @@ type = real kind = kind_phys intent = out - optional = F [cdec] standard_name = cosine_of_solar_declination_angle long_name = cos of the solar declination angle @@ -333,7 +294,6 @@ type = real kind = kind_phys intent = out - optional = F [solcon] standard_name = solar_constant long_name = solar constant (sun-earth distant adjusted) @@ -342,7 +302,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -351,7 +310,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -359,7 +317,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -373,7 +330,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -381,4 +337,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmgp_sw_post.meta b/physics/GFS_rrtmgp_sw_post.meta index d9bdc47cd..7d895a341 100644 --- a/physics/GFS_rrtmgp_sw_post.meta +++ b/physics/GFS_rrtmgp_sw_post.meta @@ -15,7 +15,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -23,7 +22,6 @@ dimensions = () type = integer intent = in - optional = F [nday] standard_name = daytime_points_dimension long_name = daytime points dimension @@ -31,7 +29,6 @@ dimensions = () type = integer intent = in - optional = F [idxday] standard_name = daytime_points long_name = daytime points @@ -39,7 +36,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -47,7 +43,6 @@ dimensions = () type = logical intent = in - optional = F [do_sw_clrsky_hr] standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output sw heating rate @@ -55,7 +50,6 @@ dimensions = () type = logical intent = in - optional = F [save_diag] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -63,7 +57,6 @@ dimensions = () type = logical intent = in - optional = F [fhswr] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -72,7 +65,6 @@ type = real kind = kind_phys intent = in - optional = F [coszen] standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep long_name = mean cos of zenith angle over rad call period @@ -81,7 +73,6 @@ type = real kind = kind_phys intent = in - optional = F [coszdg] standard_name = cosine_of_solar_zenith_angle_on_radiation_timestep long_name = daytime mean cosz over rad call period @@ -90,7 +81,6 @@ type = real kind = kind_phys intent = in - optional = F [t_lay] standard_name = air_temperature_at_layer_for_RRTMGP long_name = air temperature at vertical layer for radiation calculation @@ -99,7 +89,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure level @@ -108,7 +97,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_alb_nir_dir] standard_name = surface_albedo_nearIR_direct long_name = near-IR (direct) surface albedo (sfc_alb_nir_dir) @@ -117,7 +105,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_alb_nir_dif] standard_name = surface_albedo_nearIR_diffuse long_name = near-IR (diffuse) surface albedo (sfc_alb_nir_dif) @@ -126,7 +113,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_alb_uvvis_dir] standard_name = surface_albedo_uvvis_dir long_name = UVVIS (direct) surface albedo (sfc_alb_uvvis_dir) @@ -135,7 +121,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_alb_uvvis_dif] standard_name = surface_albedo_uvvis_dif long_name = UVVIS (diffuse) surface albedo (sfc_alb_uvvis_dif) @@ -144,7 +129,6 @@ type = real kind = kind_phys intent = in - optional = F [fluxswUP_allsky] standard_name = RRTMGP_sw_flux_profile_upward_allsky long_name = RRTMGP upward shortwave all-sky flux profile @@ -153,7 +137,6 @@ type = real kind = kind_phys intent = in - optional = F [fluxswDOWN_allsky] standard_name = RRTMGP_sw_flux_profile_downward_allsky long_name = RRTMGP downward shortwave all-sky flux profile @@ -162,7 +145,6 @@ type = real kind = kind_phys intent = in - optional = F [fluxswUP_clrsky] standard_name = RRTMGP_sw_flux_profile_upward_clrsky long_name = RRTMGP upward shortwave clr-sky flux profile @@ -171,7 +153,6 @@ type = real kind = kind_phys intent = in - optional = F [fluxswDOWN_clrsky] standard_name = RRTMGP_sw_flux_profile_downward_clrsky long_name = RRTMGP downward shortwave clr-sky flux profile @@ -180,7 +161,6 @@ type = real kind = kind_phys intent = in - optional = F [raddt] standard_name = time_step_for_radiation long_name = radiation time step @@ -189,7 +169,6 @@ type = real kind = kind_phys intent = in - optional = F [aerodp] standard_name = atmosphere_optical_thickness_due_to_ambient_aerosol_particles long_name = vertical integrated optical depth for various aerosol species @@ -198,7 +177,6 @@ type = real kind = kind_phys intent = in - optional = F [cldsa] standard_name = cloud_area_fraction_for_radiation long_name = fraction of clouds for low, middle, high, total and BL @@ -207,7 +185,6 @@ type = real kind = kind_phys intent = in - optional = F [mbota] standard_name = model_layer_number_at_cloud_base long_name = vertical indices for low, middle and high cloud bases @@ -215,7 +192,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = in - optional = F [mtopa] standard_name = model_layer_number_at_cloud_top long_name = vertical indices for low, middle and high cloud tops @@ -223,7 +199,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = in - optional = F [cld_frac] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -232,7 +207,6 @@ type = real kind = kind_phys intent = in - optional = F [cldtausw] standard_name = cloud_optical_depth_layers_at_0p55mu_band long_name = approx .55mu band layer cloud optical depth @@ -241,7 +215,6 @@ type = real kind = kind_phys intent = in - optional = F [fluxr] standard_name = cumulative_radiation_diagnostic long_name = time-accumulated 2D radiation-related diagnostic fields @@ -250,7 +223,6 @@ type = real kind = kind_phys intent = inout - optional = F [nirbmdi] standard_name = surface_downwelling_direct_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir beam sw downward flux @@ -259,7 +231,6 @@ type = real kind = kind_phys intent = inout - optional = F [nirdfdi] standard_name = surface_downwelling_diffuse_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir diff sw downward flux @@ -268,7 +239,6 @@ type = real kind = kind_phys intent = inout - optional = F [visbmdi] standard_name = surface_downwelling_direct_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis beam sw downward flux @@ -277,7 +247,6 @@ type = real kind = kind_phys intent = inout - optional = F [visdfdi] standard_name = surface_downwelling_diffuse_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis diff sw downward flux @@ -286,7 +255,6 @@ type = real kind = kind_phys intent = inout - optional = F [nirbmui] standard_name = surface_upwelling_direct_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir beam sw upward flux @@ -295,7 +263,6 @@ type = real kind = kind_phys intent = inout - optional = F [nirdfui] standard_name = surface_upwelling_diffuse_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir diff sw upward flux @@ -304,7 +271,6 @@ type = real kind = kind_phys intent = inout - optional = F [visbmui] standard_name = surface_upwelling_direct_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis beam sw upward flux @@ -313,7 +279,6 @@ type = real kind = kind_phys intent = inout - optional = F [visdfui] standard_name = surface_upwelling_diffuse_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis diff sw upward flux @@ -322,7 +287,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcnsw] standard_name = surface_net_downwelling_shortwave_flux_on_radiation_timestep long_name = total sky sfc netsw flx into ground @@ -331,7 +295,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcdsw] standard_name = surface_downwelling_shortwave_flux_on_radiation_timestep long_name = total sky sfc downward sw flux @@ -340,7 +303,6 @@ type = real kind = kind_phys intent = inout - optional = F [htrsw] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky sw heating rate @@ -349,7 +311,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcfsw] standard_name = surface_sw_fluxes_assuming_total_and_clear_sky_on_radiation_timestep long_name = sw radiation fluxes at sfc @@ -357,7 +318,6 @@ dimensions = (horizontal_loop_extent) type = sfcfsw_type intent = inout - optional = F [topfsw] standard_name = sw_fluxes_top_atmosphere long_name = sw radiation fluxes at toa @@ -365,7 +325,6 @@ dimensions = (horizontal_loop_extent) type = topfsw_type intent = inout - optional = F [htrswc] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_timestep long_name = clear sky sw heating rates @@ -374,7 +333,6 @@ type = real kind = kind_phys intent = inout - optional = T [flxprf_sw] standard_name = RRTMGP_sw_fluxes long_name = sw fluxes total sky / csk and up / down at levels @@ -382,7 +340,6 @@ dimensions = (horizontal_loop_extent,adjusted_vertical_level_dimension_plus_one) type = profsw_type intent = inout - optional = T [scmpsw] standard_name = components_of_surface_downward_shortwave_fluxes long_name = derived type for special components of surface downward shortwave fluxes @@ -390,7 +347,6 @@ dimensions = (horizontal_loop_extent) type = cmpfsw_type intent = inout - optional = T [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -399,7 +355,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -407,4 +362,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmgp_sw_pre.meta b/physics/GFS_rrtmgp_sw_pre.meta index 53831b42a..3df699a9c 100644 --- a/physics/GFS_rrtmgp_sw_pre.meta +++ b/physics/GFS_rrtmgp_sw_pre.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [doSWrad] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [solhr] standard_name = forecast_utc_hour long_name = time in hours after 00z at the current timestep @@ -39,7 +36,6 @@ type = real kind = kind_phys intent = in - optional = F [lon] standard_name = longitude long_name = longitude @@ -48,7 +44,6 @@ type = real kind = kind_phys intent = in - optional = F [coslat] standard_name = cosine_of_latitude long_name = cosine of latitude @@ -57,7 +52,6 @@ type = real kind = kind_phys intent = in - optional = F [sinlat] standard_name = sine_of_latitude long_name = sine of latitude @@ -66,7 +60,6 @@ type = real kind = kind_phys intent = in - optional = F [nday] standard_name = daytime_points_dimension long_name = daytime points dimension @@ -74,7 +67,6 @@ dimensions = () type = integer intent = out - optional = F [idxday] standard_name = daytime_points long_name = daytime points @@ -82,7 +74,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [coszen] standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep long_name = mean cos of zenith angle over rad call period @@ -91,7 +82,6 @@ type = real kind = kind_phys intent = inout - optional = F [coszdg] standard_name = cosine_of_solar_zenith_angle_on_radiation_timestep long_name = daytime mean cosz over rad call period @@ -100,7 +90,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcalb] standard_name = surface_albedo_components long_name = surface albedo IR/UV/VIS components @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_alb_nir_dir] standard_name = surface_albedo_nearIR_direct long_name = near-IR (direct) surface albedo (sfc_alb_nir_dir) @@ -118,7 +106,6 @@ type = real kind = kind_phys intent = out - optional = F [sfc_alb_nir_dif] standard_name = surface_albedo_nearIR_diffuse long_name = near-IR (diffuse) surface albedo (sfc_alb_nir_dif) @@ -127,7 +114,6 @@ type = real kind = kind_phys intent = out - optional = F [sfc_alb_uvvis_dir] standard_name = surface_albedo_uvvis_dir long_name = UVVIS (direct) surface albedo (sfc_alb_uvvis_dir) @@ -136,7 +122,6 @@ type = real kind = kind_phys intent = out - optional = F [sfc_alb_uvvis_dif] standard_name = surface_albedo_uvvis_dif long_name = UVVIS (diffuse) surface albedo (sfc_alb_uvvis_dif) @@ -145,7 +130,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -154,7 +138,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -162,4 +145,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmgp_thompsonmp_pre.meta b/physics/GFS_rrtmgp_thompsonmp_pre.meta index 9bf5c95dd..f8fdc0e4f 100644 --- a/physics/GFS_rrtmgp_thompsonmp_pre.meta +++ b/physics/GFS_rrtmgp_thompsonmp_pre.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [nTracers] standard_name = number_of_tracers long_name = number of tracers @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [ncnd] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [doSWrad] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -46,7 +42,6 @@ dimensions = () type = logical intent = in - optional = F [doLWrad] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -54,7 +49,6 @@ dimensions = () type = logical intent = in - optional = F [i_cldliq] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldice] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -70,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldrain] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -78,7 +70,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldsnow] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -86,7 +77,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldgrpl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -94,7 +84,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldtot] standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer @@ -102,7 +91,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldliq_nc] standard_name = index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array long_name = tracer index for liquid number concentration @@ -110,7 +98,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldice_nc] standard_name = index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array long_name = tracer index for ice number concentration @@ -118,7 +105,6 @@ dimensions = () type = integer intent = in - optional = F [i_twa] standard_name = index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array long_name = tracer index for water friendly aerosol @@ -126,7 +112,6 @@ dimensions = () type = integer intent = in - optional = F [effr_in] standard_name = flag_for_cloud_effective_radii long_name = flag for cloud effective radii calculations in GFDL microphysics @@ -134,7 +119,6 @@ dimensions = () type = logical intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure at vertical interface for radiation calculation @@ -143,7 +127,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure at vertical layer for radiation calculation @@ -152,7 +135,6 @@ type = real kind = kind_phys intent = in - optional = F [tv_lay] standard_name = virtual_temperature long_name = layer virtual temperature @@ -161,7 +143,6 @@ type = real kind = kind_phys intent = in - optional = F [t_lay] standard_name = air_temperature_at_layer_for_RRTMGP long_name = air temperature at vertical layer for radiation calculation @@ -170,7 +151,6 @@ type = real kind = kind_phys intent = in - optional = F [effrin_cldliq] standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle long_name = eff. radius of cloud liquid water particle in micrometer @@ -179,7 +159,6 @@ type = real kind = kind_phys intent = inout - optional = F [effrin_cldice] standard_name = effective_radius_of_stratiform_cloud_ice_particle long_name = eff. radius of cloud ice water particle in micrometer @@ -188,7 +167,6 @@ type = real kind = kind_phys intent = inout - optional = F [effrin_cldsnow] standard_name = effective_radius_of_stratiform_cloud_snow_particle long_name = effective radius of cloud snow particle in micrometers @@ -197,7 +175,6 @@ type = real kind = kind_phys intent = inout - optional = F [tracer] standard_name = chemical_tracers long_name = chemical tracers @@ -206,7 +183,6 @@ type = real kind = kind_phys intent = in - optional = F [qs_lay] standard_name = saturation_vapor_pressure long_name = saturation vapor pressure @@ -215,7 +191,6 @@ type = real kind = kind_phys intent = in - optional = F [q_lay] standard_name = water_vapor_mixing_ratio long_name = water vaport mixing ratio @@ -224,7 +199,6 @@ type = real kind = kind_phys intent = in - optional = F [relhum] standard_name = relative_humidity long_name = layer relative humidity @@ -233,7 +207,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -242,7 +215,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -251,7 +223,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -260,7 +231,6 @@ type = real kind = kind_phys intent = in - optional = F [lmfshal] standard_name = flag_for_cloud_area_fraction_option_for_radiation long_name = flag for lmfshal @@ -268,7 +238,6 @@ dimensions = () type = logical intent = in - optional = F [ltaerosol] standard_name = flag_for_aerosol_physics long_name = flag for aerosol physics @@ -276,7 +245,6 @@ dimensions = () type = logical intent = in - optional = F [do_mynnedmf] standard_name = flag_for_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate MYNN-EDMF @@ -284,7 +252,6 @@ dimensions = () type = logical intent = in - optional = F [imfdeepcnv] standard_name = control_for_deep_convection_scheme long_name = flag for mass-flux deep convection scheme @@ -292,7 +259,6 @@ dimensions = () type = integer intent = in - optional = F [imfdeepcnv_gf] standard_name = identifier_for_grell_freitas_deep_convection long_name = flag for Grell-Freitas deep convection scheme @@ -300,7 +266,6 @@ dimensions = () type = integer intent = in - optional = F [doGP_cldoptics_PADE] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_PADE long_name = logical flag to control cloud optics scheme. @@ -308,7 +273,6 @@ dimensions = () type = logical intent = in - optional = F [doGP_cldoptics_LUT] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_LUT long_name = logical flag to control cloud optics scheme. @@ -316,7 +280,6 @@ dimensions = () type = logical intent = in - optional = F [cld_frac] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -325,7 +288,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_lwp] standard_name = cloud_liquid_water_path long_name = layer cloud liquid water path @@ -334,7 +296,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_reliq] standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud @@ -343,7 +304,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_iwp] standard_name = cloud_ice_water_path long_name = layer cloud ice water path @@ -352,7 +312,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_reice] standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud @@ -361,7 +320,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_swp] standard_name = cloud_snow_water_path long_name = layer cloud snow water path @@ -370,7 +328,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_resnow] standard_name = mean_effective_radius_for_snow_flake long_name = mean effective radius for snow cloud @@ -379,7 +336,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_rwp] standard_name = cloud_rain_water_path long_name = layer cloud rain water path @@ -388,7 +344,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_rerain] standard_name = mean_effective_radius_for_rain_drop long_name = mean effective radius for rain cloud @@ -397,7 +352,6 @@ type = real kind = kind_phys intent = inout - optional = F [precip_frac] standard_name = precipitation_fraction_by_layer long_name = precipitation fraction in each layer @@ -406,7 +360,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -415,7 +368,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -423,4 +375,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_rrtmgp_zhaocarr_pre.meta b/physics/GFS_rrtmgp_zhaocarr_pre.meta index 7f7184531..861b1144d 100644 --- a/physics/GFS_rrtmgp_zhaocarr_pre.meta +++ b/physics/GFS_rrtmgp_zhaocarr_pre.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [ncnd] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [nTracers] standard_name = number_of_tracers long_name = number of tracers @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [i_cldliq] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -54,7 +49,6 @@ dimensions = () type = logical intent = in - optional = F [lslwr] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -62,7 +56,6 @@ dimensions = () type = logical intent = in - optional = F [effr_in] standard_name = flag_for_cloud_effective_radii long_name = flag for cloud effective radii calculations in GFDL microphysics @@ -70,7 +63,6 @@ dimensions = () type = logical intent = in - optional = F [uni_cld] standard_name = flag_for_shoc_cloud_area_fraction_for_radiation long_name = flag for uni_cld @@ -78,7 +70,6 @@ dimensions = () type = logical intent = in - optional = F [lmfshal] standard_name = flag_for_cloud_area_fraction_option_for_radiation long_name = flag for lmfshal @@ -86,7 +77,6 @@ dimensions = () type = logical intent = in - optional = F [lat] standard_name = latitude long_name = latitude @@ -103,7 +93,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure at vertical interface for radiation calculation @@ -112,7 +101,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure at vertical layer for radiation calculation @@ -121,7 +109,6 @@ type = real kind = kind_phys intent = in - optional = F [t_lay] standard_name = air_temperature_at_layer_for_RRTMGP long_name = air temperature at vertical layer for radiation calculation @@ -130,7 +117,6 @@ type = real kind = kind_phys intent = in - optional = F [relhum] standard_name = relative_humidity long_name = layer relative humidity @@ -139,7 +125,6 @@ type = real kind = kind_phys intent = in - optional = F [tv_lay] standard_name = virtual_temperature long_name = layer virtual temperature @@ -148,7 +133,6 @@ type = real kind = kind_phys intent = in - optional = F [effrin_cldliq] standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle long_name = eff. radius of cloud liquid water particle in micrometer @@ -157,7 +141,6 @@ type = real kind = kind_phys intent = in - optional = F [effrin_cldice] standard_name = effective_radius_of_stratiform_cloud_ice_particle long_name = eff. radius of cloud ice water particle in micrometer @@ -166,7 +149,6 @@ type = real kind = kind_phys intent = in - optional = F [effrin_cldrain] standard_name = effective_radius_of_stratiform_cloud_rain_particle long_name = effective radius of cloud rain particle in micrometers @@ -175,7 +157,6 @@ type = real kind = kind_phys intent = in - optional = F [effrin_cldsnow] standard_name = effective_radius_of_stratiform_cloud_snow_particle long_name = effective radius of cloud snow particle in micrometers @@ -184,7 +165,6 @@ type = real kind = kind_phys intent = in - optional = F [shoc_sgs_cldfrac] standard_name = subgrid_scale_cloud_fraction_from_shoc long_name = subgrid-scale cloud fraction from the SHOC scheme @@ -193,7 +173,6 @@ type = real kind = kind_phys intent = in - optional = F [cncvw] standard_name = convective_cloud_condensate_mixing_ratio long_name = convective cloud water mixing ratio in the phy_f3d array @@ -202,7 +181,6 @@ type = real kind = kind_phys intent = in - optional = F [tracer] standard_name = chemical_tracers long_name = chemical tracers @@ -211,7 +189,6 @@ type = real kind = kind_phys intent = in - optional = F [con_ttp] standard_name = triple_point_temperature_of_water long_name = triple point temperature of water @@ -220,7 +197,6 @@ type = real kind = kind_phys intent = in - optional = F [con_epsq] standard_name = minimum_value_of_specific_humidity long_name = floor value for specific humidity @@ -229,7 +205,6 @@ type = real kind = kind_phys intent = in - optional = F [con_epsqs] standard_name = minimum_value_of_saturation_mixing_ratio long_name = floor value for saturation mixing ratio @@ -238,7 +213,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -247,7 +221,6 @@ type = real kind = kind_phys intent = in - optional = F [con_epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -256,7 +229,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -265,7 +237,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -274,7 +245,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -283,7 +253,6 @@ type = real kind = kind_phys intent = in - optional = F [cld_frac] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -292,7 +261,6 @@ type = real kind = kind_phys intent = out - optional = F [cld_lwp] standard_name = cloud_liquid_water_path long_name = layer cloud liquid water path @@ -301,7 +269,6 @@ type = real kind = kind_phys intent = out - optional = F [cld_reliq] standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud @@ -310,7 +277,6 @@ type = real kind = kind_phys intent = out - optional = F [cld_iwp] standard_name = cloud_ice_water_path long_name = layer cloud ice water path @@ -319,7 +285,6 @@ type = real kind = kind_phys intent = out - optional = F [cld_reice] standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud @@ -328,7 +293,6 @@ type = real kind = kind_phys intent = out - optional = F [cld_swp] standard_name = cloud_snow_water_path long_name = layer cloud snow water path @@ -337,7 +301,6 @@ type = real kind = kind_phys intent = out - optional = F [cld_resnow] standard_name = mean_effective_radius_for_snow_flake long_name = mean effective radius for snow cloud @@ -346,7 +309,6 @@ type = real kind = kind_phys intent = out - optional = F [cld_rwp] standard_name = cloud_rain_water_path long_name = layer cloud rain water path @@ -355,7 +317,6 @@ type = real kind = kind_phys intent = out - optional = F [cld_rerain] standard_name = mean_effective_radius_for_rain_drop long_name = mean effective radius for rain cloud @@ -364,7 +325,6 @@ type = real kind = kind_phys intent = out - optional = F [deltaZ] standard_name = layer_thickness long_name = layer_thickness @@ -373,7 +333,6 @@ type = real kind = kind_phys intent = out - optional = F [de_lgth] standard_name = cloud_decorrelation_length long_name = cloud decorrelation length @@ -382,7 +341,6 @@ type = real kind = kind_phys intent = out - optional = F [cloud_overlap_param] standard_name = cloud_overlap_param long_name = cloud overlap parameter @@ -391,7 +349,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -400,7 +357,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -408,4 +364,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_stochastics.meta b/physics/GFS_stochastics.meta index b5574d569..0b2c1da2f 100644 --- a/physics/GFS_stochastics.meta +++ b/physics/GFS_stochastics.meta @@ -13,7 +13,6 @@ dimensions = () type = integer intent = in - optional = F [do_ca] standard_name = flag_for_cellular_automata long_name = cellular automata main switch @@ -21,7 +20,6 @@ dimensions = () type = logical intent = in - optional = F [ca_global] standard_name = flag_for_global_cellular_automata long_name = switch for global ca @@ -29,7 +27,6 @@ dimensions = () type = logical intent = in - optional = F [si] standard_name = sigma_pressure_hybrid_vertical_coordinate long_name = vertical sigma coordinate for radiation initialization @@ -38,7 +35,6 @@ type = real kind = kind_phys intent = in - optional = F [vfact_ca] standard_name = cellular_automata_vertical_weight long_name = vertical weight for ca @@ -47,7 +43,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -56,7 +51,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -64,7 +58,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] name = GFS_stochastics_run @@ -76,7 +69,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -84,7 +76,6 @@ dimensions = () type = integer intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -92,7 +83,6 @@ dimensions = () type = integer intent = in - optional = F [delt] standard_name = timestep_for_physics long_name = physics timestep @@ -101,7 +91,6 @@ type = real kind = kind_phys intent = in - optional = F [do_sppt] standard_name = flag_for_stochastic_physics_perturbations long_name = flag for stochastic physics perturbations @@ -109,7 +98,6 @@ dimensions = () type = logical intent = in - optional = F [pert_mp] standard_name = flag_for_stochastic_microphysics_perturbations long_name = flag for stochastic microphysics physics perturbations @@ -117,7 +105,6 @@ dimensions = () type = logical intent = in - optional = F [use_zmtnblck] standard_name = flag_for_mountain_blocking_for_sppt long_name = flag for mountain blocking @@ -125,7 +112,6 @@ dimensions = () type = logical intent = in - optional = F [do_shum] standard_name = flag_for_stochastic_shum_option long_name = flag for stochastic shum option @@ -133,7 +119,6 @@ dimensions = () type = logical intent = in - optional = F [do_skeb] standard_name = flag_for_stochastic_skeb_option long_name = flag for stochastic skeb option @@ -141,7 +126,6 @@ dimensions = () type = logical intent = in - optional = F [do_ca] standard_name = flag_for_cellular_automata long_name = cellular automata main switch @@ -149,7 +133,6 @@ dimensions = () type = logical intent = in - optional = F [ca_global] standard_name = flag_for_global_cellular_automata long_name = switch for global ca @@ -157,7 +140,6 @@ dimensions = () type = logical intent = in - optional = F [ca1] standard_name = cellular_automata_global_pattern_from_coupled_process long_name = cellular automata global pattern @@ -166,7 +148,6 @@ type = real kind = kind_phys intent = in - optional = F [vfact_ca] standard_name = cellular_automata_vertical_weight long_name = vertical weight for ca @@ -175,7 +156,6 @@ type = real kind = kind_phys intent = in - optional = F [zmtnblck] standard_name = level_of_dividing_streamline long_name = level of the dividing streamline @@ -184,7 +164,6 @@ type = real kind = kind_phys intent = in - optional = F [sppt_wts] standard_name = sppt_weights_from_coupled_process long_name = weights for stochastic sppt perturbation @@ -193,7 +172,6 @@ type = real kind = kind_phys intent = inout - optional = F [skebu_wts] standard_name = skeb_x_wind_weights_from_coupled_process long_name = weights for stochastic skeb perturbation of x wind @@ -202,7 +180,6 @@ type = real kind = kind_phys intent = in - optional = F [skebv_wts] standard_name = skeb_y_wind_weights_from_coupled_process long_name = weights for stochastic skeb perturbation of y wind @@ -211,7 +188,6 @@ type = real kind = kind_phys intent = in - optional = F [shum_wts] standard_name = shum_weights_from_coupled_process long_name = weights for stochastic shum perturbation @@ -220,7 +196,6 @@ type = real kind = kind_phys intent = in - optional = F [diss_est] standard_name = dissipation_estimate_of_air_temperature_at_model_layers long_name = dissipation estimate model layer mean temperature @@ -229,7 +204,6 @@ type = real kind = kind_phys intent = in - optional = F [ugrs] standard_name = x_wind long_name = zonal wind @@ -238,7 +212,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs] standard_name = y_wind long_name = meridional wind @@ -247,7 +220,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -256,7 +228,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_wv] standard_name = specific_humidity long_name = water vapor specific humidity @@ -265,7 +236,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_cw] standard_name = cloud_liquid_water_mixing_ratio long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) @@ -274,7 +244,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_rw] standard_name = rain_mixing_ratio long_name = moist mixing ratio of rain @@ -283,7 +252,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_sw] standard_name = snow_mixing_ratio long_name = moist mixing ratio of snow @@ -292,7 +260,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_iw] standard_name = cloud_ice_mixing_ratio long_name = moist mixing ratio of cloud ice @@ -301,7 +268,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_gl] standard_name = graupel_mixing_ratio long_name = moist ratio of mass of graupel to mass of dry air plus vapor (without condensates) @@ -310,7 +276,6 @@ type = real kind = kind_phys intent = in - optional = F [gu0] standard_name = x_wind_of_new_state long_name = zonal wind updated by physics @@ -319,7 +284,6 @@ type = real kind = kind_phys intent = inout - optional = F [gv0] standard_name = y_wind_of_new_state long_name = meridional wind updated by physics @@ -328,7 +292,6 @@ type = real kind = kind_phys intent = inout - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -337,7 +300,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_wv] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -346,7 +308,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtdtnp] standard_name = tendency_of_air_temperature_to_withold_from_sppt long_name = temp. change from physics that should not be perturbed by sppt @@ -355,7 +316,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_cw] standard_name = cloud_liquid_water_mixing_ratio_of_new_state long_name = cloud condensed water mixing ratio updated by physics @@ -364,7 +324,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_rw] standard_name = rain_mixing_ratio_of_new_state long_name = moist mixing ratio of rain updated by physics @@ -373,7 +332,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_sw] standard_name = snow_mixing_ratio_of_new_state long_name = moist mixing ratio of snow updated by physics @@ -382,7 +340,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_iw] standard_name = cloud_ice_mixing_ratio_of_new_state long_name = moist mixing ratio of cloud ice updated by physics @@ -391,7 +348,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_gl] standard_name = graupel_mixing_ratio_of_new_state long_name = moist ratio of mass of graupel to mass of dry air plus vapor (without condensates) updated by physics @@ -400,7 +356,6 @@ type = real kind = kind_phys intent = inout - optional = F [rain] standard_name = lwe_thickness_of_precipitation_amount_on_dynamics_timestep long_name = total rain at this time step @@ -409,7 +364,6 @@ type = real kind = kind_phys intent = in - optional = F [rainc] standard_name = lwe_thickness_of_convective_precipitation_amount_on_dynamics_timestep long_name = convective rain at this time step @@ -418,7 +372,6 @@ type = real kind = kind_phys intent = in - optional = F [tprcp] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep long_name = total precipitation amount in each time step @@ -427,7 +380,6 @@ type = real kind = kind_phys intent = inout - optional = F [totprcp] standard_name = accumulated_lwe_thickness_of_precipitation_amount long_name = accumulated total precipitation @@ -436,7 +388,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvprcp] standard_name = cumulative_lwe_thickness_of_convective_precipitation_amount long_name = cumulative convective precipitation @@ -445,7 +396,6 @@ type = real kind = kind_phys intent = inout - optional = F [totprcpb] standard_name = accumulated_lwe_thickness_of_precipitation_amount_in_bucket long_name = accumulated total precipitation in bucket @@ -454,7 +404,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvprcpb] standard_name = cumulative_lwe_thickness_of_convective_precipitation_amount_in_bucket long_name = cumulative convective precipitation in bucket @@ -463,7 +412,6 @@ type = real kind = kind_phys intent = inout - optional = F [cplflx] standard_name = flag_for_surface_flux_coupling long_name = flag controlling cplflx collection (default off) @@ -471,7 +419,6 @@ dimensions = () type = logical intent = in - optional = F [rain_cpl] standard_name = cumulative_lwe_thickness_of_precipitation_amount_for_coupling long_name = total rain precipitation @@ -480,7 +427,6 @@ type = real kind = kind_phys intent = inout - optional = F [snow_cpl] standard_name = cumulative_lwe_thickness_of_snow_amount_for_coupling long_name = total snow precipitation @@ -489,7 +435,6 @@ type = real kind = kind_phys intent = inout - optional = F [drain_cpl] standard_name = tendency_of_lwe_thickness_of_rain_amount_on_dynamics_timestep_for_coupling long_name = change in rain_cpl (coupling_type) @@ -498,7 +443,6 @@ type = real kind = kind_phys intent = in - optional = F [dsnow_cpl] standard_name = tendency_of_lwe_thickness_of_snowfall_amount_on_dynamics_timestep_for_coupling long_name = change in show_cpl (coupling_type) @@ -507,7 +451,6 @@ type = real kind = kind_phys intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -515,7 +458,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -523,7 +465,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -531,14 +472,12 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water units = index dimensions = () intent = in - optional = F type = integer [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array @@ -547,7 +486,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -556,7 +494,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -564,4 +501,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_suite_interstitial.meta b/physics/GFS_suite_interstitial.meta index 2fef8390e..c93786019 100644 --- a/physics/GFS_suite_interstitial.meta +++ b/physics/GFS_suite_interstitial.meta @@ -14,7 +14,6 @@ dimensions = () type = GFS_interstitial_type intent = inout - optional = F [Model] standard_name = GFS_control_type_instance long_name = Fortran DDT containing FV3-GFS model control parameters @@ -22,7 +21,6 @@ dimensions = () type = GFS_control_type intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -31,7 +29,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -39,7 +36,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -58,7 +54,6 @@ dimensions = () type = GFS_interstitial_type intent = inout - optional = F [Model] standard_name = GFS_control_type_instance long_name = Fortran DDT containing FV3-GFS model control parameters @@ -66,7 +61,6 @@ dimensions = () type = GFS_control_type intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -75,7 +69,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -83,7 +76,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -102,7 +94,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -110,7 +101,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -118,7 +108,6 @@ dimensions = () type = integer intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -127,7 +116,6 @@ type = real kind = kind_phys intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -136,7 +124,6 @@ type = real kind = kind_phys intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -145,7 +132,6 @@ type = real kind = kind_phys intent = in - optional = F [area] standard_name = cell_area long_name = area of the grid cell @@ -154,7 +140,6 @@ type = real kind = kind_phys intent = in - optional = F [dxmin] standard_name = min_grid_scale long_name = minimum scaling factor for critical relative humidity @@ -163,7 +148,6 @@ type = real kind = kind_phys intent = in - optional = F [dxinv] standard_name = reciprocal_of_grid_scale_range long_name = inverse scaling factor for critical relative humidity @@ -172,7 +156,6 @@ type = real kind = kind_phys intent = in - optional = F [pgr] standard_name = surface_air_pressure long_name = surface pressure @@ -181,7 +164,6 @@ type = real kind = kind_phys intent = in - optional = F [islmsk] standard_name = sea_land_ice_mask long_name = landmask: sea/land/ice=0/1/2 @@ -189,7 +171,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [work1] standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes long_name = grid size related coefficient used in scale-sensitive schemes @@ -198,7 +179,6 @@ type = real kind = kind_phys intent = out - optional = F [work2] standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes_complement long_name = complement to work1 @@ -207,7 +187,6 @@ type = real kind = kind_phys intent = out - optional = F [psurf] standard_name = surface_air_pressure_diag long_name = surface air pressure diagnostic @@ -216,7 +195,6 @@ type = real kind = kind_phys intent = out - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind @@ -225,7 +203,6 @@ type = real kind = kind_phys intent = out - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = updated tendency of the y wind @@ -234,7 +211,6 @@ type = real kind = kind_phys intent = out - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -243,7 +219,6 @@ type = real kind = kind_phys intent = out - optional = F [dqdt] standard_name = process_split_cumulative_tendency_of_tracers long_name = updated tendency of the tracers @@ -252,7 +227,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -261,7 +235,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -269,7 +242,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -288,7 +260,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -296,7 +267,6 @@ dimensions = () type = integer intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -304,7 +274,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -312,7 +281,6 @@ dimensions = () type = logical intent = in - optional = F [lsidea] standard_name = flag_for_integrated_dynamics_through_earths_atmosphere long_name = flag for idealized physics @@ -320,7 +288,6 @@ dimensions = () type = logical intent = in - optional = F [flag_cice] standard_name = flag_for_cice long_name = flag for cice @@ -328,7 +295,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [shal_cnv] standard_name = flag_for_simplified_arakawa_schubert_shallow_convection long_name = flag for calling shallow convection @@ -336,7 +302,6 @@ dimensions = () type = logical intent = in - optional = F [old_monin] standard_name = flag_for_old_PBL_scheme long_name = flag for using old PBL schemes @@ -344,7 +309,6 @@ dimensions = () type = logical intent = in - optional = F [mstrat] standard_name = flag_for_moorthi_stratus long_name = flag for moorthi approach for stratus @@ -352,7 +316,6 @@ dimensions = () type = logical intent = in - optional = F [do_shoc] standard_name = flag_for_shoc long_name = flag for SHOC @@ -360,7 +323,6 @@ dimensions = () type = logical intent = in - optional = F [frac_grid] standard_name = flag_for_fractional_landmask long_name = flag for fractional grid @@ -368,7 +330,6 @@ dimensions = () type = logical intent = in - optional = F [imfshalcnv] standard_name = control_for_shallow_convection_scheme long_name = flag for mass-flux shallow convection scheme @@ -376,7 +337,6 @@ dimensions = () type = integer intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -385,7 +345,6 @@ type = real kind = kind_phys intent = in - optional = F [xcosz] standard_name = instantaneous_cosine_of_zenith_angle long_name = cosine of zenith angle at current time @@ -394,7 +353,6 @@ type = real kind = kind_phys intent = in - optional = F [adjsfcdsw] standard_name = surface_downwelling_shortwave_flux long_name = surface downwelling shortwave flux at current time @@ -403,7 +361,6 @@ type = real kind = kind_phys intent = in - optional = F [adjsfcdlw] standard_name = surface_downwelling_longwave_flux long_name = surface downwelling longwave flux at current time @@ -412,7 +369,6 @@ type = real kind = kind_phys intent = in - optional = F [cice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -421,7 +377,6 @@ type = real kind = kind_phys intent = in - optional = F [pgr] standard_name = surface_air_pressure long_name = surface pressure @@ -430,7 +385,6 @@ type = real kind = kind_phys intent = in - optional = F [ulwsfc_cice] standard_name = surface_upwelling_longwave_flux_from_coupled_process long_name = surface upwelling longwave flux for coupling @@ -439,7 +393,6 @@ type = real kind = kind_phys intent = in - optional = F [lwhd] standard_name = tendency_of_air_temperature_due_to_integrated_dynamics_through_earths_atmosphere long_name = idea sky lw heating rates @@ -448,7 +401,6 @@ type = real kind = kind_phys intent = in - optional = F [htrsw] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky sw heating rate @@ -457,7 +409,6 @@ type = real kind = kind_phys intent = in - optional = F [htrlw] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky lw heating rate @@ -466,7 +417,6 @@ type = real kind = kind_phys intent = in - optional = F [xmu] standard_name = zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes long_name = zenith angle temporal adjustment factor for shortwave fluxes @@ -475,7 +425,6 @@ type = real kind = kind_phys intent = in - optional = F [ctei_rm] standard_name = tunable_parameter_for_critical_cloud_top_entrainment_instability_criteria long_name = critical cloud top entrainment instability criteria @@ -484,7 +433,6 @@ type = real kind = kind_phys intent = in - optional = F [work1] standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes long_name = grid size related coefficient used in scale-sensitive schemes @@ -493,7 +441,6 @@ type = real kind = kind_phys intent = in - optional = F [work2] standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes_complement long_name = complement to work1 @@ -502,7 +449,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -511,7 +457,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -520,7 +465,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -529,7 +473,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_water_vapor] standard_name = specific_humidity long_name = water vapor specific humidity @@ -538,7 +481,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_cloud_water] standard_name = cloud_liquid_water_mixing_ratio long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) @@ -547,7 +489,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -556,7 +497,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -565,7 +505,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers @@ -574,7 +513,6 @@ type = real kind = kind_phys intent = in - optional = F [suntim] standard_name = duration_of_sunshine long_name = sunshine duration time @@ -583,7 +521,6 @@ type = real kind = kind_phys intent = inout - optional = F [use_LW_jacobian] standard_name = flag_to_calc_RRTMGP_LW_jacobian long_name = logical flag to control RRTMGP LW calculation @@ -591,7 +528,6 @@ dimensions = () type = logical intent = in - optional = F [htrlwu] standard_name = updated_tendency_of_air_temperature_due_to_longwave_heating_on_physics_timestep long_name = total sky longwave heating rate on physics time step @@ -600,7 +536,6 @@ type = real kind = kind_phys intent = in - optional = F [adjsfculw] standard_name = surface_upwelling_longwave_flux long_name = surface upwelling longwave flux at current time @@ -609,7 +544,6 @@ type = real kind = kind_phys intent = inout - optional = F [adjsfculw_lnd] standard_name = surface_upwelling_longwave_flux_over_land long_name = surface upwelling longwave flux at current time over land @@ -618,7 +552,6 @@ type = real kind = kind_phys intent = in - optional = F [adjsfculw_ice] standard_name = surface_upwelling_longwave_flux_over_ice long_name = surface upwelling longwave flux at current time over ice @@ -627,7 +560,6 @@ type = real kind = kind_phys intent = in - optional = F [adjsfculw_wat] standard_name = surface_upwelling_longwave_flux_over_water long_name = surface upwelling longwave flux at current time over water @@ -636,7 +568,6 @@ type = real kind = kind_phys intent = in - optional = F [dlwsfc] standard_name = cumulative_surface_downwelling_longwave_flux_multiplied_by_timestep long_name = cumulative surface downwelling LW flux multiplied by timestep @@ -645,7 +576,6 @@ type = real kind = kind_phys intent = inout - optional = F [ulwsfc] standard_name = cumulative_surface_upwelling_longwave_flux_multiplied_by_timestep long_name = cumulative surface upwelling LW flux multiplied by timestep @@ -654,7 +584,6 @@ type = real kind = kind_phys intent = inout - optional = F [psmean] standard_name = cumulative_surface_pressure_multiplied_by_timestep long_name = cumulative surface pressure multiplied by timestep @@ -663,7 +592,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -672,7 +600,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -680,7 +607,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_process_longwave] standard_name = index_of_longwave_heating_process_in_cumulative_change_index long_name = index of longwave heating process in second dimension of array cumulative change index @@ -688,7 +614,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_shortwave] standard_name = index_of_shortwave_heating_process_in_cumulative_change_index long_name = index of shortwave heating process in second dimension of array cumulative change index @@ -696,7 +621,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_pbl] standard_name = index_of_subgrid_scale_vertical_mixing_process_in_cumulative_change_index long_name = index of subgrid scale vertical mixing process in second dimension of array cumulative change index @@ -704,7 +628,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_dcnv] standard_name = index_of_deep_convection_process_process_in_cumulative_change_index long_name = index of deep convection process in second dimension of array cumulative change index @@ -712,7 +635,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_scnv] standard_name = index_of_shallow_convection_process_process_in_cumulative_change_index long_name = index of shallow convection process in second dimension of array cumulative change index @@ -720,7 +642,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_mp] standard_name = index_of_microphysics_process_process_in_cumulative_change_index long_name = index of microphysics transport process in second dimension of array cumulative change index @@ -728,7 +649,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -736,7 +656,6 @@ dimensions = () type = integer intent = in - optional = F [ctei_rml] standard_name = grid_sensitive_critical_cloud_top_entrainment_instability_criteria long_name = grid sensitive critical cloud top entrainment instability criteria @@ -745,7 +664,6 @@ type = real kind = kind_phys intent = inout - optional = F [ctei_r] standard_name = cloud_top_entrainment_instability_value long_name = cloud top entrainment instability value @@ -754,7 +672,6 @@ type = real kind = kind_phys intent = inout - optional = F [kinver] standard_name = index_of_highest_temperature_inversion long_name = index of highest temperature inversion @@ -762,7 +679,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -770,7 +686,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -778,7 +693,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -786,7 +700,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [frland] standard_name = land_area_fraction_for_microphysics long_name = land area fraction used in microphysics schemes @@ -795,7 +708,6 @@ type = real kind = kind_phys intent = in - optional = F [huge] standard_name = netcdf_float_fillvalue long_name = definition of NetCDF float FillValue @@ -804,7 +716,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -813,7 +724,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -821,7 +731,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -840,7 +749,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -848,7 +756,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -856,7 +763,6 @@ dimensions = () type = integer intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -865,7 +771,6 @@ type = real kind = kind_phys intent = in - optional = F [ugrs] standard_name = x_wind long_name = zonal wind @@ -874,7 +779,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs] standard_name = y_wind long_name = meridional wind @@ -883,7 +787,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs] standard_name = tracer_concentration long_name = model layer mean tracer concentration @@ -892,7 +795,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -901,7 +803,6 @@ type = real kind = kind_phys intent = out - optional = F [gu0] standard_name = x_wind_of_new_state long_name = zonal wind updated by physics @@ -910,7 +811,6 @@ type = real kind = kind_phys intent = out - optional = F [gv0] standard_name = y_wind_of_new_state long_name = meridional wind updated by physics @@ -919,7 +819,6 @@ type = real kind = kind_phys intent = out - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -928,7 +827,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -937,7 +835,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -945,7 +842,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -964,7 +860,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -972,7 +867,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -980,7 +874,6 @@ dimensions = () type = integer intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -989,7 +882,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -998,7 +890,6 @@ type = real kind = kind_phys intent = in - optional = F [ugrs] standard_name = x_wind long_name = zonal wind @@ -1007,7 +898,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs] standard_name = y_wind long_name = meridional wind @@ -1016,7 +906,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs] standard_name = tracer_concentration long_name = model layer mean tracer concentration @@ -1025,7 +914,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind @@ -1034,7 +922,6 @@ type = real kind = kind_phys intent = in - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = updated tendency of the y wind @@ -1043,7 +930,6 @@ type = real kind = kind_phys intent = in - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -1052,7 +938,6 @@ type = real kind = kind_phys intent = in - optional = F [dqdt] standard_name = process_split_cumulative_tendency_of_tracers long_name = updated tendency of the tracers @@ -1061,7 +946,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -1070,7 +954,6 @@ type = real kind = kind_phys intent = out - optional = F [gu0] standard_name = x_wind_of_new_state long_name = zonal wind updated by physics @@ -1079,7 +962,6 @@ type = real kind = kind_phys intent = out - optional = F [gv0] standard_name = y_wind_of_new_state long_name = meridional wind updated by physics @@ -1088,7 +970,6 @@ type = real kind = kind_phys intent = out - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -1097,7 +978,6 @@ type = real kind = kind_phys intent = out - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -1105,7 +985,6 @@ dimensions = () type = integer intent = in - optional = F [nqrimef] standard_name = index_of_mass_weighted_rime_factor_in_tracer_concentration_array long_name = tracer index for mass weighted rime factor @@ -1113,7 +992,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -1121,7 +999,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_fer_hires] standard_name = identifier_for_fer_hires_microphysics_scheme long_name = choice of Ferrier-Aligo microphysics scheme @@ -1129,7 +1006,6 @@ dimensions = () type = integer intent = in - optional = F [epsq] standard_name = minimum_value_of_specific_humidity long_name = floor value for specific humidity @@ -1138,7 +1014,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1147,7 +1022,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1155,7 +1029,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -1174,7 +1047,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -1182,7 +1054,6 @@ dimensions = () type = integer intent = in - optional = F [nn] standard_name = number_of_tracers_for_convective_transport long_name = number of tracers for convective transport @@ -1190,7 +1061,6 @@ dimensions = () type = integer intent = in - optional = F [cscnv] standard_name = flag_for_Chikira_Sugiyama_deep_convection long_name = flag for Chikira-Sugiyama convection @@ -1198,7 +1068,6 @@ dimensions = () type = logical intent = in - optional = F [satmedmf] standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL long_name = flag for scale-aware TKE moist EDMF PBL scheme @@ -1206,7 +1075,6 @@ dimensions = () type = logical intent = in - optional = F [trans_trac] standard_name = flag_for_convective_transport_of_tracers long_name = flag for convective transport of tracers @@ -1214,7 +1082,6 @@ dimensions = () type = logical intent = in - optional = F [do_shoc] standard_name = flag_for_shoc long_name = flag for SHOC @@ -1222,7 +1089,6 @@ dimensions = () type = logical intent = in - optional = F [ltaerosol] standard_name = flag_for_aerosol_physics long_name = flag for aerosol physics @@ -1230,7 +1096,6 @@ dimensions = () type = logical intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -1238,7 +1103,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -1246,7 +1110,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -1254,7 +1117,6 @@ dimensions = () type = integer intent = in - optional = F [ntclamt] standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer @@ -1262,7 +1124,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -1270,7 +1131,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -1278,7 +1138,6 @@ dimensions = () type = integer intent = in - optional = F [ntrnc] standard_name = index_of_mass_number_concentration_of_rain_in_tracer_concentration_array long_name = tracer index for rain number concentration @@ -1286,7 +1145,6 @@ dimensions = () type = integer intent = in - optional = F [ntsnc] standard_name = index_of_mass_number_concentration_of_snow_in_tracer_concentration_array long_name = tracer index for snow number concentration @@ -1294,7 +1152,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -1302,7 +1159,6 @@ dimensions = () type = integer intent = in - optional = F [ntgnc] standard_name = index_of_mass_number_concentration_of_graupel_in_tracer_concentration_array long_name = tracer index for graupel number concentration @@ -1310,7 +1166,6 @@ dimensions = () type = integer intent = in - optional = F [xlon] standard_name = longitude long_name = longitude @@ -1319,7 +1174,6 @@ type = real kind = kind_phys intent = in - optional = F [xlat] standard_name = latitude long_name = latitude @@ -1328,7 +1182,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -1337,7 +1190,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -1346,7 +1198,6 @@ type = real kind = kind_phys intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -1354,7 +1205,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -1362,7 +1212,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr] standard_name = identifier_for_zhao_carr_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme @@ -1370,7 +1219,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr_pdf] standard_name = identifier_for_zhao_carr_pdf_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme with PDF clouds @@ -1378,7 +1226,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -1386,7 +1233,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -1394,7 +1240,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_wsm6] standard_name = identifier_for_wsm6_microphysics_scheme long_name = choice of WSM6 microphysics scheme @@ -1402,7 +1247,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_fer_hires] standard_name = identifier_for_fer_hires_microphysics_scheme long_name = choice of Ferrier-Aligo microphysics scheme @@ -1410,7 +1254,6 @@ dimensions = () type = integer intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -1419,7 +1262,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -1428,7 +1270,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers @@ -1437,7 +1278,6 @@ type = real kind = kind_phys intent = in - optional = F [rhcbot] standard_name = critical_relative_humidity_at_surface long_name = critical relative humidity at the surface @@ -1446,7 +1286,6 @@ type = real kind = kind_phys intent = in - optional = F [rhcpbl] standard_name = critical_relative_humidity_at_PBL_top long_name = critical relative humidity at the PBL top @@ -1455,7 +1294,6 @@ type = real kind = kind_phys intent = in - optional = F [rhctop] standard_name = critical_relative_humidity_at_toa long_name = critical relative humidity at the top of atmosphere @@ -1464,7 +1302,6 @@ type = real kind = kind_phys intent = in - optional = F [rhcmax] standard_name = max_critical_relative_humidity long_name = maximum critical relative humidity @@ -1473,7 +1310,6 @@ type = real kind = kind_phys intent = in - optional = F [islmsk] standard_name = sea_land_ice_mask long_name = sea/land/ice mask (=0/1/2) @@ -1481,7 +1317,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [work1] standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes long_name = grid size related coefficient used in scale-sensitive schemes @@ -1490,7 +1325,6 @@ type = real kind = kind_phys intent = in - optional = F [work2] standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes_complement long_name = complement to work1 @@ -1499,7 +1333,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = vertical index at top atmospheric boundary layer @@ -1507,7 +1340,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [kinver] standard_name = index_of_highest_temperature_inversion long_name = index of highest temperature inversion @@ -1515,7 +1347,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [ras] standard_name = flag_for_relaxed_arakawa_schubert_deep_convection long_name = flag for ras convection scheme @@ -1523,7 +1354,6 @@ dimensions = () type = logical intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -1531,7 +1361,6 @@ dimensions = () type = integer intent = in - optional = F [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -1540,7 +1369,6 @@ type = real kind = kind_phys intent = inout - optional = F [rhc] standard_name = critical_relative_humidity long_name = critical relative humidity @@ -1549,7 +1377,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_qc] standard_name = cloud_condensed_water_mixing_ratio_save long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) before entering a physics scheme @@ -1558,7 +1385,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_qi] standard_name = ice_water_mixing_ratio_save long_name = cloud ice water mixing ratio before entering a physics scheme @@ -1567,7 +1393,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_tcp] standard_name = air_temperature_save_from_convective_parameterization long_name = air temperature after cumulus parameterization @@ -1576,7 +1401,6 @@ type = real kind = kind_phys intent = inout - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -1584,7 +1408,6 @@ dimensions = () type = logical intent = in - optional = F [qdiag3d] standard_name = flag_for_tracer_diagnostics_3D long_name = flag for 3d tracer diagnostic fields @@ -1592,7 +1415,6 @@ dimensions = () type = logical intent = in - optional = F [index_of_process_conv_trans] standard_name = index_of_convective_transport_process_in_cumulative_change_index long_name = index of convective transport process in second dimension of array cumulative change index @@ -1600,7 +1422,6 @@ dimensions = () type = integer intent = in - optional = F [save_lnc] standard_name = liquid_cloud_number_concentration_save long_name = liquid cloud number concentration before entering a physics scheme @@ -1609,7 +1430,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_inc] standard_name = ice_cloud_number_concentration_save long_name = ice cloud number concentration before entering a physics scheme @@ -1618,7 +1438,6 @@ type = real kind = kind_phys intent = inout - optional = F [ntlnc] standard_name = index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array long_name = tracer index for liquid number concentration @@ -1626,7 +1445,6 @@ dimensions = () type = integer intent = in - optional = F [ntinc] standard_name = index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array long_name = tracer index for ice number concentration @@ -1634,7 +1452,6 @@ dimensions = () type = integer intent = in - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -1642,7 +1459,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1651,7 +1467,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1659,7 +1474,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -1678,7 +1492,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -1686,7 +1499,6 @@ dimensions = () type = integer intent = in - optional = F [ltaerosol] standard_name = flag_for_aerosol_physics long_name = flag for aerosol physics @@ -1694,7 +1506,6 @@ dimensions = () type = logical intent = in - optional = F [tracers_total] standard_name = number_of_total_tracers long_name = total number of tracers @@ -1702,7 +1513,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -1710,7 +1520,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -1718,7 +1527,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -1726,7 +1534,6 @@ dimensions = () type = integer intent = in - optional = F [ntclamt] standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer @@ -1734,7 +1541,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -1742,7 +1548,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -1750,7 +1555,6 @@ dimensions = () type = integer intent = in - optional = F [ntrnc] standard_name = index_of_mass_number_concentration_of_rain_in_tracer_concentration_array long_name = tracer index for rain number concentration @@ -1758,7 +1562,6 @@ dimensions = () type = integer intent = in - optional = F [ntsnc] standard_name = index_of_mass_number_concentration_of_snow_in_tracer_concentration_array long_name = tracer index for snow number concentration @@ -1766,7 +1569,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -1774,7 +1576,6 @@ dimensions = () type = integer intent = in - optional = F [ntgnc] standard_name = index_of_mass_number_concentration_of_graupel_in_tracer_concentration_array long_name = tracer index for graupel number concentration @@ -1782,7 +1583,6 @@ dimensions = () type = integer intent = in - optional = F [ntlnc] standard_name = index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array long_name = tracer index for liquid number concentration @@ -1790,7 +1590,6 @@ dimensions = () type = integer intent = in - optional = F [ntinc] standard_name = index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array long_name = tracer index for ice number concentration @@ -1798,7 +1597,6 @@ dimensions = () type = integer intent = in - optional = F [nn] standard_name = number_of_tracers_for_convective_transport long_name = number of tracers for convective transport @@ -1806,7 +1604,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -1814,7 +1611,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -1822,7 +1618,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -1830,7 +1625,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr] standard_name = identifier_for_zhao_carr_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme @@ -1838,7 +1632,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr_pdf] standard_name = identifier_for_zhao_carr_pdf_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme with PDF clouds @@ -1846,7 +1639,6 @@ dimensions = () type = integer intent = in - optional = F [convert_dry_rho] standard_name = flag_for_converting_hydrometeors_from_moist_to_dry_air long_name = flag for converting hydrometeors from moist to dry air @@ -1854,7 +1646,6 @@ dimensions = () type = logical intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -1863,7 +1654,6 @@ type = real kind = kind_phys intent = in - optional = F [save_qc] standard_name = cloud_condensed_water_mixing_ratio_save long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) before entering a physics scheme @@ -1872,7 +1662,6 @@ type = real kind = kind_phys intent = in - optional = F [save_qi] standard_name = ice_water_mixing_ratio_save long_name = cloud ice water mixing ratio before entering a physics scheme @@ -1881,7 +1670,6 @@ type = real kind = kind_phys intent = in - optional = F [save_lnc] standard_name = liquid_cloud_number_concentration_save long_name = liquid cloud number concentration before entering a physics scheme @@ -1890,7 +1678,6 @@ type = real kind = kind_phys intent = in - optional = F [save_inc] standard_name = ice_cloud_number_concentration_save long_name = ice cloud number concentration before entering a physics scheme @@ -1899,7 +1686,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -1908,7 +1694,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -1917,7 +1702,6 @@ type = real kind = kind_phys intent = inout - optional = F [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -1926,7 +1710,6 @@ type = real kind = kind_phys intent = inout - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -1935,7 +1718,6 @@ type = real kind = kind_phys intent = in - optional = F [save_tcp] standard_name = air_temperature_save_from_convective_parameterization long_name = air temperature after cumulus parameterization @@ -1944,7 +1726,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -1953,7 +1734,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -1962,7 +1742,6 @@ type = real kind = kind_phys intent = in - optional = F [nwfa] standard_name = mass_number_concentration_of_hygroscopic_aerosols long_name = number concentration of water-friendly aerosols @@ -1971,7 +1750,6 @@ type = real kind = kind_phys intent = in - optional = F [spechum] standard_name = specific_humidity long_name = water vapor specific humidity @@ -1980,7 +1758,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -1988,7 +1765,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -1997,7 +1773,6 @@ type = real kind = kind_phys intent = inout - optional = F [ntk] standard_name = index_for_turbulent_kinetic_energy_convective_transport_tracer long_name = index for turbulent kinetic energy in the convectively transported tracer array @@ -2005,7 +1780,6 @@ dimensions = () type = integer intent = in - optional = F [ntke] standard_name = index_of_turbulent_kinetic_energy_in_tracer_concentration_array long_name = tracer index for turbulent kinetic energy @@ -2013,7 +1787,6 @@ dimensions = () type = integer intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -2021,7 +1794,6 @@ dimensions = () type = logical intent = in - optional = F [qdiag3d] standard_name = flag_for_tracer_diagnostics_3D long_name = flag for 3d tracer diagnostic fields @@ -2029,7 +1801,6 @@ dimensions = () type = logical intent = in - optional = F [index_of_process_conv_trans] standard_name = index_of_convective_transport_process_in_cumulative_change_index long_name = index of convective transport process in second dimension of array cumulative change index @@ -2037,7 +1808,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -2046,7 +1816,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -2054,7 +1823,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -2073,7 +1841,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -2081,7 +1848,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -2089,7 +1855,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -2097,7 +1862,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -2105,7 +1869,6 @@ dimensions = () type = integer intent = in - optional = F [nn] standard_name = number_of_tracers_for_convective_transport long_name = number of tracers for convective transport @@ -2113,7 +1876,6 @@ dimensions = () type = integer intent = in - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -2122,7 +1884,6 @@ type = real kind = kind_phys intent = in - optional = F [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -2131,7 +1892,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -2140,7 +1900,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -2148,4 +1907,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_surface_composites.meta b/physics/GFS_surface_composites.meta index aea0561a8..e1ae37846 100644 --- a/physics/GFS_surface_composites.meta +++ b/physics/GFS_surface_composites.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [flag_init] standard_name = flag_for_first_timestep long_name = flag signaling first time step for time integration loop @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [lkm] standard_name = control_for_lake_surface_scheme long_name = flag for lake surface model @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [lsm] standard_name = control_for_land_surface_scheme long_name = flag for land surface model @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [frac_grid] standard_name = flag_for_fractional_landmask long_name = flag for fractional grid @@ -70,7 +63,6 @@ dimensions = () type = logical intent = in - optional = F [flag_cice] standard_name = flag_for_cice long_name = flag for cice @@ -78,7 +70,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [cplflx] standard_name = flag_for_surface_flux_coupling long_name = flag controlling cplflx collection (default off) @@ -86,7 +77,6 @@ dimensions = () type = logical intent = in - optional = F [cplice] standard_name = flag_for_sea_ice_coupling long_name = flag controlling cplice collection (default on) @@ -94,7 +84,6 @@ dimensions = () type = logical intent = in - optional = F [cplwav2atm] standard_name = flag_for_one_way_ocean_wave_coupling_to_atmosphere long_name = flag controlling ocean wave coupling to the atmosphere (default off) @@ -102,7 +91,6 @@ dimensions = () type = logical intent = in - optional = F [landfrac] standard_name = land_area_fraction long_name = fraction of horizontal grid area occupied by land @@ -111,7 +99,6 @@ type = real kind = kind_phys intent = in - optional = F [lakefrac] standard_name = lake_area_fraction long_name = fraction of horizontal grid area occupied by lake @@ -120,7 +107,6 @@ type = real kind = kind_phys intent = in - optional = F [lakedepth] standard_name = lake_depth long_name = lake depth @@ -129,7 +115,6 @@ type = real kind = kind_phys intent = in - optional = F [oceanfrac] standard_name = sea_area_fraction long_name = fraction of horizontal grid area occupied by ocean @@ -138,7 +123,6 @@ type = real kind = kind_phys intent = in - optional = F [frland] standard_name = land_area_fraction_for_microphysics long_name = land area fraction used in microphysics schemes @@ -147,7 +131,6 @@ type = real kind = kind_phys intent = out - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -155,7 +138,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -163,7 +145,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [lake] standard_name = flag_nonzero_lake_surface_fraction long_name = flag indicating presence of some lake surface area fraction @@ -171,7 +152,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [use_flake] standard_name = flag_for_using_flake long_name = flag indicating lake points using flake model @@ -179,7 +159,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -187,7 +166,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [hice] standard_name = sea_ice_thickness long_name = sea ice thickness @@ -196,7 +174,6 @@ type = real kind = kind_phys intent = inout - optional = F [cice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -205,7 +182,6 @@ type = real kind = kind_phys intent = inout - optional = F [zorlo] standard_name = surface_roughness_length_over_water long_name = surface roughness length over water @@ -214,7 +190,6 @@ type = real kind = kind_phys intent = inout - optional = F [zorll] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land @@ -223,7 +198,6 @@ type = real kind = kind_phys intent = inout - optional = F [zorli] standard_name = surface_roughness_length_over_ice long_name = surface roughness length over ice @@ -232,7 +206,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowd] standard_name = lwe_surface_snow long_name = water equivalent snow depth @@ -241,7 +214,6 @@ type = real kind = kind_phys intent = in - optional = F [snowd_lnd] standard_name = surface_snow_thickness_water_equivalent_over_land long_name = water equivalent snow depth over land @@ -250,7 +222,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowd_ice] standard_name = surface_snow_thickness_water_equivalent_over_ice long_name = water equivalent snow depth over ice @@ -259,7 +230,6 @@ type = real kind = kind_phys intent = inout - optional = F [tprcp] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep long_name = total precipitation amount in each time step @@ -268,7 +238,6 @@ type = real kind = kind_phys intent = in - optional = F [tprcp_wat] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_water long_name = total precipitation amount in each time step over water @@ -277,7 +246,6 @@ type = real kind = kind_phys intent = inout - optional = F [tprcp_lnd] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_land long_name = total precipitation amount in each time step over land @@ -286,7 +254,6 @@ type = real kind = kind_phys intent = inout - optional = F [tprcp_ice] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_ice long_name = total precipitation amount in each time step over ice @@ -295,7 +262,6 @@ type = real kind = kind_phys intent = inout - optional = F [uustar] standard_name = surface_friction_velocity long_name = boundary layer parameter @@ -304,7 +270,6 @@ type = real kind = kind_phys intent = in - optional = F [uustar_wat] standard_name = surface_friction_velocity_over_water long_name = surface friction velocity over water @@ -313,7 +278,6 @@ type = real kind = kind_phys intent = inout - optional = F [uustar_lnd] standard_name = surface_friction_velocity_over_land long_name = surface friction velocity over land @@ -322,7 +286,6 @@ type = real kind = kind_phys intent = inout - optional = F [uustar_ice] standard_name = surface_friction_velocity_over_ice long_name = surface friction velocity over ice @@ -331,7 +294,6 @@ type = real kind = kind_phys intent = inout - optional = F [weasd] standard_name = lwe_thickness_of_surface_snow_amount long_name = water equiv of acc snow depth over land and sea ice @@ -340,7 +302,6 @@ type = real kind = kind_phys intent = in - optional = F [weasd_lnd] standard_name = water_equivalent_accumulated_snow_depth_over_land long_name = water equiv of acc snow depth over land @@ -349,7 +310,6 @@ type = real kind = kind_phys intent = inout - optional = F [weasd_ice] standard_name = water_equivalent_accumulated_snow_depth_over_ice long_name = water equiv of acc snow depth over ice @@ -358,7 +318,6 @@ type = real kind = kind_phys intent = inout - optional = F [ep1d_ice] standard_name = surface_upward_potential_latent_heat_flux_over_ice long_name = surface upward potential latent heat flux over ice @@ -367,7 +326,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfc] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -376,7 +334,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfco] standard_name = sea_surface_temperature long_name = sea surface temperature @@ -385,7 +342,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfcl] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -394,7 +350,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfc_wat] standard_name = surface_skin_temperature_over_water long_name = surface skin temperature over water @@ -403,7 +358,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfc_ice] standard_name = surface_skin_temperature_over_ice long_name = surface skin temperature over ice @@ -412,7 +366,6 @@ type = real kind = kind_phys intent = inout - optional = F [tisfc] standard_name = sea_ice_temperature long_name = sea ice surface skin temperature @@ -421,7 +374,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsurf_wat] standard_name = surface_skin_temperature_after_iteration_over_water long_name = surface skin temperature after iteration over water @@ -430,7 +382,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsurf_lnd] standard_name = surface_skin_temperature_after_iteration_over_land long_name = surface skin temperature after iteration over land @@ -439,7 +390,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsurf_ice] standard_name = surface_skin_temperature_after_iteration_over_ice long_name = surface skin temperature after iteration over ice @@ -448,7 +398,6 @@ type = real kind = kind_phys intent = inout - optional = F [gflx_ice] standard_name = upward_heat_flux_in_soil_over_ice long_name = soil heat flux over ice @@ -457,7 +406,6 @@ type = real kind = kind_phys intent = inout - optional = F [tgice] standard_name = freezing_point_temperature_of_seawater long_name = freezing point temperature of seawater @@ -466,7 +414,6 @@ type = real kind = kind_phys intent = in - optional = F [islmsk] standard_name = sea_land_ice_mask long_name = sea/land/ice mask (=0/1/2) @@ -474,7 +421,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [islmsk_cice] standard_name = sea_land_ice_mask_cice long_name = sea/land/ice mask cice (=0/1/2) @@ -482,7 +428,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -491,7 +436,6 @@ type = real kind = kind_phys intent = inout - optional = F [semis_rad] standard_name = surface_longwave_emissivity long_name = surface lw emissivity in fraction @@ -500,7 +444,6 @@ type = real kind = kind_phys intent = in - optional = F [semis_wat] standard_name = surface_longwave_emissivity_over_water long_name = surface lw emissivity in fraction over water @@ -509,7 +452,6 @@ type = real kind = kind_phys intent = inout - optional = F [semis_lnd] standard_name = surface_longwave_emissivity_over_land_interstitial long_name = surface lw emissivity in fraction over land (temporary use as interstitial) @@ -518,7 +460,6 @@ type = real kind = kind_phys intent = inout - optional = F [semis_ice] standard_name = surface_longwave_emissivity_over_ice_interstitial long_name = surface lw emissivity in fraction over ice (temporary use as interstitial) @@ -527,7 +468,6 @@ type = real kind = kind_phys intent = inout - optional = F [emis_lnd] standard_name = surface_longwave_emissivity_over_land long_name = surface lw emissivity in fraction over land @@ -536,7 +476,6 @@ type = real kind = kind_phys intent = inout - optional = F [emis_ice] standard_name = surface_longwave_emissivity_over_ice long_name = surface lw emissivity in fraction over ice @@ -545,7 +484,6 @@ type = real kind = kind_phys intent = inout - optional = F [qss] standard_name = surface_specific_humidity long_name = surface air saturation specific humidity @@ -554,7 +492,6 @@ type = real kind = kind_phys intent = in - optional = F [qss_wat] standard_name = surface_specific_humidity_over_water long_name = surface air saturation specific humidity over water @@ -563,7 +500,6 @@ type = real kind = kind_phys intent = inout - optional = F [qss_lnd] standard_name = surface_specific_humidity_over_land long_name = surface air saturation specific humidity over land @@ -572,7 +508,6 @@ type = real kind = kind_phys intent = inout - optional = F [qss_ice] standard_name = surface_specific_humidity_over_ice long_name = surface air saturation specific humidity over ice @@ -581,7 +516,6 @@ type = real kind = kind_phys intent = inout - optional = F [min_lakeice] standard_name = min_lake_ice_area_fraction long_name = minimum lake ice value @@ -590,7 +524,6 @@ type = real kind = kind_phys intent = in - optional = F [min_seaice] standard_name = min_sea_ice_area_fraction long_name = minimum sea ice value @@ -599,7 +532,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -607,7 +539,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -616,7 +547,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -624,7 +554,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -643,7 +572,6 @@ dimensions = () type = integer intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -651,7 +579,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -659,7 +586,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -667,7 +593,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [semis_wat] standard_name = surface_longwave_emissivity_over_water long_name = surface lw emissivity in fraction over water @@ -676,7 +601,6 @@ type = real kind = kind_phys intent = in - optional = F [semis_lnd] standard_name = surface_longwave_emissivity_over_land_interstitial long_name = surface lw emissivity in fraction over land (temporary use as interstitial) @@ -685,7 +609,6 @@ type = real kind = kind_phys intent = in - optional = F [semis_ice] standard_name = surface_longwave_emissivity_over_ice_interstitial long_name = surface lw emissivity in fraction over ice (temporary use as interstitial) @@ -694,7 +617,6 @@ type = real kind = kind_phys intent = in - optional = F [adjsfcdlw] standard_name = surface_downwelling_longwave_flux long_name = surface downwelling longwave flux at current time @@ -703,7 +625,6 @@ type = real kind = kind_phys intent = in - optional = F [gabsbdlw_lnd] standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_land long_name = total sky surface downward longwave flux absorbed by the ground over land @@ -712,7 +633,6 @@ type = real kind = kind_phys intent = inout - optional = F [gabsbdlw_ice] standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_ice long_name = total sky surface downward longwave flux absorbed by the ground over ice @@ -721,7 +641,6 @@ type = real kind = kind_phys intent = inout - optional = F [gabsbdlw_wat] standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_water long_name = total sky surface downward longwave flux absorbed by the ground over water @@ -730,7 +649,6 @@ type = real kind = kind_phys intent = inout - optional = F [adjsfcusw] standard_name = surface_upwelling_shortwave_flux long_name = surface upwelling shortwave flux at current time @@ -739,7 +657,6 @@ type = real kind = kind_phys intent = out - optional = F [adjsfcdsw] standard_name = surface_downwelling_shortwave_flux long_name = surface downwelling shortwave flux at current time @@ -748,7 +665,6 @@ type = real kind = kind_phys intent = in - optional = F [adjsfcnsw] standard_name = surface_net_downwelling_shortwave_flux long_name = surface net downwelling shortwave flux at current time @@ -757,7 +673,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -766,7 +681,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -774,7 +688,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -793,7 +706,6 @@ dimensions = () type = integer intent = in - optional = F [kice] standard_name = vertical_dimension_of_sea_ice long_name = vertical loop extent for ice levels, start at 1 @@ -801,7 +713,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_dimension_of_soil long_name = soil vertical layer dimension @@ -809,7 +720,6 @@ dimensions = () type = integer intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -818,7 +728,6 @@ type = real kind = kind_phys intent = in - optional = F [rvrdm1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -827,7 +736,6 @@ type = real kind = kind_phys intent = in - optional = F [cplflx] standard_name = flag_for_surface_flux_coupling long_name = flag controlling cplflx collection (default off) @@ -835,7 +743,6 @@ dimensions = () type = logical intent = in - optional = F [cplwav2atm] standard_name = flag_for_one_way_ocean_wave_coupling_to_atmosphere long_name = flag controlling ocean wave coupling to the atmosphere (default off) @@ -843,7 +750,6 @@ dimensions = () type = logical intent = in - optional = F [frac_grid] standard_name = flag_for_fractional_landmask long_name = flag for fractional grid @@ -851,7 +757,6 @@ dimensions = () type = logical intent = in - optional = F [flag_cice] standard_name = flag_for_cice long_name = flag for cice @@ -859,7 +764,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [thsfc_loc] standard_name = flag_for_reference_pressure_theta long_name = flag for reference pressure in theta calculation @@ -867,7 +771,6 @@ dimensions = () type = logical intent = in - optional = F [islmsk] standard_name = sea_land_ice_mask long_name = sea/land/ice mask (=0/1/2) @@ -875,7 +778,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -883,7 +785,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -891,7 +792,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -899,7 +799,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -908,7 +807,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = surface layer mean temperature @@ -917,7 +815,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = surface layer mean specific humidity @@ -926,7 +823,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl1] standard_name = air_pressure_at_surface_adjacent_layer long_name = surface layer mean pressure @@ -935,7 +831,6 @@ type = real kind = kind_phys intent = in - optional = F [landfrac] standard_name = land_area_fraction long_name = fraction of horizontal grid area occupied by land @@ -944,7 +839,6 @@ type = real kind = kind_phys intent = in - optional = F [lakefrac] standard_name = lake_area_fraction long_name = fraction of horizontal grid area occupied by lake @@ -953,7 +847,6 @@ type = real kind = kind_phys intent = in - optional = F [oceanfrac] standard_name = sea_area_fraction long_name = fraction of horizontal grid area occupied by ocean @@ -962,7 +855,6 @@ type = real kind = kind_phys intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length @@ -971,7 +863,6 @@ type = real kind = kind_phys intent = inout - optional = F [zorlo] standard_name = surface_roughness_length_over_water long_name = surface roughness length over water @@ -980,7 +871,6 @@ type = real kind = kind_phys intent = in - optional = F [zorll] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land @@ -989,7 +879,6 @@ type = real kind = kind_phys intent = in - optional = F [zorli] standard_name = surface_roughness_length_over_ice long_name = surface roughness length over ice @@ -998,7 +887,6 @@ type = real kind = kind_phys intent = in - optional = F [cd] standard_name = surface_drag_coefficient_for_momentum_in_air long_name = surface exchange coeff for momentum @@ -1007,7 +895,6 @@ type = real kind = kind_phys intent = inout - optional = F [cd_wat] standard_name = surface_drag_coefficient_for_momentum_in_air_over_water long_name = surface exchange coeff for momentum over water @@ -1016,7 +903,6 @@ type = real kind = kind_phys intent = in - optional = F [cd_lnd] standard_name = surface_drag_coefficient_for_momentum_in_air_over_land long_name = surface exchange coeff for momentum over land @@ -1025,7 +911,6 @@ type = real kind = kind_phys intent = in - optional = F [cd_ice] standard_name = surface_drag_coefficient_for_momentum_in_air_over_ice long_name = surface exchange coeff for momentum over ice @@ -1034,7 +919,6 @@ type = real kind = kind_phys intent = in - optional = F [cdq] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air long_name = surface exchange coeff heat & moisture @@ -1043,7 +927,6 @@ type = real kind = kind_phys intent = inout - optional = F [cdq_wat] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water @@ -1052,7 +935,6 @@ type = real kind = kind_phys intent = in - optional = F [cdq_lnd] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land long_name = surface exchange coeff heat & moisture over land @@ -1061,7 +943,6 @@ type = real kind = kind_phys intent = in - optional = F [cdq_ice] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ice long_name = surface exchange coeff heat & moisture over ice @@ -1070,7 +951,6 @@ type = real kind = kind_phys intent = in - optional = F [rb] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -1079,7 +959,6 @@ type = real kind = kind_phys intent = inout - optional = F [rb_wat] standard_name = bulk_richardson_number_at_lowest_model_level_over_water long_name = bulk Richardson number at the surface over water @@ -1088,7 +967,6 @@ type = real kind = kind_phys intent = in - optional = F [rb_lnd] standard_name = bulk_richardson_number_at_lowest_model_level_over_land long_name = bulk Richardson number at the surface over land @@ -1097,7 +975,6 @@ type = real kind = kind_phys intent = in - optional = F [rb_ice] standard_name = bulk_richardson_number_at_lowest_model_level_over_ice long_name = bulk Richardson number at the surface over ice @@ -1106,7 +983,6 @@ type = real kind = kind_phys intent = in - optional = F [stress] standard_name = surface_wind_stress long_name = surface wind stress @@ -1115,7 +991,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_wat] standard_name = surface_wind_stress_over_water long_name = surface wind stress over water @@ -1124,7 +999,6 @@ type = real kind = kind_phys intent = in - optional = F [stress_lnd] standard_name = surface_wind_stress_over_land long_name = surface wind stress over land @@ -1133,7 +1007,6 @@ type = real kind = kind_phys intent = in - optional = F [stress_ice] standard_name = surface_wind_stress_over_ice long_name = surface wind stress over ice @@ -1142,7 +1015,6 @@ type = real kind = kind_phys intent = in - optional = F [ffmm] standard_name = Monin_Obukhov_similarity_function_for_momentum long_name = Monin-Obukhov similarity function for momentum @@ -1151,7 +1023,6 @@ type = real kind = kind_phys intent = inout - optional = F [ffmm_wat] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_water long_name = Monin-Obukhov similarity function for momentum over water @@ -1160,7 +1031,6 @@ type = real kind = kind_phys intent = in - optional = F [ffmm_lnd] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_land long_name = Monin-Obukhov similarity function for momentum over land @@ -1169,7 +1039,6 @@ type = real kind = kind_phys intent = in - optional = F [ffmm_ice] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_ice long_name = Monin-Obukhov similarity function for momentum over ice @@ -1178,7 +1047,6 @@ type = real kind = kind_phys intent = in - optional = F [ffhh] standard_name = Monin_Obukhov_similarity_function_for_heat long_name = Monin-Obukhov similarity function for heat @@ -1187,7 +1055,6 @@ type = real kind = kind_phys intent = inout - optional = F [ffhh_wat] standard_name = Monin_Obukhov_similarity_function_for_heat_over_water long_name = Monin-Obukhov similarity function for heat over water @@ -1196,7 +1063,6 @@ type = real kind = kind_phys intent = in - optional = F [ffhh_lnd] standard_name = Monin_Obukhov_similarity_function_for_heat_over_land long_name = Monin-Obukhov similarity function for heat over land @@ -1205,7 +1071,6 @@ type = real kind = kind_phys intent = in - optional = F [ffhh_ice] standard_name = Monin_Obukhov_similarity_function_for_heat_over_ice long_name = Monin-Obukhov similarity function for heat over ice @@ -1214,7 +1079,6 @@ type = real kind = kind_phys intent = in - optional = F [uustar] standard_name = surface_friction_velocity long_name = boundary layer parameter @@ -1223,7 +1087,6 @@ type = real kind = kind_phys intent = inout - optional = F [uustar_wat] standard_name = surface_friction_velocity_over_water long_name = surface friction velocity over water @@ -1232,7 +1095,6 @@ type = real kind = kind_phys intent = in - optional = F [uustar_lnd] standard_name = surface_friction_velocity_over_land long_name = surface friction velocity over land @@ -1241,7 +1103,6 @@ type = real kind = kind_phys intent = in - optional = F [uustar_ice] standard_name = surface_friction_velocity_over_ice long_name = surface friction velocity over ice @@ -1250,7 +1111,6 @@ type = real kind = kind_phys intent = in - optional = F [fm10] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m long_name = Monin-Obukhov similarity parameter for momentum at 10m @@ -1259,7 +1119,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_wat] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_water long_name = Monin-Obukhov similarity parameter for momentum at 10m over water @@ -1268,7 +1127,6 @@ type = real kind = kind_phys intent = in - optional = F [fm10_lnd] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_land long_name = Monin-Obukhov similarity parameter for momentum at 10m over land @@ -1277,7 +1135,6 @@ type = real kind = kind_phys intent = in - optional = F [fm10_ice] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_ice long_name = Monin-Obukhov similarity parameter for momentum at 10m over ice @@ -1286,7 +1143,6 @@ type = real kind = kind_phys intent = in - optional = F [fh2] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m long_name = Monin-Obukhov similarity parameter for heat at 2m @@ -1295,7 +1151,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_wat] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_water long_name = Monin-Obukhov similarity parameter for heat at 2m over water @@ -1304,7 +1159,6 @@ type = real kind = kind_phys intent = in - optional = F [fh2_lnd] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_land long_name = Monin-Obukhov similarity parameter for heat at 2m over land @@ -1313,7 +1167,6 @@ type = real kind = kind_phys intent = in - optional = F [fh2_ice] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_ice long_name = Monin-Obukhov similarity parameter for heat at 2m over ice @@ -1322,7 +1175,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_wat] standard_name = surface_skin_temperature_after_iteration_over_water long_name = surface skin temperature after iteration over water @@ -1331,7 +1183,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_lnd] standard_name = surface_skin_temperature_after_iteration_over_land long_name = surface skin temperature after iteration over land @@ -1340,7 +1191,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_ice] standard_name = surface_skin_temperature_after_iteration_over_ice long_name = surface skin temperature after iteration over ice @@ -1349,7 +1199,6 @@ type = real kind = kind_phys intent = in - optional = F [cmm] standard_name = surface_drag_wind_speed_for_momentum_in_air long_name = momentum exchange coefficient @@ -1358,7 +1207,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmm_wat] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_water long_name = momentum exchange coefficient over water @@ -1367,7 +1215,6 @@ type = real kind = kind_phys intent = in - optional = F [cmm_lnd] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_land long_name = momentum exchange coefficient over land @@ -1376,7 +1223,6 @@ type = real kind = kind_phys intent = in - optional = F [cmm_ice] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_ice long_name = momentum exchange coefficient over ice @@ -1385,7 +1231,6 @@ type = real kind = kind_phys intent = in - optional = F [chh] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air long_name = thermal exchange coefficient @@ -1394,7 +1239,6 @@ type = real kind = kind_phys intent = inout - optional = F [chh_wat] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_water long_name = thermal exchange coefficient over water @@ -1403,7 +1247,6 @@ type = real kind = kind_phys intent = in - optional = F [chh_lnd] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_land long_name = thermal exchange coefficient over land @@ -1412,7 +1255,6 @@ type = real kind = kind_phys intent = in - optional = F [chh_ice] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_ice long_name = thermal exchange coefficient over ice @@ -1421,7 +1263,6 @@ type = real kind = kind_phys intent = in - optional = F [gflx] standard_name = upward_heat_flux_in_soil long_name = soil heat flux @@ -1430,7 +1271,6 @@ type = real kind = kind_phys intent = inout - optional = F [gflx_wat] standard_name = upward_heat_flux_in_soil_over_water long_name = soil heat flux over water @@ -1439,7 +1279,6 @@ type = real kind = kind_phys intent = in - optional = F [gflx_lnd] standard_name = upward_heat_flux_in_soil_over_land long_name = soil heat flux over land @@ -1448,7 +1287,6 @@ type = real kind = kind_phys intent = in - optional = F [gflx_ice] standard_name = upward_heat_flux_in_soil_over_ice long_name = soil heat flux over ice @@ -1457,7 +1295,6 @@ type = real kind = kind_phys intent = in - optional = F [ep1d] standard_name = surface_upward_potential_latent_heat_flux long_name = surface upward potential latent heat flux @@ -1466,7 +1303,6 @@ type = real kind = kind_phys intent = inout - optional = F [ep1d_wat] standard_name = surface_upward_potential_latent_heat_flux_over_water long_name = surface upward potential latent heat flux over water @@ -1475,7 +1311,6 @@ type = real kind = kind_phys intent = in - optional = F [ep1d_lnd] standard_name = surface_upward_potential_latent_heat_flux_over_land long_name = surface upward potential latent heat flux over land @@ -1484,7 +1319,6 @@ type = real kind = kind_phys intent = in - optional = F [ep1d_ice] standard_name = surface_upward_potential_latent_heat_flux_over_ice long_name = surface upward potential latent heat flux over ice @@ -1493,7 +1327,6 @@ type = real kind = kind_phys intent = in - optional = F [weasd] standard_name = lwe_thickness_of_surface_snow_amount long_name = water equiv of acc snow depth over land and sea ice @@ -1502,7 +1335,6 @@ type = real kind = kind_phys intent = inout - optional = F [weasd_lnd] standard_name = water_equivalent_accumulated_snow_depth_over_land long_name = water equiv of acc snow depth over land @@ -1511,7 +1343,6 @@ type = real kind = kind_phys intent = in - optional = F [weasd_ice] standard_name = water_equivalent_accumulated_snow_depth_over_ice long_name = water equiv of acc snow depth over ice @@ -1520,7 +1351,6 @@ type = real kind = kind_phys intent = in - optional = F [snowd] standard_name = lwe_surface_snow long_name = water equivalent snow depth @@ -1529,7 +1359,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowd_lnd] standard_name = surface_snow_thickness_water_equivalent_over_land long_name = water equivalent snow depth over land @@ -1538,7 +1367,6 @@ type = real kind = kind_phys intent = in - optional = F [snowd_ice] standard_name = surface_snow_thickness_water_equivalent_over_ice long_name = water equivalent snow depth over ice @@ -1547,7 +1375,6 @@ type = real kind = kind_phys intent = in - optional = F [tprcp] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep long_name = total precipitation amount in each time step @@ -1556,7 +1383,6 @@ type = real kind = kind_phys intent = inout - optional = F [tprcp_wat] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_water long_name = total precipitation amount in each time step over water @@ -1565,7 +1391,6 @@ type = real kind = kind_phys intent = in - optional = F [tprcp_lnd] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_land long_name = total precipitation amount in each time step over land @@ -1574,7 +1399,6 @@ type = real kind = kind_phys intent = in - optional = F [tprcp_ice] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_ice long_name = total precipitation amount in each time step over ice @@ -1583,7 +1407,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -1592,7 +1415,6 @@ type = real kind = kind_phys intent = inout - optional = F [evap_wat] standard_name = kinematic_surface_upward_latent_heat_flux_over_water long_name = kinematic surface upward latent heat flux over water @@ -1601,7 +1423,6 @@ type = real kind = kind_phys intent = in - optional = F [evap_lnd] standard_name = kinematic_surface_upward_latent_heat_flux_over_land long_name = kinematic surface upward latent heat flux over land @@ -1610,7 +1431,6 @@ type = real kind = kind_phys intent = in - optional = F [evap_ice] standard_name = kinematic_surface_upward_latent_heat_flux_over_ice long_name = kinematic surface upward latent heat flux over ice @@ -1619,7 +1439,6 @@ type = real kind = kind_phys intent = in - optional = F [hflx] standard_name = surface_upward_temperature_flux long_name = kinematic surface upward sensible heat flux @@ -1628,7 +1447,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx_wat] standard_name = kinematic_surface_upward_sensible_heat_flux_over_water long_name = kinematic surface upward sensible heat flux over water @@ -1637,7 +1455,6 @@ type = real kind = kind_phys intent = in - optional = F [hflx_lnd] standard_name = kinematic_surface_upward_sensible_heat_flux_over_land long_name = kinematic surface upward sensible heat flux over land @@ -1646,7 +1463,6 @@ type = real kind = kind_phys intent = in - optional = F [hflx_ice] standard_name = kinematic_surface_upward_sensible_heat_flux_over_ice long_name = kinematic surface upward sensible heat flux over ice @@ -1655,7 +1471,6 @@ type = real kind = kind_phys intent = in - optional = F [qss] standard_name = surface_specific_humidity long_name = surface air saturation specific humidity @@ -1664,7 +1479,6 @@ type = real kind = kind_phys intent = inout - optional = F [qss_wat] standard_name = surface_specific_humidity_over_water long_name = surface air saturation specific humidity over water @@ -1673,7 +1487,6 @@ type = real kind = kind_phys intent = in - optional = F [qss_lnd] standard_name = surface_specific_humidity_over_land long_name = surface air saturation specific humidity over land @@ -1682,7 +1495,6 @@ type = real kind = kind_phys intent = in - optional = F [qss_ice] standard_name = surface_specific_humidity_over_ice long_name = surface air saturation specific humidity over ice @@ -1691,7 +1503,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -1700,7 +1511,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfco] standard_name = sea_surface_temperature long_name = sea surface temperature @@ -1709,7 +1519,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfcl] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -1718,7 +1527,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfc_wat] standard_name = surface_skin_temperature_over_water long_name = surface skin temperature over water @@ -1727,7 +1535,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc_ice] standard_name = surface_skin_temperature_over_ice long_name = surface skin temperature over ice @@ -1736,7 +1543,6 @@ type = real kind = kind_phys intent = in - optional = F [tisfc] standard_name = sea_ice_temperature long_name = sea ice surface skin temperature @@ -1745,7 +1551,6 @@ type = real kind = kind_phys intent = inout - optional = F [hice] standard_name = sea_ice_thickness long_name = sea ice thickness @@ -1754,7 +1559,6 @@ type = real kind = kind_phys intent = inout - optional = F [cice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -1763,7 +1567,6 @@ type = real kind = kind_phys intent = inout - optional = F [min_seaice] standard_name = min_sea_ice_area_fraction long_name = minimum sea ice value @@ -1780,7 +1583,6 @@ type = real kind = kind_phys intent = in - optional = F [stc] standard_name = soil_temperature long_name = soil temperature @@ -1789,7 +1591,6 @@ type = real kind = kind_phys intent = inout - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -1798,7 +1599,6 @@ type = real kind = kind_phys intent = in - optional = F [prsik1] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at the ground surface @@ -1807,7 +1607,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk1] standard_name = dimensionless_exner_function_at_surface_adjacent_layer long_name = dimensionless Exner function at the lowest model layer @@ -1816,7 +1615,6 @@ type = real kind = kind_phys intent = in - optional = F [prslki] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -1825,7 +1623,6 @@ type = real kind = kind_phys intent = in - optional = F [z1] standard_name = height_above_ground_at_lowest_model_layer long_name = height above ground at 1st model layer @@ -1834,7 +1631,6 @@ type = real kind = kind_phys intent = in - optional = F [garea] standard_name = cell_area long_name = area of the grid cell @@ -1843,7 +1639,6 @@ type = real kind = kind_phys intent = in - optional = F [zvfun] standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction long_name = function of surface roughness length and green vegetation fraction @@ -1852,7 +1647,6 @@ type = real kind = kind_phys intent = inout - optional = F [lheatstrg] standard_name = flag_for_canopy_heat_storage_in_land_surface_scheme long_name = flag for canopy heat storage parameterization @@ -1860,7 +1654,6 @@ dimensions = () type = logical intent = in - optional = F [h0facu] standard_name = multiplicative_tuning_parameter_for_reduced_surface_heat_fluxes_due_to_canopy_heat_storage long_name = canopy heat storage factor for sensible heat flux in unstable surface layer @@ -1869,7 +1662,6 @@ type = real kind = kind_phys intent = in - optional = F [h0facs] standard_name = multiplicative_tuning_parameter_for_reduced_latent_heat_flux_due_to_canopy_heat_storage long_name = canopy heat storage factor for sensible heat flux in stable surface layer @@ -1878,7 +1670,6 @@ type = real kind = kind_phys intent = in - optional = F [hflxq] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -1887,7 +1678,6 @@ type = real kind = kind_phys intent = inout - optional = F [hffac] standard_name = surface_upward_sensible_heat_flux_reduction_factor long_name = surface upward sensible heat flux reduction factor from canopy heat storage @@ -1896,7 +1686,6 @@ type = real kind = kind_phys intent = inout - optional = F [sigmaf] standard_name = bounded_vegetation_area_fraction long_name = areal fractional cover of green vegetation bounded on the bottom @@ -1905,7 +1694,6 @@ type = real kind = kind_phys intent = inout - optional = F [ztmax_wat] standard_name = bounded_surface_roughness_length_for_heat_over_water long_name = bounded surface roughness length for heat over water @@ -1914,7 +1702,6 @@ type = real kind = kind_phys intent = in - optional = F [ztmax_lnd] standard_name = bounded_surface_roughness_length_for_heat_over_land long_name = bounded surface roughness length for heat over land @@ -1923,7 +1710,6 @@ type = real kind = kind_phys intent = in - optional = F [ztmax_ice] standard_name = bounded_surface_roughness_length_for_heat_over_ice long_name = bounded surface roughness length for heat over ice @@ -1932,7 +1718,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1941,7 +1726,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1949,4 +1733,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_surface_generic.meta b/physics/GFS_surface_generic.meta index 69f38177d..5a87d1bd4 100644 --- a/physics/GFS_surface_generic.meta +++ b/physics/GFS_surface_generic.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_dimension long_name = horizontal dimension @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -31,7 +29,6 @@ type = real kind = kind_phys intent = in - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -39,7 +36,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -47,7 +43,6 @@ dimensions = () type = integer intent = in - optional = F [stype] standard_name = soil_type_classification long_name = soil type for lsm @@ -55,7 +50,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [vtype] standard_name = vegetation_type_classification long_name = vegetation type for lsm @@ -63,7 +57,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [slope] standard_name = surface_slope_classification long_name = sfc slope type for lsm @@ -71,7 +64,6 @@ dimensions = (horizontal_dimension) type = integer intent = inout - optional = F [stype_save] standard_name = soil_type_classification_save long_name = soil type for lsm save @@ -79,7 +71,6 @@ dimensions = (horizontal_dimension) type = integer intent = out - optional = F [vtype_save] standard_name = vegetation_type_classification_save long_name = vegetation type for lsm save @@ -87,7 +78,6 @@ dimensions = (horizontal_dimension) type = integer intent = out - optional = F [slope_save] standard_name = surface_slope_classification_save long_name = sfc slope type for lsm save @@ -95,7 +85,6 @@ dimensions = (horizontal_dimension) type = integer intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -104,7 +93,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -112,7 +100,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -125,7 +112,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -133,7 +119,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -141,7 +126,6 @@ dimensions = () type = integer intent = in - optional = F [vfrac] standard_name = vegetation_area_fraction long_name = areal fractional cover of green vegetation @@ -150,7 +134,6 @@ type = real kind = kind_phys intent = in - optional = F [islmsk] standard_name = sea_land_ice_mask long_name = landmask: sea/land/ice=0/1/2 @@ -158,7 +141,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -166,7 +148,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -174,7 +155,6 @@ dimensions = () type = integer intent = in - optional = F [stype] standard_name = soil_type_classification long_name = soil type for lsm @@ -182,7 +162,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [vtype] standard_name = vegetation_type_classification long_name = vegetation type for lsm @@ -190,7 +169,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [slope] standard_name = surface_slope_classification long_name = sfc slope type for lsm @@ -198,7 +176,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [vtype_save] standard_name = vegetation_type_classification_save long_name = vegetation type for lsm save @@ -206,7 +183,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [stype_save] standard_name = soil_type_classification_save long_name = soil type for lsm save @@ -214,7 +190,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [slope_save] standard_name = surface_slope_classification_save long_name = sfc slope type for lsm save @@ -222,7 +197,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [prsik_1] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at lowest model interface @@ -231,7 +205,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk_1] standard_name = dimensionless_exner_function_at_surface_adjacent_layer long_name = dimensionless Exner function at lowest model layer @@ -240,7 +213,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -249,7 +221,6 @@ type = real kind = kind_phys intent = inout - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -258,7 +229,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -267,7 +237,6 @@ type = real kind = kind_phys intent = in - optional = F [sigmaf] standard_name = bounded_vegetation_area_fraction long_name = areal fractional cover of green vegetation bounded on the bottom @@ -276,7 +245,6 @@ type = real kind = kind_phys intent = inout - optional = F [work3] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -285,7 +253,6 @@ type = real kind = kind_phys intent = inout - optional = F [zlvl] standard_name = height_above_ground_at_lowest_model_layer long_name = layer 1 height above ground (not MSL) @@ -294,7 +261,6 @@ type = real kind = kind_phys intent = inout - optional = F [drain_cpl] standard_name = tendency_of_lwe_thickness_of_rain_amount_on_dynamics_timestep_for_coupling long_name = change in rain_cpl (coupling_type) @@ -303,7 +269,6 @@ type = real kind = kind_phys intent = out - optional = F [dsnow_cpl] standard_name = tendency_of_lwe_thickness_of_snowfall_amount_on_dynamics_timestep_for_coupling long_name = change in show_cpl (coupling_type) @@ -312,7 +277,6 @@ type = real kind = kind_phys intent = out - optional = F [rain_cpl] standard_name = cumulative_lwe_thickness_of_precipitation_amount_for_coupling long_name = total rain precipitation @@ -321,7 +285,6 @@ type = real kind = kind_phys intent = in - optional = F [snow_cpl] standard_name = cumulative_lwe_thickness_of_snow_amount_for_coupling long_name = total snow precipitation @@ -330,7 +293,6 @@ type = real kind = kind_phys intent = in - optional = F [lndp_type] standard_name = control_for_stochastic_land_surface_perturbation long_name = index for stochastic land surface perturbations type @@ -338,7 +300,6 @@ dimensions = () type = integer intent = in - optional = F [n_var_lndp] standard_name = number_of_perturbed_land_surface_variables long_name = number of land surface variables perturbed @@ -346,7 +307,6 @@ dimensions = () type = integer intent = in - optional = F [sfc_wts] standard_name = surface_stochastic_weights_from_coupled_process long_name = weights for stochastic surface physics perturbation @@ -355,7 +315,6 @@ type = real kind = kind_phys intent = in - optional = F [lndp_var_list] standard_name = land_surface_perturbation_variables long_name = variables to be perturbed for landperts @@ -364,7 +323,6 @@ type = character kind = len=3 intent = in - optional = F [lndp_prt_list] standard_name =land_surface_perturbation_magnitudes long_name = magnitude of perturbations for landperts @@ -373,7 +331,6 @@ type = real kind = kind_phys intent = in - optional = F [z01d] standard_name = perturbation_of_momentum_roughness_length long_name = perturbation of momentum roughness length @@ -382,7 +339,6 @@ type = real kind = kind_phys intent = out - optional = F [zt1d] standard_name = perturbation_of_heat_to_momentum_roughness_length_ratio long_name = perturbation of heat to momentum roughness length ratio @@ -391,7 +347,6 @@ type = real kind = kind_phys intent = out - optional = F [bexp1d] standard_name = perturbation_of_soil_type_b_parameter long_name = perturbation of soil type "b" parameter @@ -400,7 +355,6 @@ type = real kind = kind_phys intent = out - optional = F [xlai1d] standard_name = perturbation_of_leaf_area_index long_name = perturbation of leaf area index @@ -409,7 +363,6 @@ type = real kind = kind_phys intent = out - optional = F [vegf1d] standard_name = perturbation_of_vegetation_fraction long_name = perturbation of vegetation fraction @@ -418,7 +371,6 @@ type = real kind = kind_phys intent = out - optional = F [lndp_vgf] standard_name = magnitude_of_perturbation_of_vegetation_fraction long_name = magnitude of perturbation of vegetation fraction @@ -427,7 +379,6 @@ type = real kind = kind_phys intent = out - optional = F [cplflx] standard_name = flag_for_surface_flux_coupling long_name = flag controlling cplflx collection (default off) @@ -435,7 +386,6 @@ dimensions = () type = logical intent = in - optional = F [flag_cice] standard_name = flag_for_cice long_name = flag for cice @@ -443,7 +393,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [islmsk_cice] standard_name = sea_land_ice_mask_cice long_name = sea/land/ice mask cice (=0/1/2) @@ -451,7 +400,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [slimskin_cpl] standard_name = area_type_from_coupled_process long_name = sea/land/ice mask input (=0/1/2) @@ -460,7 +408,6 @@ type = real kind = kind_phys intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -469,7 +416,6 @@ type = real kind = kind_phys intent = out - optional = F [u1] standard_name = x_wind_at_surface_adjacent_layer long_name = zonal wind at lowest model layer @@ -478,7 +424,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind_at_surface_adjacent_layer long_name = meridional wind at lowest model layer @@ -487,7 +432,6 @@ type = real kind = kind_phys intent = in - optional = F [cnvwind] standard_name = enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convection long_name = surface wind enhancement due to convection @@ -496,7 +440,6 @@ type = real kind = kind_phys intent = inout - optional = F [smcwlt2] standard_name = volume_fraction_of_condensed_water_in_soil_at_wilting_point long_name = wilting point (volumetric) @@ -505,7 +448,6 @@ type = real kind = kind_phys intent = out - optional = F [smcref2] standard_name = threshold_volume_fraction_of_condensed_water_in_soil long_name = soil moisture threshold (volumetric) @@ -514,7 +456,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -523,7 +464,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -531,7 +471,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -550,7 +489,6 @@ dimensions = (horizontal_dimension) type = integer intent = out - optional = F [stype] standard_name = soil_type_classification long_name = soil type for lsm @@ -558,7 +496,6 @@ dimensions = (horizontal_dimension) type = integer intent = out - optional = F [slope] standard_name = surface_slope_classification long_name = sfc slope type for lsm @@ -566,7 +503,6 @@ dimensions = (horizontal_dimension) type = integer intent = out - optional = F [vtype_save] standard_name = vegetation_type_classification_save long_name = vegetation type for lsm save @@ -574,7 +510,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [stype_save] standard_name = soil_type_classification_save long_name = soil type for lsm save @@ -582,7 +517,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [slope_save] standard_name = surface_slope_classification_save long_name = sfc slope type for lsm save @@ -590,7 +524,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -599,7 +532,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -607,7 +539,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -620,7 +551,6 @@ dimensions = () type = integer intent = in - optional = F [cplflx] standard_name = flag_for_surface_flux_coupling long_name = flag controlling cplflx collection (default off) @@ -628,7 +558,6 @@ dimensions = () type = logical intent = in - optional = F [cplchm] standard_name = flag_for_chemistry_coupling long_name = flag controlling cplchm collection (default off) @@ -636,7 +565,6 @@ dimensions = () type = logical intent = in - optional = F [cplwav] standard_name = flag_for_ocean_wave_coupling long_name = flag controlling cplwav collection (default off) @@ -644,7 +572,6 @@ dimensions = () type = logical intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -652,7 +579,6 @@ dimensions = () type = logical intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -660,7 +586,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -668,7 +593,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -676,7 +600,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -685,7 +608,6 @@ type = real kind = kind_phys intent = in - optional = F [ep1d] standard_name = surface_upward_potential_latent_heat_flux long_name = surface upward potential latent heat flux @@ -694,7 +616,6 @@ type = real kind = kind_phys intent = in - optional = F [gflx] standard_name = upward_heat_flux_in_soil long_name = upward soil heat flux @@ -703,7 +624,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs_1] standard_name = air_temperature_at_surface_adjacent_layer long_name = mean temperature at lowest model layer @@ -712,7 +632,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = specific humidity at lowest model layer @@ -721,7 +640,6 @@ type = real kind = kind_phys intent = in - optional = F [ugrs_1] standard_name = x_wind_at_surface_adjacent_layer long_name = zonal wind at lowest model layer @@ -730,7 +648,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs_1] standard_name = y_wind_at_surface_adjacent_layer long_name = meridional wind at lowest model layer @@ -739,7 +656,6 @@ type = real kind = kind_phys intent = in - optional = F [adjsfcdlw] standard_name = surface_downwelling_longwave_flux long_name = surface downwelling longwave flux at current time @@ -748,7 +664,6 @@ type = real kind = kind_phys intent = in - optional = F [adjsfcdsw] standard_name = surface_downwelling_shortwave_flux long_name = surface downwelling shortwave flux at current time @@ -757,7 +672,6 @@ type = real kind = kind_phys intent = in - optional = F [adjnirbmd] standard_name = surface_downwelling_direct_near_infrared_shortwave_flux long_name = surface downwelling beam near-infrared shortwave flux at current time @@ -766,7 +680,6 @@ type = real kind = kind_phys intent = in - optional = F [adjnirdfd] standard_name = surface_downwelling_diffuse_near_infrared_shortwave_flux long_name = surface downwelling diffuse near-infrared shortwave flux at current time @@ -775,7 +688,6 @@ type = real kind = kind_phys intent = in - optional = F [adjvisbmd] standard_name = surface_downwelling_direct_ultraviolet_and_visible_shortwave_flux long_name = surface downwelling beam ultraviolet plus visible shortwave flux at current time @@ -784,7 +696,6 @@ type = real kind = kind_phys intent = in - optional = F [adjvisdfd] standard_name = surface_downwelling_diffuse_ultraviolet_and_visible_shortwave_flux long_name = surface downwelling diffuse ultraviolet plus visible shortwave flux at current time @@ -793,7 +704,6 @@ type = real kind = kind_phys intent = in - optional = F [adjsfculw] standard_name = surface_upwelling_longwave_flux long_name = surface upwelling longwave flux at current time @@ -802,7 +712,6 @@ type = real kind = kind_phys intent = in - optional = F [adjsfculw_wat] standard_name = surface_upwelling_longwave_flux_over_water long_name = surface upwelling longwave flux at current time over water @@ -811,7 +720,6 @@ type = real kind = kind_phys intent = in - optional = F [adjnirbmu] standard_name = surface_upwelling_direct_near_infrared_shortwave_flux long_name = surface upwelling beam near-infrared shortwave flux at current time @@ -820,7 +728,6 @@ type = real kind = kind_phys intent = in - optional = F [adjnirdfu] standard_name = surface_upwelling_diffuse_near_infrared_shortwave_flux long_name = surface upwelling diffuse near-infrared shortwave flux at current time @@ -829,7 +736,6 @@ type = real kind = kind_phys intent = in - optional = F [adjvisbmu] standard_name = surface_upwelling_direct_ultraviolet_and_visible_shortwave_flux long_name = surface upwelling beam ultraviolet plus visible shortwave flux at current time @@ -838,7 +744,6 @@ type = real kind = kind_phys intent = in - optional = F [adjvisdfu] standard_name = surface_upwelling_diffuse_ultraviolet_and_visible_shortwave_flux long_name = surface upwelling diffuse ultraviolet plus visible shortwave flux at current time @@ -847,7 +752,6 @@ type = real kind = kind_phys intent = in - optional = F [t2m] standard_name = air_temperature_at_2m long_name = 2 meter temperature @@ -856,7 +760,6 @@ type = real kind = kind_phys intent = in - optional = F [q2m] standard_name = specific_humidity_at_2m long_name = 2 meter specific humidity @@ -865,7 +768,6 @@ type = real kind = kind_phys intent = in - optional = F [u10m] standard_name = x_wind_at_10m long_name = 10 meter u wind speed @@ -874,7 +776,6 @@ type = real kind = kind_phys intent = in - optional = F [v10m] standard_name = y_wind_at_10m long_name = 10 meter v wind speed @@ -883,7 +784,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -892,7 +792,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc_wat] standard_name = surface_skin_temperature_over_water long_name = surface skin temperature over water @@ -901,7 +800,6 @@ type = real kind = kind_phys intent = in - optional = F [pgr] standard_name = surface_air_pressure long_name = surface pressure @@ -910,7 +808,6 @@ type = real kind = kind_phys intent = in - optional = F [xcosz] standard_name = instantaneous_cosine_of_zenith_angle long_name = cosine of zenith angle at current time @@ -919,7 +816,6 @@ type = real kind = kind_phys intent = in - optional = F [evbs] standard_name = soil_upward_latent_heat_flux long_name = soil upward latent heat flux @@ -928,7 +824,6 @@ type = real kind = kind_phys intent = in - optional = F [evcw] standard_name = canopy_upward_latent_heat_flux long_name = canopy upward latent heat flux @@ -937,7 +832,6 @@ type = real kind = kind_phys intent = in - optional = F [trans] standard_name = transpiration_flux long_name = total plant transpiration rate @@ -946,7 +840,6 @@ type = real kind = kind_phys intent = in - optional = F [sbsno] standard_name = snow_deposition_sublimation_upward_latent_heat_flux long_name = latent heat flux from snow depo/subl @@ -955,7 +848,6 @@ type = real kind = kind_phys intent = in - optional = F [snowc] standard_name = surface_snow_area_fraction long_name = surface snow area fraction @@ -964,7 +856,6 @@ type = real kind = kind_phys intent = in - optional = F [snohf] standard_name = snow_freezing_rain_upward_latent_heat_flux long_name = latent heat flux due to snow and frz rain @@ -973,7 +864,6 @@ type = real kind = kind_phys intent = in - optional = F [epi] standard_name = instantaneous_surface_potential_evaporation long_name = instantaneous sfc potential evaporation @@ -982,7 +872,6 @@ type = real kind = kind_phys intent = inout - optional = F [gfluxi] standard_name = instantaneous_surface_ground_heat_flux long_name = instantaneous sfc ground heat flux @@ -991,7 +880,6 @@ type = real kind = kind_phys intent = inout - optional = F [t1] standard_name = air_temperature_at_lowest_model_layer_for_diag long_name = layer 1 temperature for diag @@ -1000,7 +888,6 @@ type = real kind = kind_phys intent = inout - optional = F [q1] standard_name = water_vapor_specific_humidity_at_lowest_model_layer_for_diag long_name = layer 1 specific humidity for diag @@ -1009,7 +896,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind_at_lowest_model_layer_for_diag long_name = layer 1 x wind for diag @@ -1018,7 +904,6 @@ type = real kind = kind_phys intent = inout - optional = F [v1] standard_name = y_wind_at_lowest_model_layer_for_diag long_name = layer 1 y wind for diag @@ -1027,7 +912,6 @@ type = real kind = kind_phys intent = inout - optional = F [dlwsfci_cpl] standard_name = surface_downwelling_longwave_flux_for_coupling long_name = instantaneous sfc downward lw flux @@ -1036,7 +920,6 @@ type = real kind = kind_phys intent = inout - optional = F [dswsfci_cpl] standard_name = surface_downwelling_shortwave_flux_for_coupling long_name = instantaneous sfc downward sw flux @@ -1045,7 +928,6 @@ type = real kind = kind_phys intent = inout - optional = F [dlwsfc_cpl] standard_name = cumulative_surface_downwelling_longwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc downward lw flux mulitplied by timestep @@ -1054,7 +936,6 @@ type = real kind = kind_phys intent = inout - optional = F [dswsfc_cpl] standard_name = cumulative_surface_downwelling_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc downward sw flux multiplied by timestep @@ -1063,7 +944,6 @@ type = real kind = kind_phys intent = inout - optional = F [dnirbmi_cpl] standard_name = surface_downwelling_direct_nir_shortwave_flux_for_coupling long_name = instantaneous sfc nir beam downward sw flux @@ -1072,7 +952,6 @@ type = real kind = kind_phys intent = inout - optional = F [dnirdfi_cpl] standard_name = surface_downwelling_diffuse_nir_shortwave_flux_for_coupling long_name = instantaneous sfc nir diff downward sw flux @@ -1081,7 +960,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvisbmi_cpl] standard_name = surface_downwelling_direct_uv_and_vis_shortwave_flux_for_coupling long_name = instantaneous sfc uv+vis beam downward sw flux @@ -1090,7 +968,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvisdfi_cpl] standard_name = surface_downwelling_diffuse_uv_and_vis_shortwave_flux_for_coupling long_name = instantaneous sfc uv+vis diff downward sw flux @@ -1099,7 +976,6 @@ type = real kind = kind_phys intent = inout - optional = F [dnirbm_cpl] standard_name = cumulative_surface_downwelling_direct_nir_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc nir beam downward sw flux multiplied by timestep @@ -1108,7 +984,6 @@ type = real kind = kind_phys intent = inout - optional = F [dnirdf_cpl] standard_name = cumulative_surface_downwelling_diffuse_nir_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc nir diff downward sw flux multiplied by timestep @@ -1117,7 +992,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvisbm_cpl] standard_name = cumulative_surface_downwelling_direct_uv_and_vis_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc uv+vis beam dnwd sw flux multiplied by timestep @@ -1126,7 +1000,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvisdf_cpl] standard_name = cumulative_surface_downwelling_diffuse_uv_and_vis_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc uv+vis diff dnwd sw flux multiplied by timestep @@ -1135,7 +1008,6 @@ type = real kind = kind_phys intent = inout - optional = F [nlwsfci_cpl] standard_name = surface_net_downwelling_longwave_flux_for_coupling long_name = instantaneous net sfc downward lw flux @@ -1144,7 +1016,6 @@ type = real kind = kind_phys intent = inout - optional = F [nlwsfc_cpl] standard_name = cumulative_surface_net_downwelling_longwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net downward lw flux multiplied by timestep @@ -1153,7 +1024,6 @@ type = real kind = kind_phys intent = inout - optional = F [t2mi_cpl] standard_name = temperature_at_2m_for_coupling long_name = instantaneous T2m @@ -1162,7 +1032,6 @@ type = real kind = kind_phys intent = inout - optional = F [q2mi_cpl] standard_name = specific_humidity_at_2m_for_coupling long_name = instantaneous Q2m @@ -1171,7 +1040,6 @@ type = real kind = kind_phys intent = inout - optional = F [u10mi_cpl] standard_name = x_wind_at_10m_for_coupling long_name = instantaneous U10m @@ -1180,7 +1048,6 @@ type = real kind = kind_phys intent = inout - optional = F [v10mi_cpl] standard_name = y_wind_at_10m_for_coupling long_name = instantaneous V10m @@ -1189,7 +1056,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfci_cpl] standard_name = surface_skin_temperature_for_coupling long_name = instantaneous sfc temperature @@ -1198,7 +1064,6 @@ type = real kind = kind_phys intent = inout - optional = F [psurfi_cpl] standard_name = surface_air_pressure_for_coupling long_name = instantaneous sfc pressure @@ -1207,7 +1072,6 @@ type = real kind = kind_phys intent = inout - optional = F [nnirbmi_cpl] standard_name = surface_net_downwelling_direct_nir_shortwave_flux_for_coupling long_name = instantaneous net nir beam sfc downward sw flux @@ -1216,7 +1080,6 @@ type = real kind = kind_phys intent = inout - optional = F [nnirdfi_cpl] standard_name = surface_net_downwelling_diffuse_nir_shortwave_flux_for_coupling long_name = instantaneous net nir diff sfc downward sw flux @@ -1225,7 +1088,6 @@ type = real kind = kind_phys intent = inout - optional = F [nvisbmi_cpl] standard_name = surface_net_downwelling_direct_uv_and_vis_shortwave_flux_for_coupling long_name = instantaneous net uv+vis beam downward sw flux @@ -1234,7 +1096,6 @@ type = real kind = kind_phys intent = inout - optional = F [nvisdfi_cpl] standard_name = surface_net_downwelling_diffuse_uv_and_vis_shortwave_flux_for_coupling long_name = instantaneous net uv+vis diff downward sw flux @@ -1243,7 +1104,6 @@ type = real kind = kind_phys intent = inout - optional = F [nswsfci_cpl] standard_name = surface_net_downwelling_shortwave_flux_for_coupling long_name = instantaneous net sfc downward sw flux @@ -1252,7 +1112,6 @@ type = real kind = kind_phys intent = inout - optional = F [nswsfc_cpl] standard_name = cumulative_surface_net_downwelling_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net downward sw flux multiplied by timestep @@ -1261,7 +1120,6 @@ type = real kind = kind_phys intent = inout - optional = F [nnirbm_cpl] standard_name = cumulative_surface_net_downwelling_direct_nir_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net nir beam downward sw flux multiplied by timestep @@ -1270,7 +1128,6 @@ type = real kind = kind_phys intent = inout - optional = F [nnirdf_cpl] standard_name = cumulative_surface_net_downwellling_diffuse_nir_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net nir diff downward sw flux multiplied by timestep @@ -1279,7 +1136,6 @@ type = real kind = kind_phys intent = inout - optional = F [nvisbm_cpl] standard_name = cumulative_surface_net_downwelling_direct_uv_and_vis_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net uv+vis beam downward sw rad flux multiplied by timestep @@ -1288,7 +1144,6 @@ type = real kind = kind_phys intent = inout - optional = F [nvisdf_cpl] standard_name = cumulative_surface_net_downwelling_diffuse_uv_and_vis_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net uv+vis diff downward sw rad flux multiplied by timestep @@ -1297,7 +1152,6 @@ type = real kind = kind_phys intent = inout - optional = F [gflux] standard_name = cumulative_surface_ground_heat_flux_multiplied_by_timestep long_name = cumulative groud conductive heat flux multiplied by timestep @@ -1306,7 +1160,6 @@ type = real kind = kind_phys intent = inout - optional = F [evbsa] standard_name = cumulative_soil_upward_latent_heat_flux_multiplied_by_timestep long_name = cumulative soil upward latent heat flux multiplied by timestep @@ -1315,7 +1168,6 @@ type = real kind = kind_phys intent = inout - optional = F [evcwa] standard_name = cumulative_canopy_upward_latent_heat_flu_multiplied_by_timestep long_name = cumulative canopy upward latent heat flux multiplied by timestep @@ -1324,7 +1176,6 @@ type = real kind = kind_phys intent = inout - optional = F [transa] standard_name = cumulative_transpiration_flux_multiplied_by_timestep long_name = cumulative total plant transpiration rate multiplied by timestep @@ -1333,7 +1184,6 @@ type = real kind = kind_phys intent = inout - optional = F [sbsnoa] standard_name = cumulative_snow_deposition_sublimation_upward_latent_heat_flux_multiplied_by_timestep long_name = cumulative latent heat flux from snow depo/subl multiplied by timestep @@ -1342,7 +1192,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowca] standard_name = cumulative_surface_snow_area_fraction_multiplied_by_timestep long_name = cumulative surface snow area fraction multiplied by timestep @@ -1351,7 +1200,6 @@ type = real kind = kind_phys intent = inout - optional = F [snohfa] standard_name = cumulative_snow_freezing_rain_upward_latent_heat_flux_multiplied_by_timestep long_name = cumulative latent heat flux due to snow and frz rain multiplied by timestep @@ -1360,7 +1208,6 @@ type = real kind = kind_phys intent = inout - optional = F [ep] standard_name = cumulative_surface_upward_potential_latent_heat_flux_multiplied_by_timestep long_name = cumulative surface upward potential latent heat flux multiplied by timestep @@ -1369,7 +1216,6 @@ type = real kind = kind_phys intent = inout - optional = F [runoff] standard_name = total_runoff long_name = total water runoff @@ -1378,7 +1224,6 @@ type = real kind = kind_phys intent = inout - optional = F [srunoff] standard_name = surface_runoff long_name = surface water runoff (from lsm) @@ -1387,7 +1232,6 @@ type = real kind = kind_phys intent = inout - optional = F [runof] standard_name = surface_runoff_flux long_name = surface runoff flux @@ -1396,7 +1240,6 @@ type = real kind = kind_phys intent = in - optional = F [drain] standard_name = subsurface_runoff_flux long_name = subsurface runoff flux @@ -1405,7 +1248,6 @@ type = real kind = kind_phys intent = in - optional = F [lheatstrg] standard_name = flag_for_canopy_heat_storage_in_land_surface_scheme long_name = flag for canopy heat storage parameterization @@ -1413,7 +1255,6 @@ dimensions = () type = logical intent = in - optional = F [h0facu] standard_name = multiplicative_tuning_parameter_for_reduced_surface_heat_fluxes_due_to_canopy_heat_storage long_name = canopy heat storage factor for sensible heat flux in unstable surface layer @@ -1422,7 +1263,6 @@ type = real kind = kind_phys intent = in - optional = F [h0facs] standard_name = multiplicative_tuning_parameter_for_reduced_latent_heat_flux_due_to_canopy_heat_storage long_name = canopy heat storage factor for sensible heat flux in stable surface layer @@ -1431,7 +1271,6 @@ type = real kind = kind_phys intent = in - optional = F [hflx] standard_name = surface_upward_temperature_flux long_name = kinematic surface upward sensible heat flux @@ -1440,7 +1279,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -1449,7 +1287,6 @@ type = real kind = kind_phys intent = in - optional = F [hflxq] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -1458,7 +1295,6 @@ type = real kind = kind_phys intent = out - optional = F [zvfun] standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction long_name = function of surface roughness length and green vegetation fraction @@ -1467,7 +1303,6 @@ type = real kind = kind_phys intent = in - optional = F [hffac] standard_name = surface_upward_sensible_heat_flux_reduction_factor long_name = surface upward sensible heat flux reduction factor from canopy heat storage @@ -1476,7 +1311,6 @@ type = real kind = kind_phys intent = out - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -1484,7 +1318,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -1492,7 +1325,6 @@ dimensions = () type = integer intent = in - optional = F [islmsk] standard_name = sea_land_ice_mask long_name = landmask: sea/land/ice=0/1/2 @@ -1500,7 +1332,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [vtype] standard_name = vegetation_type_classification long_name = vegetation type for lsm @@ -1508,7 +1339,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [stype] standard_name = soil_type_classification long_name = soil type for lsm @@ -1516,7 +1346,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [slope] standard_name = surface_slope_classification long_name = sfc slope type for lsm @@ -1524,7 +1353,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [vtype_save] standard_name = vegetation_type_classification_save long_name = vegetation type for lsm save @@ -1532,7 +1360,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [stype_save] standard_name = soil_type_classification_save long_name = soil type for lsm save @@ -1540,7 +1367,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [slope_save] standard_name = surface_slope_classification_save long_name = sfc slope type for lsm save @@ -1548,7 +1374,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1557,7 +1382,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1565,4 +1389,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_surface_loop_control.meta b/physics/GFS_surface_loop_control.meta index 47ab14280..048c836da 100644 --- a/physics/GFS_surface_loop_control.meta +++ b/physics/GFS_surface_loop_control.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [iter] standard_name = ccpp_loop_counter long_name = loop counter for subcycling loops in CCPP @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -31,7 +29,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_guess] standard_name = flag_for_guess_run long_name = flag for guess run @@ -39,7 +36,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -48,7 +44,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -56,7 +51,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -75,7 +69,6 @@ dimensions = () type = integer intent = in - optional = F [iter] standard_name = ccpp_loop_counter long_name = loop counter for subcycling loops in CCPP @@ -83,7 +76,6 @@ dimensions = () type = integer intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -92,7 +84,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_guess] standard_name = flag_for_guess_run long_name = flag for guess run @@ -100,7 +91,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -108,7 +98,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -116,7 +105,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -124,7 +112,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -132,7 +119,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [nstf_name1] standard_name = control_for_nsstm long_name = NSSTM flag: off/uncoupled/coupled=0/1/2 @@ -140,7 +126,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -149,7 +134,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -157,4 +141,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_time_vary_pre.fv3.meta b/physics/GFS_time_vary_pre.fv3.meta index fed14822b..4cd736667 100644 --- a/physics/GFS_time_vary_pre.fv3.meta +++ b/physics/GFS_time_vary_pre.fv3.meta @@ -15,7 +15,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -23,7 +22,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -37,7 +35,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -45,7 +42,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -58,7 +54,6 @@ dimensions = (8) type = integer intent = in - optional = F [idat] standard_name = date_and_time_at_model_initialization_in_iso_order long_name = initialization date and time @@ -66,7 +61,6 @@ dimensions = (8) type = integer intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -75,7 +69,6 @@ type = real kind = kind_phys intent = in - optional = F [nsswr] standard_name = number_of_timesteps_between_shortwave_radiation_calls long_name = number of timesteps between shortwave radiation calls @@ -83,7 +76,6 @@ dimensions = () type = integer intent = in - optional = F [nslwr] standard_name = number_of_timesteps_between_longwave_radiation_calls long_name = number of timesteps between longwave radiation calls @@ -91,7 +83,6 @@ dimensions = () type = integer intent = in - optional = F [nhfrad] standard_name = number_of_timesteps_for_concurrent_radiation_and_remainder_physics_calls_after_model_initialization long_name = number of timesteps for radiation calls on physics timestep (coldstarts only) @@ -99,7 +90,6 @@ dimensions = () type = integer intent = in - optional = F [idate] standard_name = date_and_time_at_model_initialization_in_united_states_order long_name = initial date with different size and ordering @@ -107,7 +97,6 @@ dimensions = (4) type = integer intent = in - optional = F [debug] standard_name = flag_for_debug_output long_name = control flag for debug @@ -115,7 +104,6 @@ dimensions = () type = logical intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -123,7 +111,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = master MPI-rank @@ -131,7 +118,6 @@ dimensions = () type = integer intent = in - optional = F [nscyc] standard_name = number_of_timesteps_between_surface_cycling_calls long_name = number of timesteps between surface cycling calls @@ -139,7 +125,6 @@ dimensions = () type = integer intent = in - optional = F [sec] standard_name = forecast_time_in_seconds long_name = seconds elapsed since model initialization @@ -148,7 +133,6 @@ type = real kind = kind_phys intent = out - optional = F [phour] standard_name = forecast_time_on_previous_timestep long_name = forecast time at the previous timestep @@ -157,7 +141,6 @@ type = real kind = kind_phys intent = out - optional = F [zhour] standard_name = time_elapsed_since_diagnostics_reset long_name = time since diagnostics variables have been zeroed @@ -166,7 +149,6 @@ type = real kind = kind_phys intent = out - optional = F [fhour] standard_name = forecast_time long_name = current forecast time @@ -175,7 +157,6 @@ type = real kind = kind_phys intent = out - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -183,7 +164,6 @@ dimensions = () type = integer intent = out - optional = F [julian] standard_name = forecast_julian_day long_name = julian day @@ -192,7 +172,6 @@ type = real kind = kind_phys intent = out - optional = F [yearlen] standard_name = number_of_days_in_current_year long_name = number of days in a year @@ -200,7 +179,6 @@ dimensions = () type = integer intent = out - optional = F [ipt] standard_name = index_of_horizontal_gridpoint_for_debug_output long_name = horizontal index for point used for diagnostic printout @@ -208,7 +186,6 @@ dimensions = () type = integer intent = out - optional = F [lprnt] standard_name = flag_print long_name = control flag for diagnostic print out @@ -216,7 +193,6 @@ dimensions = () type = logical intent = out - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -224,7 +200,6 @@ dimensions = () type = logical intent = out - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -232,7 +207,6 @@ dimensions = () type = logical intent = out - optional = F [lslwr] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -240,7 +214,6 @@ dimensions = () type = logical intent = out - optional = F [solhr] standard_name = forecast_utc_hour long_name = time in hours after 00z at the current timestep @@ -249,7 +222,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -258,7 +230,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -266,4 +237,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/GFS_time_vary_pre.scm.meta b/physics/GFS_time_vary_pre.scm.meta index 32793d31a..908d636b0 100644 --- a/physics/GFS_time_vary_pre.scm.meta +++ b/physics/GFS_time_vary_pre.scm.meta @@ -15,7 +15,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -23,7 +22,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -37,7 +35,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -45,7 +42,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -58,7 +54,6 @@ dimensions = (8) type = integer intent = in - optional = F [idat] standard_name = date_and_time_at_model_initialization_in_iso_order long_name = initialization date and time @@ -66,7 +61,6 @@ dimensions = (8) type = integer intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -75,7 +69,6 @@ type = real kind = kind_phys intent = in - optional = F [nsswr] standard_name = number_of_timesteps_between_shortwave_radiation_calls long_name = number of timesteps between shortwave radiation calls @@ -83,7 +76,6 @@ dimensions = () type = integer intent = in - optional = F [nslwr] standard_name = number_of_timesteps_between_longwave_radiation_calls long_name = number of timesteps between longwave radiation calls @@ -91,7 +83,6 @@ dimensions = () type = integer intent = in - optional = F [idate] standard_name = date_and_time_at_model_initialization_in_united_states_order long_name = initial date with different size and ordering @@ -99,7 +90,6 @@ dimensions = (4) type = integer intent = in - optional = F [debug] standard_name = flag_for_debug_output long_name = control flag for debug @@ -107,7 +97,6 @@ dimensions = () type = logical intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -115,7 +104,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = master MPI-rank @@ -123,7 +111,6 @@ dimensions = () type = integer intent = in - optional = F [nscyc] standard_name = number_of_timesteps_between_surface_cycling_calls long_name = number of timesteps between surface cycling calls @@ -131,7 +118,6 @@ dimensions = () type = integer intent = in - optional = F [sec] standard_name = forecast_time_in_seconds long_name = seconds elapsed since model initialization @@ -140,7 +126,6 @@ type = real kind = kind_phys intent = out - optional = F [phour] standard_name = forecast_time_on_previous_timestep long_name = forecast time at the previous timestep @@ -149,7 +134,6 @@ type = real kind = kind_phys intent = out - optional = F [zhour] standard_name = time_elapsed_since_diagnostics_reset long_name = time since diagnostics variables have been zeroed @@ -158,7 +142,6 @@ type = real kind = kind_phys intent = out - optional = F [fhour] standard_name = forecast_time long_name = current forecast time @@ -167,7 +150,6 @@ type = real kind = kind_phys intent = out - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -175,7 +157,6 @@ dimensions = () type = integer intent = out - optional = F [julian] standard_name = forecast_julian_day long_name = julian day @@ -184,7 +165,6 @@ type = real kind = kind_phys intent = out - optional = F [yearlen] standard_name = number_of_days_in_current_year long_name = number of days in a year @@ -192,7 +172,6 @@ dimensions = () type = integer intent = out - optional = F [ipt] standard_name = index_of_horizontal_gridpoint_for_debug_output long_name = horizontal index for point used for diagnostic printout @@ -200,7 +179,6 @@ dimensions = () type = integer intent = out - optional = F [lprnt] standard_name = flag_print long_name = control flag for diagnostic print out @@ -208,7 +186,6 @@ dimensions = () type = logical intent = out - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -216,7 +193,6 @@ dimensions = () type = logical intent = out - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -224,7 +200,6 @@ dimensions = () type = logical intent = out - optional = F [lslwr] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -232,7 +207,6 @@ dimensions = () type = logical intent = out - optional = F [solhr] standard_name = forecast_utc_hour long_name = time in hours after 00z at the current timestep @@ -241,7 +215,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -250,7 +223,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -258,4 +230,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/cires_ugwp.meta b/physics/cires_ugwp.meta index 12d0f5541..648dad0e3 100644 --- a/physics/cires_ugwp.meta +++ b/physics/cires_ugwp.meta @@ -16,7 +16,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = MPI rank of master process @@ -24,7 +23,6 @@ dimensions = () type = integer intent = in - optional = F [nlunit] standard_name = iounit_of_namelist long_name = fortran unit number for opening namelist file @@ -32,7 +30,6 @@ dimensions = () type = integer intent = in - optional = F [input_nml_file] standard_name = filename_of_internal_namelist long_name = character string to store full namelist contents @@ -41,7 +38,6 @@ type = character kind = len=* intent = in - optional = F [logunit] standard_name = iounit_of_log long_name = fortran unit number for writing logfile @@ -49,7 +45,6 @@ dimensions = () type = integer intent = in - optional = F [fn_nml2] standard_name = filename_of_namelist long_name = namelist filename for ugwp @@ -58,7 +53,6 @@ type = character kind = len=* intent = in - optional = F [lonr] standard_name = number_of_equatorial_longitude_points long_name = number of global points in x-dir (i) along the equator @@ -66,7 +60,6 @@ dimensions = () type = integer intent = in - optional = F [latr] standard_name = number_of_latitude_points long_name = number of global points in y-dir (j) along the meridian @@ -74,7 +67,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -82,7 +74,6 @@ dimensions = () type = integer intent = in - optional = F [ak] standard_name = sigma_pressure_hybrid_coordinate_a_coefficient long_name = a parameter for sigma pressure level calculations @@ -91,7 +82,6 @@ type = real kind = kind_phys intent = in - optional = F [bk] standard_name = sigma_pressure_hybrid_coordinate_b_coefficient long_name = b parameter for sigma pressure level calculations @@ -100,7 +90,6 @@ type = real kind = kind_phys intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = in - optional = F [cdmbgwd] standard_name = multiplicative_tunable_parameters_for_mountain_blocking_and_orographic_gravity_wave_drag long_name = multiplication factors for cdmb and gwd @@ -118,7 +106,6 @@ type = real kind = kind_phys intent = in - optional = F [cgwf] standard_name = tunable_parameters_for_convective_gravity_wave_drag long_name = multiplication factor for convective GWD @@ -127,7 +114,6 @@ type = real kind = kind_phys intent = in - optional = F [pa_rf_in] standard_name = air_pressure_at_bottom_extent_of_rayleigh_damping long_name = pressure level from which Rayleigh Damping is applied @@ -136,7 +122,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_rf_in] standard_name = timescale_for_rayleigh_damping long_name = time scale for Rayleigh damping in days @@ -145,7 +130,6 @@ type = real kind = kind_phys intent = in - optional = F [con_p0] standard_name = standard_atmospheric_pressure long_name = standard atmospheric pressure @@ -154,7 +138,6 @@ type = real kind = kind_phys intent = in - optional = F [gwd_opt] standard_name = control_for_drag_suite_gravity_wave_drag long_name = flag to choose gwd scheme @@ -162,7 +145,6 @@ dimensions = () type = integer intent = in - optional = F [do_ugwp] standard_name = flag_for_unified_gravity_wave_physics_gravity_wave_drag_scheme long_name = flag to activate CIRES UGWP @@ -170,7 +152,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -179,7 +160,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -187,7 +167,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -201,7 +180,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -209,7 +187,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -222,7 +199,6 @@ dimensions = () type = logical intent = in - optional = F [me] standard_name = mpi_rank long_name = MPI rank of current process @@ -230,7 +206,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = MPI rank of master process @@ -238,7 +213,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal @@ -246,7 +220,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -254,7 +227,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -262,7 +234,6 @@ dimensions = () type = integer intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -271,7 +242,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -279,7 +249,6 @@ dimensions = () type = integer intent = in - optional = F [lonr] standard_name = number_of_equatorial_longitude_points long_name = number of global points in x-dir (i) along the equator @@ -287,7 +256,6 @@ dimensions = () type = integer intent = in - optional = F [oro] standard_name = height_above_mean_sea_level long_name = height_above_mean_sea_level @@ -296,7 +264,6 @@ type = real kind = kind_phys intent = in - optional = F [oro_uf] standard_name = unfiltered_height_above_mean_sea_level long_name = unfiltered height_above_mean_sea_level @@ -305,7 +272,6 @@ type = real kind = kind_phys intent = in - optional = F [hprime] standard_name = standard_deviation_of_subgrid_orography long_name = standard deviation of subgrid height_above_mean_sea_level @@ -314,7 +280,6 @@ type = real kind = kind_phys intent = in - optional = F [nmtvr] standard_name = number_of_statistical_measures_of_subgrid_orography long_name = number of topographic variables in GWD @@ -322,7 +287,6 @@ dimensions = () type = integer intent = in - optional = F [oc] standard_name = convexity_of_subgrid_orography long_name = convexity of subgrid height_above_mean_sea_level @@ -331,7 +295,6 @@ type = real kind = kind_phys intent = in - optional = F [theta] standard_name = angle_from_east_of_maximum_subgrid_orographic_variations long_name = angle with_respect to east of maximum subgrid orographic variations @@ -340,7 +303,6 @@ type = real kind = kind_phys intent = in - optional = F [sigma] standard_name = slope_of_subgrid_orography long_name = slope of subgrid height_above_mean_sea_level @@ -349,7 +311,6 @@ type = real kind = kind_phys intent = in - optional = F [gamma] standard_name = anisotropy_of_subgrid_orography long_name = anisotropy of subgrid height_above_mean_sea_level @@ -358,7 +319,6 @@ type = real kind = kind_phys intent = in - optional = F [elvmax] standard_name = maximum_subgrid_orography long_name = maximum of subgrid height_above_mean_sea_level @@ -367,7 +327,6 @@ type = real kind = kind_phys intent = inout - optional = F [clx] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height long_name = horizontal fraction of grid box covered by subgrid height_above_mean_sea_level higher than critical height @@ -376,7 +335,6 @@ type = real kind = kind_phys intent = in - optional = F [oa4] standard_name = asymmetry_of_subgrid_orography long_name = asymmetry of subgrid height_above_mean_sea_level @@ -385,7 +343,6 @@ type = real kind = kind_phys intent = in - optional = F [do_tofd] standard_name = flag_for_turbulent_orographic_form_drag_in_unified_gravity_wave_physics_gravitiy_wave_drag_scheme long_name = flag for turbulent orographic form drag @@ -393,7 +350,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag_ugwp] standard_name = flag_for_unified_gravity_wave_physics_diagnostics long_name = flag for CIRES UGWP Diagnostics @@ -401,7 +357,6 @@ dimensions = () type = logical intent = in - optional = F [cdmbgwd] standard_name = multiplicative_tunable_parameters_for_mountain_blocking_and_orographic_gravity_wave_drag long_name = multiplication factors for cdmb and gwd @@ -410,7 +365,6 @@ type = real kind = kind_phys intent = in - optional = F [xlat] standard_name = latitude long_name = grid latitude @@ -419,7 +373,6 @@ type = real kind = kind_phys intent = in - optional = F [xlat_d] standard_name = latitude_in_degree long_name = latitude in degree north @@ -428,7 +381,6 @@ type = real kind = kind_phys intent = in - optional = F [sinlat] standard_name = sine_of_latitude long_name = sine of the grid latitude @@ -437,7 +389,6 @@ type = real kind = kind_phys intent = in - optional = F [coslat] standard_name = cosine_of_latitude long_name = cosine of the grid latitude @@ -446,7 +397,6 @@ type = real kind = kind_phys intent = in - optional = F [area] standard_name = cell_area long_name = area of the grid cell @@ -455,7 +405,6 @@ type = real kind = kind_phys intent = in - optional = F [ugrs] standard_name = x_wind long_name = zonal wind @@ -464,7 +413,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs] standard_name = y_wind long_name = meridional wind @@ -473,7 +421,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -482,7 +429,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs] standard_name = tracer_concentration long_name = model layer mean tracer concentration @@ -491,7 +437,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -500,7 +445,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -509,7 +453,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers @@ -518,7 +461,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -527,7 +469,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -536,7 +477,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = air pressure difference between midlayers @@ -545,7 +485,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = vertical index at top atmospheric boundary layer @@ -553,7 +492,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [dusfcg] standard_name = instantaneous_x_stress_due_to_gravity_wave_drag long_name = zonal surface stress due to orographic gravity wave drag @@ -562,7 +500,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfcg] standard_name = instantaneous_y_stress_due_to_gravity_wave_drag long_name = meridional surface stress due to orographic gravity wave drag @@ -571,7 +508,6 @@ type = real kind = kind_phys intent = out - optional = F [gw_dudt] standard_name = tendency_of_x_wind_due_to_gravity_wave_drag long_name = zonal wind tendency due to UGWP @@ -580,7 +516,6 @@ type = real kind = kind_phys intent = out - optional = F [gw_dvdt] standard_name = tendency_of_y_wind_due_to_gravity_wave_drag long_name = meridional wind tendency due to UGWP @@ -589,7 +524,6 @@ type = real kind = kind_phys intent = out - optional = F [gw_dtdt] standard_name = tendency_of_air_temperature_due_to_gravity_wave_drag long_name = air temperature tendency due to UGWP @@ -598,7 +532,6 @@ type = real kind = kind_phys intent = out - optional = F [gw_kdis] standard_name = atmosphere_momentum_diffusivity_due_to_gravity_wave_drag long_name = eddy mixing due to UGWP @@ -607,7 +540,6 @@ type = real kind = kind_phys intent = out - optional = F [tau_tofd] standard_name = instantaneous_momentum_flux_due_to_turbulent_orographic_form_drag long_name = momentum flux or stress due to TOFD @@ -616,7 +548,6 @@ type = real kind = kind_phys intent = out - optional = F [tau_mtb] standard_name = instantaneous_momentum_flux_due_to_mountain_blocking_drag long_name = momentum flux or stress due to mountain blocking drag @@ -625,7 +556,6 @@ type = real kind = kind_phys intent = out - optional = F [tau_ogw] standard_name = instantaneous_momentum_flux_due_to_orographic_gravity_wave_drag long_name = momentum flux or stress due to orographic gravity wave drag @@ -634,7 +564,6 @@ type = real kind = kind_phys intent = out - optional = F [tau_ngw] standard_name = instantaneous_momentum_flux_due_to_nonstationary_gravity_wave long_name = momentum flux or stress due to nonstationary gravity waves @@ -643,7 +572,6 @@ type = real kind = kind_phys intent = out - optional = F [zmtb] standard_name = height_of_mountain_blocking long_name = height of mountain blocking drag @@ -652,7 +580,6 @@ type = real kind = kind_phys intent = out - optional = F [zlwb] standard_name = height_of_low_level_wave_breaking long_name = height of low level wave breaking @@ -661,7 +588,6 @@ type = real kind = kind_phys intent = out - optional = F [zogw] standard_name = height_of_launch_level_of_orographic_gravity_wave long_name = height of launch level of orographic gravity wave @@ -670,7 +596,6 @@ type = real kind = kind_phys intent = out - optional = F [dudt_mtb] standard_name = instantaneous_change_in_x_wind_due_to_mountain_blocking_drag long_name = instantaneous change in x wind due to mountain blocking drag @@ -679,7 +604,6 @@ type = real kind = kind_phys intent = out - optional = F [dudt_ogw] standard_name = tendency_of_x_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = instantaneous change in x wind due to orographic gw drag @@ -688,7 +612,6 @@ type = real kind = kind_phys intent = out - optional = F [dudt_tms] standard_name = tendency_of_x_wind_due_to_turbulent_orographic_form_drag long_name = instantaneous change in x wind due to TOFD @@ -697,7 +620,6 @@ type = real kind = kind_phys intent = out - optional = F [du3dt_mtb] standard_name = time_integral_of_change_in_x_wind_due_to_mountain_blocking_drag long_name = time integral of change in x wind due to mountain blocking drag @@ -706,7 +628,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_ogw] standard_name = time_integral_of_change_in_x_wind_due_to_orographic_gravity_wave_drag long_name = time integral of change in x wind due to orographic gw drag @@ -715,7 +636,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_tms] standard_name = time_integral_of_change_in_x_wind_due_to_turbulent_orographic_form_drag long_name = time integral of change in x wind due to TOFD @@ -724,7 +644,6 @@ type = real kind = kind_phys intent = inout - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics @@ -733,7 +652,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics @@ -742,7 +660,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = air temperature tendency due to model physics @@ -751,7 +668,6 @@ type = real kind = kind_phys intent = inout - optional = F [rdxzb] standard_name = level_of_dividing_streamline long_name = level of the dividing streamline @@ -760,7 +676,6 @@ type = real kind = kind_phys intent = out - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -769,7 +684,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -778,7 +692,6 @@ type = real kind = kind_phys intent = in - optional = F [con_cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat !of dry air at constant pressure @@ -787,7 +700,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -796,7 +708,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -805,7 +716,6 @@ type = real kind = kind_phys intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -814,7 +724,6 @@ type = real kind = kind_phys intent = in - optional = F [con_omega] standard_name = angular_velocity_of_earth long_name = angular velocity of earth @@ -823,7 +732,6 @@ type = real kind = kind_phys intent = in - optional = F [rain] standard_name = lwe_thickness_of_precipitation_amount_on_dynamics_timestep long_name = total rain at this time step @@ -832,7 +740,6 @@ type = real kind = kind_phys intent = in - optional = F [ntke] standard_name = index_of_turbulent_kinetic_energy_in_tracer_concentration_array long_name = tracer index for turbulent kinetic energy @@ -840,7 +747,6 @@ dimensions = () type = integer intent = in - optional = F [q_tke] standard_name = turbulent_kinetic_energy long_name = turbulent kinetic energy @@ -849,7 +755,6 @@ type = real kind = kind_phys intent = in - optional = F [dqdt_tke] standard_name = process_split_cumulative_tendency_of_turbulent_kinetic_energy long_name = turbulent kinetic energy tendency due to model physics @@ -858,7 +763,6 @@ type = real kind = kind_phys intent = in - optional = F [lprnt] standard_name = flag_print long_name = control flag for diagnostic print out @@ -866,7 +770,6 @@ dimensions = () type = logical intent = in - optional = F [ipr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of printed column @@ -874,7 +777,6 @@ dimensions = () type = integer intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -884,7 +786,6 @@ kind = kind_phys active = (flag_for_diagnostics_3D) intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -892,7 +793,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -900,7 +800,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -908,7 +807,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -916,7 +814,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_orographic_gwd] standard_name = index_of_orographic_gravity_wave_drag_process_in_cumulative_change_index long_name = index of orographic gravity wave drag process in second dimension of array cumulative change index @@ -924,7 +821,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_nonorographic_gwd] standard_name = index_of_nonorographic_gravity_wave_drag_process_in_cumulative_change_index long_name = index of nonorographic gravity wave drag process in second dimension of array cumulative change index @@ -932,7 +828,6 @@ dimensions = () type = integer intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -940,7 +835,6 @@ dimensions = () type = logical intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -948,7 +842,6 @@ dimensions = () type = logical intent = in - optional = F [flag_for_gwd_generic_tend] standard_name = flag_for_generic_tendency_due_to_gravity_wave_drag long_name = true if GFS_GWD_generic should calculate tendencies @@ -956,7 +849,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -965,7 +857,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -973,4 +864,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/cires_ugwp_post.meta b/physics/cires_ugwp_post.meta index d72052d34..0faca669f 100644 --- a/physics/cires_ugwp_post.meta +++ b/physics/cires_ugwp_post.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -31,7 +29,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -39,7 +36,6 @@ dimensions = () type = integer intent = in - optional = F [gw_dtdt] standard_name = tendency_of_air_temperature_due_to_gravity_wave_drag long_name = air temperature tendency due to UGWP @@ -48,7 +44,6 @@ type = real kind = kind_phys intent = in - optional = F [gw_dudt] standard_name = tendency_of_x_wind_due_to_gravity_wave_drag long_name = zonal wind tendency due to UGWP @@ -57,7 +52,6 @@ type = real kind = kind_phys intent = in - optional = F [gw_dvdt] standard_name = tendency_of_y_wind_due_to_gravity_wave_drag long_name = meridional wind tendency due to UGWP @@ -66,7 +60,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_tofd] standard_name = instantaneous_momentum_flux_due_to_turbulent_orographic_form_drag long_name = momentum flux or stress due to TOFD @@ -75,7 +68,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_mtb] standard_name = instantaneous_momentum_flux_due_to_mountain_blocking_drag long_name = momentum flux or stress due to mountain blocking drag @@ -84,7 +76,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_ogw] standard_name = instantaneous_momentum_flux_due_to_orographic_gravity_wave_drag long_name = momentum flux or stress due to orographic gravity wave drag @@ -93,7 +84,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_ngw] standard_name = instantaneous_momentum_flux_due_to_nonstationary_gravity_wave long_name = momentum flux or stress due to nonstationary gravity waves @@ -102,7 +92,6 @@ type = real kind = kind_phys intent = in - optional = F [zmtb] standard_name = height_of_mountain_blocking long_name = height of mountain blocking drag @@ -111,7 +100,6 @@ type = real kind = kind_phys intent = in - optional = F [zlwb] standard_name = height_of_low_level_wave_breaking long_name = height of low level wave breaking @@ -120,7 +108,6 @@ type = real kind = kind_phys intent = in - optional = F [zogw] standard_name = height_of_launch_level_of_orographic_gravity_wave long_name = height of launch level of orographic gravity wave @@ -129,7 +116,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt_mtb] standard_name = instantaneous_change_in_x_wind_due_to_mountain_blocking_drag long_name = instantaneous change in x wind due to mountain blocking drag @@ -138,7 +124,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt_ogw] standard_name = tendency_of_x_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = instantaneous change in x wind due to orographic gw drag @@ -147,7 +132,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt_tms] standard_name = tendency_of_x_wind_due_to_turbulent_orographic_form_drag long_name = instantaneous change in x wind due to TOFD @@ -156,7 +140,6 @@ type = real kind = kind_phys intent = in - optional = F [tot_zmtb] standard_name = time_integral_of_height_of_mountain_blocking long_name = time integral of height of mountain blocking drag @@ -165,7 +148,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_zlwb] standard_name = time_integral_of_height_of_low_level_wave_breaking long_name = time integral of height of drag due to low level wave breaking @@ -174,7 +156,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_zogw] standard_name = time_integral_of_height_of_launch_level_of_orographic_gravity_wave long_name = time integral of height of launch level of orographic gravity wave @@ -183,7 +164,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_tofd] standard_name = time_integral_of_momentum_flux_due_to_turbulent_orographic_form_drag long_name = time integral of momentum flux due to TOFD @@ -192,7 +172,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_mtb] standard_name = time_integral_of_momentum_flux_due_to_mountain_blocking_drag long_name = time integral of momentum flux due to mountain blocking drag @@ -201,7 +180,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_ogw] standard_name = time_integral_of_momentum_flux_due_to_orographic_gravity_wave_drag long_name = time integral of momentum flux due to orographic gravity wave drag @@ -210,7 +188,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_ngw] standard_name = time_integral_of_momentum_flux_due_to_nonstationary_gravity_wave long_name = time integral of momentum flux due to nonstationary gravity waves @@ -219,7 +196,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_mtb] standard_name = time_integral_of_change_in_x_wind_due_to_mountain_blocking_drag long_name = time integral of change in x wind due to mountain blocking drag @@ -228,7 +204,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_ogw] standard_name = time_integral_of_change_in_x_wind_due_to_orographic_gravity_wave_drag long_name = time integral of change in x wind due to orographic gw drag @@ -237,7 +212,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_tms] standard_name = time_integral_of_change_in_x_wind_due_to_turbulent_orographic_form_drag long_name = time integral of change in x wind due to TOFD @@ -246,7 +220,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_ngw] standard_name = time_integral_of_change_in_x_wind_due_to_nonstationary_gravity_wave long_name = time integral of change in x wind due to NGW @@ -255,7 +228,6 @@ type = real kind = kind_phys intent = inout - optional = F [dv3dt_ngw] standard_name = time_integral_of_change_in_y_wind_due_to_nonstationary_gravity_wave long_name = time integral of change in y wind due to NGW @@ -264,7 +236,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = air temperature tendency due to model physics @@ -273,7 +244,6 @@ type = real kind = kind_phys intent = inout - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics @@ -282,7 +252,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics @@ -291,7 +260,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -300,7 +268,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -308,5 +275,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/cnvc90.meta b/physics/cnvc90.meta index 1e5a7c132..9c2a626fa 100644 --- a/physics/cnvc90.meta +++ b/physics/cnvc90.meta @@ -15,7 +15,6 @@ type = real kind = kind_phys intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -23,7 +22,6 @@ dimensions = () type = integer intent = in - optional = F [rn] standard_name = lwe_thickness_of_convective_precipitation_amount_on_dynamics_timestep long_name = convective rainfall amount on dynamics timestep @@ -32,7 +30,6 @@ type = real kind = kind_phys intent = in - optional = F [kbot] standard_name = vertical_index_at_cloud_base long_name = vertical index at cloud base @@ -40,7 +37,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [ktop] standard_name = vertical_index_at_cloud_top long_name = vertical index at cloud top @@ -48,7 +44,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -56,7 +51,6 @@ dimensions = () type = integer intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = interface pressure @@ -65,7 +59,6 @@ type = real kind = kind_phys intent = in - optional = F [acv] standard_name = cumulative_lwe_thickness_of_convective_precipitation_amount_between_sw_radiation_calls long_name = accumulated convective rainfall amount for cnvc90 only @@ -74,7 +67,6 @@ type = real kind = kind_phys intent = inout - optional = F [acvb] standard_name = cumulative_min_vertical_index_at_cloud_base_between_sw_radiation_calls long_name = smallest cloud base vertical index encountered thus far @@ -83,7 +75,6 @@ type = real kind = kind_phys intent = inout - optional = F [acvt] standard_name = cumulative_max_vertical_index_at_cloud_base_between_sw_radiation_calls long_name = largest cloud top vertical index encountered thus far @@ -92,7 +83,6 @@ type = real kind = kind_phys intent = inout - optional = F [cv] standard_name = convective_cloud_area_fraction_between_sw_radiation_calls_from_cnvc90 long_name = fraction of convective cloud @@ -101,7 +91,6 @@ type = real kind = kind_phys intent = inout - optional = F [cvb] standard_name = pressure_at_convective_cloud_base_between_sw_radiation_calls_from_cnvc90 long_name = pressure at bottom of convective cloud @@ -110,7 +99,6 @@ type = real kind = kind_phys intent = inout - optional = F [cvt] standard_name = pressure_at_convective_cloud_top_between_sw_radiation_calls_from_cnvc90 long_name = pressure at top of convective cloud @@ -119,7 +107,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -128,7 +115,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -136,5 +122,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/cs_conv.meta b/physics/cs_conv.meta index be27f8360..68189d776 100644 --- a/physics/cs_conv.meta +++ b/physics/cs_conv.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of veritcal levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [q] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -39,7 +36,6 @@ type = real kind = kind_phys intent = in - optional = F [clw1] standard_name = ice_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -48,7 +44,6 @@ type = real kind = kind_phys intent = in - optional = F [clw2] standard_name = cloud_condensed_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -57,7 +52,6 @@ type = real kind = kind_phys intent = in - optional = F [work1] standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes long_name = grid size related coefficient used in scale-sensitive schemes @@ -66,7 +60,6 @@ type = real kind = kind_phys intent = in - optional = F [work2] standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes_complement long_name = complement to work1 @@ -75,7 +68,6 @@ type = real kind = kind_phys intent = in - optional = F [cs_parm1] standard_name = updraft_velocity_tunable_parameter_1_CS long_name = tunable parameter 1 for Chikira-Sugiyama convection @@ -84,7 +76,6 @@ type = real kind = kind_phys intent = in - optional = F [cs_parm2] standard_name = updraft_velocity_tunable_parameter_2_CS long_name = tunable parameter 2 for Chikira-Sugiyama convection @@ -93,7 +84,6 @@ type = real kind = kind_phys intent = in - optional = F [wcbmax] standard_name = maximum_updraft_velocity_at_cloud_base long_name = maximum updraft velocity at cloud base @@ -102,7 +92,6 @@ type = real kind = kind_phys intent = out - optional = F [fswtr] standard_name = fraction_of_cloud_top_water_scavenged long_name = fraction of the tracer (cloud top water) that is scavenged by convection @@ -111,7 +100,6 @@ type = real kind = kind_phys intent = out - optional = F [fscav] standard_name = fraction_of_tracer_scavenged long_name = fraction of the tracer (aerosols) that is scavenged by convection @@ -120,7 +108,6 @@ type = real kind = kind_phys intent = out - optional = F [save_q1] standard_name = water_vapor_specific_humidity_save long_name = water vapor specific humidity before entering a physics scheme @@ -129,7 +116,6 @@ type = real kind = kind_phys intent = out - optional = F [save_q2] standard_name = cloud_condensed_water_mixing_ratio_save long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) before entering a physics scheme @@ -138,7 +124,6 @@ type = real kind = kind_phys intent = out - optional = F [save_q3] standard_name = ice_water_mixing_ratio_save long_name = cloud ice water mixing ratio before entering a physics scheme @@ -147,7 +132,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -156,7 +140,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -164,7 +147,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -183,7 +165,6 @@ dimensions = () type = integer intent = in - optional = F [kmax] standard_name = vertical_layer_dimension long_name = number of veritcal levels @@ -191,7 +172,6 @@ dimensions = () type = integer intent = in - optional = F [do_aw] standard_name = flag_for_Arakawa_Wu_adjustment long_name = flag for Arakawa Wu scale-aware adjustment @@ -199,7 +179,6 @@ dimensions = () type = logical intent = in - optional = F [sigmatot] standard_name = convective_updraft_area_fraction_at_model_interfaces long_name = convective updraft area fraction at model interfaces @@ -208,7 +187,6 @@ type = real kind = kind_phys intent = in - optional = F [sigmafrac] standard_name = convective_updraft_area_fraction long_name = convective updraft area fraction @@ -217,7 +195,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -226,7 +203,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -234,7 +210,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -253,7 +228,6 @@ dimensions = () type = integer intent = in - optional = F [kmax] standard_name = vertical_layer_dimension long_name = number of veritcal levels @@ -261,7 +235,6 @@ dimensions = () type = integer intent = in - optional = F [ntracp1] standard_name = number_of_tracers_plus_one long_name = number of tracers plus one @@ -269,7 +242,6 @@ dimensions = () type = integer intent = in - optional = F [nn] standard_name = number_of_tracers_for_convective_transport long_name = number of tracers for convective transport (used to dimension clw) @@ -277,7 +249,6 @@ dimensions = () type = integer intent = in - optional = F [ntr] standard_name = number_of_tracers_for_CS long_name = number of convectively transported tracers in Chikira-Sugiyama deep conv. scheme @@ -285,7 +256,6 @@ dimensions = () type = integer intent = in - optional = F [nctp] standard_name = number_of_cloud_types_CS long_name = number of cloud types in Chikira-Sugiyama scheme @@ -293,7 +263,6 @@ dimensions = () type = integer intent = in - optional = F [otspt] standard_name = flag_convective_tracer_transport long_name = flag to enable tracer transport by updrafts/downdrafts[(:,1)] or subsidence [(:,2)] @@ -301,7 +270,6 @@ dimensions = (number_of_tracers_plus_one,2) type = logical intent = in - optional = F [lat] standard_name = latitude_index_in_debug_printouts long_name = latitude index in debug printouts @@ -309,7 +277,6 @@ dimensions = () type = integer intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -317,7 +284,6 @@ dimensions = () type = integer intent = in - optional = F [t] standard_name = air_temperature_of_new_state long_name = mid-layer temperature @@ -326,7 +292,6 @@ type = real kind = kind_phys intent = inout - optional = F [q] standard_name = specific_humidity_of_new_state long_name = mid-layer specific humidity of water vapor @@ -335,7 +300,6 @@ type = real kind = kind_phys intent = inout - optional = F [rain1] standard_name = lwe_thickness_of_deep_convective_precipitation_amount long_name = deep convective rainfall amount on physics timestep @@ -344,7 +308,6 @@ type = real kind = kind_phys intent = out - optional = F [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -353,7 +316,6 @@ type = real kind = kind_phys intent = inout - optional = F [zm] standard_name = geopotential long_name = mid-layer geopotential @@ -362,7 +324,6 @@ type = real kind = kind_phys intent = in - optional = F [zi] standard_name = geopotential_at_interface long_name = interface geopotential @@ -371,7 +332,6 @@ type = real kind = kind_phys intent = in - optional = F [pap] standard_name = air_pressure long_name = mid-layer pressure @@ -380,7 +340,6 @@ type = real kind = kind_phys intent = in - optional = F [paph] standard_name = air_pressure_at_interface long_name = interface pressure @@ -389,7 +348,6 @@ type = real kind = kind_phys intent = in - optional = F [delta] standard_name = timestep_for_physics long_name = physics time step @@ -398,7 +356,6 @@ type = real kind = kind_phys intent = in - optional = F [delti] standard_name = timestep_for_dynamics long_name = dynamics time step @@ -407,7 +364,6 @@ type = real kind = kind_phys intent = in - optional = F [ud_mf] standard_name = instantaneous_atmosphere_updraft_convective_mass_flux long_name = (updraft mass flux) * delt @@ -416,7 +372,6 @@ type = real kind = kind_phys intent = inout - optional = F [dd_mf] standard_name = instantaneous_atmosphere_downdraft_convective_mass_flux long_name = (downdraft mass flux) * delt @@ -425,7 +380,6 @@ type = real kind = kind_phys intent = inout - optional = F [dt_mf] standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux long_name = (detrainment mass flux) * delt @@ -434,7 +388,6 @@ type = real kind = kind_phys intent = inout - optional = F [u] standard_name = x_wind_of_new_state long_name = mid-layer zonal wind @@ -443,7 +396,6 @@ type = real kind = kind_phys intent = inout - optional = F [v] standard_name = y_wind_of_new_state long_name = mid-layer meridional wind @@ -452,7 +404,6 @@ type = real kind = kind_phys intent = inout - optional = F [fscav] standard_name = fraction_of_tracer_scavenged long_name = fraction of the tracer (aerosols) that is scavenged by convection @@ -461,7 +412,6 @@ type = real kind = kind_phys intent = in - optional = F [fswtr] standard_name = fraction_of_cloud_top_water_scavenged long_name = fraction of the tracer (cloud top water) that is scavenged by convection @@ -470,7 +420,6 @@ type = real kind = kind_phys intent = in - optional = F [cbmfx] standard_name = atmosphere_updraft_convective_mass_flux_at_cloud_base_by_cloud_type long_name = cloud base mass flux @@ -479,7 +428,6 @@ type = real kind = kind_phys intent = inout - optional = F [mype] standard_name = mpi_rank long_name = current MPI rank @@ -487,7 +435,6 @@ dimensions = () type = integer intent = in - optional = F [wcbmaxm] standard_name = maximum_updraft_velocity_at_cloud_base long_name = maximum updraft velocity at cloud base @@ -496,7 +443,6 @@ type = real kind = kind_phys intent = in - optional = F [precz0in] standard_name = detrainment_and_precipitation_tunable_parameter_3_CS long_name = partition water between detrainment and precipitation (decrease for more precipitation) @@ -505,7 +451,6 @@ type = real kind = kind_phys intent = in - optional = F [preczhin] standard_name = detrainment_and_precipitation_tunable_parameter_4_CS long_name = partition water between detrainment and precipitation (decrease for more precipitation) @@ -514,7 +459,6 @@ type = real kind = kind_phys intent = in - optional = F [clmdin] standard_name = entrainment_efficiency_tunable_parameter_9_CS long_name = entrainment efficiency @@ -523,7 +467,6 @@ type = real kind = kind_phys intent = in - optional = F [sigma] standard_name = convective_updraft_area_fraction_at_model_interfaces long_name = convective updraft area fraction at model interfaces @@ -532,7 +475,6 @@ type = real kind = kind_phys intent = out - optional = F [do_aw] standard_name = flag_for_Arakawa_Wu_adjustment long_name = flag for Arakawa Wu scale-aware adjustment @@ -540,7 +482,6 @@ dimensions = () type = logical intent = in - optional = F [do_awdd] standard_name = flag_for_arakawa_wu_downdrafts_for_deep_convection long_name = flag to enable treating convective tendencies following Arakwaw-Wu for downdrafts (2013) @@ -548,7 +489,6 @@ dimensions = () type = logical intent = in - optional = F [flx_form] standard_name = flag_flux_form_CS long_name = flag to enable using the flux form of the equations in CS scheme @@ -556,7 +496,6 @@ dimensions = () type = logical intent = in - optional = F [lprnt] standard_name = flag_print long_name = control flag for diagnostic print out @@ -564,7 +503,6 @@ dimensions = () type = logical intent = in - optional = F [ipr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of printed column @@ -572,7 +510,6 @@ dimensions = () type = integer intent = in - optional = F [kcnv] standard_name = flag_deep_convection long_name = flag indicating whether convection occurs in column @@ -580,7 +517,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [qlcn] standard_name = mass_fraction_of_convective_cloud_liquid_water long_name = mass fraction of convective cloud liquid water @@ -589,7 +525,6 @@ type = real kind = kind_phys intent = out - optional = F [qicn] standard_name = mass_fraction_of_convective_cloud_ice long_name = mass fraction of convective cloud ice water @@ -598,7 +533,6 @@ type = real kind = kind_phys intent = out - optional = F [w_upi] standard_name = vertical_velocity_for_updraft long_name = vertical velocity for updraft @@ -607,7 +541,6 @@ type = real kind = kind_phys intent = out - optional = F [cf_upi] standard_name = convective_cloud_fraction_for_microphysics long_name = convective cloud fraction for microphysics @@ -616,7 +549,6 @@ type = real kind = kind_phys intent = out - optional = F [cnv_mfd] standard_name = detrained_mass_flux long_name = detrained mass flux @@ -625,7 +557,6 @@ type = real kind = kind_phys intent = out - optional = F [cnv_dqldt] standard_name = tendency_of_cloud_water_due_to_convective_microphysics long_name = tendency of cloud water due to convective microphysics @@ -634,7 +565,6 @@ type = real kind = kind_phys intent = out - optional = F [clcn] standard_name = convective_cloud_volume_fraction long_name = convective cloud volume fraction @@ -643,7 +573,6 @@ type = real kind = kind_phys intent = out - optional = F [cnv_fice] standard_name = ice_fraction_in_convective_tower long_name = ice fraction in convective tower @@ -652,7 +581,6 @@ type = real kind = kind_phys intent = out - optional = F [cnv_ndrop] standard_name = number_concentration_of_cloud_liquid_water_particles_for_detrainment long_name = droplet number concentration in convective detrainment @@ -661,7 +589,6 @@ type = real kind = kind_phys intent = out - optional = F [cnv_nice] standard_name = number_concentration_of_ice_crystals_for_detrainment long_name = crystal number concentration in convective detrainment @@ -670,7 +597,6 @@ type = real kind = kind_phys intent = out - optional = F [mp_phys] standard_name = control_for_microphysics_scheme long_name = flag for microphysics scheme @@ -678,7 +604,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -687,7 +612,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -695,4 +619,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/cs_conv_aw_adj.meta b/physics/cs_conv_aw_adj.meta index d1e87ecd4..f3c205772 100644 --- a/physics/cs_conv_aw_adj.meta +++ b/physics/cs_conv_aw_adj.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of veritcal levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [do_cscnv] standard_name = flag_for_Chikira_Sugiyama_deep_convection long_name = flag for Chikira-Sugiyama convection @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [do_aw] standard_name = flag_for_Arakawa_Wu_adjustment long_name = flag for Arakawa Wu scale-aware adjustment @@ -38,7 +35,6 @@ dimensions = () type = logical intent = in - optional = F [do_shoc] standard_name = flag_for_shoc long_name = flag for SHOC @@ -46,7 +42,6 @@ dimensions = () type = logical intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [ntclamt] standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer @@ -70,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [nncl] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -78,7 +70,6 @@ dimensions = () type = integer intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -87,7 +78,6 @@ type = real kind = kind_phys intent = in - optional = F [sigmafrac] standard_name = convective_updraft_area_fraction long_name = convective updraft area fraction @@ -96,7 +86,6 @@ type = real kind = kind_phys intent = inout - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -105,7 +94,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -114,7 +102,6 @@ type = real kind = kind_phys intent = inout - optional = F [save_t] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -123,7 +110,6 @@ type = real kind = kind_phys intent = in - optional = F [save_q] standard_name = tracer_concentration_save long_name = tracer concentration before entering a physics scheme @@ -132,7 +118,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -141,7 +126,6 @@ type = real kind = kind_phys intent = in - optional = F [cldfrac] standard_name = cloud_fraction_for_MG long_name = cloud fraction used by Morrison-Gettelman MP @@ -150,7 +134,6 @@ type = real kind = kind_phys intent = inout - optional = F [subcldfrac] standard_name = subgrid_scale_cloud_fraction_from_shoc long_name = subgrid-scale cloud fraction from the SHOC scheme @@ -159,7 +142,6 @@ type = real kind = kind_phys intent = inout - optional = F [prcp] standard_name = lwe_thickness_of_explicit_precipitation_amount long_name = explicit precipitation (rain, ice, snow, graupel, ...) on physics timestep @@ -168,7 +150,6 @@ type = real kind = kind_phys intent = inout - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -176,7 +157,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -184,7 +164,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -193,7 +172,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -201,4 +179,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/cu_gf_driver.meta b/physics/cu_gf_driver.meta index 732eb9679..58bab202c 100644 --- a/physics/cu_gf_driver.meta +++ b/physics/cu_gf_driver.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [imfshalcnv_gf] standard_name = identifier_for_grell_freitas_shallow_convection long_name = flag for Grell-Freitas shallow convection scheme @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [imfdeepcnv] standard_name = control_for_deep_convection_scheme long_name = flag for mass-flux deep convection scheme @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [imfdeepcnv_gf] standard_name = identifier_for_grell_freitas_deep_convection long_name = flag for Grell-Freitas deep convection scheme @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [mpirank] standard_name = mpi_rank long_name = current MPI-rank @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root long_name = master MPI-rank @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -63,7 +57,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -71,7 +64,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -84,7 +76,6 @@ dimensions = () type = integer intent = in - optional = F [garea] standard_name = cell_area long_name = grid cell area @@ -93,7 +84,6 @@ type = real kind = kind_phys intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -101,7 +91,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -109,7 +98,6 @@ dimensions = () type = integer intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics time step @@ -118,7 +106,6 @@ type = real kind = kind_phys intent = in - optional = F [cactiv] standard_name = counter_for_grell_freitas_convection long_name = convective activity memory @@ -126,7 +113,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -135,7 +121,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat !of dry air at constant pressure @@ -144,7 +129,6 @@ type = real kind = kind_phys intent = in - optional = F [xlv] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -153,7 +137,6 @@ type = real kind = kind_phys intent = in - optional = F [r_v] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -162,7 +145,6 @@ type = real kind = kind_phys intent = in - optional = F [forcet] standard_name = tendency_of_air_temperature_due_to_nonphysics long_name = temperature tendency due to dynamics only @@ -171,7 +153,6 @@ type = real kind = kind_phys intent = in - optional = F [forceqv_spechum] standard_name = tendendy_of_specific_humidity_due_to_nonphysics long_name = moisture tendency due to dynamics only @@ -180,7 +161,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = layer geopotential @@ -189,7 +169,6 @@ type = real kind = kind_phys intent = in - optional = F [raincv] standard_name = lwe_thickness_of_deep_convective_precipitation_amount long_name = deep convective rainfall amount on physics timestep @@ -198,7 +177,6 @@ type = real kind = kind_phys intent = out - optional = F [qv_spechum] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -207,7 +185,6 @@ type = real kind = kind_phys intent = inout - optional = F [t] standard_name = air_temperature_of_new_state long_name = updated temperature @@ -216,7 +193,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld1d] standard_name = cloud_work_function long_name = cloud work function @@ -225,7 +201,6 @@ type = real kind = kind_phys intent = out - optional = F [us] standard_name = x_wind_of_new_state long_name = updated x-direction wind @@ -234,7 +209,6 @@ type = real kind = kind_phys intent = inout - optional = F [vs] standard_name = y_wind_of_new_state long_name = updated y-direction wind @@ -243,7 +217,6 @@ type = real kind = kind_phys intent = inout - optional = F [t2di] standard_name = air_temperature long_name = mid-layer temperature @@ -252,7 +225,6 @@ type = real kind = kind_phys intent = in - optional = F [w] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -261,7 +233,6 @@ type = real kind = kind_phys intent = in - optional = F [qv2di_spechum] standard_name = specific_humidity long_name = water vapor specific humidity @@ -270,7 +241,6 @@ type = real kind = kind_phys intent = in - optional = F [p2di] standard_name = air_pressure long_name = mean layer pressure @@ -279,7 +249,6 @@ type = real kind = kind_phys intent = in - optional = F [psuri] standard_name = surface_air_pressure long_name = surface pressure @@ -288,7 +257,6 @@ type = real kind = kind_phys intent = in - optional = F [hbot] standard_name = vertical_index_at_cloud_base long_name = index for cloud base @@ -296,7 +264,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [htop] standard_name = vertical_index_at_cloud_top long_name = index for cloud top @@ -304,7 +271,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [kcnv] standard_name = flag_deep_convection long_name = deep convection: 0=no, 1=yes @@ -312,7 +278,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [xland] standard_name = sea_land_ice_mask long_name = landmask: sea/land/ice=0/1/2 @@ -320,7 +285,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [hfx2] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -329,7 +293,6 @@ type = real kind = kind_phys intent = in - optional = F [qfx2] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -338,7 +301,6 @@ type = real kind = kind_phys intent = in - optional = F [cliw] standard_name = ice_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -347,7 +309,6 @@ type = real kind = kind_phys intent = inout - optional = F [clcw] standard_name = cloud_condensed_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -356,7 +317,6 @@ type = real kind = kind_phys intent = inout - optional = F [pbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -365,7 +325,6 @@ type = real kind = kind_phys intent = in - optional = F [ud_mf] standard_name = instantaneous_atmosphere_updraft_convective_mass_flux long_name = (updraft mass flux) * delt @@ -374,7 +333,6 @@ type = real kind = kind_phys intent = out - optional = F [dd_mf] standard_name = instantaneous_atmosphere_downdraft_convective_mass_flux long_name = (downdraft mass flux) * delt @@ -383,7 +341,6 @@ type = real kind = kind_phys intent = out - optional = F [dt_mf] standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux long_name = (detrainment mass flux) * delt @@ -392,7 +349,6 @@ type = real kind = kind_phys intent = out - optional = F [cnvw_moist] standard_name = convective_cloud_water_mixing_ratio long_name = moist convective cloud water mixing ratio @@ -401,7 +357,6 @@ type = real kind = kind_phys intent = out - optional = F [cnvc] standard_name = convective_cloud_cover long_name = convective cloud cover @@ -410,7 +365,6 @@ type = real kind = kind_phys intent = out - optional = F [imfshalcnv] standard_name = control_for_shallow_convection_scheme long_name = flag for mass-flux shallow convection scheme @@ -418,7 +372,6 @@ dimensions = () type = integer intent = in - optional = F [flag_for_scnv_generic_tend] standard_name = flag_for_generic_tendency_due_to_shallow_convection long_name = true if GFS_SCNV_generic should calculate tendencies @@ -426,7 +379,6 @@ dimensions = () type = logical intent = in - optional = F [flag_for_dcnv_generic_tend] standard_name = flag_for_generic_tendency_due_to_deep_convection long_name = true if GFS_DCNV_generic should calculate tendencies @@ -434,7 +386,6 @@ dimensions = () type = logical intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -443,7 +394,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -451,7 +401,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -459,7 +408,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -467,7 +415,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -475,7 +422,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -483,7 +429,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -491,7 +436,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -499,7 +443,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_scnv] standard_name = index_of_shallow_convection_process_process_in_cumulative_change_index long_name = index of shallow convection process in second dimension of array cumulative change index @@ -507,7 +450,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_dcnv] standard_name = index_of_deep_convection_process_process_in_cumulative_change_index long_name = index of deep convection process in second dimension of array cumulative change index @@ -515,7 +457,6 @@ dimensions = () type = integer intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -523,7 +464,6 @@ dimensions = () type = logical intent = in - optional = F [qci_conv] standard_name = convective_cloud_condesate_after_rainout long_name = convective cloud condesate after rainout @@ -532,7 +472,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -541,7 +480,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -549,4 +487,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/cu_gf_driver_post.meta b/physics/cu_gf_driver_post.meta index 5d1f34927..99f42245a 100644 --- a/physics/cu_gf_driver_post.meta +++ b/physics/cu_gf_driver_post.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [t] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [q] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -32,7 +30,6 @@ type = real kind = kind_phys intent = in - optional = F [prevst] standard_name = air_temperature_on_previous_timestep long_name = temperature from previous time step @@ -41,7 +38,6 @@ type = real kind = kind_phys intent = out - optional = F [prevsq] standard_name = specific_humidity_on_previous_timestep long_name = moisture from previous time step @@ -50,7 +46,6 @@ type = real kind = kind_phys intent = out - optional = F [cactiv] standard_name = counter_for_grell_freitas_convection long_name = convective activity memory @@ -58,7 +53,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [conv_act] standard_name = consecutive_calls_for_grell_freitas_convection long_name = Memory counter for GF @@ -67,7 +61,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -76,7 +69,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -84,4 +76,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/cu_gf_driver_pre.meta b/physics/cu_gf_driver_pre.meta index 394055762..2cade8d9f 100644 --- a/physics/cu_gf_driver_pre.meta +++ b/physics/cu_gf_driver_pre.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [fhour] standard_name = forecast_time long_name = curent forecast time @@ -39,7 +36,6 @@ type = real kind = kind_phys intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -48,7 +44,6 @@ type = real kind = kind_phys intent = in - optional = F [t] standard_name = air_temperature long_name = model layer mean temperature @@ -57,7 +52,6 @@ type = real kind = kind_phys intent = in - optional = F [q] standard_name = specific_humidity long_name = water vapor specific humidity @@ -66,7 +60,6 @@ type = real kind = kind_phys intent = in - optional = F [prevst] standard_name = air_temperature_on_previous_timestep long_name = temperature from previous time step @@ -75,7 +68,6 @@ type = real kind = kind_phys intent = in - optional = F [prevsq] standard_name = specific_humidity_on_previous_timestep long_name = moisture from previous time step @@ -84,7 +76,6 @@ type = real kind = kind_phys intent = in - optional = F [forcet] standard_name = tendency_of_air_temperature_due_to_nonphysics long_name = temperature tendency due to dynamics only @@ -93,7 +84,6 @@ type = real kind = kind_phys intent = out - optional = F [forceq] standard_name = tendendy_of_specific_humidity_due_to_nonphysics long_name = moisture tendency due to dynamics only @@ -102,7 +92,6 @@ type = real kind = kind_phys intent = out - optional = F [cactiv] standard_name = counter_for_grell_freitas_convection long_name = convective activity memory @@ -110,7 +99,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [conv_act] standard_name = consecutive_calls_for_grell_freitas_convection long_name = Memory counter for GF @@ -119,7 +107,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -128,7 +115,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -136,4 +122,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/cu_ntiedtke.meta b/physics/cu_ntiedtke.meta index c7477d925..68a9827c8 100644 --- a/physics/cu_ntiedtke.meta +++ b/physics/cu_ntiedtke.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [imfshalcnv_ntiedtke] standard_name = identifier_for_new_tiedtke_shallow_convection long_name = flag for new Tiedtke shallow convection scheme @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [imfdeepcnv] standard_name = control_for_deep_convection_scheme long_name = flag for mass-flux deep convection scheme @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [imfdeepcnv_ntiedtke] standard_name = identifier_for_new_tiedtke_deep_convection long_name = flag for new Tiedtke deep convection scheme @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [mpirank] standard_name = mpi_rank long_name = current MPI-rank @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root long_name = master MPI-rank @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -63,7 +57,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -71,7 +64,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -85,7 +77,6 @@ type = real kind = kind_phys intent = inout - optional = F [pv] standard_name = y_wind_of_new_state long_name = updated y-direction wind @@ -94,7 +85,6 @@ type = real kind = kind_phys intent = inout - optional = F [pt] standard_name = air_temperature_of_new_state long_name = updated temperature @@ -103,7 +93,6 @@ type = real kind = kind_phys intent = inout - optional = F [pqv] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity @@ -112,7 +101,6 @@ type = real kind = kind_phys intent = inout - optional = F [tdi] standard_name = air_temperature long_name = mid-layer temperature @@ -121,7 +109,6 @@ type = real kind = kind_phys intent = in - optional = F [qvdi] standard_name = specific_humidity long_name = water vapor specific humidity @@ -130,7 +117,6 @@ type = real kind = kind_phys intent = in - optional = F [pqvf] standard_name = tendendy_of_specific_humidity_due_to_nonphysics long_name = moisture tendency due to dynamics only @@ -139,7 +125,6 @@ type = real kind = kind_phys intent = in - optional = F [ptf] standard_name = tendency_of_air_temperature_due_to_nonphysics long_name = temperature tendency due to dynamics only @@ -148,7 +133,6 @@ type = real kind = kind_phys intent = in - optional = F [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other tracers @@ -157,7 +141,6 @@ type = real kind = kind_phys intent = inout - optional = F [poz] standard_name = geopotential long_name = geopotential at model layer centers @@ -166,7 +149,6 @@ type = real kind = kind_phys intent = in - optional = F [pzz] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -175,7 +157,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -184,7 +165,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -193,7 +173,6 @@ type = real kind = kind_phys intent = in - optional = F [pomg] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -202,7 +181,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -211,7 +189,6 @@ type = real kind = kind_phys intent = in - optional = F [hfx] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -220,7 +197,6 @@ type = real kind = kind_phys intent = in - optional = F [zprecc] standard_name = lwe_thickness_of_deep_convective_precipitation_amount long_name = deep convective rainfall amount on physics timestep @@ -229,7 +205,6 @@ type = real kind = kind_phys intent = out - optional = F [lmask] standard_name = sea_land_ice_mask long_name = landmask: sea/land/ice=0/1/2 @@ -237,7 +212,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [lq] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -245,7 +219,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -253,7 +226,6 @@ dimensions = () type = integer intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics time step @@ -262,7 +234,6 @@ type = real kind = kind_phys intent = in - optional = F [dx] standard_name = characteristic_grid_lengthscale long_name = size of the grid cell @@ -271,7 +242,6 @@ type = real kind = kind_phys intent = in - optional = F [kbot] standard_name = vertical_index_at_cloud_base long_name = index for cloud base @@ -279,7 +249,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [ktop] standard_name = vertical_index_at_cloud_top long_name = index for cloud top @@ -287,7 +256,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [kcnv] standard_name = flag_deep_convection long_name = deep convection: 0=no, 1=yes @@ -295,7 +263,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [ktrac] standard_name = number_of_tracers_for_convective_transport long_name = number of tracers for convective transport @@ -303,7 +270,6 @@ dimensions = () type = integer intent = in - optional = F [ud_mf] standard_name = instantaneous_atmosphere_updraft_convective_mass_flux long_name = (updraft mass flux) * delt @@ -312,7 +278,6 @@ type = real kind = kind_phys intent = out - optional = F [dd_mf] standard_name = instantaneous_atmosphere_downdraft_convective_mass_flux long_name = (downdraft mass flux) * delt @@ -321,7 +286,6 @@ type = real kind = kind_phys intent = out - optional = F [dt_mf] standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux long_name = (detrainment mass flux) * delt @@ -330,7 +294,6 @@ type = real kind = kind_phys intent = out - optional = F [cnvw] standard_name = convective_cloud_water_mixing_ratio long_name = convective cloud water @@ -339,7 +302,6 @@ type = real kind = kind_phys intent = out - optional = F [cnvc] standard_name = convective_cloud_cover long_name = convective cloud cover @@ -348,7 +310,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -357,7 +318,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -365,4 +325,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/cu_ntiedtke_post.meta b/physics/cu_ntiedtke_post.meta index 65240f184..4d83bf57c 100644 --- a/physics/cu_ntiedtke_post.meta +++ b/physics/cu_ntiedtke_post.meta @@ -15,7 +15,6 @@ type = real kind = kind_phys intent = in - optional = F [q] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -24,7 +23,6 @@ type = real kind = kind_phys intent = in - optional = F [prevst] standard_name = air_temperature_on_previous_timestep long_name = temperature from previous time step @@ -33,7 +31,6 @@ type = real kind = kind_phys intent = out - optional = F [prevsq] standard_name = specific_humidity_on_previous_timestep long_name = moisture from previous time step @@ -42,7 +39,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -51,7 +47,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -59,4 +54,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/cu_ntiedtke_pre.meta b/physics/cu_ntiedtke_pre.meta index 1d9254074..5b162041a 100644 --- a/physics/cu_ntiedtke_pre.meta +++ b/physics/cu_ntiedtke_pre.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [fhour] standard_name = forecast_time long_name = curent forecast time @@ -39,7 +36,6 @@ type = real kind = kind_phys intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -48,7 +44,6 @@ type = real kind = kind_phys intent = in - optional = F [t] standard_name = air_temperature long_name = model layer mean temperature @@ -57,7 +52,6 @@ type = real kind = kind_phys intent = in - optional = F [q] standard_name = specific_humidity long_name = water vapor specific humidity @@ -66,7 +60,6 @@ type = real kind = kind_phys intent = in - optional = F [prevst] standard_name = air_temperature_on_previous_timestep long_name = temperature from previous time step @@ -75,7 +68,6 @@ type = real kind = kind_phys intent = in - optional = F [prevsq] standard_name = specific_humidity_on_previous_timestep long_name = moisture from previous time step @@ -84,7 +76,6 @@ type = real kind = kind_phys intent = in - optional = F [forcet] standard_name = tendency_of_air_temperature_due_to_nonphysics long_name = temperature tendency due to dynamics only @@ -93,7 +84,6 @@ type = real kind = kind_phys intent = out - optional = F [forceq] standard_name = tendendy_of_specific_humidity_due_to_nonphysics long_name = moisture tendency due to dynamics only @@ -102,7 +92,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -111,7 +100,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -119,4 +107,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/dcyc2.meta b/physics/dcyc2.meta index 689e77eeb..9ac2adce0 100644 --- a/physics/dcyc2.meta +++ b/physics/dcyc2.meta @@ -15,7 +15,6 @@ type = real kind = kind_phys intent = in - optional = F [slag] standard_name = equation_of_time long_name = equation of time @@ -24,7 +23,6 @@ type = real kind = kind_phys intent = in - optional = F [sdec] standard_name = sine_of_solar_declination_angle long_name = sine of solar declination angle @@ -33,7 +31,6 @@ type = real kind = kind_phys intent = in - optional = F [cdec] standard_name = cosine_of_solar_declination_angle long_name = cosine of solar declination angle @@ -42,7 +39,6 @@ type = real kind = kind_phys intent = in - optional = F [sinlat] standard_name = sine_of_latitude long_name = sine of latitude @@ -51,7 +47,6 @@ type = real kind = kind_phys intent = in - optional = F [coslat] standard_name = cosine_of_latitude long_name = cosine of latitude @@ -60,7 +55,6 @@ type = real kind = kind_phys intent = in - optional = F [xlon] standard_name = longitude long_name = longitude of grid box @@ -69,7 +63,6 @@ type = real kind = kind_phys intent = in - optional = F [coszen] standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep long_name = average of cosine of zenith angle over daytime shortwave call time interval @@ -78,7 +71,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -87,7 +79,6 @@ type = real kind = kind_phys intent = in - optional = F [con_cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -96,7 +87,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -105,7 +95,6 @@ type = real kind = kind_phys intent = in - optional = F [con_sbc] standard_name = stefan_boltzmann_constant long_name = Stefan-Boltzmann constant @@ -114,7 +103,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc_lnd] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -123,7 +111,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc_ice] standard_name = surface_skin_temperature_over_ice long_name = surface skin temperature over ice @@ -132,7 +119,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc_wat] standard_name = surface_skin_temperature_over_water long_name = surface skin temperature over water @@ -141,7 +127,6 @@ type = real kind = kind_phys intent = in - optional = F [tf] standard_name = air_temperature_at_surface_adjacent_layer long_name = air temperature at lowest model layer @@ -150,7 +135,6 @@ type = real kind = kind_phys intent = in - optional = F [tsflw] standard_name = air_temperature_at_surface_adjacent_layer_on_radiation_timestep long_name = surface (first layer) air temperature saved in longwave radiation call @@ -159,7 +143,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -168,7 +151,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc_radtime] standard_name = surface_skin_temperature_on_radiation_timestep long_name = surface skin temperature on radiation timestep @@ -177,7 +159,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcemis_lnd] standard_name = surface_longwave_emissivity_over_land_interstitial long_name = surface lw emissivity in fraction over land (temporary use as interstitial) @@ -186,7 +167,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcemis_ice] standard_name = surface_longwave_emissivity_over_ice_interstitial long_name = surface lw emissivity in fraction over ice (temporary use as interstitial) @@ -195,7 +175,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcemis_wat] standard_name = surface_longwave_emissivity_over_water long_name = surface lw emissivity in fraction over water @@ -204,7 +183,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcdsw] standard_name = surface_downwelling_shortwave_flux_on_radiation_timestep long_name = total sky surface downwelling shortwave flux on radiation time step @@ -213,7 +191,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcnsw] standard_name = surface_net_downwelling_shortwave_flux_on_radiation_timestep long_name = total sky surface net downwelling shortwave flux on radiation time step @@ -222,7 +199,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcdlw] standard_name = surface_downwelling_longwave_flux_on_radiation_timestep long_name = total sky surface downwelling longwave flux on radiation time step @@ -231,7 +207,6 @@ type = real kind = kind_phys intent = in - optional = F [swh] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate on radiation time step @@ -240,7 +215,6 @@ type = real kind = kind_phys intent = in - optional = F [swhc] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_timestep long_name = clear sky shortwave heating rate on radiation time step @@ -249,7 +223,6 @@ type = real kind = kind_phys intent = in - optional = F [hlw] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate on radiation time step @@ -258,7 +231,6 @@ type = real kind = kind_phys intent = in - optional = F [hlwc] standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_timestep long_name = clear sky longwave heating rate on radiation time step @@ -267,7 +239,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcnirbmu] standard_name = surface_upwelling_direct_nir_shortwave_flux_on_radiation_timestep long_name = total sky surface upwelling beam near-infrared shortwave flux on radiation time step @@ -276,7 +247,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcnirdfu] standard_name = surface_upwelling_diffuse_nir_shortwave_flux_on_radiation_timestep long_name = total sky surface upwelling diffuse near-infrared shortwave flux on radiation time step @@ -285,7 +255,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcvisbmu] standard_name = surface_upwelling_direct_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = total sky surface upwelling beam ultraviolet plus visible shortwave flux on radiation time step @@ -294,7 +263,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcvisdfu] standard_name = surface_upwelling_diffuse_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = total sky surface upwelling diffuse ultraviolet plus visible shortwave flux on radiation time step @@ -303,7 +271,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcnirbmd] standard_name = surface_downwelling_direct_nir_shortwave_flux_on_radiation_timestep long_name = total sky surface downwelling beam near-infrared shortwave flux on radiation time step @@ -312,7 +279,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcnirdfd] standard_name = surface_downwelling_diffuse_nir_shortwave_flux_on_radiation_timestep long_name = total sky surface downwelling diffuse near-infrared shortwave flux on radiation time step @@ -321,7 +287,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcvisbmd] standard_name = surface_downwelling_direct_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = total sky surface downwelling beam ultraviolet plus visible shortwave flux on radiation time step @@ -330,7 +295,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcvisdfd] standard_name = surface_downwelling_diffuse_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = total sky surface downwelling diffuse ultraviolet plus visible shortwave flux on radiation time step @@ -339,7 +303,6 @@ type = real kind = kind_phys intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -347,7 +310,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -355,7 +317,6 @@ dimensions = () type = integer intent = in - optional = F [deltim] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -364,7 +325,6 @@ type = real kind = kind_phys intent = in - optional = F [fhswr] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -373,7 +333,6 @@ type = real kind = kind_phys intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -381,7 +340,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -389,7 +347,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -397,7 +354,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [use_LW_jacobian] standard_name = flag_to_calc_RRTMGP_LW_jacobian long_name = logical flag to control RRTMGP LW calculation @@ -405,7 +361,6 @@ dimensions = () type = logical intent = in - optional = F [damp_LW_fluxadj] standard_name = flag_to_damp_RRTMGP_LW_jacobian_flux_adjustment long_name = logical flag to control RRTMGP LW calculation @@ -413,7 +368,6 @@ dimensions = () type = logical intent = in - optional = F [lfnc_k] standard_name = transition_pressure_length_scale_for_flux_damping long_name = depth of transition layer in logistic function for LW flux adjustment damping @@ -422,7 +376,6 @@ type = real kind = kind_phys intent = in - optional = F [lfnc_p0] standard_name = transition_pressure_for_flux_damping long_name = transition pressure for LW flux adjustment damping @@ -431,7 +384,6 @@ type = real kind = kind_phys intent = in - optional = F [sfculw] standard_name = surface_upwelling_longwave_flux_on_radiation_timestep long_name = total sky sfc upward lw flux @@ -440,7 +392,6 @@ type = real kind = kind_phys intent = in - optional = F [fluxlwUP_jac] standard_name = RRTMGP_jacobian_of_lw_flux_upward long_name = RRTMGP Jacobian upward longwave flux profile @@ -449,7 +400,6 @@ type = real kind = kind_phys intent = in - optional = F [t_lay] standard_name = air_temperature_of_new_state long_name = model layer mean temperature updated by physics @@ -458,7 +408,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lay] standard_name = air_pressure long_name = mean layer pressure @@ -467,7 +416,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -476,7 +424,6 @@ type = real kind = kind_phys intent = in - optional = F [flux2D_lwUP] standard_name = RRTMGP_lw_flux_profile_upward_allsky long_name = RRTMGP upward longwave all-sky flux profile @@ -485,7 +432,6 @@ type = real kind = kind_phys intent = in - optional = F [flux2D_lwDOWN] standard_name = RRTMGP_lw_flux_profile_downward_allsky long_name = RRTMGP downward longwave all-sky flux profile @@ -494,7 +440,6 @@ type = real kind = kind_phys intent = in - optional = F [pert_radtend] standard_name = flag_for_stochastic_radiative_heating_perturbations long_name = flag for stochastic radiative heating perturbations @@ -502,7 +447,6 @@ dimensions = () type = logical intent = in - optional = F [do_sppt] standard_name = flag_for_stochastic_physics_perturbations long_name = flag for stochastic physics perturbations @@ -510,7 +454,6 @@ dimensions = () type = logical intent = in - optional = F [ca_global] standard_name = flag_for_global_cellular_automata long_name = switch for global ca @@ -518,7 +461,6 @@ dimensions = () type = logical intent = in - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = total radiative heating rate at current time @@ -527,7 +469,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtdtnp] standard_name = tendency_of_air_temperature_to_withold_from_sppt long_name = temp. change from physics that should not be perturbed by sppt @@ -536,7 +477,6 @@ type = real kind = kind_phys intent = inout - optional = F [htrlw] standard_name = updated_tendency_of_air_temperature_due_to_longwave_heating_on_physics_timestep long_name = total sky longwave heating rate on physics time step @@ -545,7 +485,6 @@ type = real kind = kind_phys intent = inout - optional = F [adjsfcdsw] standard_name = surface_downwelling_shortwave_flux long_name = surface downwelling shortwave flux at current time @@ -554,7 +493,6 @@ type = real kind = kind_phys intent = out - optional = F [adjsfcnsw] standard_name = surface_net_downwelling_shortwave_flux long_name = surface net downwelling shortwave flux at current time @@ -563,7 +501,6 @@ type = real kind = kind_phys intent = out - optional = F [adjsfcdlw] standard_name = surface_downwelling_longwave_flux long_name = surface downwelling longwave flux at current time @@ -572,7 +509,6 @@ type = real kind = kind_phys intent = out - optional = F [adjsfculw] standard_name = surface_upwelling_longwave_flux long_name = surface upwelling longwave flux at current time @@ -581,7 +517,6 @@ type = real kind = kind_phys intent = out - optional = F [adjsfculw_lnd] standard_name = surface_upwelling_longwave_flux_over_land long_name = surface upwelling longwave flux at current time over land @@ -590,7 +525,6 @@ type = real kind = kind_phys intent = out - optional = F [adjsfculw_ice] standard_name = surface_upwelling_longwave_flux_over_ice long_name = surface upwelling longwave flux at current time over ice @@ -599,7 +533,6 @@ type = real kind = kind_phys intent = out - optional = F [adjsfculw_wat] standard_name = surface_upwelling_longwave_flux_over_water long_name = surface upwelling longwave flux at current time over water @@ -608,7 +541,6 @@ type = real kind = kind_phys intent = out - optional = F [xmu] standard_name = zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes long_name = zenith angle temporal adjustment factor for shortwave fluxes @@ -617,7 +549,6 @@ type = real kind = kind_phys intent = out - optional = F [xcosz] standard_name = instantaneous_cosine_of_zenith_angle long_name = cosine of zenith angle at current time @@ -626,7 +557,6 @@ type = real kind = kind_phys intent = out - optional = F [adjnirbmu] standard_name = surface_upwelling_direct_near_infrared_shortwave_flux long_name = surface upwelling beam near-infrared shortwave flux at current time @@ -635,7 +565,6 @@ type = real kind = kind_phys intent = out - optional = F [adjnirdfu] standard_name = surface_upwelling_diffuse_near_infrared_shortwave_flux long_name = surface upwelling diffuse near-infrared shortwave flux at current time @@ -644,7 +573,6 @@ type = real kind = kind_phys intent = out - optional = F [adjvisbmu] standard_name = surface_upwelling_direct_ultraviolet_and_visible_shortwave_flux long_name = surface upwelling beam ultraviolet plus visible shortwave flux at current time @@ -653,7 +581,6 @@ type = real kind = kind_phys intent = out - optional = F [adjvisdfu] standard_name = surface_upwelling_diffuse_ultraviolet_and_visible_shortwave_flux long_name = surface upwelling diffuse ultraviolet plus visible shortwave flux at current time @@ -662,7 +589,6 @@ type = real kind = kind_phys intent = out - optional = F [adjnirbmd] standard_name = surface_downwelling_direct_near_infrared_shortwave_flux long_name = surface downwelling beam near-infrared shortwave flux at current time @@ -671,7 +597,6 @@ type = real kind = kind_phys intent = out - optional = F [adjnirdfd] standard_name = surface_downwelling_diffuse_near_infrared_shortwave_flux long_name = surface downwelling diffuse near-infrared shortwave flux at current time @@ -680,7 +605,6 @@ type = real kind = kind_phys intent = out - optional = F [adjvisbmd] standard_name = surface_downwelling_direct_ultraviolet_and_visible_shortwave_flux long_name = surface downwelling beam ultraviolet plus visible shortwave flux at current time @@ -689,7 +613,6 @@ type = real kind = kind_phys intent = out - optional = F [adjvisdfd] standard_name = surface_downwelling_diffuse_ultraviolet_and_visible_shortwave_flux long_name = surface downwelling diffuse ultraviolet plus visible shortwave flux at current time @@ -698,7 +621,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -707,7 +629,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -715,4 +636,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/drag_suite.meta b/physics/drag_suite.meta index a36fc1e82..2f1e13886 100644 --- a/physics/drag_suite.meta +++ b/physics/drag_suite.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics @@ -61,7 +56,6 @@ type = real kind = kind_phys intent = inout - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics @@ -70,7 +64,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = air temperature tendency due to model physics @@ -79,7 +72,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind long_name = zonal wind @@ -88,7 +80,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind long_name = meridional wind @@ -97,7 +88,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature long_name = mid-layer temperature @@ -106,7 +96,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity long_name = mid-layer specific humidity of water vapor @@ -115,7 +104,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = vertical index at top atmospheric boundary layer @@ -123,7 +111,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = interface pressure @@ -132,7 +119,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = difference between mid-layer pressures @@ -141,7 +127,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mid-layer pressure @@ -150,7 +135,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = mid-layer Exner function @@ -159,7 +143,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = interface geopotential @@ -168,7 +151,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = mid-layer geopotential @@ -177,7 +159,6 @@ type = real kind = kind_phys intent = in - optional = F [deltim] standard_name = timestep_for_physics long_name = physics time step @@ -186,7 +167,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current time step index @@ -194,7 +174,6 @@ dimensions = () type = integer intent = in - optional = F [var] standard_name = standard_deviation_of_subgrid_orography long_name = standard deviation of subgrid height_above_mean_sea_level @@ -203,7 +182,6 @@ type = real kind = kind_phys intent = in - optional = F [oc1] standard_name = convexity_of_subgrid_orography long_name = convexity of subgrid height_above_mean_sea_level @@ -212,7 +190,6 @@ type = real kind = kind_phys intent = in - optional = F [oa4] standard_name = asymmetry_of_subgrid_orography long_name = asymmetry of subgrid height_above_mean_sea_level @@ -221,7 +198,6 @@ type = real kind = kind_phys intent = in - optional = F [ol4] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height long_name = horizontal fraction of grid box covered by subgrid height_above_mean_sea_level higher than critical height @@ -230,7 +206,6 @@ type = real kind = kind_phys intent = in - optional = F [varss] standard_name = standard_deviation_of_subgrid_orography_small_scale long_name = standard deviation of subgrid height_above_mean_sea_level small scale @@ -239,7 +214,6 @@ type = real kind = kind_phys intent = in - optional = F [oc1ss] standard_name = convexity_of_subgrid_orography_small_scale long_name = convexity of subgrid height_above_mean_sea_level small scale @@ -248,7 +222,6 @@ type = real kind = kind_phys intent = in - optional = F [oa4ss] standard_name = asymmetry_of_subgrid_orography_small_scale long_name = asymmetry of subgrid height_above_mean_sea_level small scale @@ -257,7 +230,6 @@ type = real kind = kind_phys intent = in - optional = F [ol4ss] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height_small_scale long_name = horizontal fraction of grid box covered by subgrid height_above_mean_sea_level higher than critical height small scale @@ -266,7 +238,6 @@ type = real kind = kind_phys intent = in - optional = F [theta] standard_name = angle_from_east_of_maximum_subgrid_orographic_variations long_name = angle with respect to east of maximum subgrid orographic variations @@ -275,7 +246,6 @@ type = real kind = kind_phys intent = in - optional = F [sigma] standard_name = slope_of_subgrid_orography long_name = slope of subgrid height_above_mean_sea_level @@ -284,7 +254,6 @@ type = real kind = kind_phys intent = in - optional = F [gamma] standard_name = anisotropy_of_subgrid_orography long_name = anisotropy of subgrid height_above_mean_sea_level @@ -293,7 +262,6 @@ type = real kind = kind_phys intent = in - optional = F [elvmax] standard_name = maximum_subgrid_orography long_name = maximum of subgrid height_above_mean_sea_level @@ -302,7 +270,6 @@ type = real kind = kind_phys intent = in - optional = F [dtaux2d_ls] standard_name = tendency_of_x_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = x momentum tendency from large scale gwd @@ -311,7 +278,6 @@ type = real kind = kind_phys intent = out - optional = F [dtauy2d_ls] standard_name = tendency_of_y_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = y momentum tendency from large scale gwd @@ -320,7 +286,6 @@ type = real kind = kind_phys intent = out - optional = F [dtaux2d_bl] standard_name = tendency_of_x_momentum_due_to_blocking_drag long_name = x momentum tendency from blocking drag @@ -329,7 +294,6 @@ type = real kind = kind_phys intent = out - optional = F [dtauy2d_bl] standard_name = tendency_of_y_momentum_due_to_blocking_drag long_name = y momentum tendency from blocking drag @@ -338,7 +302,6 @@ type = real kind = kind_phys intent = out - optional = F [dtaux2d_ss] standard_name = tendency_of_x_momentum_due_to_small_scale_gravity_wave_drag long_name = x momentum tendency from small scale gwd @@ -347,7 +310,6 @@ type = real kind = kind_phys intent = out - optional = F [dtauy2d_ss] standard_name = tendency_of_y_momentum_due_to_small_scale_gravity_wave_drag long_name = y momentum tendency from small scale gwd @@ -356,7 +318,6 @@ type = real kind = kind_phys intent = out - optional = F [dtaux2d_fd] standard_name = tendency_of_x_momentum_due_to_form_drag long_name = x momentum tendency from form drag @@ -365,7 +326,6 @@ type = real kind = kind_phys intent = out - optional = F [dtauy2d_fd] standard_name = tendency_of_y_momentum_due_to_form_drag long_name = y momentum tendency from form drag @@ -374,7 +334,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfc] standard_name = instantaneous_x_stress_due_to_gravity_wave_drag long_name = zonal surface stress due to orographic gravity wave drag @@ -383,7 +342,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc] standard_name = instantaneous_y_stress_due_to_gravity_wave_drag long_name = meridional surface stress due to orographic gravity wave drag @@ -392,7 +350,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfc_ls] standard_name = vertically_integrated_x_momentum_flux_due_to_mesoscale_orographic_gravity_wave_drag long_name = integrated x momentum flux from large scale gwd @@ -401,7 +358,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc_ls] standard_name = vertically_integrated_y_momentum_flux_due_to_mesoscale_orographic_gravity_wave_drag long_name = integrated y momentum flux from large scale gwd @@ -410,7 +366,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfc_bl] standard_name = vertically_integrated_x_momentum_flux_due_to_blocking_drag long_name = integrated x momentum flux from blocking drag @@ -419,7 +374,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc_bl] standard_name = vertically_integrated_y_momentum_flux_due_to_blocking_drag long_name = integrated y momentum flux from blocking drag @@ -428,7 +382,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfc_ss] standard_name = vertically_integrated_x_momentum_flux_due_to_small_scale_gravity_wave_drag long_name = integrated x momentum flux from small scale gwd @@ -437,7 +390,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc_ss] standard_name = vertically_integrated_y_momentum_flux_due_to_small_scale_gravity_wave_drag long_name = integrated y momentum flux from small scale gwd @@ -446,7 +398,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfc_fd] standard_name = vertically_integrated_x_momentum_flux_due_to_form_drag long_name = integrated x momentum flux from form drag @@ -455,7 +406,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc_fd] standard_name = vertically_integrated_y_momentum_flux_due_to_form_drag long_name = integrated y momentum flux from form drag @@ -464,7 +414,6 @@ type = real kind = kind_phys intent = out - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -473,7 +422,6 @@ type = real kind = kind_phys intent = in - optional = F [br1] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -482,7 +430,6 @@ type = real kind = kind_phys intent = in - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -491,7 +438,6 @@ type = real kind = kind_phys intent = in - optional = F [g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -500,7 +446,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -509,7 +454,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -518,7 +462,6 @@ type = real kind = kind_phys intent = in - optional = F [rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -527,7 +470,6 @@ type = real kind = kind_phys intent = in - optional = F [fv] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -536,7 +478,6 @@ type = real kind = kind_phys intent = in - optional = F [pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -545,7 +486,6 @@ type = real kind = kind_phys intent = in - optional = F [imx] standard_name = number_of_equatorial_longitude_points long_name = number of longitude points along the equator @@ -553,7 +493,6 @@ dimensions = () type = integer intent = in - optional = F [cdmbgwd] standard_name = multiplicative_tunable_parameters_for_mountain_blocking_and_orographic_gravity_wave_drag long_name = multiplic. factors for (1) mountain blocking drag coeff. and (2) ref. level orographic gravity wave drag @@ -562,7 +501,6 @@ type = real kind = kind_phys intent = in - optional = F [me] standard_name = mpi_rank long_name = rank of the current MPI task @@ -570,7 +508,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = master MPI-rank @@ -578,7 +515,6 @@ dimensions = () type = integer intent = in - optional = F [lprnt] standard_name = flag_print long_name = flag for debugging printouts @@ -586,7 +522,6 @@ dimensions = () type = logical intent = in - optional = F [ipr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of column used in debugging printouts @@ -594,7 +529,6 @@ dimensions = () type = integer intent = in - optional = F [rdxzb] standard_name = level_of_dividing_streamline long_name = level of the dividing streamline @@ -603,7 +537,6 @@ type = real kind = kind_phys intent = out - optional = F [dx] standard_name = characteristic_grid_lengthscale long_name = size of the grid cell @@ -612,7 +545,6 @@ type = real kind = kind_phys intent = in - optional = F [gwd_opt] standard_name = control_for_drag_suite_gravity_wave_drag long_name = flag to choose gwd scheme @@ -620,7 +552,6 @@ dimensions = () type = integer intent = in - optional = F [do_gsl_drag_ls_bl] standard_name = flag_for_gsl_drag_suite_large_scale_orographic_and_blocking_drag long_name = flag to activate GSL drag suite - large-scale GWD and blocking @@ -628,7 +559,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_ss] standard_name = flag_for_gsl_drag_suite_small_scale_orographic_drag long_name = flag to activate GSL drag suite - small-scale GWD @@ -636,7 +566,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_tofd] standard_name = flag_for_gsl_drag_suite_turbulent_orographic_form_drag long_name = flag to activate GSL drag suite - turb orog form drag @@ -644,7 +573,6 @@ dimensions = () type = logical intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -654,7 +582,6 @@ kind = kind_phys active = (flag_for_diagnostics_3D) intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -662,7 +589,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_process_orographic_gwd] standard_name = index_of_orographic_gravity_wave_drag_process_in_cumulative_change_index long_name = index of orographic gravity wave drag process in second dimension of array cumulative change index @@ -670,7 +596,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -678,7 +603,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -686,7 +610,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -694,7 +617,6 @@ dimensions = () type = integer intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -702,7 +624,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -711,7 +632,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -719,4 +639,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/flake_driver.meta b/physics/flake_driver.meta index 6671ee03d..2855aa026 100644 --- a/physics/flake_driver.meta +++ b/physics/flake_driver.meta @@ -15,7 +15,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -23,7 +22,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -37,7 +35,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -45,7 +42,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -58,7 +54,6 @@ dimensions = () type = integer intent = in - optional = F [ps] standard_name = surface_air_pressure long_name = surface pressure @@ -67,7 +62,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = mean temperature at lowest model layer @@ -76,7 +70,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = water vapor specific humidity at lowest model layer @@ -85,7 +78,6 @@ type = real kind = kind_phys intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -94,7 +86,6 @@ type = real kind = kind_phys intent = in - optional = F [dlwflx] standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_water long_name = total sky surface downward longwave flux absorbed by the ground over water @@ -103,7 +94,6 @@ type = real kind = kind_phys intent = in - optional = F [dswsfc] standard_name = surface_downwelling_shortwave_flux long_name = surface downwelling shortwave flux at current time @@ -112,7 +102,6 @@ type = real kind = kind_phys intent = in - optional = F [weasd] standard_name = water_equivalent_accumulated_snow_depth_over_ice long_name = water equiv of acc snow depth over ice @@ -121,7 +110,6 @@ type = real kind = kind_phys intent = in - optional = F [lakedepth] standard_name = lake_depth long_name = lake depth @@ -130,7 +118,6 @@ type = real kind = kind_phys intent = in - optional = F [use_flake] standard_name = flag_for_using_flake long_name = flag indicating lake points using flake model @@ -138,7 +125,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [xlat] standard_name = latitude long_name = latitude @@ -147,7 +133,6 @@ type = real kind = kind_phys intent = in - optional = F [delt] standard_name = timestep_for_dynamics long_name = dynamics time step @@ -156,7 +141,6 @@ type = real kind = kind_phys intent = in - optional = F [zlvl] standard_name = height_above_ground_at_lowest_model_layer long_name = layer 1 height above ground (not MSL) @@ -165,7 +149,6 @@ type = real kind = kind_phys intent = in - optional = F [elev] standard_name = height_above_mean_sea_level long_name = height_above_mean_sea_level @@ -174,7 +157,6 @@ type = real kind = kind_phys intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -182,7 +164,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -190,7 +171,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [yearlen] standard_name = number_of_days_in_current_year long_name = number of days in a year @@ -198,7 +178,6 @@ dimensions = () type = integer intent = in - optional = F [julian] standard_name = forecast_julian_day long_name = julian day @@ -207,7 +186,6 @@ type = real kind = kind_phys intent = in - optional = F [imon] standard_name = forecast_month long_name = current forecast month @@ -215,7 +193,6 @@ dimensions = () type = integer intent = in - optional = F [snwdph] standard_name = surface_snow_thickness_water_equivalent_over_ice long_name = water equivalent snow depth over ice @@ -224,7 +201,6 @@ type = real kind = kind_phys intent = inout - optional = F [hice] standard_name = sea_ice_thickness long_name = sea ice thickness @@ -233,7 +209,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsurf] standard_name = surface_skin_temperature_after_iteration_over_water long_name = surface skin temperature after iteration over water @@ -242,7 +217,6 @@ type = real kind = kind_phys intent = inout - optional = F [fice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -251,7 +225,6 @@ type = real kind = kind_phys intent = inout - optional = F [t_sfc] standard_name = surface_skin_temperature_over_water long_name = surface skin temperature over water @@ -260,7 +233,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_over_water long_name = kinematic surface upward sensible heat flux over water @@ -269,7 +241,6 @@ type = real kind = kind_phys intent = inout - optional = F [evap] standard_name = kinematic_surface_upward_latent_heat_flux_over_water long_name = kinematic surface upward latent heat flux over water @@ -278,7 +249,6 @@ type = real kind = kind_phys intent = inout - optional = F [ustar] standard_name = surface_friction_velocity_over_water long_name = surface friction velocity over water @@ -287,7 +257,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsfc] standard_name = surface_specific_humidity_over_water long_name = surface air saturation specific humidity over water @@ -296,7 +265,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water @@ -305,7 +273,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm] standard_name = surface_drag_coefficient_for_momentum_in_air_over_water long_name = surface exchange coeff for momentum over water @@ -314,7 +281,6 @@ type = real kind = kind_phys intent = inout - optional = F [chh] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_water long_name = thermal exchange coefficient over water @@ -323,7 +289,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmm] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_water long_name = momentum exchange coefficient over water @@ -332,7 +297,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -341,7 +305,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -349,4 +312,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/gcm_shoc.meta b/physics/gcm_shoc.meta index 8ebd8fd05..d22e51e6a 100644 --- a/physics/gcm_shoc.meta +++ b/physics/gcm_shoc.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = integer intent = in - optional = F [nzm] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [tcr] standard_name = cloud_phase_transition_threshold_temperature long_name = threshold temperature below which cloud starts to freeze @@ -61,7 +56,6 @@ type = real kind = kind_phys intent = in - optional = F [tcrf] standard_name = reciprocal_of_cloud_phase_transition_temperature_range long_name = denominator in cloud phase transition = 1/(tcr-tf) @@ -70,7 +64,6 @@ type = real kind = kind_phys intent = in - optional = F [con_cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -79,7 +72,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -88,7 +80,6 @@ type = real kind = kind_phys intent = in - optional = F [con_hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -97,7 +88,6 @@ type = real kind = kind_phys intent = in - optional = F [con_hfus] standard_name = latent_heat_of_fusion_of_water_at_0C long_name = latent heat of fusion @@ -106,7 +96,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -115,7 +104,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -124,7 +112,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -133,7 +120,6 @@ type = real kind = kind_phys intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -142,7 +128,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -151,7 +136,6 @@ type = real kind = kind_phys intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = time step for physics @@ -160,7 +144,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -169,7 +152,6 @@ type = real kind = kind_phys intent = in - optional = F [delp] standard_name = air_pressure_difference_between_midlayers long_name = pres(k) - pres(k+1) @@ -178,7 +160,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -187,7 +168,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -196,7 +176,6 @@ type = real kind = kind_phys intent = in - optional = F [u] standard_name = x_wind_of_new_state long_name = zonal wind updated by physics @@ -205,7 +184,6 @@ type = real kind = kind_phys intent = in - optional = F [v] standard_name = y_wind_of_new_state long_name = meridional wind updated by physics @@ -214,7 +192,6 @@ type = real kind = kind_phys intent = in - optional = F [omega] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -223,7 +200,6 @@ type = real kind = kind_phys intent = in - optional = F [rhc] standard_name = critical_relative_humidity long_name = critical relative humidity @@ -232,7 +208,6 @@ type = real kind = kind_phys intent = in - optional = F [supice] standard_name = tunable_parameter_for_ice_supersaturation long_name = ice supersaturation parameter for PDF clouds @@ -241,7 +216,6 @@ type = real kind = kind_phys intent = in - optional = F [pcrit] standard_name = pressure_threshold_for_increased_tke_dissipation long_name = pressure below which extra TKE diss. is applied in SHOC @@ -250,7 +224,6 @@ type = real kind = kind_phys intent = in - optional = F [cefac] standard_name = multiplicative_tunable_parameter_for_tke_dissipation long_name = mult. tuning parameter for TKE diss. in SHOC @@ -259,7 +232,6 @@ type = real kind = kind_phys intent = in - optional = F [cesfac] standard_name = multiplicative_tunable_parameter_for_tke_dissipation_at_surface_adjacent_layer long_name = mult. tuning parameter for TKE diss. at surface in SHOC @@ -268,7 +240,6 @@ type = real kind = kind_phys intent = in - optional = F [tkef1] standard_name = shoc_implicit_TKE_integration_uncentering_term long_name = uncentering term for TKE integration in SHOC @@ -277,7 +248,6 @@ type = real kind = kind_phys intent = in - optional = F [dis_opt] standard_name = shoc_flag_for_optional_surface_TKE_dissipation long_name = flag for alt. TKE diss. near surface in SHOC (>0 = ON) @@ -286,7 +256,6 @@ type = real kind = kind_phys intent = in - optional = F [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -295,7 +264,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -304,7 +272,6 @@ type = real kind = kind_phys intent = in - optional = F [prnum] standard_name = prandtl_number long_name = turbulent Prandtl number @@ -313,7 +280,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -322,7 +288,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -331,7 +296,6 @@ type = real kind = kind_phys intent = inout - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -339,7 +303,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -347,7 +310,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -355,7 +317,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -363,7 +324,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -371,7 +331,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -379,7 +338,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -387,7 +345,6 @@ dimensions = () type = integer intent = in - optional = F [ntlnc] standard_name = index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array long_name = tracer index for liquid number concentration @@ -395,7 +352,6 @@ dimensions = () type = integer intent = in - optional = F [ntinc] standard_name = index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array long_name = tracer index for ice number concentration @@ -403,7 +359,6 @@ dimensions = () type = integer intent = in - optional = F [cld_sgs] standard_name = subgrid_scale_cloud_fraction_from_shoc long_name = subgrid-scale cloud fraction from the SHOC scheme @@ -412,7 +367,6 @@ type = real kind = kind_phys intent = inout - optional = F [tke] standard_name = turbulent_kinetic_energy_convective_transport_tracer long_name = turbulent kinetic energy in the convectively transported tracer array @@ -421,7 +375,6 @@ type = real kind = kind_phys intent = inout - optional = F [tkh] standard_name = atmosphere_heat_diffusivity_from_shoc long_name = diffusivity for heat from the SHOC scheme @@ -430,7 +383,6 @@ type = real kind = kind_phys intent = inout - optional = F [wthv_sec] standard_name = upward_virtual_potential_temperature_flux long_name = upward kinematic buoyancy flux from the SHOC scheme @@ -439,7 +391,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -448,7 +399,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -456,4 +406,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/get_prs_fv3.meta b/physics/get_prs_fv3.meta index aa690573a..90630a255 100644 --- a/physics/get_prs_fv3.meta +++ b/physics/get_prs_fv3.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -31,7 +29,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = interface geopotential @@ -40,7 +37,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = interface pressure @@ -49,7 +45,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = mid-layer temperature @@ -58,7 +53,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs1] standard_name = specific_humidity long_name = mid-layer specific humidity of water vapor @@ -67,7 +61,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = difference between mid-layer pressures @@ -76,7 +69,6 @@ type = real kind = kind_phys intent = out - optional = F [del_gz] standard_name = geopotential_difference_between_midlayers_divided_by_midlayer_virtual_temperature long_name = difference between mid-layer geopotentials divided by mid-layer virtual temperature @@ -85,7 +77,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -94,7 +85,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -102,7 +92,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -121,7 +110,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -129,7 +117,6 @@ dimensions = () type = integer intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -138,7 +125,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = updated air temperature @@ -147,7 +133,6 @@ type = real kind = kind_phys intent = in - optional = F [gq01] standard_name = specific_humidity_of_new_state long_name = mid-layer specific humidity of water vapor @@ -156,7 +141,6 @@ type = real kind = kind_phys intent = in - optional = F [del_gz] standard_name = geopotential_difference_between_midlayers_divided_by_midlayer_virtual_temperature long_name = difference between mid-layer geopotentials divided by mid-layer virtual temperature @@ -165,7 +149,6 @@ type = real kind = kind_phys intent = inout - optional = F [phii] standard_name = geopotential_at_interface long_name = interface geopotential @@ -174,7 +157,6 @@ type = real kind = kind_phys intent = out - optional = F [phil] standard_name = geopotential long_name = mid-layer geopotential @@ -183,7 +165,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -192,7 +173,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -200,5 +180,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/gfdl_cloud_microphys.meta b/physics/gfdl_cloud_microphys.meta index f18754703..6f6b1d47f 100644 --- a/physics/gfdl_cloud_microphys.meta +++ b/physics/gfdl_cloud_microphys.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = MPI rank of master process @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [nlunit] standard_name = iounit_of_namelist long_name = fortran unit number for opening nameliust file @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [input_nml_file] standard_name = filename_of_internal_namelist long_name = character string to store full namelist contents @@ -39,7 +36,6 @@ type = character kind = len=* intent = in - optional = F [logunit] standard_name = iounit_of_log long_name = fortran unit number for writing logfile @@ -47,7 +43,6 @@ dimensions = () type = integer intent = in - optional = F [fn_nml] standard_name = filename_of_namelist long_name = namelist filename @@ -56,7 +51,6 @@ type = character kind = len=* intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -64,7 +58,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -72,7 +65,6 @@ dimensions = () type = integer intent = in - optional = F [do_shoc] standard_name = flag_for_shoc long_name = flag to indicate use of SHOC @@ -80,7 +72,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -89,7 +80,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -97,7 +87,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -111,7 +100,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -119,7 +107,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -132,7 +119,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -140,7 +126,6 @@ dimensions = () type = integer intent = in - optional = F [rainmin] standard_name = lwe_thickness_of_minimum_rain_amount long_name = minimum rain amount @@ -149,7 +134,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -158,7 +142,6 @@ type = real kind = kind_phys intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -167,7 +150,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -176,7 +158,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -185,7 +166,6 @@ type = real kind = kind_phys intent = in - optional = F [frland] standard_name = land_area_fraction_for_microphysics long_name = land area fraction used in microphysics schemes @@ -194,7 +174,6 @@ type = real kind = kind_phys intent = in - optional = F [garea] standard_name = cell_area long_name = area of grid cell @@ -203,7 +182,6 @@ type = real kind = kind_phys intent = in - optional = F [islmsk] standard_name = sea_land_ice_mask long_name = sea/land/ice mask (=0/1/2) @@ -211,7 +189,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [gq0] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -220,7 +197,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_ntcw] standard_name = cloud_liquid_water_mixing_ratio_of_new_state long_name = cloud condensed water mixing ratio updated by physics @@ -229,7 +205,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_ntrw] standard_name = rain_mixing_ratio_of_new_state long_name = moist mixing ratio of rain updated by physics @@ -238,7 +213,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_ntiw] standard_name = cloud_ice_mixing_ratio_of_new_state long_name = moist mixing ratio of cloud ice updated by physics @@ -247,7 +221,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_ntsw] standard_name = snow_mixing_ratio_of_new_state long_name = moist mixing ratio of snow updated by physics @@ -256,7 +229,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_ntgl] standard_name = graupel_mixing_ratio_of_new_state long_name = moist ratio of mass of graupel to mass of dry air plus vapor (without condensates) updated by physics @@ -265,7 +237,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_ntclamt] standard_name = cloud_area_fraction_in_atmosphere_layer_of_new_state long_name = cloud fraction updated by physics @@ -274,7 +245,6 @@ type = real kind = kind_phys intent = inout - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = air temperature updated by physics @@ -283,7 +253,6 @@ type = real kind = kind_phys intent = inout - optional = F [gu0] standard_name = x_wind_of_new_state long_name = zonal wind updated by physics @@ -292,7 +261,6 @@ type = real kind = kind_phys intent = inout - optional = F [gv0] standard_name = y_wind_of_new_state long_name = meridional wind updated by physics @@ -301,7 +269,6 @@ type = real kind = kind_phys intent = inout - optional = F [vvl] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -310,7 +277,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -319,7 +285,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -328,7 +293,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = air pressure difference between mid-layers @@ -337,7 +301,6 @@ type = real kind = kind_phys intent = in - optional = F [rain0] standard_name = lwe_thickness_of_explicit_rain_amount long_name = explicit rain on physics timestep @@ -346,7 +309,6 @@ type = real kind = kind_phys intent = out - optional = F [ice0] standard_name = lwe_thickness_of_ice_amount long_name = ice fall on physics timestep @@ -355,7 +317,6 @@ type = real kind = kind_phys intent = out - optional = F [snow0] standard_name = lwe_thickness_of_snow_amount long_name = snow fall on physics timestep @@ -364,7 +325,6 @@ type = real kind = kind_phys intent = out - optional = F [graupel0] standard_name = lwe_thickness_of_graupel_amount long_name = graupel fall on physics timestep @@ -373,7 +333,6 @@ type = real kind = kind_phys intent = out - optional = F [prcp0] standard_name = lwe_thickness_of_explicit_precipitation_amount long_name = explicit precipitation (rain, ice, snow, graupel) on physics timestep @@ -382,7 +341,6 @@ type = real kind = kind_phys intent = out - optional = F [sr] standard_name = ratio_of_snowfall_to_rainfall long_name = snow ratio: ratio of snow to total precipitation @@ -391,7 +349,6 @@ type = real kind = kind_phys intent = out - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -400,7 +357,6 @@ type = real kind = kind_phys intent = in - optional = F [hydrostatic] standard_name = flag_for_hydrostatic_solver long_name = flag indicating hydrostatic solver @@ -408,7 +364,6 @@ dimensions = () type = logical intent = in - optional = F [phys_hydrostatic] standard_name = flag_for_hydrostatic_heating_from_physics long_name = flag indicating hydrostatic heating from physics @@ -416,7 +371,6 @@ dimensions = () type = logical intent = in - optional = F [lradar] standard_name = flag_for_radar_reflectivity long_name = flag for radar reflectivity @@ -424,7 +378,6 @@ dimensions = () type = logical intent = in - optional = F [refl_10cm] standard_name = radar_reflectivity_10cm long_name = instantaneous refl_10cm @@ -433,7 +386,6 @@ type = real kind = kind_phys intent = inout - optional = F [reset] standard_name = flag_reset_maximum_hourly_fields long_name = flag for resetting maximum hourly fields @@ -441,7 +393,6 @@ dimensions = () type = logical intent = in - optional = F [effr_in] standard_name = flag_for_cloud_effective_radii long_name = flag for cloud effective radii calculations in GFDL microphysics @@ -449,7 +400,6 @@ dimensions = () type = logical intent = in - optional = F [rew] standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle long_name = eff. radius of cloud liquid water particle in micrometer @@ -458,7 +408,6 @@ type = real kind = kind_phys intent = inout - optional = F [rei] standard_name = effective_radius_of_stratiform_cloud_ice_particle long_name = eff. radius of cloud ice water particle in micrometer @@ -467,7 +416,6 @@ type = real kind = kind_phys intent = inout - optional = F [rer] standard_name = effective_radius_of_stratiform_cloud_rain_particle long_name = effective radius of cloud rain particle in micrometers @@ -476,7 +424,6 @@ type = real kind = kind_phys intent = inout - optional = F [res] standard_name = effective_radius_of_stratiform_cloud_snow_particle long_name = effective radius of cloud snow particle in micrometers @@ -485,7 +432,6 @@ type = real kind = kind_phys intent = inout - optional = F [reg] standard_name = effective_radius_of_stratiform_cloud_graupel_particle long_name = eff. radius of cloud graupel particle in micrometer @@ -494,7 +440,6 @@ type = real kind = kind_phys intent = inout - optional = F [cplchm] standard_name = flag_for_chemistry_coupling long_name = flag controlling cplchm collection (default off) @@ -502,7 +447,6 @@ dimensions = () type = logical intent = in - optional = F [pfi_lsan] standard_name = ice_flux_due_to_large_scale_precipitation long_name = instantaneous 3D flux of ice from nonconvective precipitation @@ -511,7 +455,6 @@ type = real kind = kind_phys intent = inout - optional = F [pfl_lsan] standard_name = liquid_flux_due_to_large_scale_precipitation long_name = instantaneous 3D flux of liquid water from nonconvective precipitation @@ -520,7 +463,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -529,7 +471,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -537,4 +478,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/gfdl_fv_sat_adj.meta b/physics/gfdl_fv_sat_adj.meta index d54baf1bb..fc22ecd9e 100644 --- a/physics/gfdl_fv_sat_adj.meta +++ b/physics/gfdl_fv_sat_adj.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [kmp] standard_name = top_layer_index_for_fast_physics long_name = top_layer_inder_for_gfdl_mp @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [nwat] standard_name = number_of_water_species long_name = number of water species @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [ngas] standard_name = number_of_gases_for_multi_gases_physics long_name = number of gases for multi gases physics @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [rilist] standard_name = gas_constants_for_multi_gases_physics long_name = gas constants for multi gases physics @@ -47,7 +43,6 @@ type = real kind = kind_dyn intent = in - optional = F [cpilist] standard_name = specific_heat_capacities_for_multi_gases_physics long_name = specific heat capacities for multi gases physics @@ -56,7 +51,6 @@ type = real kind = kind_dyn intent = in - optional = F [mpirank] standard_name = mpi_rank_for_fast_physics long_name = current MPI-rank for fast physics schemes @@ -64,7 +58,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root_for_fast_physics long_name = master MPI-rank for fast physics schemes @@ -72,7 +65,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -81,7 +73,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -89,7 +80,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -103,7 +93,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -111,7 +100,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -125,7 +113,6 @@ type = real kind = kind_dyn intent = in - optional = F [zvir] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one_default_kind long_name = zvir=rv/rd-1.0 @@ -134,7 +121,6 @@ type = real kind = kind_dyn intent = in - optional = F [is] standard_name = starting_x_direction_index long_name = starting X direction index @@ -142,7 +128,6 @@ dimensions = () type = integer intent = in - optional = F [ie] standard_name = ending_x_direction_index long_name = ending X direction index @@ -150,7 +135,6 @@ dimensions = () type = integer intent = in - optional = F [isd] standard_name = starting_x_direction_index_domain long_name = starting X direction index for domain @@ -158,7 +142,6 @@ dimensions = () type = integer intent = in - optional = F [ied] standard_name = ending_x_direction_index_domain long_name = ending X direction index for domain @@ -166,7 +149,6 @@ dimensions = () type = integer intent = in - optional = F [kmp] standard_name = top_layer_index_for_fast_physics long_name = top layer index for GFDL mp @@ -174,7 +156,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_dimension_for_fast_physics long_name = number of vertical levels @@ -182,7 +163,6 @@ dimensions = () type = integer intent = in - optional = F [kmdelz] standard_name = vertical_dimension_for_thickness_at_Lagrangian_surface long_name = vertical dimension for thickness at Lagrangian surface @@ -190,7 +170,6 @@ dimensions = () type = integer intent = in - optional = F [js] standard_name = starting_y_direction_index long_name = starting Y direction index @@ -198,7 +177,6 @@ dimensions = () type = integer intent = in - optional = F [je] standard_name = ending_y_direction_index long_name = ending Y direction index @@ -206,7 +184,6 @@ dimensions = () type = integer intent = in - optional = F [jsd] standard_name = starting_y_direction_index_domain long_name = starting X direction index for domain @@ -214,7 +191,6 @@ dimensions = () type = integer intent = in - optional = F [jed] standard_name = ending_y_direction_index_domain long_name = ending X direction index for domain @@ -222,7 +198,6 @@ dimensions = () type = integer intent = in - optional = F [ng] standard_name = number_of_ghost_zones long_name = number of ghost zones defined in fv_mp @@ -230,7 +205,6 @@ dimensions = () type = integer intent = in - optional = F [hydrostatic] standard_name = flag_for_hydrostatic_solver_for_fast_physics long_name = flag for use the hydrostatic or nonhydrostatic solver @@ -238,7 +212,6 @@ dimensions = () type = logical intent = in - optional = F [fast_mp_consv] standard_name = flag_for_fast_microphysics_energy_conservation long_name = flag for fast microphysics energy conservation @@ -246,7 +219,6 @@ dimensions = () type = logical intent = in - optional = F [te0_2d] standard_name = atmosphere_energy_content_in_column long_name = atmosphere total energy in columns @@ -255,7 +227,6 @@ type = real kind = kind_dyn intent = inout - optional = F [te0] standard_name = atmosphere_energy_content_at_Lagrangian_surface long_name = atmosphere total energy at Lagrangian surface @@ -264,7 +235,6 @@ type = real kind = kind_dyn intent = out - optional = F [ngas] standard_name = number_of_gases_for_multi_gases_physics long_name = number of gases for multi gases physics @@ -272,7 +242,6 @@ dimensions = () type = integer intent = in - optional = F [qvi] standard_name = gas_tracers_for_multi_gas_physics_at_Lagrangian_surface long_name = gas tracers for multi gas physics at Lagrangian surface @@ -281,7 +250,6 @@ type = real kind = kind_dyn intent = inout - optional = F [qv] standard_name = water_vapor_specific_humidity_at_Lagrangian_surface long_name = water vapor specific humidity updated by fast physics at Lagrangian surface @@ -290,7 +258,6 @@ type = real kind = kind_dyn intent = inout - optional = F [ql] standard_name = cloud_liquid_water_specific_humidity_at_Lagrangian_surface long_name = cloud liquid water specific humidity updated by fast physics at Lagrangian surface @@ -299,7 +266,6 @@ type = real kind = kind_dyn intent = inout - optional = F [qi] standard_name = cloud_ice_specific_humidity_at_Lagrangian_surface long_name = cloud ice specific humidity updated by fast physics at Lagrangian surface @@ -308,7 +274,6 @@ type = real kind = kind_dyn intent = inout - optional = F [qr] standard_name = cloud_rain_specific_humidity_at_Lagrangian_surface long_name = cloud rain specific humidity updated by fast physics at Lagrangian surface @@ -317,7 +282,6 @@ type = real kind = kind_dyn intent = inout - optional = F [qs] standard_name = cloud_snow_specific_humidity_at_Lagrangian_surface long_name = cloud snow specific humidity updated by fast physics at Lagrangian surface @@ -326,7 +290,6 @@ type = real kind = kind_dyn intent = inout - optional = F [qg] standard_name = cloud_graupel_specific_humidity_at_Lagrangian_surface long_name = cloud graupel specific humidity updated by fast physics at Lagrangian surface @@ -335,7 +298,6 @@ type = real kind = kind_dyn intent = inout - optional = F [hs] standard_name = surface_geopotential_at_Lagrangian_surface long_name = surface geopotential at Lagrangian surface @@ -344,7 +306,6 @@ type = real kind = kind_dyn intent = in - optional = F [peln] standard_name = log_pressure_at_Lagrangian_surface long_name = logarithm of pressure at Lagrangian surface @@ -353,7 +314,6 @@ type = real kind = kind_dyn intent = in - optional = F [delz] standard_name = thickness_at_Lagrangian_surface long_name = thickness at Lagrangian_surface @@ -362,7 +322,6 @@ type = real kind = kind_dyn intent = in - optional = F [delp] standard_name = pressure_thickness_at_Lagrangian_surface long_name = pressure thickness at Lagrangian surface @@ -371,7 +330,6 @@ type = real kind = kind_dyn intent = in - optional = F [pt] standard_name = virtual_temperature_at_Lagrangian_surface long_name = virtual temperature at Lagrangian surface @@ -380,7 +338,6 @@ type = real kind = kind_dyn intent = inout - optional = F [pkz] standard_name = finite_volume_mean_edge_pressure_raised_to_the_power_of_kappa long_name = finite-volume mean edge pressure raised to the power of kappa @@ -389,7 +346,6 @@ type = real kind = kind_dyn intent = inout - optional = F [q_con] standard_name = cloud_condensed_water_specific_humidity_at_Lagrangian_surface long_name = cloud condensed water specific humidity updated by fast physics at Lagrangian surface @@ -398,7 +354,6 @@ type = real kind = kind_dyn intent = inout - optional = F [akap] standard_name = kappa_dry_for_fast_physics long_name = modified kappa for dry air, fast physics @@ -407,7 +362,6 @@ type = real kind = kind_dyn intent = in - optional = F [cappa] standard_name = cappa_moist_gas_constant_at_Lagrangian_surface long_name = cappa(i,j,k) = rdgas / ( rdgas + cvm(i)/(1.+r_vir*q(i,j,k,sphum)) ) @@ -416,7 +370,6 @@ type = real kind = kind_dyn intent = inout - optional = F [area] standard_name = cell_area_for_fast_physics long_name = area of the grid cell for fast physics @@ -425,7 +378,6 @@ type = real kind = kind_grid intent = in - optional = F [dtdt] standard_name = tendency_of_air_temperature_at_Lagrangian_surface long_name = air temperature tendency due to fast physics at Lagrangian surface @@ -434,7 +386,6 @@ type = real kind = kind_dyn intent = inout - optional = F [out_dt] standard_name = flag_for_tendency_of_air_temperature_at_Lagrangian_surface long_name = flag for calculating tendency of air temperature due to fast physics @@ -442,7 +393,6 @@ dimensions = () type = logical intent = in - optional = F [last_step] standard_name = flag_for_the_last_step_of_k_split_remapping long_name = flag for the last step of k-split remapping @@ -450,7 +400,6 @@ dimensions = () type = logical intent = in - optional = F [do_qa] standard_name = flag_for_inline_cloud_fraction_calculation long_name = flag for the inline cloud fraction calculation @@ -458,7 +407,6 @@ dimensions = () type = logical intent = in - optional = F [qa] standard_name = cloud_fraction_at_Lagrangian_surface long_name = cloud fraction at Lagrangian surface @@ -467,7 +415,6 @@ type = real kind = kind_dyn intent = out - optional = F [nthreads] standard_name = omp_threads_for_fast_physics long_name = number of OpenMP threads available for fast physics schemes @@ -475,7 +422,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -484,7 +430,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -492,4 +437,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/gfdl_sfc_layer.meta b/physics/gfdl_sfc_layer.meta index 653860705..de5ba8331 100644 --- a/physics/gfdl_sfc_layer.meta +++ b/physics/gfdl_sfc_layer.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [cplwav] standard_name = flag_for_ocean_wave_coupling long_name = flag controlling cplwav collection (default off) @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [cplwav2atm] standard_name = flag_for_one_way_ocean_wave_coupling_to_atmosphere long_name = flag controlling ocean wave coupling to the atmosphere (default off) @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [lcurr_sf] standard_name = flag_for_surface_layer_scheme_ocean_currents long_name = flag for taking ocean currents into account in surface layer scheme @@ -38,7 +35,6 @@ dimensions = () type = logical intent = in - optional = F [pert_cd] standard_name = flag_for_surface_layer_scheme_surface_drag_coefficient_for_momentum_in_air_perturbations long_name = flag for perturbing the surface drag coefficient for momentum in surface layer scheme @@ -46,7 +42,6 @@ dimensions = () type = logical intent = in - optional = F [ntsflg] standard_name = control_for_surface_layer_scheme_skin_temperature_update long_name = flag for updating skin temperature in the surface layer scheme @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -63,7 +57,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -71,7 +64,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -84,7 +76,6 @@ dimensions = () type = integer intent = in - optional = F [nsoil] standard_name = vertical_dimension_of_soil long_name = soil vertical layer dimension @@ -92,7 +83,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -100,7 +90,6 @@ dimensions = () type = integer intent = in - optional = F [karman] standard_name = von_karman_constant long_name = von karman constant @@ -108,7 +97,6 @@ dimensions = () type = real intent = in - optional = F [xlat] standard_name = latitude long_name = latitude @@ -117,7 +105,6 @@ type = real kind = kind_phys intent = in - optional = F [xlon] standard_name = longitude long_name = longitude @@ -126,7 +113,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -134,7 +120,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [lsm] standard_name = control_for_land_surface_scheme long_name = flag for land surface model @@ -142,7 +127,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noah] standard_name = identifier_for_noah_land_surface_scheme long_name = flag for NOAH land surface model @@ -150,7 +134,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model @@ -158,7 +141,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model @@ -166,7 +148,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noah_wrfv4] standard_name = identifier_for_noah_wrfv4_land_surface_scheme long_name = flag for NOAH WRFv4 land surface model @@ -174,7 +155,6 @@ dimensions = () type = integer intent = in - optional = F [icoef_sf] standard_name = flag_for_surface_roughness_option_over_water long_name = surface roughness options over water @@ -182,7 +162,6 @@ dimensions = () type = integer intent = in - optional = F [cplwav] standard_name = flag_for_ocean_wave_coupling long_name = flag controlling cplwav collection (default off) @@ -190,7 +169,6 @@ dimensions = () type = logical intent = in - optional = F [cplwav2atm] standard_name = flag_for_one_way_ocean_wave_coupling_to_atmosphere long_name = flag controlling ocean wave coupling to the atmosphere (default off) @@ -198,7 +176,6 @@ dimensions = () type = logical intent = in - optional = F [lcurr_sf] standard_name = flag_for_surface_layer_scheme_ocean_currents long_name = flag for taking ocean currents into account in surface layer scheme @@ -206,7 +183,6 @@ dimensions = () type = logical intent = in - optional = F [pert_Cd] standard_name = flag_for_surface_layer_scheme_surface_drag_coefficient_for_momentum_in_air_perturbations long_name = flag for perturbing the surface drag coefficient for momentum in surface layer scheme @@ -214,7 +190,6 @@ dimensions = () type = logical intent = in - optional = F [ntsflg] standard_name = control_for_surface_layer_scheme_skin_temperature_update long_name = flag for updating skin temperature in the surface layer scheme @@ -222,7 +197,6 @@ dimensions = () type = integer intent = in - optional = F [sfenth] standard_name = surface_layer_scheme_enthalpy_flux_factor long_name = enthalpy flux factor used in surface layer scheme @@ -231,7 +205,6 @@ type = real kind = kind_phys intent = in - optional = F [z1] standard_name = height_above_ground_at_lowest_model_layer long_name = height above ground at 1st model layer @@ -240,7 +213,6 @@ type = real kind = kind_phys intent = in - optional = F [shdmax] standard_name = max_vegetation_area_fraction long_name = max fractnl cover of green veg @@ -249,7 +221,6 @@ type = real kind = kind_phys intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -257,7 +228,6 @@ dimensions = () type = integer intent = in - optional = F [vegtype] standard_name = vegetation_type_classification long_name = vegetation type at each grid cell @@ -265,7 +235,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [sigmaf] standard_name = bounded_vegetation_area_fraction long_name = areal fractional cover of green vegetation bounded on the bottom @@ -274,7 +243,6 @@ type = real kind = kind_phys intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics timestep @@ -283,7 +251,6 @@ type = real kind = kind_phys intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -291,7 +258,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -299,7 +265,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -307,7 +272,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [isltyp] standard_name = soil_type_classification long_name = soil type at each grid cell @@ -315,7 +279,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -324,7 +287,6 @@ type = real kind = kind_phys intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -333,7 +295,6 @@ type = real kind = kind_phys intent = in - optional = F [ep1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -342,7 +303,6 @@ type = real kind = kind_phys intent = in - optional = F [ep2] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -351,7 +311,6 @@ type = real kind = kind_phys intent = in - optional = F [smois] standard_name = volume_fraction_of_condensed_water_in_soil long_name = total soil moisture @@ -360,7 +319,6 @@ type = real kind = kind_phys intent = in - optional = F [psfc] standard_name = surface_air_pressure long_name = surface pressure @@ -369,7 +327,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl1] standard_name = air_pressure_at_surface_adjacent_layer long_name = mean pressure at lowest model layer @@ -378,7 +335,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = water vapor specific humidity at lowest model layer @@ -387,7 +343,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = 1st model layer air temperature @@ -396,7 +351,6 @@ type = real kind = kind_phys intent = in - optional = F [u1] standard_name = x_wind_at_surface_adjacent_layer long_name = zonal wind at lowest model layer @@ -405,7 +359,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind_at_surface_adjacent_layer long_name = meridional wind at lowest model layer @@ -414,7 +367,6 @@ type = real kind = kind_phys intent = in - optional = F [wspd] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -423,7 +375,6 @@ type = real kind = kind_phys intent = in - optional = F [u10] standard_name = x_wind_at_10m long_name = 10 meter u wind speed @@ -432,7 +383,6 @@ type = real kind = kind_phys intent = in - optional = F [v10] standard_name = y_wind_at_10m long_name = 10 meter v wind speed @@ -441,7 +391,6 @@ type = real kind = kind_phys intent = in - optional = F [gsw] standard_name = surface_downwelling_shortwave_flux long_name = surface downwelling shortwave flux at current time @@ -450,7 +399,6 @@ type = real kind = kind_phys intent = in - optional = F [glw] standard_name = surface_downwelling_longwave_flux long_name = surface downwelling longwave flux at current time @@ -459,7 +407,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_wat] standard_name = surface_skin_temperature_after_iteration_over_water long_name = surface skin temperature after iteration over water @@ -468,7 +415,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_lnd] standard_name = surface_skin_temperature_after_iteration_over_land long_name = surface skin temperature after iteration over land @@ -477,7 +423,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_ice] standard_name = surface_skin_temperature_after_iteration_over_ice long_name = surface skin temperature after iteration over ice @@ -486,7 +431,6 @@ type = real kind = kind_phys intent = in - optional = F [tskin_wat] standard_name = surface_skin_temperature_over_water long_name = surface skin temperature over water @@ -495,7 +439,6 @@ type = real kind = kind_phys intent = inout - optional = F [tskin_lnd] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -504,7 +447,6 @@ type = real kind = kind_phys intent = inout - optional = F [tskin_ice] standard_name = surface_skin_temperature_over_ice long_name = surface skin temperature over ice @@ -513,7 +455,6 @@ type = real kind = kind_phys intent = inout - optional = F [ustar_wat] standard_name = surface_friction_velocity_over_water long_name = surface friction velocity over water @@ -522,7 +463,6 @@ type = real kind = kind_phys intent = inout - optional = F [ustar_lnd] standard_name = surface_friction_velocity_over_land long_name = surface friction velocity over land @@ -531,7 +471,6 @@ type = real kind = kind_phys intent = inout - optional = F [ustar_ice] standard_name = surface_friction_velocity_over_ice long_name = surface friction velocity over ice @@ -540,7 +479,6 @@ type = real kind = kind_phys intent = inout - optional = F [znt_wat] standard_name = surface_roughness_length_over_water long_name = surface roughness length over water (temporary use as interstitial) @@ -549,7 +487,6 @@ type = real kind = kind_phys intent = inout - optional = F [znt_lnd] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land (temporary use as interstitial) @@ -558,7 +495,6 @@ type = real kind = kind_phys intent = inout - optional = F [znt_ice] standard_name = surface_roughness_length_over_ice long_name = surface roughness length over ice (temporary use as interstitial) @@ -567,7 +503,6 @@ type = real kind = kind_phys intent = inout - optional = F [cdm_wat] standard_name = surface_drag_coefficient_for_momentum_in_air_over_water long_name = surface exchange coeff for momentum over water @@ -576,7 +511,6 @@ type = real kind = kind_phys intent = inout - optional = F [cdm_lnd] standard_name = surface_drag_coefficient_for_momentum_in_air_over_land long_name = surface exchange coeff for momentum over land @@ -585,7 +519,6 @@ type = real kind = kind_phys intent = inout - optional = F [cdm_ice] standard_name = surface_drag_coefficient_for_momentum_in_air_over_ice long_name = surface exchange coeff for momentum over ice @@ -594,7 +527,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_wat] standard_name = surface_wind_stress_over_water long_name = surface wind stress over water @@ -603,7 +535,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_lnd] standard_name = surface_wind_stress_over_land long_name = surface wind stress over land @@ -612,7 +543,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_ice] standard_name = surface_wind_stress_over_ice long_name = surface wind stress over ice @@ -621,7 +551,6 @@ type = real kind = kind_phys intent = inout - optional = F [rib_wat] standard_name = bulk_richardson_number_at_lowest_model_level_over_water long_name = bulk Richardson number at the surface over water @@ -630,7 +559,6 @@ type = real kind = kind_phys intent = inout - optional = F [rib_lnd] standard_name = bulk_richardson_number_at_lowest_model_level_over_land long_name = bulk Richardson number at the surface over land @@ -639,7 +567,6 @@ type = real kind = kind_phys intent = inout - optional = F [rib_ice] standard_name = bulk_richardson_number_at_lowest_model_level_over_ice long_name = bulk Richardson number at the surface over ice @@ -648,7 +575,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_wat] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_water long_name = Monin-Obukhov similarity function for momentum over water @@ -657,7 +583,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_lnd] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_land long_name = Monin-Obukhov similarity function for momentum over land @@ -666,7 +591,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_ice] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_ice long_name = Monin-Obukhov similarity function for momentum over ice @@ -675,7 +599,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_wat] standard_name = Monin_Obukhov_similarity_function_for_heat_over_water long_name = Monin-Obukhov similarity function for heat over water @@ -684,7 +607,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_lnd] standard_name = Monin_Obukhov_similarity_function_for_heat_over_land long_name = Monin-Obukhov similarity function for heat over land @@ -693,7 +615,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_ice] standard_name = Monin_Obukhov_similarity_function_for_heat_over_ice long_name = Monin-Obukhov similarity function for heat over ice @@ -702,7 +623,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_wat] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_water long_name = Monin-Obukhov similarity parameter for heat at 2m over water @@ -711,7 +631,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_lnd] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_land long_name = Monin-Obukhov similarity parameter for heat at 2m over land @@ -720,7 +639,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_ice] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_ice long_name = Monin-Obukhov similarity parameter for heat at 2m over ice @@ -729,7 +647,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_wat] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water @@ -738,7 +655,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_lnd] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land long_name = surface exchange coeff heat & moisture over land @@ -747,7 +663,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_ice] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ice long_name = surface exchange coeff heat & moisture over ice @@ -756,7 +671,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_wat] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_water long_name = Monin-Obukhov similarity parameter for momentum at 10m over water @@ -765,7 +679,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_lnd] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_land long_name = Monin-Obukhov similarity parameter for momentum at 10m over land @@ -774,7 +687,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_ice] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_ice long_name = Monin-Obukhov similarity parameter for momentum at 10m over ice @@ -783,7 +695,6 @@ type = real kind = kind_phys intent = inout - optional = F [qss_wat] standard_name = surface_specific_humidity_over_water long_name = surface air saturation specific humidity over water @@ -792,7 +703,6 @@ type = real kind = kind_phys intent = inout - optional = F [qss_lnd] standard_name = surface_specific_humidity_over_land long_name = surface air saturation specific humidity over land @@ -801,7 +711,6 @@ type = real kind = kind_phys intent = inout - optional = F [qss_ice] standard_name = surface_specific_humidity_over_ice long_name = surface air saturation specific humidity over ice @@ -810,7 +719,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -819,7 +727,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -827,4 +734,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/gscond.meta b/physics/gscond.meta index 202097825..e46b73618 100644 --- a/physics/gscond.meta +++ b/physics/gscond.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr] standard_name = identifier_for_zhao_carr_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr_pdf] standard_name = identifier_for_zhao_carr_pdf_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme with PDF clouds @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -39,7 +36,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -47,7 +43,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -65,7 +60,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -73,7 +67,6 @@ dimensions = () type = integer intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics time step @@ -82,7 +75,6 @@ type = real kind = kind_phys intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics time step @@ -91,7 +83,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = layer mean air pressure @@ -100,7 +91,6 @@ type = real kind = kind_phys intent = in - optional = F [ps] standard_name = surface_air_pressure long_name = surface pressure @@ -109,7 +99,6 @@ type = real kind = kind_phys intent = in - optional = F [q] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity @@ -118,7 +107,6 @@ type = real kind = kind_phys intent = inout - optional = F [clw1] standard_name = ice_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -127,7 +115,6 @@ type = real kind = kind_phys intent = in - optional = F [clw2] standard_name = cloud_condensed_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -136,7 +123,6 @@ type = real kind = kind_phys intent = in - optional = F [cwm] standard_name = cloud_liquid_water_mixing_ratio_of_new_state long_name = moist cloud condensed water mixing ratio @@ -145,7 +131,6 @@ type = real kind = kind_phys intent = out - optional = F [t] standard_name = air_temperature_of_new_state long_name = layer mean air temperature @@ -154,7 +139,6 @@ type = real kind = kind_phys intent = inout - optional = F [tp] standard_name = air_temperature_two_timesteps_back long_name = air temperature two timesteps back @@ -163,7 +147,6 @@ type = real kind = kind_phys intent = inout - optional = F [qp] standard_name = specific_humidity_two_timesteps_back long_name = water vapor specific humidity two timesteps back @@ -172,7 +155,6 @@ type = real kind = kind_phys intent = inout - optional = F [psp] standard_name = surface_air_pressure_two_timesteps_back long_name = surface air pressure two timesteps back @@ -181,7 +163,6 @@ type = real kind = kind_phys intent = inout - optional = F [psat] standard_name = saturation_pressure_at_triple_point_of_water long_name = saturation pressure at triple point of water @@ -190,7 +171,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -199,7 +179,6 @@ type = real kind = kind_phys intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -208,7 +187,6 @@ type = real kind = kind_phys intent = in - optional = F [hfus] standard_name = latent_heat_of_fusion_of_water_at_0C long_name = latent heat of fusion @@ -217,7 +195,6 @@ type = real kind = kind_phys intent = in - optional = F [ttp] standard_name = triple_point_temperature_of_water long_name = triple point temperature of water @@ -226,7 +203,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -235,7 +211,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -244,7 +219,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -253,7 +227,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -262,7 +235,6 @@ type = real kind = kind_phys intent = in - optional = F [rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -271,7 +243,6 @@ type = real kind = kind_phys intent = in - optional = F [tp1] standard_name = air_temperature_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = air temperature at previous timestep @@ -280,7 +251,6 @@ type = real kind = kind_phys intent = inout - optional = F [qp1] standard_name = specific_humidity_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = water vapor specific humidity at previous timestep @@ -289,7 +259,6 @@ type = real kind = kind_phys intent = inout - optional = F [psp1] standard_name = surface_air_pressure_on_previous_timestep long_name = surface air surface pressure at previous timestep @@ -298,7 +267,6 @@ type = real kind = kind_phys intent = inout - optional = F [u] standard_name = critical_relative_humidity long_name = critical relative humidity @@ -307,7 +275,6 @@ type = real kind = kind_phys intent = in - optional = F [lprnt] standard_name = flag_print long_name = flag for printing diagnostics to output @@ -315,7 +282,6 @@ dimensions = () type = logical intent = in - optional = F [ipr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of printed column @@ -323,7 +289,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -332,7 +297,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -340,4 +304,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/gwdc.meta b/physics/gwdc.meta index a28ca895c..27ec1cfc6 100644 --- a/physics/gwdc.meta +++ b/physics/gwdc.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [cgwf] standard_name = tunable_parameters_for_convective_gravity_wave_drag long_name = multiplication factors for convective gravity wave drag @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [dx] standard_name = characteristic_grid_lengthscale long_name = grid size in zonal direction @@ -32,7 +30,6 @@ type = real kind = kind_phys intent = in - optional = F [work1] standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes long_name = grid size related coefficient used in scale-sensitive schemes @@ -41,7 +38,6 @@ type = real kind = kind_phys intent = in - optional = F [work2] standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes_complement long_name = complement to work1 @@ -50,7 +46,6 @@ type = real kind = kind_phys intent = in - optional = F [dlength] standard_name = characteristic_grid_length_scale long_name = representative horizontal length scale of grid box @@ -59,7 +54,6 @@ type = real kind = kind_phys intent = out - optional = F [cldf] standard_name = cloud_area_fraction long_name = fraction of grid box area in which updrafts occur @@ -68,7 +62,6 @@ type = real kind = kind_phys intent = out - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -76,7 +69,6 @@ dimensions = () type = integer intent = in - optional = F [kbot] standard_name = vertical_index_at_cloud_base long_name = vertical index at cloud base @@ -84,7 +76,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [ktop] standard_name = vertical_index_at_cloud_top long_name = vertical index at cloud top @@ -92,7 +83,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics time step @@ -101,7 +91,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = updated air temperature @@ -110,7 +99,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0_init] standard_name = air_temperature_save long_name = air temperature before entering convection scheme @@ -119,7 +107,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = difference between mid-layer pressures @@ -128,7 +115,6 @@ type = real kind = kind_phys intent = in - optional = F [cumabs] standard_name = maximum_column_heating_rate long_name = maximum heating rate in column @@ -137,7 +123,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -146,7 +131,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -154,7 +138,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -173,7 +156,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -182,7 +164,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -190,7 +171,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -203,7 +183,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -211,7 +190,6 @@ dimensions = () type = integer intent = in - optional = F [lat] standard_name = latitude_index_in_debug_printouts long_name = latitude index in debug printouts @@ -219,7 +197,6 @@ dimensions = () type = integer intent = in - optional = F [u1] standard_name = x_wind long_name = zonal wind @@ -228,7 +205,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind long_name = meridional wind @@ -237,7 +213,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature long_name = mid-layer temperature @@ -246,7 +221,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity long_name = mid-layer specific humidity of water vapor @@ -255,7 +229,6 @@ type = real kind = kind_phys intent = in - optional = F [deltim] standard_name = timestep_for_physics long_name = physics time step @@ -264,7 +237,6 @@ type = real kind = kind_phys intent = in - optional = F [pmid1] standard_name = air_pressure long_name = mid-layer pressure @@ -273,7 +245,6 @@ type = real kind = kind_phys intent = in - optional = F [pint1] standard_name = air_pressure_at_interface long_name = interface pressure @@ -282,7 +253,6 @@ type = real kind = kind_phys intent = in - optional = F [dpmid1] standard_name = air_pressure_difference_between_midlayers long_name = difference between mid-layer pressures @@ -291,7 +261,6 @@ type = real kind = kind_phys intent = in - optional = F [qmax] standard_name = maximum_column_heating_rate long_name = maximum heating rate in column @@ -300,7 +269,6 @@ type = real kind = kind_phys intent = in - optional = F [ktop] standard_name = vertical_index_at_cloud_top long_name = vertical index at cloud top @@ -308,7 +276,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [kbot] standard_name = vertical_index_at_cloud_base long_name = vertical index at cloud base @@ -316,7 +283,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [kcnv] standard_name = flag_deep_convection long_name = flag indicating whether convection occurs in column (0 or 1) @@ -324,7 +290,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [cldf] standard_name = cloud_area_fraction long_name = fraction of grid box area in which updrafts occur @@ -333,7 +298,6 @@ type = real kind = kind_phys intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -342,7 +306,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -351,7 +314,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -360,7 +322,6 @@ type = real kind = kind_phys intent = in - optional = F [fv] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -369,7 +330,6 @@ type = real kind = kind_phys intent = in - optional = F [pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -378,7 +338,6 @@ type = real kind = kind_phys intent = in - optional = F [dlength] standard_name = characteristic_grid_length_scale long_name = representative horizontal length scale of grid box @@ -387,7 +346,6 @@ type = real kind = kind_phys intent = in - optional = F [lprnt] standard_name = flag_print long_name = flag for debugging printouts @@ -395,7 +353,6 @@ dimensions = () type = logical intent = in - optional = F [ipr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of column used in debugging printouts @@ -403,7 +360,6 @@ dimensions = () type = integer intent = in - optional = F [fhour] standard_name = forecast_time long_name = forecast hour @@ -412,7 +368,6 @@ type = real kind = kind_phys intent = in - optional = F [utgwc] standard_name = tendency_of_x_wind_due_to_convective_gravity_wave_drag long_name = zonal wind tendency due to convective gravity wave drag @@ -421,7 +376,6 @@ type = real kind = kind_phys intent = out - optional = F [vtgwc] standard_name = tendency_of_y_wind_due_to_convective_gravity_wave_drag long_name = meridional wind tendency due to convective gravity wave drag @@ -430,7 +384,6 @@ type = real kind = kind_phys intent = out - optional = F [tauctx] standard_name = instantaneous_x_stress_due_to_gravity_wave_drag long_name = zonal stress at cloud top due to convective gravity wave drag @@ -439,7 +392,6 @@ type = real kind = kind_phys intent = out - optional = F [taucty] standard_name = instantaneous_y_stress_due_to_gravity_wave_drag long_name = meridional stress at cloud top due to convective gravity wave drag @@ -448,7 +400,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -457,7 +408,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -465,7 +415,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -484,7 +433,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -492,7 +440,6 @@ dimensions = () type = integer intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = flag for calculating diagnostic fields @@ -500,7 +447,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for calculating 3-D diagnostic fields @@ -508,7 +454,6 @@ dimensions = () type = logical intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics time step @@ -517,7 +462,6 @@ type = real kind = kind_phys intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics time step @@ -526,7 +470,6 @@ type = real kind = kind_phys intent = in - optional = F [con_cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -535,7 +478,6 @@ type = real kind = kind_phys intent = in - optional = F [tauctx] standard_name = instantaneous_x_stress_due_to_gravity_wave_drag long_name = zonal stress at cloud top due to convective gravity wave drag @@ -544,7 +486,6 @@ type = real kind = kind_phys intent = in - optional = F [taucty] standard_name = instantaneous_y_stress_due_to_gravity_wave_drag long_name = meridional stress at cloud top due to convective gravity wave drag @@ -553,7 +494,6 @@ type = real kind = kind_phys intent = in - optional = F [gwdcu] standard_name = tendency_of_x_wind_due_to_convective_gravity_wave_drag long_name = zonal wind tendency due to convective gravity wave drag @@ -562,7 +502,6 @@ type = real kind = kind_phys intent = in - optional = F [gwdcv] standard_name = tendency_of_y_wind_due_to_convective_gravity_wave_drag long_name = meridional wind tendency due to convective gravity wave drag @@ -571,7 +510,6 @@ type = real kind = kind_phys intent = in - optional = F [dugwd] standard_name = time_integral_of_x_stress_due_to_gravity_wave_drag long_name = integral over time of zonal stress due to gravity wave drag @@ -580,7 +518,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvgwd] standard_name = time_integral_of_y_stress_due_to_gravity_wave_drag long_name = integral over time of meridional stress due to gravity wave drag @@ -589,7 +526,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -599,7 +535,6 @@ kind = kind_phys active = (flag_for_diagnostics_3D) intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -607,7 +542,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -615,7 +549,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -623,7 +556,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_nonorographic_gwd] standard_name = index_of_nonorographic_gravity_wave_drag_process_in_cumulative_change_index long_name = index of nonorographic gravity wave drag process in second dimension of array cumulative change index @@ -631,7 +563,6 @@ dimensions = () type = integer intent = in - optional = F [gu0] standard_name = x_wind_of_new_state long_name = updated zonal wind @@ -640,7 +571,6 @@ type = real kind = kind_phys intent = inout - optional = F [gv0] standard_name = y_wind_of_new_state long_name = updated meridional wind @@ -649,7 +579,6 @@ type = real kind = kind_phys intent = inout - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = updated air temperature @@ -658,7 +587,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -667,7 +595,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -675,4 +602,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/gwdps.meta b/physics/gwdps.meta index 4aecc48b8..e483354df 100644 --- a/physics/gwdps.meta +++ b/physics/gwdps.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [A] standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics @@ -31,7 +29,6 @@ type = real kind = kind_phys intent = inout - optional = F [B] standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics @@ -40,7 +37,6 @@ type = real kind = kind_phys intent = inout - optional = F [C] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = air temperature tendency due to model physics @@ -49,7 +45,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind long_name = zonal wind @@ -58,7 +53,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind long_name = meridional wind @@ -67,7 +61,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature long_name = mid-layer temperature @@ -76,7 +69,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity long_name = mid-layer specific humidity of water vapor @@ -85,7 +77,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = vertical index at top atmospheric boundary layer @@ -93,7 +84,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = interface pressure @@ -102,7 +92,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = difference between mid-layer pressures @@ -111,7 +100,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mid-layer pressure @@ -120,7 +108,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = mid-layer Exner function @@ -129,7 +116,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = interface geopotential @@ -138,7 +124,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = mid-layer geopotential @@ -147,7 +132,6 @@ type = real kind = kind_phys intent = in - optional = F [deltim] standard_name = timestep_for_physics long_name = physics time step @@ -156,7 +140,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current time step index @@ -164,7 +147,6 @@ dimensions = () type = integer intent = in - optional = F [hprime] standard_name = standard_deviation_of_subgrid_orography long_name = standard deviation of subgrid height_above_mean_sea_level @@ -173,7 +155,6 @@ type = real kind = kind_phys intent = in - optional = F [oc] standard_name = convexity_of_subgrid_orography long_name = convexity of subgrid height_above_mean_sea_level @@ -182,7 +163,6 @@ type = real kind = kind_phys intent = in - optional = F [oa4] standard_name = asymmetry_of_subgrid_orography long_name = asymmetry of subgrid height_above_mean_sea_level @@ -191,7 +171,6 @@ type = real kind = kind_phys intent = in - optional = F [clx4] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height long_name = horizontal fraction of grid box covered by subgrid height_above_mean_sea_level higher than critical height @@ -200,7 +179,6 @@ type = real kind = kind_phys intent = in - optional = F [theta] standard_name = angle_from_east_of_maximum_subgrid_orographic_variations long_name = angle with respect to east of maximum subgrid orographic variations @@ -209,7 +187,6 @@ type = real kind = kind_phys intent = in - optional = F [sigma] standard_name = slope_of_subgrid_orography long_name = slope of subgrid height_above_mean_sea_level @@ -218,7 +195,6 @@ type = real kind = kind_phys intent = in - optional = F [gamma] standard_name = anisotropy_of_subgrid_orography long_name = anisotropy of subgrid height_above_mean_sea_level @@ -227,7 +203,6 @@ type = real kind = kind_phys intent = in - optional = F [elvmax] standard_name = maximum_subgrid_orography long_name = maximum of subgrid height_above_mean_sea_level @@ -236,7 +211,6 @@ type = real kind = kind_phys intent = inout - optional = F [dusfc] standard_name = instantaneous_x_stress_due_to_gravity_wave_drag long_name = zonal surface stress due to orographic gravity wave drag @@ -245,7 +219,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc] standard_name = instantaneous_y_stress_due_to_gravity_wave_drag long_name = meridional surface stress due to orographic gravity wave drag @@ -254,7 +227,6 @@ type = real kind = kind_phys intent = out - optional = F [g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -263,7 +235,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -272,7 +243,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -281,7 +251,6 @@ type = real kind = kind_phys intent = in - optional = F [rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -290,7 +259,6 @@ type = real kind = kind_phys intent = in - optional = F [imx] standard_name = number_of_equatorial_longitude_points long_name = number of longitude points along the equator @@ -298,7 +266,6 @@ dimensions = () type = integer intent = in - optional = F [nmtvr] standard_name = number_of_statistical_measures_of_subgrid_orography long_name = number of statistical measures of subgrid height_above_mean_sea_level @@ -306,7 +273,6 @@ dimensions = () type = integer intent = in - optional = F [cdmbgwd] standard_name = multiplicative_tunable_parameters_for_mountain_blocking_and_orographic_gravity_wave_drag long_name = multiplic. factors for (1) mountain blocking drag coeff. and (2) ref. level orographic gravity wave drag @@ -315,7 +281,6 @@ type = real kind = kind_phys intent = in - optional = F [me] standard_name = mpi_rank long_name = rank of the current MPI task @@ -323,7 +288,6 @@ dimensions = () type = integer intent = in - optional = F [lprnt] standard_name = flag_print long_name = flag for debugging printouts @@ -331,7 +295,6 @@ dimensions = () type = logical intent = in - optional = F [ipr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of column used in debugging printouts @@ -339,7 +302,6 @@ dimensions = () type = integer intent = in - optional = F [rdxzb] standard_name = level_of_dividing_streamline long_name = level of the dividing streamline @@ -348,7 +310,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -357,7 +318,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -365,5 +325,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/h2ophys.meta b/physics/h2ophys.meta index 95822fbfb..702da0193 100644 --- a/physics/h2ophys.meta +++ b/physics/h2ophys.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [kh2o] standard_name = vertical_dimension_of_h2o_forcing_data long_name = number of vertical layers in h2o forcing data @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics time step @@ -69,7 +63,6 @@ type = real kind = kind_phys intent = in - optional = F [h2o] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -78,7 +71,6 @@ type = real kind = kind_phys intent = inout - optional = F [ph2o] standard_name = natural_log_of_h2o_forcing_data_pressure_levels long_name = natural log of h2o forcing data pressure levels @@ -87,7 +79,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mid-layer pressure @@ -96,7 +87,6 @@ type = real kind = kind_phys intent = in - optional = F [h2opltc] standard_name = stratospheric_water_vapor_forcing long_name = water forcing data @@ -105,7 +95,6 @@ type = real kind = kind_phys intent = in - optional = F [h2o_coeff] standard_name = number_of_coefficients_in_h2o_forcing_data long_name = number of coefficients in h2o forcing data @@ -113,7 +102,6 @@ dimensions = () type = integer intent = in - optional = F [me] standard_name = mpi_rank long_name = rank of the current MPI task @@ -121,7 +109,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -130,7 +117,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -138,5 +124,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/m_micro.meta b/physics/m_micro.meta index 8a51a6ec6..43654a26c 100644 --- a/physics/m_micro.meta +++ b/physics/m_micro.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [fprcp] standard_name = number_of_frozen_precipitation_species long_name = number of frozen precipitation species @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [gravit] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -39,7 +36,6 @@ type = real kind = kind_phys intent = in - optional = F [rair] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -48,7 +44,6 @@ type = real kind = kind_phys intent = in - optional = F [rh2o] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -57,7 +52,6 @@ type = real kind = kind_phys intent = in - optional = F [cpair] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -66,7 +60,6 @@ type = real kind = kind_phys intent = in - optional = F [eps_in] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -75,7 +68,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1_in] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -84,7 +76,6 @@ type = real kind = kind_phys intent = in - optional = F [tmelt] standard_name = triple_point_temperature_of_water long_name = triple point temperature of water @@ -93,7 +84,6 @@ type = real kind = kind_phys intent = in - optional = F [latvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -102,7 +92,6 @@ type = real kind = kind_phys intent = in - optional = F [latice] standard_name = latent_heat_of_fusion_of_water_at_0C long_name = latent heat of fusion @@ -111,7 +100,6 @@ type = real kind = kind_phys intent = in - optional = F [pi_in] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -120,7 +108,6 @@ type = real kind = kind_phys intent = in - optional = F [tice_in] standard_name = temperature_at_zero_celsius long_name = temperature at 0 degree Celsius @@ -129,7 +116,6 @@ type = real kind = kind_phys intent = in - optional = F [VIREPS_in] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -138,7 +124,6 @@ type = real kind = kind_phys intent = in - optional = F [mg_dcs] standard_name = autoconverion_to_snow_size_threshold long_name = autoconversion size threshold for cloud ice to snow for MG microphysics @@ -147,7 +132,6 @@ type = real kind = kind_phys intent = in - optional = F [mg_qcvar] standard_name = relative_variance_of_subgrid_cloud_condensate_distribution long_name = cloud water relative variance for MG microphysics @@ -156,7 +140,6 @@ type = real kind = kind_phys intent = in - optional = F [mg_ts_auto_ice] standard_name = timescale_for_autoconversion_to_snow long_name = autoconversion time scale for ice for MG microphysics @@ -165,7 +148,6 @@ type = real kind = kind_phys intent = in - optional = F [mg_rhmini] standard_name = relative_humidity_threshold_for_ice_nucleation long_name = relative humidity threshold parameter for nucleating ice for MG microphysics @@ -174,7 +156,6 @@ type = real kind = kind_phys intent = in - optional = F [microp_uniform] standard_name = flag_for_uniform_subcolumns long_name = flag for uniform subcolumns for MG microphysics @@ -182,7 +163,6 @@ dimensions = () type = logical intent = in - optional = F [do_cldice] standard_name = flag_for_cloud_ice_processes long_name = flag for cloud ice processes for MG microphysics @@ -190,7 +170,6 @@ dimensions = () type = logical intent = in - optional = F [hetfrz_classnuc] standard_name = flag_for_heterogeneous_nucleation long_name = flag for heterogeneous freezing for MG microphysics @@ -198,7 +177,6 @@ dimensions = () type = logical intent = in - optional = F [mg_precip_frac_method] standard_name = control_for_precipitation_area_fraction_method long_name = type of precip fraction method for MG microphysics (in_cloud or max_overlap) @@ -207,7 +185,6 @@ type = character kind = len=16 intent = in - optional = F [mg_berg_eff_factor] standard_name = bergeron_findeisen_process_efficiency_factor long_name = bergeron efficiency factor for MG microphysics @@ -216,7 +193,6 @@ type = real kind = kind_phys intent = in - optional = F [sed_supersat] standard_name = flag_for_allowance_of_supersaturation_after_sedimentation long_name = allow supersaturation after sedimentation for MG microphysics @@ -224,7 +200,6 @@ dimensions = () type = logical intent = in - optional = F [do_sb_physics] standard_name = flag_for_seifert_and_beheng_2001_autoconversion long_name = flag for SB 2001 autoconversion or accretion for MG microphysics @@ -232,7 +207,6 @@ dimensions = () type = logical intent = in - optional = F [mg_do_hail] standard_name = flag_for_hail_instead_of_graupel long_name = flag for hail for MG microphysics (graupel possible if false) @@ -240,7 +214,6 @@ dimensions = () type = logical intent = in - optional = F [mg_do_graupel] standard_name = flag_for_graupel_instead_of_hail long_name = flag for graupel for MG microphysics (hail possible if false) @@ -248,7 +221,6 @@ dimensions = () type = logical intent = in - optional = F [mg_nccons] standard_name = flag_for_prescribed_cloud_droplet_number_concentration long_name = flag for constant droplet concentration for MG microphysics @@ -256,7 +228,6 @@ dimensions = () type = logical intent = in - optional = F [mg_nicons] standard_name = flag_for_prescribed_cloud_ice_number_concentration long_name = flag for constant ice concentration for MG microphysics @@ -264,7 +235,6 @@ dimensions = () type = logical intent = in - optional = F [mg_ngcons] standard_name = flag_for_prescribed_graupel_number_concentration long_name = flag for constant graupel concentration for MG microphysics @@ -272,7 +242,6 @@ dimensions = () type = logical intent = in - optional = F [mg_ncnst] standard_name = prescribed_cloud_droplet_number_concentration long_name = droplet concentration constant for MG microphysics @@ -281,7 +250,6 @@ type = real kind = kind_phys intent = in - optional = F [mg_ninst] standard_name = prescribed_cloud_ice_number_concentration long_name = ice concentration constant for MG microphysics @@ -290,7 +258,6 @@ type = real kind = kind_phys intent = in - optional = F [mg_ngnst] standard_name = prescribed_graupel_number_concentration long_name = graupel concentration constant for MG microphysics @@ -299,7 +266,6 @@ type = real kind = kind_phys intent = in - optional = F [mg_do_ice_gmao] standard_name = flag_for_gmao_autoconversion_to_snow long_name = flag for gmao ice formulation @@ -307,7 +273,6 @@ dimensions = () type = logical intent = in - optional = F [mg_do_liq_liu] standard_name = flag_for_liu_autoconversion_to_rain long_name = flag for liu liquid treatment @@ -315,7 +280,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -324,7 +288,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -332,7 +295,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -345,7 +307,6 @@ dimensions = () type = integer intent = in - optional = F [lm] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -353,7 +314,6 @@ dimensions = () type = integer intent = in - optional = F [rainmin] standard_name = lwe_thickness_of_minimum_rain_amount long_name = minimum rain amount @@ -362,7 +322,6 @@ type = real kind = kind_phys intent = in - optional = F [flipv] standard_name = flag_flip long_name = vertical flip logical @@ -370,7 +329,6 @@ dimensions = () type = logical intent = in - optional = F [dt_i] standard_name = timestep_for_physics long_name = physics time step @@ -379,7 +337,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl_i] standard_name = air_pressure long_name = layer mean pressure @@ -388,7 +345,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi_i] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -397,7 +353,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -406,7 +361,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -415,7 +369,6 @@ type = real kind = kind_phys intent = in - optional = F [omega_i] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -424,7 +377,6 @@ type = real kind = kind_phys intent = in - optional = F [qlls_i] standard_name = cloud_condensed_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -433,7 +385,6 @@ type = real kind = kind_phys intent = in - optional = F [qlcn_i] standard_name = mass_fraction_of_convective_cloud_liquid_water long_name = mass fraction of convective cloud liquid water @@ -442,7 +393,6 @@ type = real kind = kind_phys intent = in - optional = F [qils_i] standard_name = ice_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -451,7 +401,6 @@ type = real kind = kind_phys intent = in - optional = F [qicn_i] standard_name = mass_fraction_of_convective_cloud_ice long_name = mass fraction of convective cloud ice water @@ -460,7 +409,6 @@ type = real kind = kind_phys intent = in - optional = F [lwheat_i] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky lw heating rate @@ -469,7 +417,6 @@ type = real kind = kind_phys intent = in - optional = F [swheat_i] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky sw heating rate @@ -478,7 +425,6 @@ type = real kind = kind_phys intent = in - optional = F [w_upi] standard_name = vertical_velocity_for_updraft long_name = vertical velocity for updraft @@ -487,7 +433,6 @@ type = real kind = kind_phys intent = in - optional = F [cf_upi] standard_name = convective_cloud_fraction_for_microphysics long_name = convective cloud fraction for microphysics @@ -496,7 +441,6 @@ type = real kind = kind_phys intent = in - optional = F [frland] standard_name = land_area_fraction_for_microphysics long_name = land area fraction used in microphysics schemes @@ -505,7 +449,6 @@ type = real kind = kind_phys intent = in - optional = F [zpbl] standard_name = atmosphere_boundary_layer_thickness long_name = pbl height @@ -514,7 +457,6 @@ type = real kind = kind_phys intent = in - optional = F [cnv_mfd_i] standard_name = detrained_mass_flux long_name = detrained mass flux @@ -523,7 +465,6 @@ type = real kind = kind_phys intent = in - optional = F [cnv_dqldt_i] standard_name = tendency_of_cloud_water_due_to_convective_microphysics long_name = tendency of cloud water due to convective microphysics @@ -532,7 +473,6 @@ type = real kind = kind_phys intent = in - optional = F [clcn_i] standard_name = convective_cloud_volume_fraction long_name = convective cloud volume fraction @@ -541,7 +481,6 @@ type = real kind = kind_phys intent = in - optional = F [u_i] standard_name = x_wind_of_new_state long_name = zonal wind updated by physics @@ -550,7 +489,6 @@ type = real kind = kind_phys intent = in - optional = F [v_i] standard_name = y_wind_of_new_state long_name = meridional wind updated by physics @@ -559,7 +497,6 @@ type = real kind = kind_phys intent = in - optional = F [taugwx] standard_name = cumulative_surface_x_momentum_flux_for_diag_multiplied_by_timestep long_name = cumulative sfc x momentum flux multiplied by timestep @@ -568,7 +505,6 @@ type = real kind = kind_phys intent = in - optional = F [taugwy] standard_name = cumulative_surface_y_momentum_flux_for_diag_multiplied_by_timestep long_name = cumulative sfc y momentum flux multiplied by timestep @@ -577,7 +513,6 @@ type = real kind = kind_phys intent = in - optional = F [tauorox] standard_name = instantaneous_surface_x_momentum_flux long_name = x momentum flux @@ -586,7 +521,6 @@ type = real kind = kind_phys intent = in - optional = F [tauoroy] standard_name = instantaneous_surface_y_momentum_flux long_name = y momentum flux @@ -595,7 +529,6 @@ type = real kind = kind_phys intent = in - optional = F [cnv_fice_i] standard_name = ice_fraction_in_convective_tower long_name = ice fraction in convective tower @@ -604,7 +537,6 @@ type = real kind = kind_phys intent = in - optional = F [cnv_ndrop_i] standard_name = number_concentration_of_cloud_liquid_water_particles_for_detrainment long_name = droplet number concentration in convective detrainment @@ -613,7 +545,6 @@ type = real kind = kind_phys intent = in - optional = F [cnv_nice_i] standard_name = number_concentration_of_ice_crystals_for_detrainment long_name = crystal number concentration in convective detrainment @@ -622,7 +553,6 @@ type = real kind = kind_phys intent = in - optional = F [q_io] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -631,7 +561,6 @@ type = real kind = kind_phys intent = inout - optional = F [lwm_o] standard_name = cloud_liquid_water_mixing_ratio_of_new_state long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) updated by physics @@ -640,7 +569,6 @@ type = real kind = kind_phys intent = out - optional = F [qi_o] standard_name = cloud_ice_mixing_ratio_of_new_state long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) updated by physics @@ -649,7 +577,6 @@ type = real kind = kind_phys intent = out - optional = F [t_io] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -658,7 +585,6 @@ type = real kind = kind_phys intent = inout - optional = F [rn_o] standard_name = lwe_thickness_of_explicit_precipitation_amount long_name = explicit precipitation (rain, ice, snow, graupel, ...) on physics timestep @@ -667,7 +593,6 @@ type = real kind = kind_phys intent = out - optional = F [sr_o] standard_name = ratio_of_snowfall_to_rainfall long_name = snow ratio: ratio of snow to total precipitation @@ -676,7 +601,6 @@ type = real kind = kind_phys intent = out - optional = F [ncpl_io] standard_name = mass_number_concentration_of_cloud_liquid_water_particles_in_air_of_new_state long_name = number concentration of cloud droplets updated by physics @@ -685,7 +609,6 @@ type = real kind = kind_phys intent = inout - optional = F [ncpi_io] standard_name = mass_number_concentration_of_cloud_ice_water_crystals_in_air_of_new_state long_name = number concentration of ice updated by physics @@ -694,7 +617,6 @@ type = real kind = kind_phys intent = inout - optional = F [fprcp] standard_name = number_of_frozen_precipitation_species long_name = number of frozen precipitation species @@ -702,7 +624,6 @@ dimensions = () type = integer intent = in - optional = F [rnw_io] standard_name = local_rain_water_mixing_ratio long_name = ratio of mass of rain water to mass of dry air plus vapor (without condensates) local to physics @@ -711,7 +632,6 @@ type = real kind = kind_phys intent = inout - optional = F [snw_io] standard_name = local_snow_water_mixing_ratio long_name = ratio of mass of snow water to mass of dry air plus vapor (without condensates) local to physics @@ -720,7 +640,6 @@ type = real kind = kind_phys intent = inout - optional = F [qgl_io] standard_name = local_graupel_mixing_ratio long_name = ratio of mass of graupel to mass of dry air plus vapor (without condensates) local to physics @@ -729,7 +648,6 @@ type = real kind = kind_phys intent = inout - optional = F [ncpr_io] standard_name = local_rain_number_concentration long_name = number concentration of rain local to physics @@ -738,7 +656,6 @@ type = real kind = kind_phys intent = inout - optional = F [ncps_io] standard_name = local_snow_number_concentration long_name = number concentration of snow local to physics @@ -747,7 +664,6 @@ type = real kind = kind_phys intent = inout - optional = F [ncgl_io] standard_name = local_graupel_number_concentration long_name = number concentration of graupel local to physics @@ -756,7 +672,6 @@ type = real kind = kind_phys intent = inout - optional = F [clls_io] standard_name = cloud_fraction_for_MG long_name = cloud fraction used by Morrison-Gettelman MP @@ -765,7 +680,6 @@ type = real kind = kind_phys intent = inout - optional = F [kcbl] standard_name = vertical_index_at_cloud_base long_name = vertical index at cloud base @@ -773,7 +687,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [cldreffl] standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle long_name = effective radius of cloud liquid water particle in micrometer @@ -782,7 +695,6 @@ type = real kind = kind_phys intent = out - optional = F [cldreffi] standard_name = effective_radius_of_stratiform_cloud_ice_particle long_name = effective radius of cloud ice water particle in micrometers @@ -791,7 +703,6 @@ type = real kind = kind_phys intent = out - optional = F [cldreffr] standard_name = effective_radius_of_stratiform_cloud_rain_particle long_name = effective radius of cloud rain particle in micrometers @@ -800,7 +711,6 @@ type = real kind = kind_phys intent = out - optional = F [cldreffs] standard_name = effective_radius_of_stratiform_cloud_snow_particle long_name = effective radius of cloud snow particle in micrometers @@ -809,7 +719,6 @@ type = real kind = kind_phys intent = out - optional = F [cldreffg] standard_name = effective_radius_of_stratiform_cloud_graupel_particle long_name = effective radius of cloud graupel particle in micrometers @@ -818,7 +727,6 @@ type = real kind = kind_phys intent = out - optional = F [ntrcaer] standard_name = number_of_aerosol_tracers_MG long_name = number of aerosol tracers for Morrison Gettelman MP @@ -826,7 +734,6 @@ dimensions = () type = integer intent = in - optional = F [aerfld_i] standard_name = mass_number_concentration_of_aerosol_from_gocart_climatology long_name = GOCART aerosol climatology number concentration @@ -835,7 +742,6 @@ type = real kind = kind_phys intent = in - optional = F [naai_i] standard_name = ice_nucleation_number_from_climatology long_name = ice nucleation number in MG MP @@ -844,7 +750,6 @@ type = real kind = kind_phys intent = in - optional = F [npccn_i] standard_name = tendency_of_activated_cloud_condensation_nuclei_from_climatology long_name = tendency of ccn activated number @@ -853,7 +758,6 @@ type = real kind = kind_phys intent = in - optional = F [iccn] standard_name = control_for_ice_cloud_condensation_nuclei_forcing long_name = flag for IN and CCN forcing for morrison gettelman microphysics @@ -861,7 +765,6 @@ dimensions = () type = integer intent = in - optional = F [skip_macro] standard_name = flag_skip_macro long_name = flag to skip cloud macrophysics in Morrison scheme @@ -869,7 +772,6 @@ dimensions = () type = logical intent = in - optional = F [alf_fac] standard_name = alpha_tuning_coefficient_for_morrison_gettelman_microphysics_scheme long_name = tuning factor for alphas (alpha = 1 - critical relative humidity) @@ -878,7 +780,6 @@ type = real kind = kind_phys intent = in - optional = F [qc_min] standard_name = minimum_cloud_condensate_mixing_ratio_threshold long_name = minimum cloud condensed water and ice mixing ratio in MG macro clouds @@ -887,7 +788,6 @@ type = real kind = kind_phys intent = in - optional = F [pdfflag] standard_name = control_for_pdf_shape_for_microphysics long_name = pdf flag for MG macrophysics @@ -895,7 +795,6 @@ dimensions = () type = integer intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -903,7 +802,6 @@ dimensions = () type = integer intent = in - optional = F [xlat] standard_name = latitude long_name = latitude @@ -912,7 +810,6 @@ type = real kind = kind_phys intent = in - optional = F [xlon] standard_name = longitude long_name = longitude @@ -921,7 +818,6 @@ type = real kind = kind_phys intent = in - optional = F [rhc_i] standard_name = critical_relative_humidity long_name = critical relative humidity @@ -930,7 +826,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -939,7 +834,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -947,4 +841,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/m_micro_interstitial.meta b/physics/m_micro_interstitial.meta index 7894c3d52..031ebbe5a 100644 --- a/physics/m_micro_interstitial.meta +++ b/physics/m_micro_interstitial.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [do_shoc] standard_name = flag_for_shoc long_name = flag for SHOC @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [skip_macro] standard_name = flag_skip_macro long_name = flag to skip cloud macrophysics in Morrison scheme @@ -38,7 +35,6 @@ dimensions = () type = logical intent = inout - optional = F [fprcp] standard_name = number_of_frozen_precipitation_species long_name = number of frozen precipitation species @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [mg3_as_mg2] standard_name = flag_mg3_as_mg2 long_name = flag for controlling prep for Morrison-Gettelman microphysics @@ -54,7 +49,6 @@ dimensions = () type = logical intent = in - optional = F [gq0_ice] standard_name = cloud_ice_mixing_ratio_of_new_state long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) updated by physics @@ -63,7 +57,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0_water] standard_name = cloud_liquid_water_mixing_ratio_of_new_state long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) updated by physics @@ -72,7 +65,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0_rain] standard_name = rain_mixing_ratio_of_new_state long_name = ratio of mass of rain water to mass of dry air plus vapor (without condensates) updated by physics @@ -81,7 +73,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0_snow] standard_name = snow_mixing_ratio_of_new_state long_name = ratio of mass of snow water to mass of dry air plus vapor (without condensates) updated by physics @@ -90,7 +81,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0_graupel] standard_name = graupel_mixing_ratio_of_new_state long_name = ratio of mass of graupel to mass of dry air plus vapor (without condensates) updated by physics @@ -99,7 +89,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0_rain_nc] standard_name = mass_number_concentration_of_rain_of_new_state long_name = number concentration of rain updated by physics @@ -108,7 +97,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0_snow_nc] standard_name = mass_number_concentration_of_snow_of_new_state long_name = number concentration of snow updated by physics @@ -117,7 +105,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0_graupel_nc] standard_name = mass_number_concentration_of_graupel_of_new_state long_name = number concentration of graupel updated by physics @@ -126,7 +113,6 @@ type = real kind = kind_phys intent = in - optional = F [cld_shoc] standard_name = subgrid_scale_cloud_fraction_from_shoc long_name = subgrid-scale cloud fraction from the SHOC scheme @@ -135,7 +121,6 @@ type = real kind = kind_phys intent = in - optional = F [cnvc] standard_name = convective_cloud_cover long_name = convective cloud cover @@ -144,7 +129,6 @@ type = real kind = kind_phys intent = in - optional = F [cnvw] standard_name = convective_cloud_water_mixing_ratio long_name = moist convective cloud water mixing ratio @@ -153,7 +137,6 @@ type = real kind = kind_phys intent = in - optional = F [tcr] standard_name = cloud_phase_transition_threshold_temperature long_name = threshold temperature below which cloud starts to freeze @@ -162,7 +145,6 @@ type = real kind = kind_phys intent = in - optional = F [tcrf] standard_name = reciprocal_of_cloud_phase_transition_temperature_range long_name = denominator in cloud phase transition = 1/(tcr-tf) @@ -171,7 +153,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -180,7 +161,6 @@ type = real kind = kind_phys intent = in - optional = F [qrn] standard_name = local_rain_water_mixing_ratio long_name = ratio of mass of rain water to mass of dry air plus vapor (without condensates) local to physics @@ -189,7 +169,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsnw] standard_name = local_snow_water_mixing_ratio long_name = ratio of mass of snow water to mass of dry air plus vapor (without condensates) local to physics @@ -198,7 +177,6 @@ type = real kind = kind_phys intent = inout - optional = F [qgl] standard_name = local_graupel_mixing_ratio long_name = ratio of mass of graupel to mass of dry air plus vapor (without condensates) local to physics @@ -207,7 +185,6 @@ type = real kind = kind_phys intent = inout - optional = F [ncpr] standard_name = local_rain_number_concentration long_name = number concentration of rain local to physics @@ -216,7 +193,6 @@ type = real kind = kind_phys intent = inout - optional = F [ncps] standard_name = local_snow_number_concentration long_name = number concentration of snow local to physics @@ -225,7 +201,6 @@ type = real kind = kind_phys intent = inout - optional = F [ncgl] standard_name = local_graupel_number_concentration long_name = number concentration of graupel local to physics @@ -234,7 +209,6 @@ type = real kind = kind_phys intent = inout - optional = F [cld_frc_MG] standard_name = cloud_fraction_for_MG long_name = cloud fraction used by Morrison-Gettelman MP @@ -243,7 +217,6 @@ type = real kind = kind_phys intent = inout - optional = F [clw_water] standard_name = cloud_condensed_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -252,7 +225,6 @@ type = real kind = kind_phys intent = out - optional = F [clw_ice] standard_name = ice_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -261,7 +233,6 @@ type = real kind = kind_phys intent = out - optional = F [clcn] standard_name = convective_cloud_volume_fraction long_name = convective cloud volume fraction @@ -270,7 +241,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -279,7 +249,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -287,7 +256,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -306,7 +274,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -314,7 +281,6 @@ dimensions = () type = integer intent = in - optional = F [fprcp] standard_name = number_of_frozen_precipitation_species long_name = number of frozen precipitation species @@ -322,7 +288,6 @@ dimensions = () type = integer intent = in - optional = F [mg3_as_mg2] standard_name = flag_mg3_as_mg2 long_name = flag for controlling prep for Morrison-Gettelman microphysics @@ -330,7 +295,6 @@ dimensions = () type = logical intent = in - optional = F [ncpr] standard_name = local_rain_number_concentration long_name = number concentration of rain local to physics @@ -339,7 +303,6 @@ type = real kind = kind_phys intent = in - optional = F [ncps] standard_name = local_snow_number_concentration long_name = number concentration of snow local to physics @@ -348,7 +311,6 @@ type = real kind = kind_phys intent = in - optional = F [ncgl] standard_name = local_graupel_number_concentration long_name = number concentration of graupel local to physics @@ -357,7 +319,6 @@ type = real kind = kind_phys intent = in - optional = F [qrn] standard_name = local_rain_water_mixing_ratio long_name = ratio of mass of rain water to mass of dry air plus vapor (without condensates) local to physics @@ -366,7 +327,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsnw] standard_name = local_snow_water_mixing_ratio long_name = ratio of mass of snow water to mass of dry air plus vapor (without condensates) local to physics @@ -375,7 +335,6 @@ type = real kind = kind_phys intent = inout - optional = F [qgl] standard_name = local_graupel_mixing_ratio long_name = ratio of mass of graupel to mass of dry air plus vapor (without condensates) local to physics @@ -384,7 +343,6 @@ type = real kind = kind_phys intent = inout - optional = F [gq0_ice] standard_name = cloud_ice_mixing_ratio_of_new_state long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) updated by physics @@ -393,7 +351,6 @@ type = real kind = kind_phys intent = in - optional = F [gq0_rain] standard_name = rain_mixing_ratio_of_new_state long_name = ratio of mass of rain water to mass of dry air plus vapor (without condensates) updated by physics @@ -402,7 +359,6 @@ type = real kind = kind_phys intent = out - optional = F [gq0_snow] standard_name = snow_mixing_ratio_of_new_state long_name = ratio of mass of snow water to mass of dry air plus vapor (without condensates) updated by physics @@ -411,7 +367,6 @@ type = real kind = kind_phys intent = out - optional = F [gq0_graupel] standard_name = graupel_mixing_ratio_of_new_state long_name = ratio of mass of graupel to mass of dry air plus vapor (without condensates) updated by physics @@ -420,7 +375,6 @@ type = real kind = kind_phys intent = out - optional = F [gq0_rain_nc] standard_name = mass_number_concentration_of_rain_of_new_state long_name = number concentration of rain updated by physics @@ -429,7 +383,6 @@ type = real kind = kind_phys intent = out - optional = F [gq0_snow_nc] standard_name = mass_number_concentration_of_snow_of_new_state long_name = number concentration of snow updated by physics @@ -438,7 +391,6 @@ type = real kind = kind_phys intent = out - optional = F [gq0_graupel_nc] standard_name = mass_number_concentration_of_graupel_of_new_state long_name = number concentration of graupel updated by physics @@ -447,7 +399,6 @@ type = real kind = kind_phys intent = out - optional = F [ice] standard_name = lwe_thickness_of_ice_amount_on_dynamics_timestep long_name = ice fall at this time step @@ -456,7 +407,6 @@ type = real kind = kind_phys intent = out - optional = F [snow] standard_name = lwe_thickness_of_snow_amount_on_dynamics_timestep long_name = snow fall at this time step @@ -465,7 +415,6 @@ type = real kind = kind_phys intent = out - optional = F [graupel] standard_name = lwe_thickness_of_graupel_amount_on_dynamics_timestep long_name = graupel fall at this time step @@ -474,7 +423,6 @@ type = real kind = kind_phys intent = out - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -483,7 +431,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -492,7 +439,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -500,5 +446,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/maximum_hourly_diagnostics.meta b/physics/maximum_hourly_diagnostics.meta index 140c6390a..6ce746daa 100644 --- a/physics/maximum_hourly_diagnostics.meta +++ b/physics/maximum_hourly_diagnostics.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [reset] standard_name = flag_reset_maximum_hourly_fields long_name = flag for resetting maximum hourly fields @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [lradar] standard_name = flag_for_radar_reflectivity long_name = flag for radar reflectivity @@ -38,7 +35,6 @@ dimensions = () type = logical intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_fer_hires] standard_name = identifier_for_fer_hires_microphysics_scheme long_name = choice of Ferrier-Aligo microphysics scheme @@ -70,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -79,7 +71,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -88,7 +79,6 @@ type = real kind = kind_phys intent = in - optional = F [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -97,7 +87,6 @@ type = real kind = kind_phys intent = in - optional = F [refl_10cm] standard_name = radar_reflectivity_10cm long_name = instantaneous refl_10cm @@ -106,7 +95,6 @@ type = real kind = kind_phys intent = in - optional = F [refdmax] standard_name = maximum_reflectivity_at_1km_agl_over_maximum_hourly_time_interval long_name = maximum reflectivity at 1km agl over maximum hourly time interval @@ -115,7 +103,6 @@ type = real kind = kind_phys intent = inout - optional = F [refdmax263k] standard_name = maximum_reflectivity_at_minus10c_over_maximum_hourly_time_interval long_name = maximum reflectivity at minus10c over maximum hourly time interval @@ -124,7 +111,6 @@ type = real kind = kind_phys intent = inout - optional = F [u10m] standard_name = x_wind_at_10m long_name = 10 meter u wind speed @@ -133,7 +119,6 @@ type = real kind = kind_phys intent = in - optional = F [v10m] standard_name = y_wind_at_10m long_name = 10 meter v wind speed @@ -142,7 +127,6 @@ type = real kind = kind_phys intent = in - optional = F [u10max] standard_name = maximum_u_wind_at_10m_over_maximum_hourly_time_interval long_name = maximum u wind at 10m over maximum hourly time interval @@ -151,7 +135,6 @@ type = real kind = kind_phys intent = inout - optional = F [v10max] standard_name = maximum_v_wind_at_10m_over_maximum_hourly_time_interval long_name = maximum v wind at 10m over maximum hourly time interval @@ -160,7 +143,6 @@ type = real kind = kind_phys intent = inout - optional = F [spd10max] standard_name = maximum_wind_at_10m_over_maximum_hourly_time_interval long_name = maximum wind at 10m over maximum hourly time interval @@ -169,7 +151,6 @@ type = real kind = kind_phys intent = inout - optional = F [pgr] standard_name = surface_air_pressure long_name = surface pressure @@ -178,7 +159,6 @@ type = real kind = kind_phys intent = in - optional = F [t2m] standard_name = air_temperature_at_2m long_name = 2 meter temperature @@ -187,7 +167,6 @@ type = real kind = kind_phys intent = in - optional = F [q2m] standard_name = specific_humidity_at_2m long_name = 2 meter specific humidity @@ -196,7 +175,6 @@ type = real kind = kind_phys intent = in - optional = F [t02max] standard_name = maximum_temperature_at_2m_over_maximum_hourly_time_interval long_name = maximum temperature at 2m over maximum hourly time interval @@ -205,7 +183,6 @@ type = real kind = kind_phys intent = inout - optional = F [t02min] standard_name = minimum_temperature_at_2m_over_maximum_hourly_time_interval long_name = minumum temperature at 2m over maximum hourly time interval @@ -214,7 +191,6 @@ type = real kind = kind_phys intent = inout - optional = F [rh02max] standard_name = maximum_relative_humidity_at_2m_over_maximum_hourly_time_interval long_name = maximum relative humidity at 2m over maximum hourly time interval @@ -223,7 +199,6 @@ type = real kind = kind_phys intent = inout - optional = F [rh02min] standard_name = minimum_relative_humidity_at_2m_over_maximum_hourly_time_interval long_name = minumum relative humidity at 2m over maximum hourly time interval @@ -232,7 +207,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -241,7 +215,6 @@ type = real kind = kind_phys intent = in - optional = F [rain] standard_name = lwe_thickness_of_precipitation_amount_on_dynamics_timestep long_name = total rain at this time step @@ -250,7 +223,6 @@ type = real kind = kind_phys intent = inout - optional = F [pratemax] standard_name = maximum_precipitation_rate_over_maximum_hourly_time_interval long_name = maximum precipitation rate over maximum hourly time interval @@ -259,7 +231,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -268,7 +239,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -276,4 +246,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/module_MYJPBL_wrapper.meta b/physics/module_MYJPBL_wrapper.meta index 08ac65749..f5c43e1e9 100644 --- a/physics/module_MYJPBL_wrapper.meta +++ b/physics/module_MYJPBL_wrapper.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = logical intent = in - optional = F [do_myjsfc] standard_name = flag_for_mellor_yamada_janic_surface_layer_scheme long_name = flag for MYJ surface layer scheme @@ -52,7 +48,6 @@ dimensions = () type = logical intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -68,7 +62,6 @@ dimensions = () type = integer intent = in - optional = F [dt_phs] standard_name = timestep_for_physics long_name = time step for physics @@ -77,7 +70,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current time step index @@ -85,7 +77,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_vertical_diffusion_tracers long_name = number of tracers to diffuse vertically @@ -93,7 +84,6 @@ dimensions = () type = integer intent = in - optional = F [ntke] standard_name = index_of_turbulent_kinetic_energy_in_tracer_concentration_array long_name = tracer index for turbulent kinetic energy @@ -101,7 +91,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = cloud condensate index in tracer array @@ -109,7 +98,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -117,7 +105,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -125,7 +112,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -133,7 +119,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -141,7 +126,6 @@ dimensions = () type = integer intent = in - optional = F [ugrs] standard_name = x_wind long_name = x component of layer wind @@ -150,7 +134,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs] standard_name = y_wind long_name = y component of layer wind @@ -159,7 +142,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = layer mean air temperature @@ -168,7 +150,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs] standard_name = vertically_diffused_tracer_concentration long_name = tracer concentration diffused by PBL scheme @@ -177,7 +158,6 @@ type = real kind = kind_phys intent = inout - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -186,7 +166,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -195,7 +174,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -204,7 +182,6 @@ type = real kind = kind_phys intent = in - optional = F [hprime1] standard_name = standard_deviation_of_subgrid_orography long_name = standard deviation of subgrid height_above_mean_sea_level @@ -213,7 +190,6 @@ type = real kind = kind_phys intent = in - optional = F [prsik_1] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at lowest model interface @@ -222,7 +198,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk_1] standard_name = dimensionless_exner_function_at_surface_adjacent_layer long_name = dimensionless Exner function at lowest model layer @@ -231,7 +206,6 @@ type = real kind = kind_phys intent = in - optional = F [prslki] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -240,7 +214,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc] standard_name = surface_skin_temperature long_name = surface temperature @@ -249,7 +222,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsfc] standard_name = surface_specific_humidity long_name = surface air saturation specific humidity @@ -258,7 +230,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_qsfc] standard_name = surface_specific_humidity_for_MYJ_schemes long_name = surface air saturation specific humidity for MYJ schem @@ -267,7 +238,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_thz0] standard_name = air_potential_temperature_at_top_of_viscous_sublayer long_name = potential temperat at viscous sublayer top over water @@ -276,7 +246,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_qz0] standard_name = specific_humidity_at_top_of_viscous_sublayer long_name = specific humidity at_viscous sublayer top over water @@ -285,7 +254,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_uz0] standard_name = x_wind_at_top_of_viscous_sublayer long_name = u wind component at viscous sublayer top over water @@ -294,7 +262,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_vz0] standard_name = y_wind_at_top_of_viscous_sublayer long_name = v wind component at viscous sublayer top over water @@ -303,7 +270,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_z0base] standard_name = baseline_surface_roughness_length long_name = baseline surface roughness length for momentum in mete @@ -312,7 +278,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_akhs] standard_name = heat_exchange_coefficient_for_MYJ_schemes long_name = surface heat exchange_coefficient for MYJ schemes @@ -321,7 +286,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_akms] standard_name = momentum_exchange_coefficient_for_MYJ_schemes long_name = surface momentum exchange_coefficient for MYJ schemes @@ -330,7 +294,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_chkqlm] standard_name = control_for_surface_layer_evaporation long_name = surface layer evaporation switch @@ -339,7 +302,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_elflx] standard_name = surface_upward_specific_humidity_flux_for_mellor_yamada_janic_surface_layer_scheme long_name = kinematic surface latent heat flux @@ -348,7 +310,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_a1u] standard_name = weight_for_momentum_at_top_of_viscous_sublayer long_name = Weight for momentum at viscous layer top @@ -357,7 +318,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_a1t] standard_name = weight_for_potental_temperature_at_top_of_viscous_sublayer long_name = Weight for potental temperature at viscous layer top @@ -366,7 +326,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_a1q] standard_name = weight_for_specific_humidity_at_top_of_viscous_sublayer long_name = Weight for Specfic Humidity at viscous layer top @@ -375,7 +334,6 @@ type = real kind = kind_phys intent = inout - optional = F [pblh] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -384,7 +342,6 @@ type = real kind = kind_phys intent = out - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = PBL top model level index @@ -392,7 +349,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [kinver] standard_name = index_of_highest_temperature_inversion long_name = index of highest temperature inversion @@ -400,7 +356,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -409,7 +364,6 @@ type = real kind = kind_phys intent = in - optional = F [garea] standard_name = cell_area long_name = area of the grid cell @@ -418,7 +372,6 @@ type = real kind = kind_phys intent = in - optional = F [ustar] standard_name = surface_friction_velocity long_name = boundary layer parameter @@ -427,7 +380,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm] standard_name = surface_drag_coefficient_for_momentum_in_air long_name = surface exchange coeff for momentum @@ -436,7 +388,6 @@ type = real kind = kind_phys intent = in - optional = F [ch] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air long_name = surface exchange coeff heat & moisture @@ -445,7 +396,6 @@ type = real kind = kind_phys intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -454,7 +404,6 @@ type = real kind = kind_phys intent = in - optional = F [snowd] standard_name = lwe_surface_snow long_name = water equivalent snow depth over land @@ -463,7 +412,6 @@ type = real kind = kind_phys intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length in cm @@ -472,7 +420,6 @@ type = real kind = kind_phys intent = inout - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -481,7 +428,6 @@ type = real kind = kind_phys intent = in - optional = F [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -490,7 +436,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind @@ -499,7 +444,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = updated tendency of the y wind @@ -508,7 +452,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -517,7 +460,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqdt] standard_name = tendency_of_vertically_diffused_tracer_concentration long_name = updated tendency of the tracers PBL vertical diff @@ -526,7 +468,6 @@ type = real kind = kind_phys intent = inout - optional = F [dusfc] standard_name = instantaneous_surface_x_momentum_flux long_name = x momentum flux @@ -535,7 +476,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc] standard_name = instantaneous_surface_y_momentum_flux long_name = y momentum flux @@ -544,7 +484,6 @@ type = real kind = kind_phys intent = out - optional = F [dtsfc] standard_name = instantaneous_surface_upward_sensible_heat_flux long_name = surface upward sensible heat flux @@ -553,7 +492,6 @@ type = real kind = kind_phys intent = out - optional = F [dqsfc] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux @@ -562,7 +500,6 @@ type = real kind = kind_phys intent = out - optional = F [dkt] standard_name = atmosphere_heat_diffusivity long_name = atmospheric heat diffusivity @@ -571,7 +508,6 @@ type = real kind = kind_phys intent = out - optional = F [xkzm_m] standard_name = atmosphere_momentum_diffusivity_due_to_background long_name = background value of momentum diffusivity @@ -580,7 +516,6 @@ type = real kind = kind_phys intent = in - optional = F [xkzm_h] standard_name = atmosphere_heat_diffusivity_due_to_background long_name = background value of heat diffusivity @@ -589,7 +524,6 @@ type = real kind = kind_phys intent = in - optional = F [xkzm_s] standard_name = sigma_pressure_threshold_at_upper_extent_of_background_diffusion long_name = sigma level threshold for background diffusivity @@ -598,7 +532,6 @@ type = real kind = kind_phys intent = in - optional = F [gamt] standard_name = countergradient_mixing_term_for_temperature long_name = countergradient mixing term for temperature @@ -607,7 +540,6 @@ type = real kind = kind_phys intent = out - optional = F [gamq] standard_name = countergradient_mixing_term_for_water_vapor long_name = countergradient mixing term for water vapor @@ -616,7 +548,6 @@ type = real kind = kind_phys intent = out - optional = F [con_cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -625,7 +556,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -634,7 +564,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -643,7 +572,6 @@ type = real kind = kind_phys intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -651,7 +579,6 @@ dimensions = () type = integer intent = in - optional = F [lprnt] standard_name = flag_print long_name = control flag for diagnostic print out @@ -659,7 +586,6 @@ dimensions = () type = logical intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -668,7 +594,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -676,7 +601,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -684,7 +608,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -692,7 +615,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -700,7 +622,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_pbl] standard_name = index_of_subgrid_scale_vertical_mixing_process_in_cumulative_change_index long_name = index of subgrid scale vertical mixing process in second dimension of array cumulative change index @@ -708,7 +629,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -716,7 +636,6 @@ dimensions = () type = integer intent = in - optional = F [gen_tend] standard_name = flag_for_generic_tendency_due_to_planetary_boundary_layer long_name = true if GFS_PBL_generic should calculate tendencies @@ -739,7 +658,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -747,4 +665,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/module_MYJSFC_wrapper.meta b/physics/module_MYJSFC_wrapper.meta index 4f909ef91..efdf3e248 100644 --- a/physics/module_MYJSFC_wrapper.meta +++ b/physics/module_MYJSFC_wrapper.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = logical intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current time step index @@ -68,7 +62,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -76,7 +69,6 @@ dimensions = () type = integer intent = in - optional = F [ntke] standard_name = index_of_turbulent_kinetic_energy_in_tracer_concentration_array long_name = tracer index for turbulent kinetic energy @@ -84,7 +76,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = cloud condensate index in tracer array @@ -92,7 +83,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -100,7 +90,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -108,7 +97,6 @@ dimensions = () type = integer intent = in - optional = F [ntsw] standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water @@ -116,7 +104,6 @@ dimensions = () type = integer intent = in - optional = F [ntgl] standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel @@ -124,7 +111,6 @@ dimensions = () type = integer intent = in - optional = F [iter] standard_name = ccpp_loop_counter long_name = loop counter for subcycling loops in CCPP @@ -132,7 +118,6 @@ dimensions = () type = integer intent = in - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -140,7 +125,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [ugrs] standard_name = x_wind long_name = x component of layer wind @@ -149,7 +133,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs] standard_name = y_wind long_name = y component of layer wind @@ -158,7 +141,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = layer mean air temperature @@ -167,7 +149,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs] standard_name = tracer_concentration long_name = model layer mean tracer concentration @@ -176,7 +157,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -185,7 +165,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -194,7 +173,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -203,7 +181,6 @@ type = real kind = kind_phys intent = in - optional = F [prsik_1] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at lowest model interface @@ -212,7 +189,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk_1] standard_name = dimensionless_exner_function_at_surface_adjacent_layer long_name = dimensionless Exner function at lowest model layer @@ -221,7 +197,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc] standard_name = surface_skin_temperature long_name = surface temperature @@ -230,7 +205,6 @@ type = real kind = kind_phys intent = in - optional = F [qsfc] standard_name = surface_specific_humidity long_name = surface air saturation specific humidity @@ -239,7 +213,6 @@ type = real kind = kind_phys intent = in - optional = F [phy_myj_qsfc] standard_name = surface_specific_humidity_for_MYJ_schemes long_name = surface air saturation specific humidity for MYJ schem @@ -248,7 +221,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_thz0] standard_name = air_potential_temperature_at_top_of_viscous_sublayer long_name = potential temperat at viscous sublayer top over water @@ -257,7 +229,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_qz0] standard_name = specific_humidity_at_top_of_viscous_sublayer long_name = specific humidity at_viscous sublayer top over water @@ -266,7 +237,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_uz0] standard_name = x_wind_at_top_of_viscous_sublayer long_name = u wind component at viscous sublayer top over water @@ -275,7 +245,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_vz0] standard_name = y_wind_at_top_of_viscous_sublayer long_name = v wind component at viscous sublayer top over water @@ -284,7 +253,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_z0base] standard_name = baseline_surface_roughness_length long_name = baseline surface roughness length for momentum in mete @@ -293,7 +261,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_akhs] standard_name = heat_exchange_coefficient_for_MYJ_schemes long_name = surface heat exchange_coefficient for MYJ schemes @@ -302,7 +269,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_akms] standard_name = momentum_exchange_coefficient_for_MYJ_schemes long_name = surface momentum exchange_coefficient for MYJ schemes @@ -311,7 +277,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_chkqlm] standard_name = control_for_surface_layer_evaporation long_name = surface layer evaporation switch @@ -320,7 +285,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_elflx] standard_name = surface_upward_specific_humidity_flux_for_mellor_yamada_janic_surface_layer_scheme long_name = kinematic surface latent heat flux @@ -329,7 +293,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_a1u] standard_name = weight_for_momentum_at_top_of_viscous_sublayer long_name = Weight for momentum at viscous layer top @@ -338,7 +301,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_a1t] standard_name = weight_for_potental_temperature_at_top_of_viscous_sublayer long_name = Weight for potental temperature at viscous layer top @@ -347,7 +309,6 @@ type = real kind = kind_phys intent = inout - optional = F [phy_myj_a1q] standard_name = weight_for_specific_humidity_at_top_of_viscous_sublayer long_name = Weight for Specfic Humidity at viscous layer top @@ -356,7 +317,6 @@ type = real kind = kind_phys intent = inout - optional = F [pblh] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -365,7 +325,6 @@ type = real kind = kind_phys intent = inout - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -374,7 +333,6 @@ type = real kind = kind_phys intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length @@ -383,7 +341,6 @@ type = real kind = kind_phys intent = inout - optional = F [ustar] standard_name = surface_friction_velocity long_name = boundary layer parameter @@ -392,7 +349,6 @@ type = real kind = kind_phys intent = inout - optional = F [rib] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -401,7 +357,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm] standard_name = surface_drag_coefficient_for_momentum_in_air long_name = surface exchange coeff for momentum @@ -410,7 +365,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air long_name = surface exchange coeff heat & moisture @@ -419,7 +373,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress] standard_name = surface_wind_stress long_name = surface wind stress @@ -428,7 +381,6 @@ type = real kind = kind_phys intent = inout - optional = F [ffm] standard_name = Monin_Obukhov_similarity_function_for_momentum long_name = Monin_Obukhov similarity function for momentum @@ -437,7 +389,6 @@ type = real kind = kind_phys intent = inout - optional = F [ffh] standard_name = Monin_Obukhov_similarity_function_for_heat long_name = Monin_Obukhov similarity function for heat @@ -446,7 +397,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m long_name = Monin_Obukhov similarity parameter for momentum at 10m @@ -455,7 +405,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m long_name = Monin_Obukhov similarity parameter for heat at 2m @@ -464,7 +413,6 @@ type = real kind = kind_phys intent = inout - optional = F [landfrac] standard_name = land_area_fraction long_name = fraction of horizontal grid area occupied by land @@ -473,7 +421,6 @@ type = real kind = kind_phys intent = inout - optional = F [lakefrac] standard_name = lake_area_fraction long_name = fraction of horizontal grid area occupied by lake @@ -482,7 +429,6 @@ type = real kind = kind_phys intent = inout - optional = F [oceanfrac] standard_name = sea_area_fraction long_name = fraction of horizontal grid area occupied by ocean @@ -491,7 +437,6 @@ type = real kind = kind_phys intent = inout - optional = F [fice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -500,7 +445,6 @@ type = real kind = kind_phys intent = inout - optional = F [z0rl_wat] standard_name = surface_roughness_length_over_water long_name = surface roughness length over water (interstitial) @@ -509,7 +453,6 @@ type = real kind = kind_phys intent = inout - optional = F [z0rl_lnd] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land (interstitial) @@ -518,7 +461,6 @@ type = real kind = kind_phys intent = inout - optional = F [z0rl_ice] standard_name = surface_roughness_length_over_ice long_name = surface roughness length over ice (interstitial) @@ -527,7 +469,6 @@ type = real kind = kind_phys intent = inout - optional = F [ustar_wat] standard_name = surface_friction_velocity_over_water long_name = surface friction velocity over water @@ -536,7 +477,6 @@ type = real kind = kind_phys intent = inout - optional = F [ustar_lnd] standard_name = surface_friction_velocity_over_land long_name = surface friction velocity over land @@ -545,7 +485,6 @@ type = real kind = kind_phys intent = inout - optional = F [ustar_ice] standard_name = surface_friction_velocity_over_ice long_name = surface friction velocity over ice @@ -554,7 +493,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm_wat] standard_name = surface_drag_coefficient_for_momentum_in_air_over_water long_name = surface exchange coeff for momentum over water @@ -563,7 +501,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm_lnd] standard_name = surface_drag_coefficient_for_momentum_in_air_over_land long_name = surface exchange coeff for momentum over land @@ -572,7 +509,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm_ice] standard_name = surface_drag_coefficient_for_momentum_in_air_over_ice long_name = surface exchange coeff for momentum over ice @@ -581,7 +517,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_wat] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water @@ -590,7 +525,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_lnd] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land long_name = surface exchange coeff heat & moisture over land @@ -599,7 +533,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_ice] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ice long_name = surface exchange coeff heat & moisture over ice @@ -608,7 +541,6 @@ type = real kind = kind_phys intent = inout - optional = F [rb_wat] standard_name = bulk_richardson_number_at_lowest_model_level_over_water long_name = bulk Richardson number at the surface over water @@ -617,7 +549,6 @@ type = real kind = kind_phys intent = inout - optional = F [rb_lnd] standard_name = bulk_richardson_number_at_lowest_model_level_over_land long_name = bulk Richardson number at the surface over land @@ -626,7 +557,6 @@ type = real kind = kind_phys intent = inout - optional = F [rb_ice] standard_name = bulk_richardson_number_at_lowest_model_level_over_ice long_name = bulk Richardson number at the surface over ice @@ -635,7 +565,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_wat] standard_name = surface_wind_stress_over_water long_name = surface wind stress over water @@ -644,7 +573,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_lnd] standard_name = surface_wind_stress_over_land long_name = surface wind stress over land @@ -653,7 +581,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_ice] standard_name = surface_wind_stress_over_ice long_name = surface wind stress over ice @@ -662,7 +589,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_wat] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_water long_name = Monin-Obukhov similarity funct for momentum over water @@ -671,7 +597,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_lnd] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_land long_name = Monin-Obukhov similarity funct for momentum over land @@ -680,7 +605,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_ice] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_ice long_name = Monin-Obukhov similarity funct for momentum over ice @@ -689,7 +613,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_wat] standard_name = Monin_Obukhov_similarity_function_for_heat_over_water long_name = Monin-Obukhov similarity function for heat over water @@ -698,7 +621,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_lnd] standard_name = Monin_Obukhov_similarity_function_for_heat_over_land long_name = Monin-Obukhov similarity function for heat over land @@ -707,7 +629,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_ice] standard_name = Monin_Obukhov_similarity_function_for_heat_over_ice long_name = Monin-Obukhov similarity function for heat over ice @@ -716,7 +637,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_wat] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_water long_name = Monin-Obukhov parameter for momentum at 10m over water @@ -725,7 +645,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_lnd] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_land long_name = Monin-Obukhov parameter for momentum at 10m over land @@ -734,7 +653,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_ice] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_ice long_name = Monin-Obukhov parameter for momentum at 10m over ice @@ -743,7 +661,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_wat] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_water long_name = Monin-Obukhov parameter for heat at 2m over water @@ -752,7 +669,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_lnd] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_land long_name = Monin-Obukhov parameter for heat at 2m over land @@ -761,7 +677,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_ice] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_ice long_name = Monin-Obukhov parameter for heat at 2m over ice @@ -770,7 +685,6 @@ type = real kind = kind_phys intent = inout - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -779,7 +693,6 @@ type = real kind = kind_phys intent = inout - optional = F [con_cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -788,7 +701,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -797,7 +709,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -806,7 +717,6 @@ type = real kind = kind_phys intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -814,7 +724,6 @@ dimensions = () type = integer intent = in - optional = F [lprnt] standard_name = flag_print long_name = control flag for diagnostic print out @@ -822,7 +731,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -831,7 +739,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -839,4 +746,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/module_MYNNPBL_wrapper.meta b/physics/module_MYNNPBL_wrapper.meta index e88975aff..7e778a754 100644 --- a/physics/module_MYNNPBL_wrapper.meta +++ b/physics/module_MYNNPBL_wrapper.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [lheatstrg] standard_name = flag_for_canopy_heat_storage_in_land_surface_scheme long_name = flag for canopy heat storage parameterization @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -31,7 +29,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -39,7 +36,6 @@ dimensions = () type = integer intent = out - optional = F ##################################################################### [ccpp-arg-table] @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [flag_init] standard_name = flag_for_first_timestep long_name = flag signaling first time step for time integration loop @@ -68,7 +62,6 @@ dimensions = () type = logical intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -76,7 +69,6 @@ dimensions = () type = logical intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -85,7 +77,6 @@ type = real kind = kind_phys intent = in - optional = F [g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -94,7 +85,6 @@ type = real kind = kind_phys intent = in - optional = F [r_d] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -103,7 +93,6 @@ type = real kind = kind_phys intent = in - optional = F [r_v] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -112,7 +101,6 @@ type = real kind = kind_phys intent = in - optional = F [cpv] standard_name = specific_heat_of_water_vapor_at_constant_pressure long_name = specific heat of water vapor at constant pressure @@ -121,7 +109,6 @@ type = real kind = kind_phys intent = in - optional = F [cliq] standard_name = specific_heat_of_liquid_water_at_constant_pressure long_name = specific heat of liquid water at constant pressure @@ -130,7 +117,6 @@ type = real kind = kind_phys intent = in - optional = F [Cice] standard_name = specific_heat_of_ice_at_constant_pressure long_name = specific heat of ice at constant pressure @@ -139,7 +125,6 @@ type = real kind = kind_phys intent = in - optional = F [rcp] standard_name = ratio_of_gas_constant_dry_air_to_specific_heat_of_dry_air_at_constant_pressure long_name = (rd/cp) @@ -148,7 +133,6 @@ type = real kind = kind_phys intent = in - optional = F [XLV] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -157,7 +141,6 @@ type = real kind = kind_phys intent = in - optional = F [XLF] standard_name = latent_heat_of_fusion_of_water_at_0C long_name = latent heat of fusion @@ -166,7 +149,6 @@ type = real kind = kind_phys intent = in - optional = F [EP_1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -175,7 +157,6 @@ type = real kind = kind_phys intent = in - optional = F [EP_2] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -184,7 +165,6 @@ type = real kind = kind_phys intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -192,7 +172,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -200,7 +179,6 @@ dimensions = () type = logical intent = in - optional = F [qdiag3d] standard_name = flag_for_tracer_diagnostics_3D long_name = flag for 3d tracer diagnostic fields @@ -208,7 +186,6 @@ dimensions = () type = logical intent = in - optional = F [lsidea] standard_name = flag_for_integrated_dynamics_through_earths_atmosphere long_name = flag for idealized physics @@ -216,7 +193,6 @@ dimensions = () type = logical intent = in - optional = F [cplflx] standard_name = flag_for_surface_flux_coupling long_name = flag controlling cplflx collection (default off) @@ -224,7 +200,6 @@ dimensions = () type = logical intent = in - optional = F [delt] standard_name = timestep_for_physics long_name = time step for physics @@ -233,7 +208,6 @@ type = real kind = kind_phys intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -242,7 +216,6 @@ type = real kind = kind_phys intent = in - optional = F [dx] standard_name = characteristic_grid_lengthscale long_name = size of the grid cell @@ -251,7 +224,6 @@ type = real kind = kind_phys intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length in cm @@ -260,7 +232,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -269,7 +240,6 @@ type = real kind = kind_phys intent = in - optional = F [U] standard_name = x_wind long_name = x component of layer wind @@ -278,7 +248,6 @@ type = real kind = kind_phys intent = in - optional = F [V] standard_name = y_wind long_name = y component of layer wind @@ -287,7 +256,6 @@ type = real kind = kind_phys intent = in - optional = F [omega] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -296,7 +264,6 @@ type = real kind = kind_phys intent = in - optional = F [T3D] standard_name = air_temperature long_name = layer mean air temperature @@ -305,7 +272,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_water_vapor] standard_name = specific_humidity long_name = water vapor specific humidity @@ -314,7 +280,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_liquid_cloud] standard_name = cloud_liquid_water_mixing_ratio long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) @@ -323,7 +288,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_ice_cloud] standard_name = cloud_ice_mixing_ratio long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) @@ -332,7 +296,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_cloud_droplet_num_conc] standard_name = mass_number_concentration_of_cloud_liquid_water_particles_in_air long_name = number concentration of cloud droplets (liquid) @@ -341,7 +304,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_cloud_ice_num_conc] standard_name = mass_number_concentration_of_cloud_ice_water_crystals_in_air long_name = number concentration of ice @@ -350,7 +312,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_ozone] standard_name = ozone_mixing_ratio long_name = ozone mixing ratio @@ -359,7 +320,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_water_aer_num_conc] standard_name = mass_number_concentration_of_hygroscopic_aerosols long_name = number concentration of water-friendly aerosols @@ -368,7 +328,6 @@ type = real kind = kind_phys intent = in - optional = F [qgrs_ice_aer_num_conc] standard_name = mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols long_name = number concentration of ice-friendly aerosols @@ -377,7 +336,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -386,7 +344,6 @@ type = real kind = kind_phys intent = in - optional = F [exner] standard_name = dimensionless_exner_function long_name = Exner function at layers @@ -395,7 +352,6 @@ type = real kind = kind_phys intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -404,7 +360,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf] standard_name = surface_skin_temperature long_name = surface temperature @@ -413,7 +368,6 @@ type = real kind = kind_phys intent = in - optional = F [qsfc] standard_name = surface_specific_humidity long_name = surface air saturation specific humidity @@ -422,7 +376,6 @@ type = real kind = kind_phys intent = in - optional = F [ps] standard_name = surface_air_pressure long_name = surface pressure @@ -431,7 +384,6 @@ type = real kind = kind_phys intent = in - optional = F [ust] standard_name = surface_friction_velocity long_name = boundary layer parameter @@ -440,7 +392,6 @@ type = real kind = kind_phys intent = in - optional = F [ch] standard_name = surface_drag_wind_speed_for_momentum_in_air long_name = momentum exchange coefficient @@ -449,7 +400,6 @@ type = real kind = kind_phys intent = out - optional = F [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -458,7 +408,6 @@ type = real kind = kind_phys intent = in - optional = F [qflx] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -467,7 +416,6 @@ type = real kind = kind_phys intent = in - optional = F [wspd] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -476,7 +424,6 @@ type = real kind = kind_phys intent = in - optional = F [rb] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -485,7 +432,6 @@ type = real kind = kind_phys intent = in - optional = F [dtsfc1] standard_name = instantaneous_surface_upward_sensible_heat_flux long_name = surface upward sensible heat flux valid for current call @@ -494,7 +440,6 @@ type = real kind = kind_phys intent = out - optional = F [dqsfc1] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux valid for current call @@ -503,7 +448,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfc1] standard_name = instantaneous_surface_x_momentum_flux long_name = surface momentum flux in the x-direction valid for current call @@ -512,7 +456,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc1] standard_name = instantaneous_surface_y_momentum_flux long_name = surface momentum flux in the y-direction valid for current call @@ -521,7 +464,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfci_diag] standard_name = instantaneous_surface_x_momentum_flux_for_diag long_name = instantaneous sfc x momentum flux multiplied by timestep @@ -530,7 +472,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfci_diag] standard_name = instantaneous_surface_y_momentum_flux_for_diag long_name = instantaneous sfc y momentum flux multiplied by timestep @@ -539,7 +480,6 @@ type = real kind = kind_phys intent = out - optional = F [dtsfci_diag] standard_name = instantaneous_surface_upward_sensible_heat_flux_for_diag long_name = instantaneous sfc sensible heat flux multiplied by timestep @@ -548,7 +488,6 @@ type = real kind = kind_phys intent = out - optional = F [dqsfci_diag] standard_name = instantaneous_surface_upward_latent_heat_flux_for_diag long_name = instantaneous sfc latent heat flux multiplied by timestep @@ -557,7 +496,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfc_diag] standard_name = cumulative_surface_x_momentum_flux_for_diag_multiplied_by_timestep long_name = cumulative sfc x momentum flux multiplied by timestep @@ -566,7 +504,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvsfc_diag] standard_name = cumulative_surface_y_momentum_flux_for_diag_multiplied_by_timestep long_name = cumulative sfc y momentum flux multiplied by timestep @@ -575,7 +512,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtsfc_diag] standard_name = cumulative_surface_upward_sensible_heat_flux_for_diag_multiplied_by_timestep long_name = cumulative sfc sensible heat flux multiplied by timestep @@ -584,7 +520,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqsfc_diag] standard_name = cumulative_surface_upward_latent_heat_flux_for_diag_multiplied_by_timestep long_name = cumulative sfc latent heat flux multiplied by timestep @@ -593,7 +528,6 @@ type = real kind = kind_phys intent = inout - optional = F [dusfc_cice] standard_name = surface_x_momentum_flux_from_coupled_process long_name = sfc x momentum flux for coupling @@ -602,7 +536,6 @@ type = real kind = kind_phys intent = in - optional = F [dvsfc_cice] standard_name = surface_y_momentum_flux_from_coupled_process long_name = sfc y momentum flux for coupling @@ -611,7 +544,6 @@ type = real kind = kind_phys intent = in - optional = F [dtsfc_cice] standard_name = surface_upward_sensible_heat_flux_from_coupled_process long_name = sfc sensible heat flux for coupling @@ -620,7 +552,6 @@ type = real kind = kind_phys intent = in - optional = F [dqsfc_cice] standard_name = surface_upward_latent_heat_flux_from_coupled_process long_name = sfc latent heat flux for coupling @@ -629,7 +560,6 @@ type = real kind = kind_phys intent = in - optional = F [hflx_wat] standard_name = kinematic_surface_upward_sensible_heat_flux_over_water long_name = kinematic surface upward sensible heat flux over water @@ -638,7 +568,6 @@ type = real kind = kind_phys intent = in - optional = F [qflx_wat] standard_name = kinematic_surface_upward_latent_heat_flux_over_water long_name = kinematic surface upward latent heat flux over water @@ -647,7 +576,6 @@ type = real kind = kind_phys intent = in - optional = F [stress_wat] standard_name = surface_wind_stress_over_water long_name = surface wind stress over water @@ -656,7 +584,6 @@ type = real kind = kind_phys intent = in - optional = F [oceanfrac] standard_name = sea_area_fraction long_name = fraction of horizontal grid area occupied by ocean @@ -665,7 +592,6 @@ type = real kind = kind_phys intent = in - optional = F [fice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -674,7 +600,6 @@ type = real kind = kind_phys intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -682,7 +607,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -690,7 +614,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -698,7 +621,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [dusfci_cpl] standard_name = surface_x_momentum_flux_for_coupling long_name = instantaneous sfc u momentum flux @@ -707,7 +629,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvsfci_cpl] standard_name = surface_y_momentum_flux_for_coupling long_name = instantaneous sfc v momentum flux @@ -716,7 +637,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtsfci_cpl] standard_name = surface_upward_sensible_heat_flux_for_coupling long_name = instantaneous sfc sensible heat flux @@ -725,7 +645,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqsfci_cpl] standard_name = surface_upward_latent_heat_flux_for_coupling long_name = instantaneous sfc latent heat flux @@ -734,7 +653,6 @@ type = real kind = kind_phys intent = inout - optional = F [dusfc_cpl] standard_name = cumulative_surface_x_momentum_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc u momentum flux multiplied by timestep @@ -743,7 +661,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvsfc_cpl] standard_name = cumulative_surface_y_momentum_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc v momentum flux multiplied by timestep @@ -752,7 +669,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtsfc_cpl] standard_name = cumulative_surface_upward_sensible_heat_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc sensible heat flux multiplied by timestep @@ -761,7 +677,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqsfc_cpl] standard_name = cumulative_surface_upward_latent_heat_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc latent heat flux multiplied by timestep @@ -770,7 +685,6 @@ type = real kind = kind_phys intent = inout - optional = F [recmol] standard_name = reciprocal_of_obukhov_length long_name = one over obukhov length @@ -779,7 +693,6 @@ type = real kind = kind_phys intent = in - optional = F [qke] standard_name = nonadvected_turbulent_kinetic_energy_multiplied_by_2 long_name = 2 x tke at mass points @@ -788,7 +701,6 @@ type = real kind = kind_phys intent = inout - optional = F [qke_adv] standard_name = turbulent_kinetic_energy long_name = turbulent kinetic energy @@ -797,7 +709,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsq] standard_name = variance_of_air_temperature long_name = temperature fluctuation squared @@ -806,7 +717,6 @@ type = real kind = kind_phys intent = out - optional = F [qsq] standard_name = variance_of_specific_humidity long_name = water vapor fluctuation squared @@ -815,7 +725,6 @@ type = real kind = kind_phys intent = out - optional = F [cov] standard_name = covariance_of_air_temperature_and_specific_humidity long_name = covariance of temperature and moisture @@ -824,7 +733,6 @@ type = real kind = kind_phys intent = out - optional = F [el_pbl] standard_name = turbulent_mixing_length long_name = mixing length in meters @@ -833,7 +741,6 @@ type = real kind = kind_phys intent = inout - optional = F [Sh3D] standard_name = stability_function_for_heat long_name = stability function for heat @@ -842,7 +749,6 @@ type = real kind = kind_phys intent = inout - optional = F [exch_h] standard_name = atmosphere_heat_diffusivity_for_mynnpbl long_name = diffusivity for heat for MYNN PBL (defined for all mass levels) @@ -851,7 +757,6 @@ type = real kind = kind_phys intent = out - optional = F [exch_m] standard_name = atmosphere_momentum_diffusivity_for_mynnpbl long_name = diffusivity for momentum for MYNN PBL (defined for all mass levels) @@ -860,7 +765,6 @@ type = real kind = kind_phys intent = out - optional = F [PBLH] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -869,7 +773,6 @@ type = real kind = kind_phys intent = inout - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = PBL top model level index @@ -877,7 +780,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [QC_BL] standard_name = subgrid_scale_cloud_liquid_water_mixing_ratio long_name = subgrid cloud water mixing ratio from PBL scheme @@ -886,7 +788,6 @@ type = real kind = kind_phys intent = inout - optional = F [QI_BL] standard_name = subgrid_scale_cloud_ice_mixing_ratio long_name = subgrid cloud ice mixing ratio from PBL scheme @@ -895,7 +796,6 @@ type = real kind = kind_phys intent = inout - optional = F [CLDFRA_BL] standard_name = subgrid_scale_cloud_area_fraction_in_atmosphere_layer long_name = subgrid cloud fraction from PBL scheme @@ -904,7 +804,6 @@ type = real kind = kind_phys intent = inout - optional = F [edmf_a] standard_name = emdf_updraft_area long_name = updraft area from mass flux scheme @@ -913,7 +812,6 @@ type = real kind = kind_phys intent = inout - optional = F [edmf_w] standard_name = emdf_updraft_vertical_velocity long_name = updraft vertical velocity from mass flux scheme @@ -922,7 +820,6 @@ type = real kind = kind_phys intent = inout - optional = F [edmf_qt] standard_name = emdf_updraft_total_water long_name = updraft total water from mass flux scheme @@ -931,7 +828,6 @@ type = real kind = kind_phys intent = inout - optional = F [edmf_thl] standard_name = emdf_updraft_theta_l long_name = updraft theta-l from mass flux scheme @@ -940,7 +836,6 @@ type = real kind = kind_phys intent = inout - optional = F [edmf_ent] standard_name = emdf_updraft_entrainment_rate long_name = updraft entrainment rate from mass flux scheme @@ -949,7 +844,6 @@ type = real kind = kind_phys intent = inout - optional = F [edmf_qc] standard_name = emdf_updraft_cloud_water long_name = updraft cloud water from mass flux scheme @@ -958,7 +852,6 @@ type = real kind = kind_phys intent = inout - optional = F [sub_thl] standard_name = theta_subsidence_tendency long_name = updraft theta subsidence tendency @@ -967,7 +860,6 @@ type = real kind = kind_phys intent = inout - optional = F [sub_sqv] standard_name = water_vapor_subsidence_tendency long_name = updraft water vapor subsidence tendency @@ -976,7 +868,6 @@ type = real kind = kind_phys intent = inout - optional = F [det_thl] standard_name = theta_detrainment_tendency long_name = updraft theta detrainment tendency @@ -985,7 +876,6 @@ type = real kind = kind_phys intent = inout - optional = F [det_sqv] standard_name = water_vapor_detrainment_tendency long_name = updraft water vapor detrainment tendency @@ -994,7 +884,6 @@ type = real kind = kind_phys intent = inout - optional = F [nupdraft] standard_name = number_of_plumes long_name = number of plumes per grid column @@ -1002,7 +891,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [maxMF] standard_name = maximum_mass_flux long_name = maximum mass flux within a column @@ -1011,7 +899,6 @@ type = real kind = kind_phys intent = out - optional = F [ktop_plume] standard_name = k_level_of_highest_plume long_name = k-level of highest plume @@ -1019,7 +906,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind @@ -1028,7 +914,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = updated tendency of the y wind @@ -1037,7 +922,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -1046,7 +930,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqdt_water_vapor] standard_name = process_split_cumulative_tendency_of_specific_humidity long_name = water vapor specific humidity tendency due to model physics @@ -1055,7 +938,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqdt_liquid_cloud] standard_name = process_split_cumulative_tendency_of_cloud_liquid_water_mixing_ratio long_name = cloud condensed water mixing ratio tendency due to model physics @@ -1064,7 +946,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqdt_ice_cloud] standard_name = process_split_cumulative_tendency_of_cloud_ice_mixing_ratio long_name = cloud condensed water mixing ratio tendency due to model physics @@ -1073,7 +954,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqdt_ozone] standard_name = process_split_cumulative_tendency_of_ozone_mixing_ratio long_name = ozone mixing ratio tendency due to model physics @@ -1082,7 +962,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqdt_cloud_droplet_num_conc] standard_name = process_split_cumulative_tendency_of_mass_number_concentration_of_cloud_liquid_water_particles_in_air long_name = number conc. of cloud droplets (liquid) tendency due to model physics @@ -1091,7 +970,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqdt_ice_num_conc] standard_name = process_split_cumulative_tendency_of_mass_number_concentration_of_cloud_ice_water_crystals_in_air long_name = number conc. of ice tendency due to model physics @@ -1100,7 +978,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqdt_water_aer_num_conc] standard_name = process_split_cumulative_tendency_of_mass_number_concentration_of_hygroscopic_aerosols long_name = number conc. of water-friendly aerosols tendency due to model physics @@ -1109,7 +986,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqdt_ice_aer_num_conc] standard_name = process_split_cumulative_tendency_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols long_name = number conc. of ice-friendly aerosols tendency due to model physics @@ -1118,7 +994,6 @@ type = real kind = kind_phys intent = inout - optional = F [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 @@ -1126,7 +1001,6 @@ dimensions = () type = logical intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -1135,7 +1009,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -1143,7 +1016,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -1151,7 +1023,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -1159,7 +1030,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -1167,7 +1037,6 @@ dimensions = () type = integer intent = in - optional = F [ntke] standard_name = index_of_turbulent_kinetic_energy_in_tracer_concentration_array long_name = tracer index for turbulent kinetic energy @@ -1175,7 +1044,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -1183,7 +1051,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -1191,7 +1058,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -1199,7 +1065,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -1207,7 +1072,6 @@ dimensions = () type = integer intent = in - optional = F [ntlnc] standard_name = index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array long_name = tracer index for liquid number concentration @@ -1215,7 +1079,6 @@ dimensions = () type = integer intent = in - optional = F [ntinc] standard_name = index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array long_name = tracer index for ice number concentration @@ -1223,7 +1086,6 @@ dimensions = () type = integer intent = in - optional = F [ntwa] standard_name = index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array long_name = tracer index for water friendly aerosol @@ -1231,7 +1093,6 @@ dimensions = () type = integer intent = in - optional = F [ntia] standard_name = index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array long_name = tracer index for ice friendly aerosol @@ -1239,7 +1100,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_pbl] standard_name = index_of_subgrid_scale_vertical_mixing_process_in_cumulative_change_index long_name = index of subgrid scale vertical mixing process in second dimension of array cumulative change index @@ -1247,7 +1107,6 @@ dimensions = () type = integer intent = in - optional = F [htrsw] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky sw heating rate @@ -1256,7 +1115,6 @@ type = real kind = kind_phys intent = in - optional = F [htrlw] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky lw heating rate @@ -1265,7 +1123,6 @@ type = real kind = kind_phys intent = in - optional = F [xmu] standard_name = zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes long_name = zenith angle temporal adjustment factor for shortwave @@ -1274,7 +1131,6 @@ type = real kind = kind_phys intent = in - optional = F [grav_settling] standard_name = control_for_gravitational_settling_of_cloud_droplets long_name = flag to activate gravitational setting of fog @@ -1282,7 +1138,6 @@ dimensions = () type = integer intent = in - optional = F [bl_mynn_tkebudget] standard_name = control_for_tke_budget_output long_name = flag for activating TKE budget @@ -1290,7 +1145,6 @@ dimensions = () type = integer intent = in - optional = F [bl_mynn_tkeadvect] standard_name = flag_for_tke_advection long_name = flag for activating TKE advect @@ -1298,7 +1152,6 @@ dimensions = () type = logical intent = in - optional = F [bl_mynn_cloudpdf] standard_name = control_for_cloud_pdf_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to determine which cloud PDF to use @@ -1306,7 +1159,6 @@ dimensions = () type = integer intent = in - optional = F [bl_mynn_mixlength] standard_name = control_for_mixing_length_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to determine which mixing length form to use @@ -1314,7 +1166,6 @@ dimensions = () type = integer intent = in - optional = F [bl_mynn_edmf] standard_name = control_for_edmf_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate the mass-flux scheme @@ -1322,7 +1173,6 @@ dimensions = () type = integer intent = in - optional = F [bl_mynn_edmf_mom] standard_name = control_for_edmf_momentum_transport_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate the transport of momentum @@ -1330,7 +1180,6 @@ dimensions = () type = integer intent = in - optional = F [bl_mynn_edmf_tke] standard_name = control_for_edmf_tke_transport_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate the transport of TKE @@ -1338,7 +1187,6 @@ dimensions = () type = integer intent = in - optional = F [bl_mynn_edmf_part] standard_name = control_for_edmf_partitioning_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to partitioning of the MF and ED areas @@ -1346,7 +1194,6 @@ dimensions = () type = integer intent = in - optional = F [bl_mynn_cloudmix] standard_name = control_for_cloud_species_mixing_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate mixing of cloud species @@ -1354,7 +1201,6 @@ dimensions = () type = integer intent = in - optional = F [bl_mynn_mixqt] standard_name = control_for_total_water_mixing_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to mix total water or individual species @@ -1362,7 +1208,6 @@ dimensions = () type = integer intent = in - optional = F [bl_mynn_output] standard_name = control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag initialize and output extra 3D variables @@ -1370,7 +1215,6 @@ dimensions = () type = integer intent = in - optional = F [icloud_bl] standard_name = control_for_sgs_cloud_radiation_coupling_in_mellor_yamamda_nakanishi_niino_pbl_scheme long_name = flag for coupling sgs clouds to radiation @@ -1378,7 +1222,6 @@ dimensions = () type = integer intent = in - optional = F [do_mynnsfclay] standard_name = flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme long_name = flag to activate MYNN surface layer @@ -1386,7 +1229,6 @@ dimensions = () type = logical intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -1394,7 +1236,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -1402,7 +1243,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -1410,7 +1250,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_wsm6] standard_name = identifier_for_wsm6_microphysics_scheme long_name = choice of WSM6 microphysics scheme @@ -1418,7 +1257,6 @@ dimensions = () type = integer intent = in - optional = F [ltaerosol] standard_name = flag_for_aerosol_physics long_name = flag for aerosol physics @@ -1426,7 +1264,6 @@ dimensions = () type = logical intent = in - optional = F [lprnt] standard_name = flag_print long_name = control flag for diagnostic print out @@ -1434,7 +1271,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1443,7 +1279,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1451,4 +1286,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/module_MYNNSFC_wrapper.meta b/physics/module_MYNNSFC_wrapper.meta index b91a026e3..3091a0821 100644 --- a/physics/module_MYNNSFC_wrapper.meta +++ b/physics/module_MYNNSFC_wrapper.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [itimestep] standard_name = index_of_timestep long_name = current number of time steps @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [iter] standard_name = ccpp_loop_counter long_name = loop counter for subcycling loops in CCPP @@ -68,7 +62,6 @@ dimensions = () type = integer intent = in - optional = F [flag_init] standard_name = flag_for_first_timestep long_name = flag signaling first time step for time integration loop @@ -76,7 +69,6 @@ dimensions = () type = logical intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -84,7 +76,6 @@ dimensions = () type = logical intent = in - optional = F [lsm] standard_name = control_for_land_surface_scheme long_name = flag for land surface model @@ -92,7 +83,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model @@ -100,7 +90,6 @@ dimensions = () type = integer intent = in - optional = F [sigmaf] standard_name = bounded_vegetation_area_fraction long_name = areal fractional cover of green vegetation bounded on the bottom @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = in - optional = F [vegtype] standard_name = vegetation_type_classification long_name = vegetation type at each grid cell @@ -117,7 +105,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [shdmax] standard_name = max_vegetation_area_fraction long_name = max fractnl cover of green veg @@ -126,7 +113,6 @@ type = real kind = kind_phys intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -134,7 +120,6 @@ dimensions = () type = integer intent = in - optional = F [z0pert] standard_name = perturbation_of_momentum_roughness_length long_name = perturbation of momentum roughness length @@ -143,7 +128,6 @@ type = real kind = kind_phys intent = in - optional = F [ztpert] standard_name = perturbation_of_heat_to_momentum_roughness_length_ratio long_name = perturbation of heat to momentum roughness length ratio @@ -152,7 +136,6 @@ type = real kind = kind_phys intent = in - optional = F [redrag] standard_name = flag_for_limited_surface_roughness_length_over_ocean long_name = flag for reduced drag coefficient over sea @@ -160,7 +143,6 @@ dimensions = () type = logical intent = in - optional = F [sfc_z0_type] standard_name = flag_for_surface_roughness_option_over_water long_name = surface roughness options over water @@ -168,7 +150,6 @@ dimensions = () type = integer intent = in - optional = F [delt] standard_name = timestep_for_physics long_name = time step for physics @@ -177,7 +158,6 @@ type = real kind = kind_phys intent = in - optional = F [dx] standard_name = characteristic_grid_lengthscale long_name = size of the grid cell @@ -186,7 +166,6 @@ type = real kind = kind_phys intent = in - optional = F [u] standard_name = x_wind long_name = x component of layer wind @@ -195,7 +174,6 @@ type = real kind = kind_phys intent = in - optional = F [v] standard_name = y_wind long_name = y component of layer wind @@ -204,7 +182,6 @@ type = real kind = kind_phys intent = in - optional = F [t3d] standard_name = air_temperature long_name = layer mean air temperature @@ -213,7 +190,6 @@ type = real kind = kind_phys intent = in - optional = F [qvsh] standard_name = specific_humidity long_name = water vapor specific humidity @@ -222,7 +198,6 @@ type = real kind = kind_phys intent = in - optional = F [qc] standard_name = cloud_liquid_water_mixing_ratio long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) @@ -231,7 +206,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -240,7 +214,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -249,7 +222,6 @@ type = real kind = kind_phys intent = in - optional = F [exner] standard_name = dimensionless_exner_function long_name = Exner function at layers @@ -258,7 +230,6 @@ type = real kind = kind_phys intent = in - optional = F [ps] standard_name = surface_air_pressure long_name = surface pressure @@ -267,7 +238,6 @@ type = real kind = kind_phys intent = in - optional = F [PBLH] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -276,7 +246,6 @@ type = real kind = kind_phys intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -285,7 +254,6 @@ type = real kind = kind_phys intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -293,7 +261,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -301,7 +268,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -309,7 +275,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [tskin_wat] standard_name = surface_skin_temperature_over_water long_name = surface skin temperature over water @@ -318,7 +283,6 @@ type = real kind = kind_phys intent = in - optional = F [tskin_lnd] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -327,7 +291,6 @@ type = real kind = kind_phys intent = in - optional = F [tskin_ice] standard_name = surface_skin_temperature_over_ice long_name = surface skin temperature over ice @@ -336,7 +299,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_wat] standard_name = surface_skin_temperature_after_iteration_over_water long_name = surface skin temperature after iteration over water @@ -345,7 +307,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_lnd] standard_name = surface_skin_temperature_after_iteration_over_land long_name = surface skin temperature after iteration over land @@ -354,7 +315,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_ice] standard_name = surface_skin_temperature_after_iteration_over_ice long_name = surface skin temperature after iteration over ice @@ -363,7 +323,6 @@ type = real kind = kind_phys intent = in - optional = F [qsfc_wat] standard_name = surface_specific_humidity_over_water long_name = surface air saturation specific humidity over water @@ -372,7 +331,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsfc_lnd] standard_name = surface_specific_humidity_over_land long_name = surface air saturation specific humidity over land @@ -381,7 +339,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsfc_ice] standard_name = surface_specific_humidity_over_ice long_name = surface air saturation specific humidity over ice @@ -390,7 +347,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowh_lnd] standard_name = surface_snow_thickness_water_equivalent_over_land long_name = water equivalent snow depth over land @@ -399,7 +355,6 @@ type = real kind = kind_phys intent = in - optional = F [snowh_ice] standard_name = surface_snow_thickness_water_equivalent_over_ice long_name = water equivalent snow depth over ice @@ -408,7 +363,6 @@ type = real kind = kind_phys intent = in - optional = F [znt_wat] standard_name = surface_roughness_length_over_water long_name = surface roughness length over water (temporary use as interstitial) @@ -417,7 +371,6 @@ type = real kind = kind_phys intent = inout - optional = F [znt_lnd] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land (temporary use as interstitial) @@ -426,7 +379,6 @@ type = real kind = kind_phys intent = inout - optional = F [znt_ice] standard_name = surface_roughness_length_over_ice long_name = surface roughness length over ice (temporary use as interstitial) @@ -435,7 +387,6 @@ type = real kind = kind_phys intent = inout - optional = F [ust_wat] standard_name = surface_friction_velocity_over_water long_name = surface friction velocity over water @@ -444,7 +395,6 @@ type = real kind = kind_phys intent = inout - optional = F [ust_lnd] standard_name = surface_friction_velocity_over_land long_name = surface friction velocity over land @@ -453,7 +403,6 @@ type = real kind = kind_phys intent = inout - optional = F [ust_ice] standard_name = surface_friction_velocity_over_ice long_name = surface friction velocity over ice @@ -462,7 +411,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm_wat] standard_name = surface_drag_coefficient_for_momentum_in_air_over_water long_name = surface exchange coeff for momentum over water @@ -471,7 +419,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm_lnd] standard_name = surface_drag_coefficient_for_momentum_in_air_over_land long_name = surface exchange coeff for momentum over land @@ -480,7 +427,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm_ice] standard_name = surface_drag_coefficient_for_momentum_in_air_over_ice long_name = surface exchange coeff for momentum over ice @@ -489,7 +435,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_wat] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water @@ -498,7 +443,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_lnd] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land long_name = surface exchange coeff heat & moisture over land @@ -507,7 +451,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_ice] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ice long_name = surface exchange coeff heat & moisture over ice @@ -516,7 +459,6 @@ type = real kind = kind_phys intent = inout - optional = F [rb_wat] standard_name = bulk_richardson_number_at_lowest_model_level_over_water long_name = bulk Richardson number at the surface over water @@ -525,7 +467,6 @@ type = real kind = kind_phys intent = inout - optional = F [rb_lnd] standard_name = bulk_richardson_number_at_lowest_model_level_over_land long_name = bulk Richardson number at the surface over land @@ -534,7 +475,6 @@ type = real kind = kind_phys intent = inout - optional = F [rb_ice] standard_name = bulk_richardson_number_at_lowest_model_level_over_ice long_name = bulk Richardson number at the surface over ice @@ -543,7 +483,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_wat] standard_name = surface_wind_stress_over_water long_name = surface wind stress over water @@ -552,7 +491,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_lnd] standard_name = surface_wind_stress_over_land long_name = surface wind stress over land @@ -561,7 +499,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_ice] standard_name = surface_wind_stress_over_ice long_name = surface wind stress over ice @@ -570,7 +507,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_wat] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_water long_name = Monin-Obukhov similarity function for momentum over water @@ -579,7 +515,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_lnd] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_land long_name = Monin-Obukhov similarity function for momentum over land @@ -588,7 +523,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_ice] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_ice long_name = Monin-Obukhov similarity function for momentum over ice @@ -597,7 +531,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_wat] standard_name = Monin_Obukhov_similarity_function_for_heat_over_water long_name = Monin-Obukhov similarity function for heat over water @@ -606,7 +539,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_lnd] standard_name = Monin_Obukhov_similarity_function_for_heat_over_land long_name = Monin-Obukhov similarity function for heat over land @@ -615,7 +547,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_ice] standard_name = Monin_Obukhov_similarity_function_for_heat_over_ice long_name = Monin-Obukhov similarity function for heat over ice @@ -624,7 +555,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_wat] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_water long_name = Monin-Obukhov similarity parameter for momentum at 10m over water @@ -633,7 +563,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_lnd] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_land long_name = Monin-Obukhov similarity parameter for momentum at 10m over land @@ -642,7 +571,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_ice] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_ice long_name = Monin-Obukhov similarity parameter for momentum at 10m over ice @@ -651,7 +579,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_wat] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_water long_name = Monin-Obukhov similarity parameter for heat at 2m over water @@ -660,7 +587,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_lnd] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_land long_name = Monin-Obukhov similarity parameter for heat at 2m over land @@ -669,7 +595,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_ice] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_ice long_name = Monin-Obukhov similarity parameter for heat at 2m over ice @@ -678,7 +603,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx_wat] standard_name = kinematic_surface_upward_sensible_heat_flux_over_water long_name = kinematic surface upward sensible heat flux over water @@ -687,7 +611,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx_lnd] standard_name = kinematic_surface_upward_sensible_heat_flux_over_land long_name = kinematic surface upward sensible heat flux over land @@ -696,7 +619,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx_ice] standard_name = kinematic_surface_upward_sensible_heat_flux_over_ice long_name = kinematic surface upward sensible heat flux over ice @@ -705,7 +627,6 @@ type = real kind = kind_phys intent = inout - optional = F [qflx_wat] standard_name = kinematic_surface_upward_latent_heat_flux_over_water long_name = kinematic surface upward latent heat flux over water @@ -714,7 +635,6 @@ type = real kind = kind_phys intent = inout - optional = F [qflx_lnd] standard_name = kinematic_surface_upward_latent_heat_flux_over_land long_name = kinematic surface upward latent heat flux over land @@ -723,7 +643,6 @@ type = real kind = kind_phys intent = inout - optional = F [qflx_ice] standard_name = kinematic_surface_upward_latent_heat_flux_over_ice long_name = kinematic surface upward latent heat flux over ice @@ -732,7 +651,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsfc] standard_name = surface_specific_humidity long_name = surface air saturation specific humidity @@ -741,7 +659,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsfc_lnd_ruc] standard_name = water_vapor_mixing_ratio_at_surface_over_land long_name = water vapor mixing ratio at surface over land @@ -750,7 +667,6 @@ type = real kind = kind_phys intent = in - optional = F [qsfc_ice_ruc] standard_name = water_vapor_mixing_ratio_at_surface_over_ice long_name = water vapor mixing ratio at surface over ice @@ -759,7 +675,6 @@ type = real kind = kind_phys intent = in - optional = F [ustm] standard_name = surface_friction_velocity_for_momentum long_name = friction velocity isolated for momentum only @@ -768,7 +683,6 @@ type = real kind = kind_phys intent = inout - optional = F [zol] standard_name = ratio_of_height_to_monin_obukhov_length long_name = monin obukhov surface stability parameter @@ -777,7 +691,6 @@ type = real kind = kind_phys intent = inout - optional = F [mol] standard_name = surface_temperature_scale long_name = temperature flux divided by ustar (temperature scale) @@ -786,7 +699,6 @@ type = real kind = kind_phys intent = inout - optional = F [rmol] standard_name = reciprocal_of_obukhov_length long_name = one over obukhov length @@ -795,7 +707,6 @@ type = real kind = kind_phys intent = inout - optional = F [wspd] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -804,7 +715,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch] standard_name = surface_drag_wind_speed_for_momentum_in_air long_name = momentum exchange coefficient @@ -813,7 +723,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx] standard_name = surface_upward_temperature_flux long_name = kinematic surface upward sensible heat flux @@ -822,7 +731,6 @@ type = real kind = kind_phys intent = inout - optional = F [qflx] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -831,7 +739,6 @@ type = real kind = kind_phys intent = inout - optional = F [lh] standard_name = surface_upward_latent_heat_flux long_name = latent heating at the surface (pos = up) @@ -840,7 +747,6 @@ type = real kind = kind_phys intent = inout - optional = F [flhc] standard_name = surface_exchange_coefficient_for_heat long_name = surface exchange coefficient for heat @@ -849,7 +755,6 @@ type = real kind = kind_phys intent = inout - optional = F [flqc] standard_name = surface_exchange_coefficient_for_moisture long_name = surface exchange coefficient for moisture @@ -858,7 +763,6 @@ type = real kind = kind_phys intent = inout - optional = F [u10] standard_name = x_wind_at_10m long_name = 10 meter u wind speed @@ -867,7 +771,6 @@ type = real kind = kind_phys intent = inout - optional = F [v10] standard_name = y_wind_at_10m long_name = 10 meter v wind speed @@ -876,7 +779,6 @@ type = real kind = kind_phys intent = inout - optional = F [th2] standard_name = air_potential_temperature_at_2m long_name = 2 meter potential temperature @@ -885,7 +787,6 @@ type = real kind = kind_phys intent = inout - optional = F [t2] standard_name = air_temperature_at_2m long_name = 2 meter temperature @@ -894,7 +795,6 @@ type = real kind = kind_phys intent = inout - optional = F [q2] standard_name = specific_humidity_at_2m long_name = 2 meter specific humidity @@ -903,7 +803,6 @@ type = real kind = kind_phys intent = inout - optional = F [wstar] standard_name = enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convection long_name = surface wind enhancement due to convection @@ -912,7 +811,6 @@ type = real kind = kind_phys intent = inout - optional = F [chs2] standard_name = surface_exchange_coefficient_for_heat_at_2m long_name = exchange coefficient for heat at 2 meters @@ -921,7 +819,6 @@ type = real kind = kind_phys intent = inout - optional = F [cqs2] standard_name = surface_exchange_coefficient_for_moisture_at_2m long_name = exchange coefficient for moisture at 2 meters @@ -930,7 +827,6 @@ type = real kind = kind_phys intent = inout - optional = F [lprnt] standard_name = flag_print long_name = control flag for diagnostic print out @@ -938,7 +834,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -947,7 +842,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -955,4 +849,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/module_SGSCloud_RadPost.meta b/physics/module_SGSCloud_RadPost.meta index 70613a404..7298426ae 100644 --- a/physics/module_SGSCloud_RadPost.meta +++ b/physics/module_SGSCloud_RadPost.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [flag_init] standard_name = flag_for_first_timestep long_name = flag signaling first time step for time integration loop @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -38,7 +35,6 @@ dimensions = () type = logical intent = in - optional = F [qc] standard_name = cloud_liquid_water_mixing_ratio long_name = no condensates) ratio of mass of cloud water to mass of dry air plus vapor (without condensates) @@ -47,7 +43,6 @@ type = real kind = kind_phys intent = inout - optional = F [qi] standard_name = cloud_ice_mixing_ratio long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) @@ -56,7 +51,6 @@ type = real kind = kind_phys intent = inout - optional = F [qc_save] standard_name = cloud_condensed_water_mixing_ratio_save long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) before entering a physics scheme @@ -65,7 +59,6 @@ type = real kind = kind_phys intent = in - optional = F [qi_save] standard_name = ice_water_mixing_ratio_save long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) before entering a physics scheme @@ -74,7 +67,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -83,7 +75,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -91,4 +82,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/module_SGSCloud_RadPre.meta b/physics/module_SGSCloud_RadPre.meta index e79e6fc61..14c3127fc 100644 --- a/physics/module_SGSCloud_RadPre.meta +++ b/physics/module_SGSCloud_RadPre.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [flag_init] standard_name = flag_for_first_timestep long_name = flag signaling first time step for time integration loop @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -38,7 +35,6 @@ dimensions = () type = logical intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -47,7 +43,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -56,7 +51,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -65,7 +59,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -74,7 +67,6 @@ type = real kind = kind_phys intent = in - optional = F [do_mynnedmf] standard_name = flag_for_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate MYNN-EDMF @@ -82,7 +74,6 @@ dimensions = () type = logical intent = in - optional = F [qc] standard_name = cloud_liquid_water_mixing_ratio long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) @@ -91,7 +82,6 @@ type = real kind = kind_phys intent = inout - optional = F [qi] standard_name = cloud_ice_mixing_ratio long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) @@ -100,7 +90,6 @@ type = real kind = kind_phys intent = inout - optional = F [qv] standard_name = specific_humidity long_name = water vapor specific humidity @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = in - optional = F [T3D] standard_name = air_temperature long_name = layer mean air temperature @@ -118,7 +106,6 @@ type = real kind = kind_phys intent = in - optional = F [P3D] standard_name = air_pressure long_name = mean layer pressure @@ -127,7 +114,6 @@ type = real kind = kind_phys intent = in - optional = F [qr] standard_name = rain_mixing_ratio long_name = moist (dry+vapor, no condensates) mixing ratio of rain water @@ -136,7 +122,6 @@ type = real kind = kind_phys intent = inout - optional = F [qs] standard_name = snow_mixing_ratio long_name = moist (dry+vapor, no condensates) mixing ratio of snow water @@ -145,7 +130,6 @@ type = real kind = kind_phys intent = inout - optional = F [qg] standard_name = graupel_mixing_ratio long_name = graupel mixing ratio wrt dry+vapor (no condensates) @@ -154,7 +138,6 @@ type = real kind = kind_phys intent = inout - optional = F [qci_conv] standard_name = convective_cloud_condesate_after_rainout long_name = convective cloud condesate after rainout @@ -163,7 +146,6 @@ type = real kind = kind_phys intent = inout - optional = F [imfdeepcnv] standard_name = control_for_deep_convection_scheme long_name = flag for mass-flux deep convection scheme @@ -171,7 +153,6 @@ dimensions = () type = integer intent = in - optional = F [imfdeepcnv_gf] standard_name = identifier_for_grell_freitas_deep_convection long_name = flag for Grell-Freitas deep convection scheme @@ -179,7 +160,6 @@ dimensions = () type = integer intent = in - optional = F [qc_save] standard_name = cloud_condensed_water_mixing_ratio_save long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) before entering a physics scheme @@ -188,7 +168,6 @@ type = real kind = kind_phys intent = inout - optional = F [qi_save] standard_name = ice_water_mixing_ratio_save long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) before entering a physics scheme @@ -197,7 +176,6 @@ type = real kind = kind_phys intent = inout - optional = F [QC_BL] standard_name = subgrid_scale_cloud_liquid_water_mixing_ratio long_name = subgrid cloud water mixing ratio from PBL scheme @@ -206,7 +184,6 @@ type = real kind = kind_phys intent = in - optional = F [QI_BL] standard_name = subgrid_scale_cloud_ice_mixing_ratio long_name = subgrid cloud ice mixing ratio from PBL scheme @@ -215,7 +192,6 @@ type = real kind = kind_phys intent = in - optional = F [CLDFRA_BL] standard_name = subgrid_scale_cloud_area_fraction_in_atmosphere_layer long_name = subgrid cloud fraction from PBL scheme @@ -224,7 +200,6 @@ type = real kind = kind_phys intent = in - optional = F [delp] standard_name = layer_pressure_thickness_for_radiation long_name = layer pressure thickness on radiation levels @@ -233,7 +208,6 @@ type = real kind = kind_phys intent = in - optional = F [clouds1] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -242,7 +216,6 @@ type = real kind = kind_phys intent = inout - optional = F [clouds2] standard_name = cloud_liquid_water_path long_name = layer cloud liquid water path @@ -251,7 +224,6 @@ type = real kind = kind_phys intent = inout - optional = F [clouds3] standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud @@ -260,7 +232,6 @@ type = real kind = kind_phys intent = inout - optional = F [clouds4] standard_name = cloud_ice_water_path long_name = layer cloud ice water path @@ -269,7 +240,6 @@ type = real kind = kind_phys intent = inout - optional = F [clouds5] standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud @@ -278,7 +248,6 @@ type = real kind = kind_phys intent = inout - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -287,7 +256,6 @@ type = real kind = kind_phys intent = in - optional = F [nlay] standard_name = adjusted_vertical_layer_dimension_for_radiation long_name = number of vertical layers for radiation @@ -295,7 +263,6 @@ dimensions = () type = integer intent = in - optional = F [plyr] standard_name = air_pressure_at_layer_for_radiation_in_hPa long_name = air pressure at vertical layer for radiation calculation @@ -304,7 +271,6 @@ type = real kind = kind_phys intent = in - optional = F [xlat] standard_name = latitude long_name = grid latitude @@ -313,7 +279,6 @@ type = real kind = kind_phys intent = in - optional = F [dz] standard_name = layer_thickness_for_radiation long_name = layer thickness on radiation levels @@ -322,7 +287,6 @@ type = real kind = kind_phys intent = in - optional = F [de_lgth] standard_name = cloud_decorrelation_length long_name = cloud decorrelation length @@ -331,7 +295,6 @@ type = real kind = kind_phys intent = in - optional = F [cldsa] standard_name = cloud_area_fraction_for_radiation long_name = fraction of clouds for low, middle,high, total and BL @@ -340,7 +303,6 @@ type = real kind = kind_phys intent = inout - optional = F [mtopa] standard_name = model_layer_number_at_cloud_top long_name = vertical indices for low, middle and high cloud tops @@ -348,7 +310,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = inout - optional = F [mbota] standard_name = model_layer_number_at_cloud_base long_name = vertical indices for low, middle and high cloud bases @@ -356,7 +317,6 @@ dimensions = (horizontal_loop_extent,3) type = integer intent = inout - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -364,7 +324,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -372,7 +331,6 @@ dimensions = () type = integer intent = in - optional = F [iovr] standard_name = flag_for_cloud_overlap_method_for_radiation long_name = max-random overlap clouds @@ -380,7 +338,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -389,7 +346,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -397,4 +353,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/moninedmf.meta b/physics/moninedmf.meta index b3fa605b3..de2bda567 100644 --- a/physics/moninedmf.meta +++ b/physics/moninedmf.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [moninq_fac] standard_name = multiplicative_tuning_parameter_for_atmosphere_diffusivity long_name = multiplicative constant for atmospheric diffusivities @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -32,7 +30,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -40,7 +37,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -53,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -61,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_vertical_diffusion_tracers long_name = number of tracers to diffuse vertically @@ -69,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = cloud condensate index in tracer array @@ -77,7 +70,6 @@ dimensions = () type = integer intent = in - optional = F [dv] standard_name = process_split_cumulative_tendency_of_y_wind long_name = updated tendency of the y wind @@ -86,7 +78,6 @@ type = real kind = kind_phys intent = inout - optional = F [du] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind @@ -95,7 +86,6 @@ type = real kind = kind_phys intent = inout - optional = F [tau] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -104,7 +94,6 @@ type = real kind = kind_phys intent = inout - optional = F [rtg] standard_name = tendency_of_vertically_diffused_tracer_concentration long_name = updated tendency of the tracers due to vertical diffusion in PBL scheme @@ -113,7 +102,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind long_name = x component of layer wind @@ -122,7 +110,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind long_name = y component of layer wind @@ -131,7 +118,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature long_name = layer mean air temperature @@ -140,7 +126,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = vertically_diffused_tracer_concentration long_name = tracer concentration diffused by PBL scheme @@ -149,7 +134,6 @@ type = real kind = kind_phys intent = in - optional = F [swh] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate @@ -158,7 +142,6 @@ type = real kind = kind_phys intent = in - optional = F [hlw] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate @@ -167,7 +150,6 @@ type = real kind = kind_phys intent = in - optional = F [xmu] standard_name = zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes long_name = zenith angle temporal adjustment factor for shortwave @@ -176,7 +158,6 @@ type = real kind = kind_phys intent = in - optional = F [psk] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at the surface interface @@ -185,7 +166,6 @@ type = real kind = kind_phys intent = in - optional = F [rbsoil] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -194,7 +174,6 @@ type = real kind = kind_phys intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length in cm @@ -203,7 +182,6 @@ type = real kind = kind_phys intent = in - optional = F [u10m] standard_name = x_wind_at_10m long_name = x component of wind at 10 m @@ -212,7 +190,6 @@ type = real kind = kind_phys intent = in - optional = F [v10m] standard_name = y_wind_at_10m long_name = y component of wind at 10 m @@ -221,7 +198,6 @@ type = real kind = kind_phys intent = in - optional = F [fm] standard_name = Monin_Obukhov_similarity_function_for_momentum long_name = Monin-Obukhov similarity function for momentum @@ -230,7 +206,6 @@ type = real kind = kind_phys intent = in - optional = F [fh] standard_name = Monin_Obukhov_similarity_function_for_heat long_name = Monin-Obukhov similarity function for heat @@ -239,7 +214,6 @@ type = real kind = kind_phys intent = in - optional = F [tsea] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -248,7 +222,6 @@ type = real kind = kind_phys intent = in - optional = F [heat] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -257,7 +230,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -266,7 +238,6 @@ type = real kind = kind_phys intent = in - optional = F [stress] standard_name = surface_wind_stress long_name = surface wind stress @@ -275,7 +246,6 @@ type = real kind = kind_phys intent = in - optional = F [spd1] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -284,7 +254,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = PBL top model level index @@ -292,7 +261,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -301,7 +269,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = pres(k) - pres(k+1) @@ -310,7 +277,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -319,7 +285,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = Exner function at layers @@ -328,7 +293,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -337,7 +301,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -346,7 +309,6 @@ type = real kind = kind_phys intent = in - optional = F [delt] standard_name = timestep_for_physics long_name = time step for physics @@ -355,7 +317,6 @@ type = real kind = kind_phys intent = in - optional = F [dspheat] standard_name = flag_TKE_dissipation_heating long_name = flag for using TKE dissipation heating @@ -363,7 +324,6 @@ dimensions = () type = logical intent = in - optional = F [dusfc] standard_name = instantaneous_surface_x_momentum_flux long_name = x momentum flux @@ -372,7 +332,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc] standard_name = instantaneous_surface_y_momentum_flux long_name = y momentum flux @@ -381,7 +340,6 @@ type = real kind = kind_phys intent = out - optional = F [dtsfc] standard_name = instantaneous_surface_upward_sensible_heat_flux long_name = surface upward sensible heat flux @@ -390,7 +348,6 @@ type = real kind = kind_phys intent = out - optional = F [dqsfc] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux @@ -399,7 +356,6 @@ type = real kind = kind_phys intent = out - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -408,7 +364,6 @@ type = real kind = kind_phys intent = out - optional = F [hgamt] standard_name = countergradient_mixing_term_for_temperature long_name = countergradient mixing term for temperature @@ -417,7 +372,6 @@ type = real kind = kind_phys intent = inout - optional = F [hgamq] standard_name = countergradient_mixing_term_for_water_vapor long_name = countergradient mixing term for water vapor @@ -426,7 +380,6 @@ type = real kind = kind_phys intent = inout - optional = F [dkt] standard_name = atmosphere_heat_diffusivity long_name = atmospheric heat diffusivity @@ -435,7 +388,6 @@ type = real kind = kind_phys intent = out - optional = F [dku] standard_name = atmosphere_momentum_diffusivity long_name = atmospheric momentum diffusivity @@ -444,7 +396,6 @@ type = real kind = kind_phys intent = out - optional = F [kinver] standard_name = index_of_highest_temperature_inversion long_name = index of highest temperature inversion @@ -452,7 +403,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [xkzm_m] standard_name = atmosphere_momentum_diffusivity_due_to_background long_name = background value of momentum diffusivity @@ -461,7 +411,6 @@ type = real kind = kind_phys intent = in - optional = F [xkzm_h] standard_name = atmosphere_heat_diffusivity_due_to_background long_name = background value of heat diffusivity @@ -470,7 +419,6 @@ type = real kind = kind_phys intent = in - optional = F [xkzm_s] standard_name = sigma_pressure_threshold_at_upper_extent_of_background_diffusion long_name = sigma level threshold for background diffusivity @@ -479,7 +427,6 @@ type = real kind = kind_phys intent = in - optional = F [lprnt] standard_name = flag_print long_name = flag for printing diagnostics to output @@ -487,7 +434,6 @@ dimensions = () type = logical intent = in - optional = F [ipr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of printed column @@ -495,7 +441,6 @@ dimensions = () type = integer intent = in - optional = F [xkzminv] standard_name = max_atmosphere_heat_diffusivity_due_to_background long_name = maximum background value of heat diffusivity @@ -504,7 +449,6 @@ type = real kind = kind_phys intent = in - optional = F [moninq_fac] standard_name = multiplicative_tuning_parameter_for_atmosphere_diffusivity long_name = multiplicative constant for atmospheric diffusivities @@ -513,7 +457,6 @@ type = real kind = kind_phys intent = in - optional = F [hurr_pbl] standard_name = flag_hurricane_PBL long_name = flag for hurricane-specific options in PBL scheme @@ -521,7 +464,6 @@ dimensions = () type = logical intent = in - optional = F [islimsk] standard_name = sea_land_ice_mask long_name = sea/land/ice mask (=0/1/2) @@ -529,7 +471,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [var_ric] standard_name = control_for_variable_bulk_richardson_number long_name = flag for calculating variable bulk richardson number for hurricane PBL @@ -538,7 +479,6 @@ type = real kind = kind_phys intent = in - optional = F [coef_ric_l] standard_name = coefficient_for_variable_bulk_richardson_number_over_land long_name = coefficient for calculating variable bulk richardson number for hurricane PBL over land @@ -547,7 +487,6 @@ type = real kind = kind_phys intent = in - optional = F [coef_ric_s] standard_name = coefficient_for_variable_bulk_richardson_number_over_water long_name = coefficient for calculating variable bulk richardson number for hurricane PBL over water @@ -556,7 +495,6 @@ type = real kind = kind_phys intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -564,7 +502,6 @@ dimensions = () type = logical intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -572,7 +509,6 @@ dimensions = () type = integer intent = in - optional = F [rtg_ozone_index] standard_name = vertically_diffused_tracer_index_of_ozone long_name = number of tracers @@ -580,7 +516,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -588,7 +523,6 @@ dimensions = () type = integer intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -598,7 +532,6 @@ kind = kind_phys active = (flag_for_diagnostics_3D) intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -606,7 +539,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_process_pbl] standard_name = index_of_subgrid_scale_vertical_mixing_process_in_cumulative_change_index long_name = index of subgrid scale vertical mixing process in second dimension of array cumulative change index @@ -614,7 +546,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -622,7 +553,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -630,7 +560,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -638,7 +567,6 @@ dimensions = () type = integer intent = in - optional = F [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 @@ -646,7 +574,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -655,7 +582,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -663,4 +589,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/moninshoc.meta b/physics/moninshoc.meta index 52d6ba9cd..3697b7d87 100644 --- a/physics/moninshoc.meta +++ b/physics/moninshoc.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_vertical_diffusion_tracers long_name = number of tracers to diffuse vertically @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = cloud condensate index in tracer array @@ -68,7 +62,6 @@ dimensions = () type = integer intent = in - optional = F [ncnd] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -76,7 +69,6 @@ dimensions = () type = integer intent = in - optional = F [dv] standard_name = process_split_cumulative_tendency_of_y_wind long_name = updated tendency of the y wind @@ -85,7 +77,6 @@ type = real kind = kind_phys intent = inout - optional = F [du] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind @@ -94,7 +85,6 @@ type = real kind = kind_phys intent = inout - optional = F [tau] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -103,7 +93,6 @@ type = real kind = kind_phys intent = inout - optional = F [rtg] standard_name = tendency_of_vertically_diffused_tracer_concentration long_name = updated tendency of the tracers due to vertical diffusion in PBL scheme @@ -112,7 +101,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind long_name = x component of layer wind @@ -121,7 +109,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind long_name = y component of layer wind @@ -130,7 +117,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature long_name = layer mean air temperature @@ -139,7 +125,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = vertically_diffused_tracer_concentration long_name = tracer concentration diffused by PBL scheme @@ -148,7 +133,6 @@ type = real kind = kind_phys intent = in - optional = F [tkh] standard_name = atmosphere_heat_diffusivity_from_shoc long_name = diffusivity for heat from the SHOC scheme @@ -157,7 +141,6 @@ type = real kind = kind_phys intent = in - optional = F [prnum] standard_name = prandtl_number long_name = turbulent Prandtl number @@ -166,7 +149,6 @@ type = real kind = kind_phys intent = out - optional = F [ntke] standard_name = index_for_turbulent_kinetic_energy_vertical_diffusion_tracer long_name = index for turbulent kinetic energy in the vertically diffused tracer array @@ -174,7 +156,6 @@ dimensions = () type = integer intent = in - optional = F [psk] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at the surface interface @@ -183,7 +164,6 @@ type = real kind = kind_phys intent = in - optional = F [rbsoil] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -192,7 +172,6 @@ type = real kind = kind_phys intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length in cm @@ -201,7 +180,6 @@ type = real kind = kind_phys intent = in - optional = F [u10m] standard_name = x_wind_at_10m long_name = x component of wind at 10 m @@ -210,7 +188,6 @@ type = real kind = kind_phys intent = in - optional = F [v10m] standard_name = y_wind_at_10m long_name = y component of wind at 10 m @@ -219,7 +196,6 @@ type = real kind = kind_phys intent = in - optional = F [fm] standard_name = Monin_Obukhov_similarity_function_for_momentum long_name = Monin-Obukhov similarity function for momentum @@ -228,7 +204,6 @@ type = real kind = kind_phys intent = in - optional = F [fh] standard_name = Monin_Obukhov_similarity_function_for_heat long_name = Monin-Obukhov similarity function for heat @@ -237,7 +212,6 @@ type = real kind = kind_phys intent = in - optional = F [tsea] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -246,7 +220,6 @@ type = real kind = kind_phys intent = in - optional = F [heat] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -255,7 +228,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -264,7 +236,6 @@ type = real kind = kind_phys intent = in - optional = F [stress] standard_name = surface_wind_stress long_name = surface wind stress @@ -273,7 +244,6 @@ type = real kind = kind_phys intent = in - optional = F [spd1] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -282,7 +252,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = PBL top model level index @@ -290,7 +259,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -299,7 +267,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = pres(k) - pres(k+1) @@ -308,7 +275,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -317,7 +283,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = Exner function at layers @@ -326,7 +291,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -335,7 +299,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -344,7 +307,6 @@ type = real kind = kind_phys intent = in - optional = F [delt] standard_name = timestep_for_physics long_name = time step for physics @@ -353,7 +315,6 @@ type = real kind = kind_phys intent = in - optional = F [dusfc] standard_name = instantaneous_surface_x_momentum_flux long_name = x momentum flux @@ -362,7 +323,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc] standard_name = instantaneous_surface_y_momentum_flux long_name = y momentum flux @@ -371,7 +331,6 @@ type = real kind = kind_phys intent = out - optional = F [dtsfc] standard_name = instantaneous_surface_upward_sensible_heat_flux long_name = surface upward sensible heat flux @@ -380,7 +339,6 @@ type = real kind = kind_phys intent = out - optional = F [dqsfc] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux @@ -389,7 +347,6 @@ type = real kind = kind_phys intent = out - optional = F [dkt] standard_name = atmosphere_heat_diffusivity long_name = atmospheric heat diffusivity @@ -398,7 +355,6 @@ type = real kind = kind_phys intent = out - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -407,7 +363,6 @@ type = real kind = kind_phys intent = out - optional = F [kinver] standard_name = index_of_highest_temperature_inversion long_name = index of highest temperature inversion @@ -415,7 +370,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [xkzm_m] standard_name = atmosphere_momentum_diffusivity_due_to_background long_name = background value of momentum diffusivity @@ -424,7 +378,6 @@ type = real kind = kind_phys intent = in - optional = F [xkzm_h] standard_name = atmosphere_heat_diffusivity_due_to_background long_name = background value of heat diffusivity @@ -433,7 +386,6 @@ type = real kind = kind_phys intent = in - optional = F [xkzm_s] standard_name = sigma_pressure_threshold_at_upper_extent_of_background_diffusion long_name = sigma level threshold for background diffusivity @@ -442,7 +394,6 @@ type = real kind = kind_phys intent = in - optional = F [xkzminv] standard_name = max_atmosphere_heat_diffusivity_due_to_background long_name = max. background val. diffusivity in inversion layers @@ -451,7 +402,6 @@ type = real kind = kind_phys intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -460,7 +410,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -469,7 +418,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -478,7 +426,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -487,7 +434,6 @@ type = real kind = kind_phys intent = in - optional = F [fv] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -496,7 +442,6 @@ type = real kind = kind_phys intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -504,7 +449,6 @@ dimensions = () type = integer intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -513,7 +457,6 @@ type = real kind = kind_phys intent = in - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -521,7 +464,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -529,7 +471,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -537,7 +478,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -545,7 +485,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_pbl] standard_name = index_of_subgrid_scale_vertical_mixing_process_in_cumulative_change_index long_name = index of subgrid scale vertical mixing process in second dimension of array cumulative change index @@ -553,7 +492,6 @@ dimensions = () type = integer intent = in - optional = F [gen_tend] standard_name = flag_for_generic_tendency_due_to_planetary_boundary_layer long_name = true if GFS_PBL_generic should calculate tendencies @@ -575,7 +513,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -584,7 +521,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -592,4 +528,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/mp_fer_hires.meta b/physics/mp_fer_hires.meta index f5adb0318..022b12ade 100644 --- a/physics/mp_fer_hires.meta +++ b/physics/mp_fer_hires.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [nlev] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -31,7 +29,6 @@ type = real kind = kind_phys intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -39,7 +36,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_fer_hires] standard_name = identifier_for_fer_hires_microphysics_scheme long_name = choice of Ferrier-Aligo microphysics scheme @@ -47,7 +43,6 @@ dimensions = () type = integer intent = in - optional = F [restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -55,7 +50,6 @@ dimensions = () type = logical intent = in - optional = F [f_ice] standard_name = fraction_of_ice_water_cloud long_name = fraction of ice water cloud @@ -64,7 +58,6 @@ type = real kind = kind_phys intent = out - optional = F [f_rain] standard_name = fraction_of_rain_water_cloud long_name = fraction of rain water cloud @@ -73,7 +66,6 @@ type = real kind = kind_phys intent = out - optional = F [f_rimef] standard_name = rime_factor long_name = rime factor @@ -82,7 +74,6 @@ type = real kind = kind_phys intent = out - optional = F [mpicomm] standard_name = mpi_communicator long_name = MPI communicator @@ -90,7 +81,6 @@ dimensions = () type = integer intent = in - optional = F [mpirank] standard_name = mpi_rank long_name = current MPI-rank @@ -98,7 +88,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root long_name = master MPI-rank @@ -106,7 +95,6 @@ dimensions = () type = integer intent = in - optional = F [threads] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available to scheme @@ -114,7 +102,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -123,7 +110,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -131,7 +117,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] name = mp_fer_hires_finalize @@ -144,7 +129,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -152,7 +136,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -165,7 +148,6 @@ dimensions = () type = integer intent = in - optional = F [nlev] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -173,7 +155,6 @@ dimensions = () type = integer intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics time step @@ -182,7 +163,6 @@ type = real kind = kind_phys intent = in - optional = F [spec_adv] standard_name = flag_for_separate_advection_of_condensate_species long_name = flag for individual cloud species advected @@ -190,7 +170,6 @@ dimensions = () type = logical intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -199,7 +178,6 @@ type = real kind= kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -208,7 +186,6 @@ type = real kind = kind_phys intent = in - optional = F [p_phy] standard_name = air_pressure long_name = mean layer pressure @@ -217,7 +194,6 @@ type = real kind = kind_phys intent = in - optional = F [t] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -226,7 +202,6 @@ type = real kind = kind_phys intent = inout - optional = F [q] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -235,7 +210,6 @@ type = real kind = kind_phys intent = inout - optional = F [cwm] standard_name = total_cloud_condensate_mixing_ratio_updated_by_physics long_name = total cloud condensate mixing ratio (except water vapor) updated by physics @@ -244,7 +218,6 @@ type = real kind = kind_phys intent = inout - optional = F [train] standard_name = accumulated_change_of_air_temperature_due_to_FA_scheme long_name = accumulated change of air temperature due to FA MP scheme @@ -253,7 +226,6 @@ type = real kind = kind_phys intent = inout - optional = F [sr] standard_name = ratio_of_snowfall_to_rainfall long_name = snow ratio: ratio of snow to total precipitation (explicit only) @@ -262,7 +234,6 @@ type = real kind = kind_phys intent = out - optional = F [f_ice] standard_name = fraction_of_ice_water_cloud long_name = fraction of ice water cloud @@ -271,7 +242,6 @@ type = real kind = kind_phys intent = out - optional = F [f_rain] standard_name = fraction_of_rain_water_cloud long_name = fraction of rain water cloud @@ -280,7 +250,6 @@ type = real kind = kind_phys intent = out - optional = F [f_rimef] standard_name = rime_factor long_name = rime factor @@ -289,7 +258,6 @@ type = real kind = kind_phys intent = out - optional = F [qc] standard_name = cloud_liquid_water_mixing_ratio_of_new_state long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) updated by physics @@ -298,7 +266,6 @@ type = real kind = kind_phys intent = inout - optional = F [qr] standard_name = rain_mixing_ratio_of_new_state long_name = ratio of mass of rain water to mass of dry air plus vapor (without condensates) updated by physics @@ -307,7 +274,6 @@ type = real kind = kind_phys intent = inout - optional = F [qi] standard_name = cloud_ice_mixing_ratio_of_new_state long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) updated by physics @@ -316,7 +282,6 @@ type = real kind = kind_phys intent = inout - optional = F [qg] standard_name = mass_weighted_rime_factor_of_new_state long_name = mass weighted rime factor updated by physics @@ -325,7 +290,6 @@ type = real kind = kind_phys intent = inout - optional = F [prec] standard_name = lwe_thickness_of_explicit_precipitation_amount long_name = explicit precipitation ( rain, ice, snow, graupel, ...) on physics timestep @@ -334,7 +298,6 @@ type = real kind = kind_phys intent = inout - optional = F [mpirank] standard_name = mpi_rank long_name = current MPI-rank @@ -342,7 +305,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root long_name = master MPI-rank @@ -350,7 +312,6 @@ dimensions = () type = integer intent = in - optional = F [threads] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available to scheme @@ -358,7 +319,6 @@ dimensions = () type = integer intent = in - optional = F [refl_10cm] standard_name = radar_reflectivity_10cm long_name = instantaneous refl_10cm @@ -367,7 +327,6 @@ type = real kind = kind_phys intent = inout - optional = F [rhgrd] standard_name = relative_humidity_threshold_for_condensation long_name = relative humidity threshold parameter for condensation for FA scheme @@ -376,7 +335,6 @@ type = real kind = kind_phys intent = in - optional = F [dx] standard_name = characteristic_grid_lengthscale long_name = relative dx for the grid cell @@ -385,7 +343,6 @@ type = real kind = kind_phys intent = in - optional = F [EPSQ] standard_name = minimum_value_of_specific_humidity long_name = floor value for specific humidity @@ -394,7 +351,6 @@ type = real kind = kind_phys intent = in - optional = F [R_D] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -403,7 +359,6 @@ type = real kind = kind_phys intent = in - optional = F [P608] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -412,7 +367,6 @@ type = real kind = kind_phys intent = in - optional = F [CP] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -421,7 +375,6 @@ type = real kind = kind_phys intent = in - optional = F [G] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -430,7 +383,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -439,7 +391,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -447,4 +398,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/mp_thompson.meta b/physics/mp_thompson.meta index ab00e6524..54e747cf2 100644 --- a/physics/mp_thompson.meta +++ b/physics/mp_thompson.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [nlev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -31,7 +29,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -40,7 +37,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -49,7 +45,6 @@ type = real kind = kind_phys intent = in - optional = F [restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -57,7 +52,6 @@ dimensions = () type = logical intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -65,7 +59,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -73,7 +66,6 @@ dimensions = () type = integer intent = in - optional = F [convert_dry_rho] standard_name = flag_for_converting_hydrometeors_from_moist_to_dry_air long_name = flag for converting hydrometeors from moist to dry air @@ -81,7 +73,6 @@ dimensions = () type = logical intent = in - optional = F [spechum] standard_name = specific_humidity long_name = water vapor specific humidity @@ -90,7 +81,6 @@ type = real kind = kind_phys intent = inout - optional = F [qc] standard_name = cloud_liquid_water_mixing_ratio long_name = cloud water mixing ratio wrt dry+vapor (no condensates) @@ -99,7 +89,6 @@ type = real kind = kind_phys intent = inout - optional = F [qr] standard_name = rain_mixing_ratio long_name = rain water mixing ratio wrt dry+vapor (no condensates) @@ -108,7 +97,6 @@ type = real kind = kind_phys intent = inout - optional = F [qi] standard_name = cloud_ice_mixing_ratio long_name = ice water mixing ratio wrt dry+vapor (no condensates) @@ -117,7 +105,6 @@ type = real kind = kind_phys intent = inout - optional = F [qs] standard_name = snow_mixing_ratio long_name = snow water mixing ratio wrt dry+vapor (no condensates) @@ -126,7 +113,6 @@ type = real kind = kind_phys intent = inout - optional = F [qg] standard_name = graupel_mixing_ratio long_name = graupel mixing ratio wrt dry+vapor (no condensates) @@ -135,7 +121,6 @@ type = real kind = kind_phys intent = inout - optional = F [ni] standard_name = mass_number_concentration_of_cloud_ice_water_crystals_in_air long_name = ice number concentration @@ -144,7 +129,6 @@ type = real kind = kind_phys intent = inout - optional = F [nr] standard_name = mass_number_concentration_of_rain_water_in_air long_name = rain number concentration @@ -153,7 +137,6 @@ type = real kind = kind_phys intent = inout - optional = F [is_aerosol_aware] standard_name = flag_for_aerosol_physics long_name = flag for aerosol-aware physics @@ -161,7 +144,6 @@ dimensions = () type = logical intent = in - optional = F [nc] standard_name = mass_number_concentration_of_cloud_liquid_water_particles_in_air long_name = cloud droplet number concentration @@ -170,7 +152,6 @@ type = real kind = kind_phys intent = inout - optional = T [nwfa2d] standard_name = tendency_of_hygroscopic_aerosols_at_surface_adjacent_layer long_name = instantaneous fake water-friendly surface aerosol source @@ -179,7 +160,6 @@ type = real kind = kind_phys intent = inout - optional = T [nifa2d] standard_name = tendency_of_nonhygroscopic_ice_nucleating_aerosols_at_surface_adjacent_layer long_name = instantaneous fake ice-friendly surface aerosol source @@ -188,7 +168,6 @@ type = real kind = kind_phys intent = inout - optional = T [nwfa] standard_name = mass_number_concentration_of_hygroscopic_aerosols long_name = number concentration of water-friendly aerosols @@ -197,7 +176,6 @@ type = real kind = kind_phys intent = inout - optional = T [nifa] standard_name = mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols long_name = number concentration of ice-friendly aerosols @@ -206,7 +184,6 @@ type = real kind = kind_phys intent = inout - optional = T [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -215,7 +192,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -224,7 +200,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -233,7 +208,6 @@ type = real kind = kind_phys intent = in - optional = F [area] standard_name = cell_area long_name = area of the grid cell @@ -242,7 +216,13 @@ type = real kind = kind_phys intent = in - optional = F +[do_effective_radii] + standard_name = flag_for_cloud_effective_radii + long_name = flag for cloud effective radii calculations in GFDL microphysics + units = flag + dimensions = () + type = logical + intent = in [re_cloud] standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle long_name = eff. radius of cloud liquid water particle in micrometer @@ -250,8 +230,7 @@ dimensions = (horizontal_dimension,vertical_layer_dimension) type = real kind = kind_phys - intent = out - optional = T + intent = inout [re_ice] standard_name = effective_radius_of_stratiform_cloud_ice_particle long_name = eff. radius of cloud ice water particle in micrometer @@ -259,8 +238,7 @@ dimensions = (horizontal_dimension,vertical_layer_dimension) type = real kind = kind_phys - intent = out - optional = T + intent = inout [re_snow] standard_name = effective_radius_of_stratiform_cloud_snow_particle long_name = effective radius of cloud snow particle in micrometer @@ -268,8 +246,7 @@ dimensions = (horizontal_dimension,vertical_layer_dimension) type = real kind = kind_phys - intent = out - optional = T + intent = inout [mpicomm] standard_name = mpi_communicator long_name = MPI communicator @@ -277,7 +254,6 @@ dimensions = () type = integer intent = in - optional = F [mpirank] standard_name = mpi_rank long_name = current MPI-rank @@ -285,7 +261,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root long_name = master MPI-rank @@ -293,7 +268,6 @@ dimensions = () type = integer intent = in - optional = F [threads] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available to scheme @@ -301,7 +275,6 @@ dimensions = () type = integer intent = in - optional = F [ext_diag] standard_name = flag_for_extended_diagnostic_output_from_thompson_microphysics long_name = flag for extended diagnostic output from thompson microphysics @@ -309,7 +282,6 @@ dimensions = () type = logical intent = in - optional = F [diag3d] standard_name = extended_diagnostics_output_from_thompson_microphysics long_name = set of 3d arrays for extended diagnostics output from thompson microphysics @@ -318,7 +290,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -327,7 +298,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -335,7 +305,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -348,7 +317,6 @@ dimensions = () type = integer intent = in - optional = F [nlev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -356,7 +324,6 @@ dimensions = () type = integer intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -365,7 +332,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -374,7 +340,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -383,7 +348,6 @@ type = real kind = kind_phys intent = in - optional = F [convert_dry_rho] standard_name = flag_for_converting_hydrometeors_from_moist_to_dry_air long_name = flag for converting hydrometeors from moist to dry air @@ -391,7 +355,6 @@ dimensions = () type = logical intent = in - optional = F [spechum] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity @@ -400,7 +363,6 @@ type = real kind = kind_phys intent = inout - optional = F [qc] standard_name = cloud_liquid_water_mixing_ratio_of_new_state long_name = cloud water mixing ratio wrt dry+vapor (no condensates) @@ -409,7 +371,6 @@ type = real kind = kind_phys intent = inout - optional = F [qr] standard_name = rain_mixing_ratio_of_new_state long_name = rain water mixing ratio wrt dry+vapor (no condensates) @@ -418,7 +379,6 @@ type = real kind = kind_phys intent = inout - optional = F [qi] standard_name = cloud_ice_mixing_ratio_of_new_state long_name = ice water mixing ratio wrt dry+vapor (no condensates) @@ -427,7 +387,6 @@ type = real kind = kind_phys intent = inout - optional = F [qs] standard_name = snow_mixing_ratio_of_new_state long_name = snow water mixing ratio wrt dry+vapor (no condensates) @@ -436,7 +395,6 @@ type = real kind = kind_phys intent = inout - optional = F [qg] standard_name = graupel_mixing_ratio_of_new_state long_name = graupel mixing ratio wrt dry+vapor (no condensates) @@ -445,7 +403,6 @@ type = real kind = kind_phys intent = inout - optional = F [ni] standard_name = mass_number_concentration_of_cloud_ice_water_crystals_in_air_of_new_state long_name = ice number concentration @@ -454,7 +411,6 @@ type = real kind = kind_phys intent = inout - optional = F [nr] standard_name = mass_number_concentration_of_rain_of_new_state long_name = rain number concentration @@ -463,7 +419,6 @@ type = real kind = kind_phys intent = inout - optional = F [is_aerosol_aware] standard_name = flag_for_aerosol_physics long_name = flag for aerosol-aware physics @@ -471,7 +426,6 @@ dimensions = () type = logical intent = in - optional = F [nc] standard_name = mass_number_concentration_of_cloud_liquid_water_particles_in_air_of_new_state long_name = cloud droplet number concentration @@ -480,7 +434,6 @@ type = real kind = kind_phys intent = inout - optional = T [nwfa] standard_name = mass_number_concentration_of_hygroscopic_aerosols_of_new_state long_name = number concentration of water-friendly aerosols @@ -489,7 +442,6 @@ type = real kind = kind_phys intent = inout - optional = T [nifa] standard_name = mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_of_new_state long_name = number concentration of ice-friendly aerosols @@ -498,7 +450,6 @@ type = real kind = kind_phys intent = inout - optional = T [nwfa2d] standard_name = tendency_of_hygroscopic_aerosols_at_surface_adjacent_layer long_name = instantaneous fake water-friendly surface aerosol source @@ -507,7 +458,6 @@ type = real kind = kind_phys intent = in - optional = T [nifa2d] standard_name = tendency_of_nonhygroscopic_ice_nucleating_aerosols_at_surface_adjacent_layer long_name = instantaneous fake ice-friendly surface aerosol source @@ -516,7 +466,6 @@ type = real kind = kind_phys intent = in - optional = T [tgrs] standard_name = air_temperature_of_new_state long_name = model layer mean temperature @@ -525,7 +474,6 @@ type = real kind = kind_phys intent = inout - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -534,7 +482,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -543,7 +490,6 @@ type = real kind = kind_phys intent = in - optional = F [omega] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -552,7 +498,6 @@ type = real kind = kind_phys intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -561,7 +506,6 @@ type = real kind = kind_phys intent = in - optional = F [dt_inner] standard_name = time_step_for_inner_loop long_name = time step for inner loop @@ -570,7 +514,6 @@ type = real kind = kind_phys intent = in - optional = F [first_time_step] standard_name = flag_for_first_timestep long_name = flag for first time step for time integration loop (cold/warmstart) @@ -578,7 +521,6 @@ dimensions = () type = logical intent = in - optional = F [istep] standard_name = ccpp_loop_counter long_name = loop counter for subcycling loops in CCPP @@ -586,7 +528,6 @@ dimensions = () type = integer intent = in - optional = F [nsteps] standard_name = ccpp_loop_extent long_name = loop extent for subcycling loops in CCPP @@ -594,7 +535,6 @@ dimensions = () type = integer intent = in - optional = F [prcp] standard_name = lwe_thickness_of_explicit_precipitation_amount long_name = explicit precipitation (rain, ice, snow, graupel) on physics timestep @@ -603,7 +543,6 @@ type = real kind = kind_phys intent = inout - optional = F [rain] standard_name = lwe_thickness_of_explicit_rain_amount long_name = explicit rain fall on physics timestep @@ -612,7 +551,6 @@ type = real kind = kind_phys intent = inout - optional = F [graupel] standard_name = lwe_thickness_of_graupel_amount long_name = graupel fall on physics timestep @@ -621,7 +559,6 @@ type = real kind = kind_phys intent = inout - optional = F [ice] standard_name = lwe_thickness_of_ice_amount long_name = ice fall on physics timestep @@ -630,7 +567,6 @@ type = real kind = kind_phys intent = inout - optional = F [snow] standard_name = lwe_thickness_of_snow_amount long_name = snow fall on physics timestep @@ -639,7 +575,6 @@ type = real kind = kind_phys intent = inout - optional = F [sr] standard_name = ratio_of_snowfall_to_rainfall long_name = ratio of snowfall to large-scale rainfall @@ -648,7 +583,6 @@ type = real kind = kind_phys intent = out - optional = F [refl_10cm] standard_name = radar_reflectivity_10cm long_name = instantaneous refl_10cm @@ -657,7 +591,6 @@ type = real kind = kind_phys intent = out - optional = F [reset_dBZ] standard_name = flag_for_resetting_radar_reflectivity_calculation long_name = flag for resetting radar reflectivity calculation @@ -665,7 +598,6 @@ dimensions = () type = logical intent = in - optional = F [do_radar_ref] standard_name = flag_for_radar_reflectivity long_name = flag for radar reflectivity @@ -673,7 +605,13 @@ dimensions = () type = logical intent = in - optional = F +[do_effective_radii] + standard_name = flag_for_cloud_effective_radii + long_name = flag for cloud effective radii calculations in GFDL microphysics + units = flag + dimensions = () + type = logical + intent = in [re_cloud] standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle long_name = eff. radius of cloud liquid water particle in micrometer (meter here) @@ -681,8 +619,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = out - optional = T + intent = inout [re_ice] standard_name = effective_radius_of_stratiform_cloud_ice_particle long_name = eff. radius of cloud ice water particle in micrometer (meter here) @@ -690,8 +627,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = out - optional = T + intent = inout [re_snow] standard_name = effective_radius_of_stratiform_cloud_snow_particle long_name = effective radius of cloud snow particle in micrometer (meter here) @@ -699,8 +635,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = out - optional = T + intent = inout [mpicomm] standard_name = mpi_communicator long_name = MPI communicator @@ -708,7 +643,6 @@ dimensions = () type = integer intent = in - optional = F [mpirank] standard_name = mpi_rank long_name = current MPI-rank @@ -716,7 +650,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root long_name = master MPI-rank @@ -724,7 +657,6 @@ dimensions = () type = integer intent = in - optional = F [blkno] standard_name = ccpp_block_number long_name = number of block for explicit data blocking in CCPP @@ -732,7 +664,6 @@ dimensions = () type = integer intent = in - optional = F [ext_diag] standard_name = flag_for_extended_diagnostic_output_from_thompson_microphysics long_name = flag for extended diagnostic output from thompson microphysics @@ -740,7 +671,6 @@ dimensions = () type = logical intent = in - optional = F [diag3d] standard_name = extended_diagnostics_output_from_thompson_microphysics long_name = set of 3d arrays for extended diagnostics output from thompson microphysics @@ -749,7 +679,6 @@ type = real kind = kind_phys intent = inout - optional = F [reset_diag3d] standard_name = flag_reset_extended_diagnostics_output_arrays_from_thompson_microphysics long_name = flag for resetting extended diagnostics output arrays from thompson microphysics @@ -757,7 +686,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -766,7 +694,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -774,7 +701,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -788,7 +714,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -796,4 +721,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/mp_thompson_post.meta b/physics/mp_thompson_post.meta index e37f9bc5f..5107bf642 100644 --- a/physics/mp_thompson_post.meta +++ b/physics/mp_thompson_post.meta @@ -15,7 +15,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -24,7 +23,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -32,7 +30,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -45,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [nlev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -53,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [tgrs_save] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -62,7 +57,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature_of_new_state long_name = model layer mean temperature @@ -71,7 +65,6 @@ type = real kind = kind_phys intent = inout - optional = F [prslk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers @@ -80,7 +73,6 @@ type = real kind = kind_phys intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -89,7 +81,6 @@ type = real kind = kind_phys intent = in - optional = F [ttendlim] standard_name = max_tendency_of_air_potential_temperature_due_to_large_scale_precipitation long_name = temperature tendency limiter per physics time step @@ -98,7 +89,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -106,7 +96,6 @@ dimensions = () type = integer intent = in - optional = F [mpicomm] standard_name = mpi_communicator long_name = MPI communicator @@ -114,7 +103,6 @@ dimensions = () type = integer intent = in - optional = F [mpirank] standard_name = mpi_rank long_name = current MPI-rank @@ -122,7 +110,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root long_name = master MPI-rank @@ -130,7 +117,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -139,7 +125,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -147,7 +132,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -161,7 +145,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -169,4 +152,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/mp_thompson_pre.meta b/physics/mp_thompson_pre.meta index 25339f39b..c21dd6001 100644 --- a/physics/mp_thompson_pre.meta +++ b/physics/mp_thompson_pre.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [nlev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [tgrs] standard_name = air_temperature_of_new_state long_name = model layer mean temperature @@ -31,7 +29,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs_save] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -40,7 +37,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -49,7 +45,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -57,4 +52,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/ozphys.meta b/physics/ozphys.meta index 4a3c2d3c5..f9470f376 100644 --- a/physics/ozphys.meta +++ b/physics/ozphys.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [ko3] standard_name = vertical_dimension_of_ozone_forcing_data long_name = number of vertical layers in ozone forcing data @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics time step @@ -69,7 +63,6 @@ type = real kind = kind_phys intent = in - optional = F [oz] standard_name = ozone_concentration_of_new_state long_name = ozone concentration updated by physics @@ -78,7 +71,6 @@ type = real kind = kind_phys intent = inout - optional = F [tin] standard_name = air_temperature_of_new_state long_name = updated air temperature @@ -87,7 +79,6 @@ type = real kind = kind_phys intent = in - optional = F [po3] standard_name = natural_log_of_ozone_forcing_data_pressure_levels long_name = natural log of ozone forcing data pressure levels @@ -96,7 +87,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mid-layer pressure @@ -105,7 +95,6 @@ type = real kind = kind_phys intent = in - optional = F [prdout] standard_name = ozone_forcing long_name = ozone forcing coefficients @@ -114,7 +103,6 @@ type = real kind = kind_phys intent = in - optional = F [oz_coeff] standard_name = number_of_coefficients_in_ozone_forcing_data long_name = number of coefficients in ozone forcing data @@ -122,7 +110,6 @@ dimensions = () type = integer intent = in - optional = F [delp] standard_name = air_pressure_difference_between_midlayers long_name = difference between mid-layer pressures @@ -131,7 +118,6 @@ type = real kind = kind_phys intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for calculating 3-D diagnostic fields @@ -139,7 +125,6 @@ dimensions = () type = logical intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -149,7 +134,6 @@ kind = kind_phys active = (flag_for_diagnostics_3D) intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -157,7 +141,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -165,7 +148,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_prod_loss] standard_name = index_of_production_and_loss_process_in_cumulative_change_index long_name = index of production and loss effect in photochemistry process in second dimension of array cumulative change index @@ -173,7 +155,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_ozmix] standard_name = index_of_ozone_mixing_ratio_process_in_cumulative_change_index long_name = index of ozone mixing ratio effect in photochemistry process in second dimension of array cumulative change index @@ -181,7 +162,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_temp] standard_name = index_of_temperature_process_in_cumulative_change_index long_name = index of temperature effect in photochemistry process in second dimension of array cumulative change index @@ -189,7 +169,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_overhead_ozone] standard_name = index_of_overhead_process_in_cumulative_change_index long_name = index of overhead ozone effect in photochemistry process in second dimension of array cumulative change index @@ -197,7 +176,6 @@ dimensions = () type = integer intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -206,7 +184,6 @@ type = real kind = kind_phys intent = in - optional = F [me] standard_name = mpi_rank long_name = rank of the current MPI task @@ -214,7 +191,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -223,7 +199,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -231,4 +206,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/ozphys_2015.meta b/physics/ozphys_2015.meta index 750c27d98..8cd2ee150 100644 --- a/physics/ozphys_2015.meta +++ b/physics/ozphys_2015.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [ko3] standard_name = vertical_dimension_of_ozone_forcing_data long_name = number of vertical layers in ozone forcing data @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics time step @@ -69,7 +63,6 @@ type = real kind = kind_phys intent = in - optional = F [oz] standard_name = ozone_concentration_of_new_state long_name = ozone concentration updated by physics @@ -78,7 +71,6 @@ type = real kind = kind_phys intent = inout - optional = F [tin] standard_name = air_temperature_of_new_state long_name = updated air temperature @@ -87,7 +79,6 @@ type = real kind = kind_phys intent = in - optional = F [po3] standard_name = natural_log_of_ozone_forcing_data_pressure_levels long_name = natural log of ozone forcing data pressure levels @@ -96,7 +87,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mid-layer pressure @@ -105,7 +95,6 @@ type = real kind = kind_phys intent = in - optional = F [prdout] standard_name = ozone_forcing long_name = ozone forcing data @@ -114,7 +103,6 @@ type = real kind = kind_phys intent = in - optional = F [pl_coeff] standard_name = number_of_coefficients_in_ozone_forcing_data long_name = number of coefficients in ozone forcing data @@ -122,7 +110,6 @@ dimensions = () type = integer intent = in - optional = F [delp] standard_name = air_pressure_difference_between_midlayers long_name = difference between mid-layer pressures @@ -131,7 +118,6 @@ type = real kind = kind_phys intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for calculating 3-D diagnostic fields @@ -139,7 +125,6 @@ dimensions = () type = logical intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -148,7 +133,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -156,7 +140,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -164,7 +147,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_prod_loss] standard_name = index_of_production_and_loss_process_in_cumulative_change_index long_name = index of production and loss effect in photochemistry process in second dimension of array cumulative change index @@ -172,7 +154,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_ozmix] standard_name = index_of_ozone_mixing_ratio_process_in_cumulative_change_index long_name = index of ozone mixing ratio effect in photochemistry process in second dimension of array cumulative change index @@ -180,7 +161,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_temp] standard_name = index_of_temperature_process_in_cumulative_change_index long_name = index of temperature effect in photochemistry process in second dimension of array cumulative change index @@ -188,7 +168,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_overhead_ozone] standard_name = index_of_overhead_process_in_cumulative_change_index long_name = index of overhead ozone effect in photochemistry process in second dimension of array cumulative change index @@ -196,7 +175,6 @@ dimensions = () type = integer intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -205,7 +183,6 @@ type = real kind = kind_phys intent = in - optional = F [me] standard_name = mpi_rank long_name = rank of the current MPI task @@ -213,7 +190,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -222,7 +198,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -230,4 +205,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/phys_tend.meta b/physics/phys_tend.meta index 1ab3e8588..a38e5899c 100644 --- a/physics/phys_tend.meta +++ b/physics/phys_tend.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -31,7 +29,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [ntracp100] standard_name = number_of_tracers_plus_one_hundred long_name = number of tracers plus one hundred @@ -39,7 +36,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_physics] standard_name = index_of_all_physics_process_in_cumulative_change_index long_name = index of all physics transport process in second dimension of array cumulative change index @@ -47,7 +43,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_photochem] standard_name = index_of_photochemistry_process_in_cumulative_change_index long_name = index of photochemistry process in second dimension of array cumulative change index @@ -55,7 +50,6 @@ dimensions = () type = integer intent = in - optional = F [nprocess] standard_name = number_of_cumulative_change_processes long_name = number of processes that cause changes in state variables @@ -63,7 +57,6 @@ dimensions = () type = integer intent = in - optional = F [nprocess_summed] standard_name = number_of_physics_causes_of_tracer_changes long_name = number of causes in dtidx per tracer summed for total physics tendency @@ -71,7 +64,6 @@ dimensions = () type = integer intent = in - optional = F [is_photochem] standard_name = flags_for_photochemistry_processes_to_sum long_name = flags for photochemistry processes to sum as the total photochemistry process cumulative change @@ -79,7 +71,6 @@ dimensions = (number_of_cumulative_change_processes) type = logical intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -87,7 +78,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -96,7 +86,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -104,4 +93,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/precpd.meta b/physics/precpd.meta index d754851c7..1b9cb30b6 100644 --- a/physics/precpd.meta +++ b/physics/precpd.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr] standard_name = identifier_for_zhao_carr_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_zhao_carr_pdf] standard_name = identifier_for_zhao_carr_pdf_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme with PDF clouds @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -39,7 +36,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -47,7 +43,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -68,7 +62,6 @@ dimensions = () type = integer intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics time step @@ -77,7 +70,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = pressure level thickness @@ -86,7 +78,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = layer mean pressure @@ -95,7 +86,6 @@ type = real kind = kind_phys intent = in - optional = F [q] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity @@ -104,7 +94,6 @@ type = real kind = kind_phys intent = inout - optional = F [cwm] standard_name = cloud_liquid_water_mixing_ratio_of_new_state long_name = moist cloud condensed water mixing ratio @@ -113,7 +102,6 @@ type = real kind = kind_phys intent = inout - optional = F [t] standard_name = air_temperature_of_new_state long_name = layer mean air temperature @@ -122,7 +110,6 @@ type = real kind = kind_phys intent = inout - optional = F [rn] standard_name = lwe_thickness_of_explicit_precipitation_amount long_name = explicit precipitation amount on physics timestep @@ -131,7 +118,6 @@ type = real kind = kind_phys intent = out - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -140,7 +126,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -149,7 +134,6 @@ type = real kind = kind_phys intent = in - optional = F [hfus] standard_name = latent_heat_of_fusion_of_water_at_0C long_name = latent heat of fusion @@ -158,7 +142,6 @@ type = real kind = kind_phys intent = in - optional = F [ttp] standard_name = triple_point_temperature_of_water long_name = triple point temperature of water @@ -167,7 +150,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -176,7 +158,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -185,7 +166,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -194,7 +174,6 @@ type = real kind = kind_phys intent = in - optional = F [sr] standard_name = ratio_of_snowfall_to_rainfall long_name = ratio of snowfall to large-scale rainfall @@ -203,7 +182,6 @@ type = real kind = kind_phys intent = out - optional = F [rainp] standard_name = tendency_of_rain_water_mixing_ratio_due_to_microphysics long_name = tendency of rain water mixing ratio due to microphysics @@ -212,7 +190,6 @@ type = real kind = kind_phys intent = out - optional = F [u00k] standard_name = critical_relative_humidity long_name = critical relative humidity @@ -221,7 +198,6 @@ type = real kind = kind_phys intent = in - optional = F [psautco] standard_name = autoconversion_to_snow_coefficient long_name = conversion coefficient from cloud ice to snow @@ -230,7 +206,6 @@ type = real kind = kind_phys intent = in - optional = F [prautco] standard_name = autoconversion_to_rain_coefficient long_name = conversion coefficient from cloud water to rain @@ -239,7 +214,6 @@ type = real kind = kind_phys intent = in - optional = F [evpco] standard_name = precipitation_evaporation_coefficient long_name = coefficient for evaporation of rainfall @@ -248,7 +222,6 @@ type = real kind = kind_phys intent = in - optional = F [wminco] standard_name = cloud_condensate_autoconversion_threshold_coefficient long_name = conversion coefficient from cloud liquid and ice to precipitation @@ -257,7 +230,6 @@ type = real kind = kind_phys intent = in - optional = F [wk1] standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes long_name = grid size related coefficient used in scale-sensitive schemes @@ -266,7 +238,6 @@ type = real kind = kind_phys intent = in - optional = F [lprnt] standard_name = flag_print long_name = flag for printing diagnostics to output @@ -274,7 +245,6 @@ dimensions = () type = logical intent = in - optional = F [jpr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of printed column @@ -282,7 +252,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -291,7 +260,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -299,5 +267,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/radlw_main.meta b/physics/radlw_main.meta index ca4b96466..70d820922 100644 --- a/physics/radlw_main.meta +++ b/physics/radlw_main.meta @@ -15,7 +15,6 @@ type = real kind = kind_phys intent = in - optional = F [plvl] standard_name = air_pressure_at_interface_for_radiation_in_hPa long_name = air pressure level @@ -24,7 +23,6 @@ type = real kind = kind_phys intent = in - optional = F [tlyr] standard_name = air_temperature_at_layer_for_radiation long_name = air temperature layer @@ -33,7 +31,6 @@ type = real kind = kind_phys intent = in - optional = F [tlvl] standard_name = air_temperature_at_interface_for_radiation long_name = air temperature level @@ -42,7 +39,6 @@ type = real kind = kind_phys intent = in - optional = F [qlyr] standard_name = water_vapor_specific_humidity_at_layer_for_radiation long_name = specific humidity layer @@ -51,7 +47,6 @@ type = real kind = kind_phys intent = in - optional = F [olyr] standard_name = ozone_concentration_at_layer_for_radiation long_name = ozone concentration layer @@ -60,7 +55,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_co2] standard_name = volume_mixing_ratio_of_co2 long_name = volume mixing ratio co2 @@ -69,7 +63,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_n2o] standard_name = volume_mixing_ratio_of_n2o long_name = volume mixing ratio no2 @@ -78,7 +71,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_ch4] standard_name = volume_mixing_ratio_of_ch4 long_name = volume mixing ratio ch4 @@ -87,7 +79,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_o2] standard_name = volume_mixing_ratio_of_o2 long_name = volume mixing ratio o2 @@ -96,7 +87,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_co] standard_name = volume_mixing_ratio_of_co long_name = volume mixing ratio co @@ -105,7 +95,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_cfc11] standard_name = volume_mixing_ratio_of_cfc11 long_name = volume mixing ratio cfc11 @@ -114,7 +103,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_cfc12] standard_name = volume_mixing_ratio_of_cfc12 long_name = volume mixing ratio cfc12 @@ -123,7 +111,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_cfc22] standard_name = volume_mixing_ratio_of_cfc22 long_name = volume mixing ratio cfc22 @@ -132,7 +119,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_ccl4] standard_name = volume_mixing_ratio_of_ccl4 long_name = volume mixing ratio ccl4 @@ -141,7 +127,6 @@ type = real kind = kind_phys intent = in - optional = F [icseed] standard_name = random_number_seed_for_mcica_longwave long_name = seed for random number generation for longwave radiation @@ -149,7 +134,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [aeraod] standard_name = aerosol_optical_depth_for_longwave_bands_01_16 long_name = aerosol optical depth for longwave bands 01-16 @@ -158,7 +142,6 @@ type = real kind = kind_phys intent = in - optional = F [aerssa] standard_name = aerosol_single_scattering_albedo_for_longwave_bands_01_16 long_name = aerosol single scattering albedo for longwave bands 01-16 @@ -167,7 +150,6 @@ type = real kind = kind_phys intent = in - optional = F [sfemis] standard_name = surface_longwave_emissivity long_name = surface emissivity @@ -176,7 +158,6 @@ type = real kind = kind_phys intent = in - optional = F [sfgtmp] standard_name = surface_ground_temperature_for_radiation long_name = surface ground temperature for radiation @@ -185,7 +166,6 @@ type = real kind = kind_phys intent = in - optional = F [dzlyr] standard_name = layer_thickness_for_radiation long_name = layer thickness @@ -194,7 +174,6 @@ type = real kind = kind_phys intent = in - optional = F [delpin] standard_name = layer_pressure_thickness_for_radiation long_name = layer pressure thickness @@ -203,7 +182,6 @@ type = real kind = kind_phys intent = in - optional = F [de_lgth] standard_name = cloud_decorrelation_length long_name = cloud decorrelation length @@ -212,7 +190,6 @@ type = real kind = kind_phys intent = in - optional = F [alpha] standard_name = cloud_overlap_decorrelation_parameter long_name = cloud overlap decorrelation parameter @@ -221,7 +198,6 @@ type = real kind = kind_phys intent = in - optional = F [npts] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -229,7 +205,6 @@ dimensions = () type = integer intent = in - optional = F [nlay] standard_name = adjusted_vertical_layer_dimension_for_radiation long_name = number of vertical layers for radiation @@ -237,7 +212,6 @@ dimensions = () type = integer intent = in - optional = F [nlp1] standard_name = adjusted_vertical_level_dimension_for_radiation long_name = number of vertical levels for radiation @@ -245,7 +219,6 @@ dimensions = () type = integer intent = in - optional = F [lprnt] standard_name = flag_print long_name = flag to print @@ -253,7 +226,6 @@ dimensions = () type = logical intent = in - optional = F [cld_cf] standard_name = total_cloud_fraction long_name = total cloud fraction @@ -262,7 +234,6 @@ type = real kind = kind_phys intent = in - optional = F [lslwr] standard_name = flag_for_calling_longwave_radiation long_name = flag to calculate LW irradiances @@ -270,7 +241,6 @@ dimensions = () type = logical intent = in - optional = F [hlwc] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step_and_radiation_levels long_name = longwave total sky heating rate @@ -279,7 +249,6 @@ type = real kind = kind_phys intent = inout - optional = F [topflx] standard_name = lw_fluxes_top_atmosphere long_name = longwave total sky fluxes at the top of the atm @@ -287,7 +256,6 @@ dimensions = (horizontal_loop_extent) type = topflw_type intent = inout - optional = F [sfcflx] standard_name = surface_lw_fluxes_assuming_total_and_clear_sky_on_radiation_timestep long_name = longwave total sky fluxes at the Earth surface @@ -295,7 +263,6 @@ dimensions = (horizontal_loop_extent) type = sfcflw_type intent = inout - optional = F [cldtau] standard_name = cloud_optical_depth_layers_at_10mu_band long_name = approx 10mu band layer cloud optical depth @@ -304,7 +271,6 @@ type = real kind = kind_phys intent = inout - optional = F [hlw0] standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels long_name = longwave clear sky heating rate @@ -313,7 +279,6 @@ type = real kind = kind_phys intent = inout - optional = T [cld_lwp] standard_name = cloud_liquid_water_path long_name = cloud liquid water path @@ -322,7 +287,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_ref_liq] standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud @@ -331,7 +295,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_iwp] standard_name = cloud_ice_water_path long_name = cloud ice water path @@ -340,7 +303,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_ref_ice] standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud @@ -349,7 +311,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_rwp] standard_name = cloud_rain_water_path long_name = cloud ice water path @@ -358,7 +319,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_ref_rain] standard_name = mean_effective_radius_for_rain_drop long_name = mean effective radius for rain drop @@ -367,7 +327,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_swp] standard_name = cloud_snow_water_path long_name = cloud snow water path @@ -376,7 +335,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_ref_snow] standard_name = mean_effective_radius_for_snow_flake long_name = mean effective radius for snow flake @@ -385,7 +343,6 @@ type = real kind = kind_phys intent = in - optional = T [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -394,7 +351,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -402,4 +358,3 @@ dimensions = () type = integer intent = out - optional = F \ No newline at end of file diff --git a/physics/radsw_main.meta b/physics/radsw_main.meta index b8b6a150b..187d26f21 100644 --- a/physics/radsw_main.meta +++ b/physics/radsw_main.meta @@ -15,7 +15,6 @@ type = real kind = kind_phys intent = in - optional = F [plvl] standard_name = air_pressure_at_interface_for_radiation_in_hPa long_name = air pressure level @@ -24,7 +23,6 @@ type = real kind = kind_phys intent = in - optional = F [tlyr] standard_name = air_temperature_at_layer_for_radiation long_name = air temperature layer @@ -33,7 +31,6 @@ type = real kind = kind_phys intent = in - optional = F [tlvl] standard_name = air_temperature_at_interface_for_radiation long_name = air temperature level @@ -42,7 +39,6 @@ type = real kind = kind_phys intent = in - optional = F [qlyr] standard_name = water_vapor_specific_humidity_at_layer_for_radiation long_name = specific humidity layer @@ -51,7 +47,6 @@ type = real kind = kind_phys intent = in - optional = F [olyr] standard_name = ozone_concentration_at_layer_for_radiation long_name = ozone concentration layer @@ -60,7 +55,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_co2] standard_name = volume_mixing_ratio_of_co2 long_name = volume mixing ratio co2 @@ -69,7 +63,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_n2o] standard_name = volume_mixing_ratio_of_n2o long_name = volume mixing ratio no2 @@ -78,7 +71,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_ch4] standard_name = volume_mixing_ratio_of_ch4 long_name = volume mixing ratio ch4 @@ -87,7 +79,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_o2] standard_name = volume_mixing_ratio_of_o2 long_name = volume mixing ratio o2 @@ -96,7 +87,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_co] standard_name = volume_mixing_ratio_of_co long_name = volume mixing ratio co @@ -105,7 +95,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_cfc11] standard_name = volume_mixing_ratio_of_cfc11 long_name = volume mixing ratio cfc11 @@ -114,7 +103,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_cfc12] standard_name = volume_mixing_ratio_of_cfc12 long_name = volume mixing ratio cfc12 @@ -123,7 +111,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_cfc22] standard_name = volume_mixing_ratio_of_cfc22 long_name = volume mixing ratio cfc22 @@ -132,7 +119,6 @@ type = real kind = kind_phys intent = in - optional = F [gasvmr_ccl4] standard_name = volume_mixing_ratio_of_ccl4 long_name = volume mixing ratio ccl4 @@ -141,7 +127,6 @@ type = real kind = kind_phys intent = in - optional = F [icseed] standard_name = random_number_seed_for_mcica_shortwave long_name = seed for random number generation for shortwave radiation @@ -149,7 +134,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [aeraod] standard_name = aerosol_optical_depth_for_shortwave_bands_01_16 long_name = aerosol optical depth for shortwave bands 01-16 @@ -158,7 +142,6 @@ type = real kind = kind_phys intent = in - optional = F [aerssa] standard_name = aerosol_single_scattering_albedo_for_shortwave_bands_01_16 long_name = aerosol single scattering albedo for shortwave bands 01-16 @@ -167,7 +150,6 @@ type = real kind = kind_phys intent = in - optional = F [aerasy] standard_name = aerosol_asymmetry_parameter_for_shortwave_bands_01_16 long_name = aerosol asymmetry paramter for shortwave bands 01-16 @@ -176,7 +158,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcalb_nir_dir] standard_name = surface_albedo_due_to_near_IR_direct long_name = surface albedo due to near IR direct beam @@ -185,7 +166,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcalb_nir_dif] standard_name = surface_albedo_due_to_near_IR_diffused long_name = surface albedo due to near IR diffused beam @@ -194,7 +174,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcalb_uvis_dir] standard_name = surface_albedo_due_to_UV_and_VIS_direct long_name = surface albedo due to UV+VIS direct beam @@ -203,7 +182,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcalb_uvis_dif] standard_name = surface_albedo_due_to_UV_and_VIS_diffused long_name = surface albedo due to UV+VIS diffused beam @@ -212,7 +190,6 @@ type = real kind = kind_phys intent = in - optional = F [dzlyr] standard_name = layer_thickness_for_radiation long_name = layer thickness @@ -221,7 +198,6 @@ type = real kind = kind_phys intent = in - optional = F [delpin] standard_name = layer_pressure_thickness_for_radiation long_name = layer pressure thickness @@ -230,7 +206,6 @@ type = real kind = kind_phys intent = in - optional = F [de_lgth] standard_name = cloud_decorrelation_length long_name = cloud decorrelation length @@ -239,7 +214,6 @@ type = real kind = kind_phys intent = in - optional = F [alpha] standard_name = cloud_overlap_decorrelation_parameter long_name = cloud overlap decorrelation parameter @@ -248,7 +222,6 @@ type = real kind = kind_phys intent = in - optional = F [cosz] standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep long_name = cosine of the solar zenit angle @@ -257,7 +230,6 @@ type = real kind = kind_phys intent = in - optional = F [solcon] standard_name = solar_constant long_name = solar constant @@ -266,7 +238,6 @@ type = real kind = kind_phys intent = in - optional = F [nday] standard_name = daytime_points_dimension long_name = daytime points dimension @@ -274,7 +245,6 @@ dimensions = () type = integer intent = in - optional = F [idxday] standard_name = daytime_points long_name = daytime points @@ -282,7 +252,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [npts] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -290,7 +259,6 @@ dimensions = () type = integer intent = in - optional = F [nlay] standard_name = adjusted_vertical_layer_dimension_for_radiation long_name = number of vertical layers for radiation @@ -298,7 +266,6 @@ dimensions = () type = integer intent = in - optional = F [nlp1] standard_name = adjusted_vertical_level_dimension_for_radiation long_name = number of vertical levels for radiation @@ -306,7 +273,6 @@ dimensions = () type = integer intent = in - optional = F [lprnt] standard_name = flag_print long_name = flag to print @@ -314,7 +280,6 @@ dimensions = () type = logical intent = in - optional = F [cld_cf] standard_name = total_cloud_fraction long_name = total cloud fraction @@ -323,7 +288,6 @@ type = real kind = kind_phys intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = flag to calculate SW irradiances @@ -331,7 +295,6 @@ dimensions = () type = logical intent = in - optional = F [hswc] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step_and_radiation_levels long_name = shortwave total sky heating rate @@ -340,7 +303,6 @@ type = real kind = kind_phys intent = inout - optional = F [topflx] standard_name = sw_fluxes_top_atmosphere long_name = shortwave total sky fluxes at the top of the atm @@ -348,7 +310,6 @@ dimensions = (horizontal_loop_extent) type = topfsw_type intent = inout - optional = F [sfcflx] standard_name = surface_sw_fluxes_assuming_total_and_clear_sky_on_radiation_timestep long_name = shortwave total sky fluxes at the Earth surface @@ -356,7 +317,6 @@ dimensions = (horizontal_loop_extent) type = sfcfsw_type intent = inout - optional = F [cldtau] standard_name = cloud_optical_depth_layers_at_0p55mu_band long_name = approx .55mu band layer cloud optical depth @@ -365,7 +325,6 @@ type = real kind = kind_phys intent = inout - optional = F [hsw0] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels long_name = shortwave clear sky heating rate @@ -374,7 +333,6 @@ type = real kind = kind_phys intent = inout - optional = T [fdncmp] standard_name = components_of_surface_downward_shortwave_fluxes long_name = derived type for special components of surface downward shortwave fluxes @@ -382,7 +340,6 @@ dimensions = (horizontal_loop_extent) type = cmpfsw_type intent = inout - optional = T [cld_lwp] standard_name = cloud_liquid_water_path long_name = cloud liquid water path @@ -391,7 +348,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_ref_liq] standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud @@ -400,7 +356,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_iwp] standard_name = cloud_ice_water_path long_name = cloud ice water path @@ -409,7 +364,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_ref_ice] standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud @@ -418,7 +372,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_rwp] standard_name = cloud_rain_water_path long_name = cloud rain water path @@ -427,7 +380,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_ref_rain] standard_name = mean_effective_radius_for_rain_drop long_name = mean effective radius for rain drop @@ -436,7 +388,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_swp] standard_name = cloud_snow_water_path long_name = cloud snow water path @@ -445,7 +396,6 @@ type = real kind = kind_phys intent = in - optional = T [cld_ref_snow] standard_name = mean_effective_radius_for_snow_flake long_name = mean effective radius for snow flake @@ -454,7 +404,6 @@ type = real kind = kind_phys intent = in - optional = T [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -463,7 +412,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -471,4 +419,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rascnv.meta b/physics/rascnv.meta index 5832827aa..b3bdd9474 100644 --- a/physics/rascnv.meta +++ b/physics/rascnv.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics time step @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -32,7 +30,6 @@ type = real kind = kind_phys intent = in - optional = F [con_cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -41,7 +38,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -50,7 +46,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -59,7 +54,6 @@ type = real kind = kind_phys intent = in - optional = F [con_hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -68,7 +62,6 @@ type = real kind = kind_phys intent = in - optional = F [con_hfus] standard_name = latent_heat_of_fusion_of_water_at_0C long_name = latent heat of fusion @@ -77,7 +70,6 @@ type = real kind = kind_phys intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -86,7 +78,6 @@ type = real kind = kind_phys intent = in - optional = F [con_t0c] standard_name = temperature_at_zero_celsius long_name = temperature at 0 degree Celsius @@ -95,7 +86,6 @@ type = real kind = kind_phys intent = in - optional = F [con_ttp] standard_name = triple_point_temperature_of_water long_name = triple point temperature of water @@ -104,7 +94,6 @@ type = real kind = kind_phys intent = in - optional = F [con_cvap] standard_name = specific_heat_of_water_vapor_at_constant_pressure long_name = specific heat of water vapor at constant pressure @@ -113,7 +102,6 @@ type = real kind = kind_phys intent = in - optional = F [con_cliq] standard_name = specific_heat_of_liquid_water_at_constant_pressure long_name = specific heat of liquid water at constant pressure @@ -122,7 +110,6 @@ type = real kind = kind_phys intent = in - optional = F [con_csol] standard_name = specific_heat_of_ice_at_constant_pressure long_name = specific heat of ice at constant pressure @@ -131,7 +118,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -140,7 +126,6 @@ type = real kind = kind_phys intent = in - optional = F [con_epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -149,7 +134,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -158,7 +142,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -166,7 +149,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -180,7 +162,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -188,7 +169,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -201,7 +181,6 @@ dimensions = () type = integer intent = in - optional = F [k] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -209,7 +188,6 @@ dimensions = () type = integer intent = in - optional = F [itc] standard_name = index_of_first_chemical_tracer_for_convection long_name = index of first chemical tracer transported/scavenged by convection @@ -217,7 +195,6 @@ dimensions = () type = integer intent = in - optional = F [ntc] standard_name = number_of_chemical_tracers long_name = number of chemical tracers @@ -225,7 +202,6 @@ dimensions = () type = integer intent = in - optional = F [ntr] standard_name = number_of_tracers_for_samf long_name = number of tracers for scale-aware mass flux schemes @@ -233,7 +209,6 @@ dimensions = () type = integer intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics time step @@ -242,7 +217,6 @@ type = real kind = kind_phys intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -251,7 +225,6 @@ type = real kind = kind_phys intent = in - optional = F [ccwf] standard_name = tunable_parameter_for_critical_cloud_workfunction_in_relaxed_arakawa_schubert_deep_convection long_name = multiplication factor for tical_cloud_workfunction @@ -260,7 +233,6 @@ type = real kind = kind_phys intent = in - optional = F [area] standard_name = cell_area long_name = area of the grid cell @@ -269,7 +241,6 @@ type = real kind = kind_phys intent = in - optional = F [dxmin] standard_name = min_grid_scale long_name = minimum scaling factor for critical relative humidity @@ -278,7 +249,6 @@ type = real kind = kind_phys intent = in - optional = F [dxinv] standard_name = reciprocal_of_grid_scale_range long_name = inverse scaling factor for critical relative humidity @@ -287,7 +257,6 @@ type = real kind = kind_phys intent = in - optional = F [psauras] standard_name = autoconversion_to_snow_coefficient_for_deep_convection long_name = conversion coefficient from cloud ice to snow in ras @@ -296,7 +265,6 @@ type = real kind = kind_phys intent = in - optional = F [prauras] standard_name = autoconversion_to_rain_coefficient_for_deep_convection long_name = conversion coefficient from cloud water to rain in ras @@ -305,7 +273,6 @@ type = real kind = kind_phys intent = in - optional = F [wminras] standard_name = cloud_condensate_autoconversion_threshold_coefficient_for_deep_convection long_name = conversion coefficient from cloud liquid and ice to precipitation in ras @@ -314,7 +281,6 @@ type = real kind = kind_phys intent = in - optional = F [dlqf] standard_name = cloud_condensate_detrainment_coefficient long_name = condensate fraction detrained with in a updraft layers @@ -323,7 +289,6 @@ type = real kind = kind_phys intent = in - optional = F [flipv] standard_name = flag_flip long_name = vertical flip logical @@ -331,7 +296,6 @@ dimensions = () type = logical intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -339,7 +303,6 @@ dimensions = () type = integer intent = in - optional = F [rannum] standard_name = random_number long_name = random number array (0-1) @@ -348,7 +311,6 @@ type = real kind = kind_phys intent = in - optional = F [nrcm] standard_name = number_of_random_numbers long_name = second dimension of random number stream for RAS @@ -356,7 +318,6 @@ dimensions = () type = integer intent = in - optional = F [mp_phys] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -364,7 +325,6 @@ dimensions = () type = integer intent = in - optional = F [mp_phys_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -372,7 +332,6 @@ dimensions = () type = integer intent = in - optional = F [ntk] standard_name = index_for_turbulent_kinetic_energy_convective_transport_tracer long_name = index for turbulent kinetic energy in the convectively transported tracer array @@ -380,7 +339,6 @@ dimensions = () type = integer intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -388,7 +346,6 @@ dimensions = () type = integer intent = in - optional = F [rhc] standard_name = critical_relative_humidity long_name = critical relative humidity @@ -397,7 +354,6 @@ type = real kind = kind_phys intent = in - optional = F [tin] standard_name = air_temperature_of_new_state long_name = updated temperature @@ -406,7 +362,6 @@ type = real kind = kind_phys intent = inout - optional = F [qin] standard_name = specific_humidity_of_new_state long_name = updated vapor specific humidity @@ -415,7 +370,6 @@ type = real kind = kind_phys intent = inout - optional = F [uin] standard_name = x_wind_of_new_state long_name = updated x-direction wind @@ -424,7 +378,6 @@ type = real kind = kind_phys intent = inout - optional = F [vin] standard_name = y_wind_of_new_state long_name = updated y-direction wind @@ -433,7 +386,6 @@ type = real kind = kind_phys intent = inout - optional = F [ccin] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -442,7 +394,6 @@ type = real kind = kind_phys intent = inout - optional = F [fscav] standard_name = chemical_tracer_scavenging_fractions long_name = array of aerosol scavenging coefficients @@ -451,7 +402,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -460,7 +410,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -469,7 +418,6 @@ type = real kind = kind_phys intent = in - optional = F [prsik] standard_name = dimensionless_exner_function_at_interface long_name = dimensionless Exner function at model layer interfaces @@ -478,7 +426,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers @@ -487,7 +434,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -496,7 +442,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -505,7 +450,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = vertical index at top atmospheric boundary layer @@ -513,7 +457,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [cdrag] standard_name = surface_drag_coefficient_for_momentum_in_air long_name = surface exchange coeff for momentum @@ -522,7 +465,6 @@ type = real kind = kind_phys intent = in - optional = F [rainc] standard_name = lwe_thickness_of_deep_convective_precipitation_amount long_name = deep convective rainfall amount on physics timestep @@ -531,7 +473,6 @@ type = real kind = kind_phys intent = out - optional = F [kbot] standard_name = vertical_index_at_cloud_base long_name = index for cloud base @@ -539,7 +480,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [ktop] standard_name = vertical_index_at_cloud_top long_name = index for cloud top @@ -547,7 +487,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [kcnv] standard_name = flag_deep_convection long_name = deep convection: 0=no, 1=yes @@ -555,7 +494,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [ddvel] standard_name = enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convection long_name = surface wind enhancement due to convection @@ -564,7 +502,6 @@ type = real kind = kind_phys intent = out - optional = F [ud_mf] standard_name = instantaneous_atmosphere_updraft_convective_mass_flux long_name = (updraft mass flux) * dt @@ -573,7 +510,6 @@ type = real kind = kind_phys intent = out - optional = F [dd_mf] standard_name = instantaneous_atmosphere_downdraft_convective_mass_flux long_name = (downdraft mass flux) * dt @@ -582,7 +518,6 @@ type = real kind = kind_phys intent = out - optional = F [dt_mf] standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux long_name = (detrainment mass flux) * dt @@ -591,7 +526,6 @@ type = real kind = kind_phys intent = out - optional = F [qlcn] standard_name = mass_fraction_of_convective_cloud_liquid_water long_name = mass fraction of convective cloud liquid water @@ -600,7 +534,6 @@ type = real kind = kind_phys intent = inout - optional = F [qicn] standard_name = mass_fraction_of_convective_cloud_ice long_name = mass fraction of convective cloud ice water @@ -609,7 +542,6 @@ type = real kind = kind_phys intent = inout - optional = F [w_upi] standard_name = vertical_velocity_for_updraft long_name = vertical velocity for updraft @@ -618,7 +550,6 @@ type = real kind = kind_phys intent = inout - optional = F [cf_upi] standard_name = convective_cloud_fraction_for_microphysics long_name = convective cloud fraction for microphysics @@ -627,7 +558,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_mfd] standard_name = detrained_mass_flux long_name = detrained mass flux @@ -636,7 +566,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_dqldt] standard_name = tendency_of_cloud_water_due_to_convective_microphysics long_name = tendency of cloud water due to convective microphysics @@ -645,7 +574,6 @@ type = real kind = kind_phys intent = inout - optional = F [clcn] standard_name = convective_cloud_volume_fraction long_name = convective cloud volume fraction @@ -654,7 +582,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_fice] standard_name = ice_fraction_in_convective_tower long_name = ice fraction in convective tower @@ -663,7 +590,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_ndrop] standard_name = number_concentration_of_cloud_liquid_water_particles_for_detrainment long_name = droplet number concentration in convective detrainment @@ -672,7 +598,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_nice] standard_name = number_concentration_of_ice_crystals_for_detrainment long_name = crystal number concentration in convective detrainment @@ -681,7 +606,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -690,7 +614,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -698,4 +621,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rayleigh_damp.meta b/physics/rayleigh_damp.meta index badb23e76..8e958fbf1 100644 --- a/physics/rayleigh_damp.meta +++ b/physics/rayleigh_damp.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = number of vertical layers @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [A] standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics @@ -39,7 +36,6 @@ type = real kind = kind_phys intent = inout - optional = F [B] standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics @@ -48,7 +44,6 @@ type = real kind = kind_phys intent = inout - optional = F [C] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = air temperature tendency due to model physics @@ -57,7 +52,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind long_name = zonal wind @@ -66,7 +60,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind long_name = meridional wind @@ -75,7 +68,6 @@ type = real kind = kind_phys intent = in - optional = F [dt] standard_name = timestep_for_physics long_name = physics time step @@ -84,7 +76,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -93,7 +84,6 @@ type = real kind = kind_phys intent = in - optional = F [levr] standard_name = vertical_dimension_for_radiation long_name = number of vertical layers for radiation calculations @@ -101,7 +91,6 @@ dimensions = () type = integer intent = in - optional = F [pgr] standard_name = surface_air_pressure long_name = surface pressure @@ -110,7 +99,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mid-layer pressure @@ -119,7 +107,6 @@ type = real kind = kind_phys intent = in - optional = F [prslrd0] standard_name = air_pressure_at_bottom_extent_of_rayleigh_damping long_name = pressure level above which to apply Rayleigh damping @@ -128,7 +115,6 @@ type = real kind = kind_phys intent = in - optional = F [ral_ts] standard_name = timescale_for_rayleigh_damping long_name = time scale for Rayleigh damping @@ -137,7 +123,6 @@ type = real kind = kind_phys intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for calculating 3-D diagnostic fields @@ -145,7 +130,6 @@ dimensions = () type = logical intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -155,7 +139,6 @@ kind = kind_phys active = (flag_for_diagnostics_3D) intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -163,7 +146,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_process_rayleigh_damping] standard_name = index_of_rayleigh_damping_process_in_cumulative_change_index long_name = index of rayleigh damping process in second dimension of array cumulative change index @@ -171,7 +153,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -179,7 +160,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -187,7 +167,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -195,7 +174,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -204,7 +182,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -212,5 +189,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmg_lw_post.meta b/physics/rrtmg_lw_post.meta index 4e9ac0f4d..e2731faab 100644 --- a/physics/rrtmg_lw_post.meta +++ b/physics/rrtmg_lw_post.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [ltp] standard_name = extra_top_layer long_name = extra top layers @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [lm] standard_name = vertical_dimension_for_radiation long_name = number of vertical layers for radiation calculation @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [kd] standard_name = vertical_index_difference_between_inout_and_local long_name = vertical index difference between in/out and local @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [lslwr] standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls @@ -54,7 +49,6 @@ dimensions = () type = logical intent = in - optional = F [lwhtr] standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output lw heating rate (Radtend%lwhc) @@ -62,7 +56,6 @@ dimensions = () type = logical intent = in - optional = F [tsfa] standard_name = surface_air_temperature_for_radiation long_name = lowest model layer air temperature for radiation @@ -71,7 +64,6 @@ type = real kind = kind_phys intent = in - optional = F [htlwc] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step_and_radiation_levels long_name = total sky heating rate due to longwave radiation @@ -80,7 +72,6 @@ type = real kind = kind_phys intent = in - optional = F [htlw0] standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels long_name = clear sky heating rate due to longwave radiation @@ -89,7 +80,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcflw] standard_name = surface_lw_fluxes_assuming_total_and_clear_sky_on_radiation_timestep long_name = lw radiation fluxes at sfc @@ -97,7 +87,6 @@ dimensions = (horizontal_loop_extent) type = sfcflw_type intent = in - optional = F [tsflw] standard_name = air_temperature_at_surface_adjacent_layer_on_radiation_timestep long_name = surface air temp during lw calculation @@ -106,7 +95,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcdlw] standard_name = surface_downwelling_longwave_flux_on_radiation_timestep long_name = total sky sfc downward lw flux @@ -115,7 +103,6 @@ type = real kind = kind_phys intent = inout - optional = F [htrlw] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky lw heating rate @@ -124,7 +111,6 @@ type = real kind = kind_phys intent = inout - optional = F [lwhc] standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_timestep long_name = clear sky lw heating rates @@ -133,7 +119,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -142,7 +127,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -150,5 +134,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmg_lw_pre.meta b/physics/rrtmg_lw_pre.meta index fb84cb4c9..affc45384 100644 --- a/physics/rrtmg_lw_pre.meta +++ b/physics/rrtmg_lw_pre.meta @@ -15,7 +15,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -23,4 +22,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmg_sw_post.meta b/physics/rrtmg_sw_post.meta index 81f066f53..819090937 100644 --- a/physics/rrtmg_sw_post.meta +++ b/physics/rrtmg_sw_post.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levr] standard_name = adjusted_vertical_layer_dimension_for_radiation long_name = adjusted number of vertical layers for radiation @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [ltp] standard_name = extra_top_layer long_name = extra top layers @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [nday] standard_name = daytime_points_dimension long_name = daytime points dimension @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [lm] standard_name = vertical_dimension_for_radiation long_name = number of vertical layers for radiation calculation @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [kd] standard_name = vertical_index_difference_between_inout_and_local long_name = vertical index difference between in/out and local @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -70,7 +63,6 @@ dimensions = () type = logical intent = in - optional = F [swhtr] standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output sw heating rate (Radtend%swhc) @@ -78,7 +70,6 @@ dimensions = () type = logical intent = in - optional = F [sfcalb1] standard_name = surface_albedo_due_to_near_IR_direct long_name = surface albedo due to near IR direct beam @@ -87,7 +78,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcalb2] standard_name = surface_albedo_due_to_near_IR_diffused long_name = surface albedo due to near IR diffused beam @@ -96,7 +86,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcalb3] standard_name = surface_albedo_due_to_UV_and_VIS_direct long_name = surface albedo due to UV+VIS direct beam @@ -105,7 +94,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcalb4] standard_name = surface_albedo_due_to_UV_and_VIS_diffused long_name = surface albedo due to UV+VIS diffused beam @@ -114,7 +102,6 @@ type = real kind = kind_phys intent = in - optional = F [htswc] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step_and_radiation_levels long_name = total sky heating rate due to shortwave radiation @@ -123,7 +110,6 @@ type = real kind = kind_phys intent = in - optional = F [htsw0] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels long_name = clear sky heating rates due to shortwave radiation @@ -132,7 +118,6 @@ type = real kind = kind_phys intent = in - optional = F [nirbmdi] standard_name = surface_downwelling_direct_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir beam sw downward flux @@ -141,7 +126,6 @@ type = real kind = kind_phys intent = inout - optional = F [nirdfdi] standard_name = surface_downwelling_diffuse_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir diff sw downward flux @@ -150,7 +134,6 @@ type = real kind = kind_phys intent = inout - optional = F [visbmdi] standard_name = surface_downwelling_direct_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis beam sw downward flux @@ -159,7 +142,6 @@ type = real kind = kind_phys intent = inout - optional = F [visdfdi] standard_name = surface_downwelling_diffuse_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis diff sw downward flux @@ -168,7 +150,6 @@ type = real kind = kind_phys intent = inout - optional = F [nirbmui] standard_name = surface_upwelling_direct_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir beam sw upward flux @@ -177,7 +158,6 @@ type = real kind = kind_phys intent = inout - optional = F [nirdfui] standard_name = surface_upwelling_diffuse_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir diff sw upward flux @@ -186,7 +166,6 @@ type = real kind = kind_phys intent = inout - optional = F [visbmui] standard_name = surface_upwelling_direct_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis beam sw upward flux @@ -195,7 +174,6 @@ type = real kind = kind_phys intent = inout - optional = F [visdfui] standard_name = surface_upwelling_diffuse_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis diff sw upward flux @@ -204,7 +182,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcdsw] standard_name = surface_downwelling_shortwave_flux_on_radiation_timestep long_name = total sky sfc downward sw flux @@ -213,7 +190,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcnsw] standard_name = surface_net_downwelling_shortwave_flux_on_radiation_timestep long_name = total sky sfc netsw flx into ground @@ -222,7 +198,6 @@ type = real kind = kind_phys intent = inout - optional = F [htrsw] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky sw heating rate @@ -231,7 +206,6 @@ type = real kind = kind_phys intent = inout - optional = F [swhc] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_timestep long_name = clear sky sw heating rates @@ -240,7 +214,6 @@ type = real kind = kind_phys intent = inout - optional = F [scmpsw] standard_name = components_of_surface_downward_shortwave_fluxes long_name = derived type for special components of surface downward shortwave fluxes @@ -248,7 +221,6 @@ dimensions = (horizontal_loop_extent) type = cmpfsw_type intent = inout - optional = F [sfcfsw] standard_name = surface_sw_fluxes_assuming_total_and_clear_sky_on_radiation_timestep long_name = sw radiation fluxes at sfc @@ -256,7 +228,6 @@ dimensions = (horizontal_loop_extent) type = sfcfsw_type intent = inout - optional = F [topfsw] standard_name = sw_fluxes_top_atmosphere long_name = sw radiation fluxes at toa @@ -264,7 +235,6 @@ dimensions = (horizontal_loop_extent) type = topfsw_type intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -273,7 +243,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -281,5 +250,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmg_sw_pre.meta b/physics/rrtmg_sw_pre.meta index abf63a447..f980c6a3d 100644 --- a/physics/rrtmg_sw_pre.meta +++ b/physics/rrtmg_sw_pre.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [lsswr] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [coszen] standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep long_name = mean cos of zenith angle over rad call period @@ -31,7 +29,6 @@ type = real kind = kind_phys intent = in - optional = F [nday] standard_name = daytime_points_dimension long_name = daytime points dimension @@ -39,7 +36,6 @@ dimensions = () type = integer intent = out - optional = F [idxday] standard_name = daytime_points long_name = daytime points @@ -47,7 +43,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -56,7 +51,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -64,5 +58,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmgp_lw_aerosol_optics.meta b/physics/rrtmgp_lw_aerosol_optics.meta index f97aba9a7..843688266 100644 --- a/physics/rrtmgp_lw_aerosol_optics.meta +++ b/physics/rrtmgp_lw_aerosol_optics.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [nTracer] standard_name = number_of_tracers long_name = number of tracers @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [nTracerAer] standard_name = number_of_aerosol_tracers_MG long_name = number of aerosol tracers for Morrison Gettelman MP @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure at vertical interface for radiation calculation @@ -55,7 +50,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure at vertical layer for radiation calculation @@ -64,7 +58,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers @@ -73,7 +66,6 @@ type = real kind = kind_phys intent = in - optional = F [tv_lay] standard_name = virtual_temperature long_name = layer virtual temperature @@ -82,7 +74,6 @@ type = real kind = kind_phys intent = in - optional = F [relhum] standard_name = relative_humidity long_name = layer relative humidity @@ -91,7 +82,6 @@ type = real kind = kind_phys intent = in - optional = F [lsmask] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -100,7 +90,6 @@ type = real kind = kind_phys intent = in - optional = F [tracer] standard_name = chemical_tracers long_name = chemical tracers @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = in - optional = F [aerfld] standard_name = mass_number_concentration_of_aerosol_from_gocart_climatology long_name = GOCART aerosol climatology number concentration @@ -118,7 +106,6 @@ type = real kind = kind_phys intent = in - optional = F [lon] standard_name = longitude long_name = longitude @@ -127,7 +114,6 @@ type = real kind = kind_phys intent = in - optional = F [lat] standard_name = latitude long_name = latitude @@ -136,7 +122,6 @@ type = real kind = kind_phys intent = in - optional = F [aerodp] standard_name = atmosphere_optical_thickness_due_to_ambient_aerosol_particles long_name = vertical integrated optical depth for various aerosol species @@ -145,7 +130,6 @@ type = real kind = kind_phys intent = inout - optional = F [lw_optical_props_aerosol] standard_name = longwave_optical_properties_for_aerosols long_name = Fortran DDT containing RRTMGP optical properties @@ -153,7 +137,6 @@ dimensions = () type = ty_optical_props_1scl intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -162,7 +145,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -170,4 +152,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmgp_lw_cloud_optics.meta b/physics/rrtmgp_lw_cloud_optics.meta index e36ee5146..4617912cc 100644 --- a/physics/rrtmgp_lw_cloud_optics.meta +++ b/physics/rrtmgp_lw_cloud_optics.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [doGP_cldoptics_PADE] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_PADE long_name = logical flag to control cloud optics scheme. @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [doGP_cldoptics_LUT] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_LUT long_name = logical flag to control cloud optics scheme. @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [nrghice] standard_name = number_of_ice_roughness_categories long_name = number of ice-roughness categories in RRTMGP calculation @@ -38,7 +35,6 @@ dimensions = () type = integer intent = inout - optional = F [rrtmgp_root_dir] standard_name = directory_for_rte_rrtmgp_source_code long_name = directory for rte+rrtmgp source code @@ -46,7 +42,6 @@ dimensions = () type = character intent = in - optional = F kind = len=128 [rrtmgp_lw_file_clouds] standard_name = filename_of_rrtmgp_longwave_cloud_optics_coefficients @@ -55,7 +50,6 @@ dimensions = () type = character intent = in - optional = F kind = len=128 [mpirank] standard_name = mpi_rank @@ -64,7 +58,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root long_name = master MPI rank @@ -72,7 +65,6 @@ dimensions = () type = integer intent = in - optional = F [mpicomm] standard_name = mpi_communicator long_name = MPI communicator @@ -80,7 +72,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -89,7 +80,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -97,7 +87,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -110,7 +99,6 @@ dimensions = () type = logical intent = in - optional = F [doG_cldoptics] standard_name = flag_to_calc_lw_cld_optics_using_RRTMG long_name = logical flag to control cloud optics scheme. @@ -118,7 +106,6 @@ dimensions = () type = logical intent = in - optional = F [icliq_lw] standard_name = flag_for_optical_property_for_liquid_clouds_for_longwave_radiation long_name = lw optical property for liquid clouds @@ -126,7 +113,6 @@ dimensions = () type = integer intent = in - optional = F [icice_lw] standard_name = flag_for_optical_property_for_ice_clouds_for_longwave_radiation long_name = lw optical property for ice clouds @@ -134,7 +120,6 @@ dimensions = () type = integer intent = in - optional = F [doGP_cldoptics_PADE] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_PADE long_name = logical flag to control cloud optics scheme. @@ -142,7 +127,6 @@ dimensions = () type = logical intent = in - optional = F [doGP_cldoptics_LUT] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_LUT long_name = logical flag to control cloud optics scheme. @@ -150,7 +134,6 @@ dimensions = () type = logical intent = in - optional = F [doGP_lwscat] standard_name = flag_to_include_longwave_scattering_in_cloud_optics long_name = logical flag to control the addition of LW scattering in RRTMGP @@ -158,7 +141,6 @@ dimensions = () type = logical intent = in - optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -166,7 +148,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -174,7 +155,6 @@ dimensions = () type = integer intent = in - optional = F [cld_frac] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -255,7 +235,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure layer @@ -264,7 +243,6 @@ type = real kind = kind_phys intent = in - optional = F [nbndsGPlw] standard_name = number_of_longwave_bands long_name = number of lw bands used in RRTMGP @@ -272,7 +250,6 @@ dimensions = () type = integer intent = in - optional = F [lon] standard_name = longitude long_name = longitude @@ -281,7 +258,6 @@ type = real kind = kind_phys intent = in - optional = F [lat] standard_name = latitude long_name = latitude @@ -290,7 +266,6 @@ type = real kind = kind_phys intent = in - optional = F [cldtaulw] standard_name = cloud_optical_depth_layers_at_10mu_band long_name = approx 10mu band layer cloud optical depth @@ -299,7 +274,6 @@ type = real kind = kind_phys intent = inout - optional = F [lw_optical_props_cloudsByBand] standard_name = longwave_optical_properties_for_cloudy_atmosphere_by_band long_name = Fortran DDT containing RRTMGP optical properties @@ -307,7 +281,6 @@ dimensions = () type = ty_optical_props_2str intent = inout - optional = F [lw_optical_props_precipByBand] standard_name = longwave_optical_properties_for_precipitation_by_band long_name = Fortran DDT containing RRTMGP optical properties @@ -315,7 +288,6 @@ dimensions = () type = ty_optical_props_2str intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -324,7 +296,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -332,5 +303,4 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmgp_lw_cloud_sampling.meta b/physics/rrtmgp_lw_cloud_sampling.meta index c22304bf4..72118b2e9 100644 --- a/physics/rrtmgp_lw_cloud_sampling.meta +++ b/physics/rrtmgp_lw_cloud_sampling.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ###################################################### [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = logical intent = in - optional = F [doGP_lwscat] standard_name = flag_to_include_longwave_scattering_in_cloud_optics long_name = logical flag to control the addition of LW scattering in RRTMGP @@ -52,7 +48,6 @@ dimensions = () type = logical intent = in - optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -68,7 +62,6 @@ dimensions = () type = integer intent = in - optional = F [isubc_lw] standard_name = flag_for_lw_clouds_sub_grid_approximation long_name = flag for lw clouds sub-grid approximation @@ -76,7 +69,6 @@ dimensions = () type = integer intent = in - optional = F [ipsdlw0] standard_name = initial_permutation_seed_lw long_name = initial seed for McICA LW @@ -84,7 +76,6 @@ dimensions = () type = integer intent = in - optional = F [iovr] standard_name = flag_for_cloud_overlap_method_for_radiation long_name = max-random overlap clouds @@ -92,7 +83,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_maxrand] standard_name = flag_for_maximum_random_cloud_overlap_method long_name = choice of maximum-random cloud overlap method @@ -100,7 +90,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_dcorr] standard_name = flag_for_decorrelation_length_cloud_overlap_method long_name = choice of decorrelation-length cloud overlap method @@ -108,7 +97,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_exp] standard_name = flag_for_exponential_cloud_overlap_method long_name = choice of exponential cloud overlap method @@ -116,7 +104,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_exprand] standard_name = flag_for_exponential_random_cloud_overlap_method long_name = choice of exponential-random cloud overlap method @@ -124,7 +111,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_rand] standard_name = flag_for_random_cloud_overlap_method long_name = choice of random cloud overlap method @@ -132,7 +118,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_max] standard_name = flag_for_maximum_cloud_overlap_method long_name = choice of maximum cloud overlap method @@ -140,7 +125,6 @@ dimensions = () type = integer intent = in - optional = F [icseed_lw] standard_name = random_number_seed_for_mcica_longwave long_name = seed for random number generation for longwave radiation @@ -148,7 +132,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [cld_frac] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -157,7 +140,6 @@ type = real kind = kind_phys intent = in - optional = F [precip_frac] standard_name = precipitation_fraction_by_layer long_name = precipitation fraction in each layer @@ -166,7 +148,6 @@ type = real kind = kind_phys intent = in - optional = F [cloud_overlap_param] standard_name = cloud_overlap_param long_name = cloud overlap parameter @@ -175,7 +156,6 @@ type = real kind = kind_phys intent = in - optional = F [precip_overlap_param] standard_name = precip_overlap_param long_name = precipitation overlap parameter @@ -184,7 +164,6 @@ type = real kind = kind_phys intent = in - optional = F [lw_optical_props_cloudsByBand] standard_name = longwave_optical_properties_for_cloudy_atmosphere_by_band long_name = Fortran DDT containing RRTMGP optical properties @@ -192,7 +171,6 @@ dimensions = () type = ty_optical_props_2str intent = in - optional = F [lw_optical_props_precipByBand] standard_name = longwave_optical_properties_for_precipitation_by_band long_name = Fortran DDT containing RRTMGP optical properties @@ -200,7 +178,6 @@ dimensions = () type = ty_optical_props_2str intent = in - optional = F [lw_optical_props_clouds] standard_name = longwave_optical_properties_for_cloudy_atmosphere long_name = Fortran DDT containing RRTMGP optical properties @@ -208,7 +185,6 @@ dimensions = () type = ty_optical_props_2str intent = inout - optional = F [lw_optical_props_precip] standard_name = longwave_optical_properties_for_precipitation long_name = Fortran DDT containing RRTMGP optical properties @@ -216,7 +192,6 @@ dimensions = () type = ty_optical_props_2str intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -225,7 +200,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -233,4 +207,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmgp_lw_gas_optics.meta b/physics/rrtmgp_lw_gas_optics.meta index 45945e424..bbc9a3e7c 100644 --- a/physics/rrtmgp_lw_gas_optics.meta +++ b/physics/rrtmgp_lw_gas_optics.meta @@ -14,7 +14,6 @@ dimensions = () type = character intent = in - optional = F kind = len=128 [rrtmgp_lw_file_gas] standard_name = filename_of_rrtmgp_longwave_k_distribution @@ -23,7 +22,6 @@ dimensions = () type = character intent = in - optional = F kind = len=128 [gas_concentrations] standard_name = Gas_concentrations_for_RRTMGP_suite @@ -32,7 +30,6 @@ dimensions = () type = ty_gas_concs intent = inout - optional = F [mpirank] standard_name = mpi_rank long_name = current MPI rank @@ -40,7 +37,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root long_name = master MPI rank @@ -48,7 +44,6 @@ dimensions = () type = integer intent = in - optional = F [mpicomm] standard_name = mpi_communicator long_name = MPI communicator @@ -56,7 +51,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -65,7 +59,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -73,7 +66,6 @@ dimensions = () type = integer intent = out - optional = F [minGPpres] standard_name = minimum_pressure_in_RRTMGP long_name = minimum pressure allowed in RRTMGP @@ -82,7 +74,6 @@ type = real kind = kind_phys intent = out - optional = F [maxGPpres] standard_name = maximum_pressure_in_RRTMGP long_name = maximum pressure allowed in RRTMGP @@ -91,7 +82,6 @@ type = real kind = kind_phys intent = out - optional = F [minGPtemp] standard_name = minimum_temperature_in_RRTMGP long_name = minimum temperature allowed in RRTMGP @@ -100,7 +90,6 @@ type = real kind = kind_phys intent = out - optional = F [maxGPtemp] standard_name = maximum_temperature_in_RRTMGP long_name = maximum temperature allowed in RRTMGP @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -122,7 +110,6 @@ dimensions = () type = logical intent = in - optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -130,7 +117,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -138,7 +124,6 @@ dimensions = () type = integer intent = in - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure layer @@ -147,7 +132,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure level @@ -156,7 +140,6 @@ type = real kind = kind_phys intent = in - optional = F [t_lay] standard_name = air_temperature_at_layer_for_RRTMGP long_name = air temperature layer @@ -165,7 +148,6 @@ type = real kind = kind_phys intent = in - optional = F [t_lev] standard_name = air_temperature_at_interface_for_RRTMGP long_name = air temperature level @@ -174,7 +156,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfg] standard_name = surface_ground_temperature_for_radiation long_name = surface ground temperature for radiation @@ -183,7 +164,6 @@ type = real kind = kind_phys intent = in - optional = F [gas_concentrations] standard_name = Gas_concentrations_for_RRTMGP_suite long_name = DDT containing gas concentrations for RRTMGP radiation scheme @@ -191,7 +171,6 @@ dimensions = () type = ty_gas_concs intent = in - optional = F [lw_optical_props_clrsky] standard_name = longwave_optical_properties_for_clear_sky long_name = Fortran DDT containing RRTMGP optical properties @@ -199,7 +178,6 @@ dimensions = () type = ty_optical_props_1scl intent = inout - optional = F [sources] standard_name = longwave_source_function long_name = Fortran DDT containing RRTMGP source functions @@ -207,7 +185,6 @@ dimensions = () type = ty_source_func_lw intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -216,7 +193,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -224,4 +200,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmgp_lw_pre.meta b/physics/rrtmgp_lw_pre.meta index 3918f85e4..be8a48a88 100644 --- a/physics/rrtmgp_lw_pre.meta +++ b/physics/rrtmgp_lw_pre.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [semis] standard_name = surface_longwave_emissivity long_name = surface lw emissivity in fraction @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_emiss_byband] standard_name = surface_emissivity_in_each_RRTMGP_LW_band long_name = surface emissivity in each RRTMGP LW band @@ -32,7 +30,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -41,7 +38,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -49,4 +45,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmgp_lw_rte.meta b/physics/rrtmgp_lw_rte.meta index 3ffa24a30..bbf1bc62f 100644 --- a/physics/rrtmgp_lw_rte.meta +++ b/physics/rrtmgp_lw_rte.meta @@ -15,7 +15,6 @@ dimensions = () type = logical intent = in - optional = F [doLWclrsky] standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output lw heating rate (Radtend%lwhc) @@ -23,7 +22,6 @@ dimensions = () type = logical intent = in - optional = F [use_LW_jacobian] standard_name = flag_to_calc_RRTMGP_LW_jacobian long_name = logical flag to control RRTMGP LW calculation @@ -31,7 +29,6 @@ dimensions = () type = logical intent = in - optional = F [doGP_lwscat] standard_name = flag_to_include_longwave_scattering_in_cloud_optics long_name = logical flag to control the addition of LW scattering in RRTMGP @@ -39,7 +36,6 @@ dimensions = () type = logical intent = in - optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -47,7 +43,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -55,7 +50,6 @@ dimensions = () type = integer intent = in - optional = F [nGauss_angles] standard_name = number_of_gaussian_quadrature_angles_for_radiation long_name = Number of angles used in Gaussian quadrature @@ -63,7 +57,6 @@ dimensions = () type = integer intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure level @@ -72,7 +65,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_emiss_byband] standard_name = surface_emissivity_in_each_RRTMGP_LW_band long_name = surface emissivity in each RRTMGP LW band @@ -81,7 +73,6 @@ type = real kind = kind_phys intent = in - optional = F [lw_optical_props_clrsky] standard_name = longwave_optical_properties_for_clear_sky long_name = Fortran DDT containing RRTMGP optical properties @@ -89,7 +80,6 @@ dimensions = () type = ty_optical_props_1scl intent = inout - optional = F [lw_optical_props_clouds] standard_name = longwave_optical_properties_for_cloudy_atmosphere long_name = Fortran DDT containing RRTMGP optical properties @@ -97,7 +87,6 @@ dimensions = () type = ty_optical_props_2str intent = inout - optional = F [lw_optical_props_aerosol] standard_name = longwave_optical_properties_for_aerosols long_name = Fortran DDT containing RRTMGP optical properties @@ -105,7 +94,6 @@ dimensions = () type = ty_optical_props_1scl intent = inout - optional = F [sources] standard_name = longwave_source_function long_name = Fortran DDT containing RRTMGP source functions @@ -113,7 +101,6 @@ dimensions = () type = ty_source_func_lw intent = in - optional = F [fluxlwUP_allsky] standard_name = RRTMGP_lw_flux_profile_upward_allsky long_name = RRTMGP upward longwave all-sky flux profile @@ -122,7 +109,6 @@ type = real kind = kind_phys intent = inout - optional = F [fluxlwDOWN_allsky] standard_name = RRTMGP_lw_flux_profile_downward_allsky long_name = RRTMGP downward longwave all-sky flux profile @@ -131,7 +117,6 @@ type = real kind = kind_phys intent = inout - optional = F [fluxlwUP_clrsky] standard_name = RRTMGP_lw_flux_profile_upward_clrsky long_name = RRTMGP upward longwave clr-sky flux profile @@ -140,7 +125,6 @@ type = real kind = kind_phys intent = inout - optional = F [fluxlwDOWN_clrsky] standard_name = RRTMGP_lw_flux_profile_downward_clrsky long_name = RRTMGP downward longwave clr-sky flux profile @@ -149,7 +133,6 @@ type = real kind = kind_phys intent = inout - optional = F [fluxlwUP_jac] standard_name = RRTMGP_jacobian_of_lw_flux_upward long_name = RRTMGP Jacobian upward longwave flux profile @@ -158,7 +141,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -167,7 +149,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -175,4 +156,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmgp_sw_aerosol_optics.meta b/physics/rrtmgp_sw_aerosol_optics.meta index 93e5e7eea..606b122b5 100644 --- a/physics/rrtmgp_sw_aerosol_optics.meta +++ b/physics/rrtmgp_sw_aerosol_optics.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [nTracer] standard_name = number_of_tracers long_name = number of tracers @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [nTracerAer] standard_name = number_of_aerosol_tracers_MG long_name = number of aerosol tracers for Morrison Gettelman MP @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [nday] standard_name = daytime_points_dimension long_name = daytime points dimension @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [idxday] standard_name = daytime_points long_name = daytime points @@ -62,7 +56,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure at vertical interface for radiation calculation @@ -71,7 +64,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure at vertical layer for radiation calculation @@ -80,7 +72,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers @@ -89,7 +80,6 @@ type = real kind = kind_phys intent = in - optional = F [tv_lay] standard_name = virtual_temperature long_name = layer virtual temperature @@ -98,7 +88,6 @@ type = real kind = kind_phys intent = in - optional = F [relhum] standard_name = relative_humidity long_name = layer relative humidity @@ -107,7 +96,6 @@ type = real kind = kind_phys intent = in - optional = F [lsmask] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -116,7 +104,6 @@ type = real kind = kind_phys intent = in - optional = F [tracer] standard_name = chemical_tracers long_name = chemical tracers @@ -125,7 +112,6 @@ type = real kind = kind_phys intent = in - optional = F [aerfld] standard_name = mass_number_concentration_of_aerosol_from_gocart_climatology long_name = GOCART aerosol climatology number concentration @@ -134,7 +120,6 @@ type = real kind = kind_phys intent = in - optional = F [lon] standard_name = longitude long_name = longitude @@ -143,7 +128,6 @@ type = real kind = kind_phys intent = in - optional = F [lat] standard_name = latitude long_name = latitude @@ -152,7 +136,6 @@ type = real kind = kind_phys intent = in - optional = F [aerodp] standard_name = atmosphere_optical_thickness_due_to_ambient_aerosol_particles long_name = vertical integrated optical depth for various aerosol species @@ -161,7 +144,6 @@ type = real kind = kind_phys intent = inout - optional = F [sw_optical_props_aerosol] standard_name = shortwave_optical_properties_for_aerosols long_name = Fortran DDT containing RRTMGP optical properties @@ -169,7 +151,6 @@ dimensions = () type = ty_optical_props_2str intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -178,7 +159,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -186,4 +166,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmgp_sw_cloud_optics.meta b/physics/rrtmgp_sw_cloud_optics.meta index 3956579a4..eabd6fa7a 100644 --- a/physics/rrtmgp_sw_cloud_optics.meta +++ b/physics/rrtmgp_sw_cloud_optics.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [doGP_cldoptics_PADE] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_PADE long_name = logical flag to control cloud optics scheme. @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [doGP_cldoptics_LUT] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_LUT long_name = logical flag to control cloud optics scheme. @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [nrghice] standard_name = number_of_ice_roughness_categories long_name = number of ice-roughness categories in RRTMGP calculation @@ -38,7 +35,6 @@ dimensions = () type = integer intent = inout - optional = F [rrtmgp_root_dir] standard_name = directory_for_rte_rrtmgp_source_code long_name = directory for rte+rrtmgp source code @@ -46,7 +42,6 @@ dimensions = () type = character intent = in - optional = F kind = len=128 [rrtmgp_sw_file_clouds] standard_name = filename_of_rrtmgp_shortwave_cloud_optics_coefficients @@ -55,7 +50,6 @@ dimensions = () type = character intent = in - optional = F kind = len=128 [mpirank] standard_name = mpi_rank @@ -64,7 +58,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root long_name = master MPI rank @@ -72,7 +65,6 @@ dimensions = () type = integer intent = in - optional = F [mpicomm] standard_name = mpi_communicator long_name = MPI communicator @@ -80,7 +72,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -89,7 +80,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -97,7 +87,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] name = rrtmgp_sw_cloud_optics_run @@ -109,7 +98,6 @@ dimensions = () type = logical intent = in - optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -117,7 +105,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -125,7 +112,6 @@ dimensions = () type = integer intent = in - optional = F [doG_cldoptics] standard_name = flag_to_calc_lw_cld_optics_using_RRTMG long_name = logical flag to control cloud optics scheme. @@ -133,7 +119,6 @@ dimensions = () type = logical intent = in - optional = F [icliq_sw] standard_name = control_for_shortwave_radiation_liquid_clouds long_name = sw optical property for liquid clouds @@ -141,7 +126,6 @@ dimensions = () type = integer intent = in - optional = F [icice_sw] standard_name = flag_for_optical_property_for_ice_clouds_for_shortwave_radiation long_name = sw optical property for ice clouds @@ -149,7 +133,6 @@ dimensions = () type = integer intent = in - optional = F [doGP_cldoptics_PADE] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_PADE long_name = logical flag to control cloud optics scheme. @@ -157,7 +140,6 @@ dimensions = () type = logical intent = in - optional = F [doGP_cldoptics_LUT] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_LUT long_name = logical flag to control cloud optics scheme. @@ -165,7 +147,6 @@ dimensions = () type = logical intent = in - optional = F [cld_frac] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -174,7 +155,6 @@ type = real kind = kind_phys intent = in - optional = F [cld_lwp] standard_name = cloud_liquid_water_path long_name = layer cloud liquid water path @@ -183,7 +163,6 @@ type = real kind = kind_phys intent = in - optional = F [cld_reliq] standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud @@ -192,7 +171,6 @@ type = real kind = kind_phys intent = in - optional = F [cld_iwp] standard_name = cloud_ice_water_path long_name = layer cloud ice water path @@ -201,7 +179,6 @@ type = real kind = kind_phys intent = in - optional = F [cld_reice] standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud @@ -210,7 +187,6 @@ type = real kind = kind_phys intent = in - optional = F [cld_swp] standard_name = cloud_snow_water_path long_name = layer cloud snow water path @@ -219,7 +195,6 @@ type = real kind = kind_phys intent = in - optional = F [cld_resnow] standard_name = mean_effective_radius_for_snow_flake long_name = mean effective radius for snow cloud @@ -228,7 +203,6 @@ type = real kind = kind_phys intent = in - optional = F [cld_rwp] standard_name = cloud_rain_water_path long_name = layer cloud rain water path @@ -237,7 +211,6 @@ type = real kind = kind_phys intent = in - optional = F [cld_rerain] standard_name = mean_effective_radius_for_rain_drop long_name = mean effective radius for rain cloud @@ -246,7 +219,6 @@ type = real kind = kind_phys intent = in - optional = F [precip_frac] standard_name = precipitation_fraction_by_layer long_name = precipitation fraction in each layer @@ -255,7 +227,6 @@ type = real kind = kind_phys intent = in - optional = F [nbndsGPsw] standard_name = number_of_shortwave_bands long_name = number of sw bands used in RRTMGP @@ -263,7 +234,6 @@ dimensions = () type = integer intent = in - optional = F [nday] standard_name = daytime_points_dimension long_name = daytime points dimension @@ -271,7 +241,6 @@ dimensions = () type = integer intent = in - optional = F [idxday] standard_name = daytime_points long_name = daytime points @@ -279,7 +248,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [sw_optical_props_cloudsByBand] standard_name = shortwave_optical_properties_for_cloudy_atmosphere_by_band long_name = Fortran DDT containing RRTMGP optical properties @@ -287,7 +255,6 @@ dimensions = () type = ty_optical_props_2str intent = out - optional = F [sw_optical_props_precipByBand] standard_name = shortwave_optical_properties_for_precipitation_by_band long_name = Fortran DDT containing RRTMGP optical properties @@ -295,7 +262,6 @@ dimensions = () type = ty_optical_props_2str intent = out - optional = F [cldtausw] standard_name = cloud_optical_depth_layers_at_0p55mu_band long_name = approx .55mu band layer cloud optical depth @@ -304,7 +270,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -313,7 +278,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -321,4 +285,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmgp_sw_cloud_sampling.meta b/physics/rrtmgp_sw_cloud_sampling.meta index 4ba9dcd3b..8a3c9d5b0 100644 --- a/physics/rrtmgp_sw_cloud_sampling.meta +++ b/physics/rrtmgp_sw_cloud_sampling.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ###################################################### [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = logical intent = in - optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [nday] standard_name = daytime_points_dimension long_name = daytime points dimension @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -68,7 +62,6 @@ dimensions = () type = integer intent = in - optional = F [isubc_sw] standard_name = flag_for_sw_clouds_grid_approximation long_name = flag for sw clouds sub-grid approximation @@ -76,7 +69,6 @@ dimensions = () type = integer intent = in - optional = F [ipsdsw0] standard_name = initial_permutation_seed_sw long_name = initial seed for McICA SW @@ -84,7 +76,6 @@ dimensions = () type = integer intent = in - optional = F [idxday] standard_name = daytime_points long_name = daytime points @@ -92,7 +83,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [iovr] standard_name = flag_for_cloud_overlap_method_for_radiation long_name = max-random overlap clouds @@ -100,7 +90,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_maxrand] standard_name = flag_for_maximum_random_cloud_overlap_method long_name = choice of maximum-random cloud overlap method @@ -108,7 +97,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_dcorr] standard_name = flag_for_decorrelation_length_cloud_overlap_method long_name = choice of decorrelation-length cloud overlap method @@ -116,7 +104,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_exp] standard_name = flag_for_exponential_cloud_overlap_method long_name = choice of exponential cloud overlap method @@ -124,7 +111,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_exprand] standard_name = flag_for_exponential_random_cloud_overlap_method long_name = choice of exponential-random cloud overlap method @@ -132,7 +118,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_rand] standard_name = flag_for_random_cloud_overlap_method long_name = choice of random cloud overlap method @@ -140,7 +125,6 @@ dimensions = () type = integer intent = in - optional = F [iovr_max] standard_name = flag_for_maximum_cloud_overlap_method long_name = choice of maximum cloud overlap method @@ -148,7 +132,6 @@ dimensions = () type = integer intent = in - optional = F [icseed_sw] standard_name = random_number_seed_for_mcica_shortwave long_name = seed for random number generation for shortwave radiation @@ -156,7 +139,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [cld_frac] standard_name = total_cloud_fraction long_name = layer total cloud fraction @@ -165,7 +147,6 @@ type = real kind = kind_phys intent = in - optional = F [precip_frac] standard_name = precipitation_fraction_by_layer long_name = precipitation fraction in each layer @@ -174,7 +155,6 @@ type = real kind = kind_phys intent = in - optional = F [cloud_overlap_param] standard_name = cloud_overlap_param long_name = cloud overlap parameter @@ -183,7 +163,6 @@ type = real kind = kind_phys intent = in - optional = F [precip_overlap_param] standard_name = precip_overlap_param long_name = precipitation overlap parameter @@ -192,7 +171,6 @@ type = real kind = kind_phys intent = in - optional = F [sw_optical_props_cloudsByBand] standard_name = shortwave_optical_properties_for_cloudy_atmosphere_by_band long_name = Fortran DDT containing RRTMGP optical properties @@ -200,7 +178,6 @@ dimensions = () type = ty_optical_props_2str intent = in - optional = F [sw_optical_props_precipByBand] standard_name = shortwave_optical_properties_for_precipitation_by_band long_name = Fortran DDT containing RRTMGP optical properties @@ -208,7 +185,6 @@ dimensions = () type = ty_optical_props_2str intent = in - optional = F [sw_optical_props_clouds] standard_name = shortwave_optical_properties_for_cloudy_atmosphere long_name = Fortran DDT containing RRTMGP optical properties @@ -216,7 +192,6 @@ dimensions = () type = ty_optical_props_2str intent = out - optional = F [sw_optical_props_precip] standard_name = shortwave_optical_properties_for_precipitation long_name = Fortran DDT containing RRTMGP optical properties @@ -224,7 +199,6 @@ dimensions = () type = ty_optical_props_2str intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -233,7 +207,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -241,4 +214,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/rrtmgp_sw_gas_optics.meta b/physics/rrtmgp_sw_gas_optics.meta index 92432631d..c73462980 100644 --- a/physics/rrtmgp_sw_gas_optics.meta +++ b/physics/rrtmgp_sw_gas_optics.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [nThreads] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available to scheme @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [rrtmgp_root_dir] standard_name = directory_for_rte_rrtmgp_source_code long_name = directory for rte+rrtmgp source code @@ -38,7 +35,6 @@ dimensions = () type = character intent = in - optional = F kind = len=128 [rrtmgp_sw_file_gas] standard_name = filename_of_rrtmgp_shortwave_k_distribution @@ -47,7 +43,6 @@ dimensions = () type = character intent = in - optional = F kind = len=128 [gas_concentrations] standard_name = Gas_concentrations_for_RRTMGP_suite @@ -56,7 +51,6 @@ dimensions = () type = ty_gas_concs intent = inout - optional = F [mpirank] standard_name = mpi_rank long_name = current MPI rank @@ -64,7 +58,6 @@ dimensions = () type = integer intent = in - optional = F [mpiroot] standard_name = mpi_root long_name = master MPI rank @@ -72,7 +65,6 @@ dimensions = () type = integer intent = in - optional = F [mpicomm] standard_name = mpi_communicator long_name = MPI communicator @@ -80,7 +72,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -89,7 +80,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -97,7 +87,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -110,7 +99,6 @@ dimensions = () type = logical intent = in - optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -118,7 +106,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -126,7 +113,6 @@ dimensions = () type = integer intent = in - optional = F [nday] standard_name = daytime_points_dimension long_name = daytime points dimension @@ -134,7 +120,6 @@ dimensions = () type = integer intent = in - optional = F [idxday] standard_name = daytime_points long_name = daytime points @@ -142,7 +127,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [ngptsGPsw] standard_name = number_of_shortwave_spectral_points long_name = number of spectral points in RRTMGP SW calculation @@ -150,7 +134,6 @@ dimensions = () type = integer intent = in - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure layer @@ -159,7 +142,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure level @@ -168,7 +150,6 @@ type = real kind = kind_phys intent = in - optional = F [t_lay] standard_name = air_temperature_at_layer_for_RRTMGP long_name = air temperature layer @@ -177,7 +158,6 @@ type = real kind = kind_phys intent = in - optional = F [t_lev] standard_name = air_temperature_at_interface_for_RRTMGP long_name = air temperature level @@ -186,7 +166,6 @@ type = real kind = kind_phys intent = in - optional = F [toa_src_sw] standard_name = toa_incident_sw_flux_by_spectral_point long_name = TOA shortwave incident flux at each spectral points @@ -195,7 +174,6 @@ type = real kind = kind_phys intent = out - optional = F [gas_concentrations] standard_name = Gas_concentrations_for_RRTMGP_suite long_name = DDT containing gas concentrations for RRTMGP radiation scheme @@ -203,7 +181,6 @@ dimensions = () type = ty_gas_concs intent = in - optional = F [solcon] standard_name = solar_constant long_name = solar constant @@ -212,7 +189,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -221,7 +197,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -229,7 +204,6 @@ dimensions = () type = integer intent = out - optional = F [sw_optical_props_clrsky] standard_name = shortwave_optical_properties_for_clear_sky long_name = Fortran DDT containing RRTMGP optical properties @@ -237,4 +211,3 @@ dimensions = () type = ty_optical_props_2str intent = out - optional = F diff --git a/physics/rrtmgp_sw_rte.meta b/physics/rrtmgp_sw_rte.meta index 5ca34b285..0fefc39c7 100644 --- a/physics/rrtmgp_sw_rte.meta +++ b/physics/rrtmgp_sw_rte.meta @@ -15,7 +15,6 @@ dimensions = () type = logical intent = in - optional = F [doSWclrsky] standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output sw heating rate (Radtend%swhc) @@ -23,7 +22,6 @@ dimensions = () type = logical intent = in - optional = F [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -31,7 +29,6 @@ dimensions = () type = integer intent = in - optional = F [nLev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -39,7 +36,6 @@ dimensions = () type = integer intent = in - optional = F [nday] standard_name = daytime_points_dimension long_name = daytime points dimension @@ -47,7 +43,6 @@ dimensions = () type = integer intent = in - optional = F [idxday] standard_name = daytime_points long_name = daytime points @@ -55,7 +50,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [coszen] standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep long_name = mean cos of zenith angle over rad call period @@ -64,7 +58,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure layer @@ -73,7 +66,6 @@ type = real kind = kind_phys intent = in - optional = F [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP long_name = air pressure level @@ -82,7 +74,6 @@ type = real kind = kind_phys intent = in - optional = F [t_lay] standard_name = air_temperature_at_layer_for_RRTMGP long_name = air temperature layer @@ -91,7 +82,6 @@ type = real kind = kind_phys intent = in - optional = F [sw_optical_props_clrsky] standard_name = shortwave_optical_properties_for_clear_sky long_name = Fortran DDT containing RRTMGP optical properties @@ -99,7 +89,6 @@ dimensions = () type = ty_optical_props_2str intent = inout - optional = F [sw_optical_props_clouds] standard_name = shortwave_optical_properties_for_cloudy_atmosphere long_name = Fortran DDT containing RRTMGP optical properties @@ -107,7 +96,6 @@ dimensions = () type = ty_optical_props_2str intent = in - optional = F [sw_optical_props_aerosol] standard_name = shortwave_optical_properties_for_aerosols long_name = Fortran DDT containing RRTMGP optical properties @@ -115,7 +103,6 @@ dimensions = () type = ty_optical_props_2str intent = in - optional = F [sfc_alb_nir_dir] standard_name = surface_albedo_nearIR_direct long_name = near-IR (direct) surface albedo (sfc_alb_nir_dir) @@ -124,7 +111,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_alb_nir_dif] standard_name = surface_albedo_nearIR_diffuse long_name = near-IR (diffuse) surface albedo (sfc_alb_nir_dif) @@ -133,7 +119,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_alb_uvvis_dir] standard_name = surface_albedo_uvvis_dir long_name = UVVIS (direct) surface albedo (sfc_alb_uvvis_dir) @@ -142,7 +127,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_alb_uvvis_dif] standard_name = surface_albedo_uvvis_dif long_name = UVVIS (diffuse) surface albedo (sfc_alb_uvvis_dif) @@ -151,7 +135,6 @@ type = real kind = kind_phys intent = in - optional = F [toa_src_sw] standard_name = toa_incident_sw_flux_by_spectral_point long_name = TOA shortwave incident flux at each spectral points @@ -160,7 +143,6 @@ type = real kind = kind_phys intent = in - optional = F [scmpsw] standard_name = components_of_surface_downward_shortwave_fluxes long_name = derived type for special components of surface downward shortwave fluxes @@ -168,7 +150,6 @@ dimensions = (horizontal_loop_extent) type = cmpfsw_type intent = inout - optional = T [fluxswUP_allsky] standard_name = RRTMGP_sw_flux_profile_upward_allsky long_name = RRTMGP upward shortwave all-sky flux profile @@ -177,7 +158,6 @@ type = real kind = kind_phys intent = inout - optional = F [fluxswDOWN_allsky] standard_name = RRTMGP_sw_flux_profile_downward_allsky long_name = RRTMGP downward shortwave all-sky flux profile @@ -186,7 +166,6 @@ type = real kind = kind_phys intent = inout - optional = F [fluxswUP_clrsky] standard_name = RRTMGP_sw_flux_profile_upward_clrsky long_name = RRTMGP upward shortwave clr-sky flux profile @@ -195,7 +174,6 @@ type = real kind = kind_phys intent = inout - optional = F [fluxswDOWN_clrsky] standard_name = RRTMGP_sw_flux_profile_downward_clrsky long_name = RRTMGP downward shortwave clr-sky flux profile @@ -204,7 +182,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -213,7 +190,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -221,4 +197,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/samfdeepcnv.meta b/physics/samfdeepcnv.meta index 9ba69b1f2..d38203465 100644 --- a/physics/samfdeepcnv.meta +++ b/physics/samfdeepcnv.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [imfdeepcnv_samf] standard_name = identifer_for_scale_aware_mass_flux_deep_convection long_name = flag for SAMF deep convection scheme @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -31,7 +29,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -39,7 +36,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [itc] standard_name = index_of_first_chemical_tracer_for_convection long_name = index of first chemical tracer transported/scavenged by convection @@ -68,7 +62,6 @@ dimensions = () type = integer intent = in - optional = F [ntc] standard_name = number_of_chemical_tracers long_name = number of chemical tracers @@ -76,7 +69,6 @@ dimensions = () type = integer intent = in - optional = F [cliq] standard_name = specific_heat_of_liquid_water_at_constant_pressure long_name = specific heat of liquid water at constant pressure @@ -85,7 +77,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -94,7 +85,6 @@ type = real kind = kind_phys intent = in - optional = F [cvap] standard_name = specific_heat_of_water_vapor_at_constant_pressure long_name = specific heat of water vapor at constant pressure @@ -103,7 +93,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -112,7 +101,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -121,7 +109,6 @@ type = real kind = kind_phys intent = in - optional = F [fv] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -130,7 +117,6 @@ type = real kind = kind_phys intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -139,7 +125,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -148,7 +133,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -157,7 +141,6 @@ type = real kind = kind_phys intent = in - optional = F [rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -166,7 +149,6 @@ type = real kind = kind_phys intent = in - optional = F [t0c] standard_name = temperature_at_zero_celsius long_name = temperature at 0 degree Celsius @@ -175,7 +157,6 @@ type = real kind = kind_phys intent = in - optional = F [delt] standard_name = timestep_for_physics long_name = physics time step @@ -184,7 +165,6 @@ type = real kind = kind_phys intent = in - optional = F [ntk] standard_name = index_for_turbulent_kinetic_energy_convective_transport_tracer long_name = index for turbulent kinetic energy in the convectively transported tracer array @@ -192,7 +172,6 @@ dimensions = () type = integer intent = in - optional = F [ntr] standard_name = number_of_tracers_for_samf long_name = number of tracers for scale-aware mass flux schemes @@ -200,7 +179,6 @@ dimensions = () type = integer intent = in - optional = F [delp] standard_name = air_pressure_difference_between_midlayers long_name = pres(k) - pres(k+1) @@ -209,7 +187,6 @@ type = real kind = kind_phys intent = in - optional = F [prslp] standard_name = air_pressure long_name = mean layer pressure @@ -218,7 +195,6 @@ type = real kind = kind_phys intent = in - optional = F [psp] standard_name = surface_air_pressure long_name = surface pressure @@ -227,7 +203,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = layer geopotential @@ -236,7 +211,6 @@ type = real kind = kind_phys intent = in - optional = F [qtr] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -245,7 +219,6 @@ type = real kind = kind_phys intent = inout - optional = F [q1] standard_name = specific_humidity_of_new_state long_name = updated vapor specific humidity @@ -254,7 +227,6 @@ type = real kind = kind_phys intent = inout - optional = F [t1] standard_name = air_temperature_of_new_state long_name = updated temperature @@ -263,7 +235,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind_of_new_state long_name = updated x-direction wind @@ -272,7 +243,6 @@ type = real kind = kind_phys intent = inout - optional = F [v1] standard_name = y_wind_of_new_state long_name = updated y-direction wind @@ -281,7 +251,6 @@ type = real kind = kind_phys intent = inout - optional = F [fscav] standard_name = chemical_tracer_scavenging_fractions long_name = array of aerosol scavenging coefficients @@ -290,7 +259,6 @@ type = real kind = kind_phys intent = in - optional = F [hwrf_samfdeep] standard_name = flag_for_hurricane_specific_code_in_scale_aware_mass_flux_deep_convection long_name = flag for hwrf samfdeepcnv scheme @@ -298,7 +266,6 @@ dimensions = () type = logical intent = in - optional = F [cldwrk] standard_name = cloud_work_function long_name = cloud work function @@ -307,7 +274,6 @@ type = real kind = kind_phys intent = out - optional = F [rn] standard_name = lwe_thickness_of_deep_convective_precipitation_amount long_name = deep convective rainfall amount on physics timestep @@ -316,7 +282,6 @@ type = real kind = kind_phys intent = out - optional = F [kbot] standard_name = vertical_index_at_cloud_base long_name = index for cloud base @@ -324,7 +289,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [ktop] standard_name = vertical_index_at_cloud_top long_name = index for cloud top @@ -332,7 +296,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [kcnv] standard_name = flag_deep_convection long_name = deep convection: 0=no, 1=yes @@ -340,7 +303,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [islimsk] standard_name = sea_land_ice_mask long_name = landmask: sea/land/ice=0/1/2 @@ -348,7 +310,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [garea] standard_name = cell_area long_name = grid cell area @@ -357,7 +318,6 @@ type = real kind = kind_phys intent = in - optional = F [dot] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -366,7 +326,6 @@ type = real kind = kind_phys intent = in - optional = F [ncloud] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -374,7 +333,6 @@ dimensions = () type = integer intent = in - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL top height @@ -383,7 +341,6 @@ type = real kind = kind_phys intent = in - optional = F [ud_mf] standard_name = instantaneous_atmosphere_updraft_convective_mass_flux long_name = (updraft mass flux) * delt @@ -392,7 +349,6 @@ type = real kind = kind_phys intent = out - optional = F [dd_mf] standard_name = instantaneous_atmosphere_downdraft_convective_mass_flux long_name = (downdraft mass flux) * delt @@ -401,7 +357,6 @@ type = real kind = kind_phys intent = out - optional = F [dt_mf] standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux long_name = (detrainment mass flux) * delt @@ -410,7 +365,6 @@ type = real kind = kind_phys intent = out - optional = F [cnvw] standard_name = convective_cloud_water_mixing_ratio long_name = moist convective cloud water mixing ratio @@ -419,7 +373,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvc] standard_name = convective_cloud_cover long_name = convective cloud cover @@ -428,7 +381,6 @@ type = real kind = kind_phys intent = inout - optional = F [qlcn] standard_name = mass_fraction_of_convective_cloud_liquid_water long_name = mass fraction of convective cloud liquid water @@ -437,7 +389,6 @@ type = real kind = kind_phys intent = inout - optional = F [qicn] standard_name = mass_fraction_of_convective_cloud_ice long_name = mass fraction of convective cloud ice water @@ -446,7 +397,6 @@ type = real kind = kind_phys intent = inout - optional = F [w_upi] standard_name = vertical_velocity_for_updraft long_name = vertical velocity for updraft @@ -455,7 +405,6 @@ type = real kind = kind_phys intent = inout - optional = F [cf_upi] standard_name = convective_cloud_fraction_for_microphysics long_name = convective cloud fraction for microphysics @@ -464,7 +413,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_mfd] standard_name = detrained_mass_flux long_name = detrained mass flux @@ -473,7 +421,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_dqldt] standard_name = tendency_of_cloud_water_due_to_convective_microphysics long_name = tendency of cloud water due to convective microphysics @@ -482,7 +429,6 @@ type = real kind = kind_phys intent = inout - optional = F [clcn] standard_name = convective_cloud_volume_fraction long_name = convective cloud volume fraction @@ -491,7 +437,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_fice] standard_name = ice_fraction_in_convective_tower long_name = ice fraction in convective tower @@ -500,7 +445,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_ndrop] standard_name = number_concentration_of_cloud_liquid_water_particles_for_detrainment long_name = droplet number concentration in convective detrainment @@ -509,7 +453,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_nice] standard_name = number_concentration_of_ice_crystals_for_detrainment long_name = crystal number concentration in convective detrainment @@ -518,7 +461,6 @@ type = real kind = kind_phys intent = inout - optional = F [mp_phys] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -526,7 +468,6 @@ dimensions = () type = integer intent = in - optional = F [mp_phys_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -534,7 +475,6 @@ dimensions = () type = integer intent = in - optional = F [clam] standard_name = entrainment_rate_coefficient_for_deep_convection long_name = entrainment rate coefficient for deep conv. @@ -543,7 +483,6 @@ type = real kind = kind_phys intent = in - optional = F [c0s] standard_name = rain_conversion_parameter_for_deep_convection long_name = convective rain conversion parameter for deep conv. @@ -552,7 +491,6 @@ type = real kind = kind_phys intent = in - optional = F [c1] standard_name = detrainment_conversion_parameter_for_deep_convection long_name = convective detrainment conversion parameter for deep conv. @@ -561,7 +499,6 @@ type = real kind = kind_phys intent = in - optional = F [betal] standard_name = downdraft_fraction_reaching_surface_over_land_for_deep_convection long_name = downdraft fraction reaching surface over land for deep conv. @@ -570,7 +507,6 @@ type = real kind = kind_phys intent = in - optional = F [betas] standard_name = downdraft_fraction_reaching_surface_over_water_for_deep_convection long_name = downdraft fraction reaching surface over water for deep conv. @@ -579,7 +515,6 @@ type = real kind = kind_phys intent = in - optional = F [evef] standard_name = rain_evaporation_coefficient_for_convection long_name = convective rain evaporation coefficient for convection @@ -588,7 +523,6 @@ type = real kind = kind_phys intent = in - optional = F [pgcon] standard_name = momentum_transport_reduction_factor_due_to_pressure_gradient_force_for_deep_convection long_name = reduction factor in momentum transport due to deep conv. induced pressure gradient force @@ -597,7 +531,6 @@ type = real kind = kind_phys intent = in - optional = F [asolfac] standard_name = aerosol_aware_multiplicative_rain_conversion_parameter_for_deep_convection long_name = aerosol-aware parameter inversely proportional to CCN number concentraion from Lim (2011) for deep conv. @@ -606,7 +539,6 @@ type = real kind = kind_phys intent = in - optional = F [do_ca] standard_name = flag_for_cellular_automata long_name = cellular automata main switch @@ -614,7 +546,6 @@ dimensions = () type = logical intent = in - optional = F [ca_closure] standard_name = flag_for_global_cellular_automata_closure long_name = switch for ca on closure @@ -622,7 +553,6 @@ dimensions = () type = logical intent = in - optional = F [ca_entr] standard_name = flag_for_global_cellular_automata_deep_convective_entrainment long_name = switch for ca on entr @@ -630,7 +560,6 @@ dimensions = () type = logical intent = in - optional = F [ca_trigger] standard_name = flag_for_global_cellular_automata_trigger long_name = switch for ca on trigger @@ -638,7 +567,6 @@ dimensions = () type = logical intent = in - optional = F [nthresh] standard_name = cellular_automata_vertical_velocity_perturbation_threshold_for_deep_convection long_name = threshold used for perturbed vertical velocity @@ -647,7 +575,6 @@ type = real kind = kind_phys intent = in - optional = F [ca_deep] standard_name = cellular_automata_area_fraction_for_deep_convection_from_coupled_process long_name = fraction of cellular automata for deep convection @@ -656,7 +583,6 @@ type = real kind = kind_phys intent = in - optional = F [rainevap] standard_name = physics_field_for_coupling long_name = physics_field_for_coupling @@ -665,7 +591,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -674,7 +599,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -682,4 +606,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/samfshalcnv.meta b/physics/samfshalcnv.meta index d72bb73cf..cdc61c1a3 100644 --- a/physics/samfshalcnv.meta +++ b/physics/samfshalcnv.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [imfshalcnv_samf] standard_name = identifier_for_scale_aware_mass_flux_shallow_convection long_name = flag for SAMF shallow convection scheme @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -31,7 +29,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -39,7 +36,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [itc] standard_name = index_of_first_chemical_tracer_for_convection long_name = index of first chemical tracer transported/scavenged by convection @@ -68,7 +62,6 @@ dimensions = () type = integer intent = in - optional = F [ntc] standard_name = number_of_chemical_tracers long_name = number of chemical tracers @@ -76,7 +69,6 @@ dimensions = () type = integer intent = in - optional = F [cliq] standard_name = specific_heat_of_liquid_water_at_constant_pressure long_name = specific heat of liquid water at constant pressure @@ -85,7 +77,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -94,7 +85,6 @@ type = real kind = kind_phys intent = in - optional = F [cvap] standard_name = specific_heat_of_water_vapor_at_constant_pressure long_name = specific heat of water vapor at constant pressure @@ -103,7 +93,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -112,7 +101,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -121,7 +109,6 @@ type = real kind = kind_phys intent = in - optional = F [fv] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -130,7 +117,6 @@ type = real kind = kind_phys intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -139,7 +125,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -148,7 +133,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -157,7 +141,6 @@ type = real kind = kind_phys intent = in - optional = F [rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -166,7 +149,6 @@ type = real kind = kind_phys intent = in - optional = F [t0c] standard_name = temperature_at_zero_celsius long_name = temperature at 0 degree Celsius @@ -175,7 +157,6 @@ type = real kind = kind_phys intent = in - optional = F [delt] standard_name = timestep_for_physics long_name = physics time step @@ -184,7 +165,6 @@ type = real kind = kind_phys intent = in - optional = F [ntk] standard_name = index_for_turbulent_kinetic_energy_convective_transport_tracer long_name = index for turbulent kinetic energy in the convectively transported tracer array @@ -192,7 +172,6 @@ dimensions = () type = integer intent = in - optional = F [ntr] standard_name = number_of_tracers_for_samf long_name = number of tracers for scale-aware mass flux schemes @@ -200,7 +179,6 @@ dimensions = () type = integer intent = in - optional = F [delp] standard_name = air_pressure_difference_between_midlayers long_name = pres(k) - pres(k+1) @@ -209,7 +187,6 @@ type = real kind = kind_phys intent = in - optional = F [prslp] standard_name = air_pressure long_name = mean layer pressure @@ -218,7 +195,6 @@ type = real kind = kind_phys intent = in - optional = F [psp] standard_name = surface_air_pressure long_name = surface pressure @@ -227,7 +203,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = layer geopotential @@ -236,7 +211,6 @@ type = real kind = kind_phys intent = in - optional = F [qtr] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -245,7 +219,6 @@ type = real kind = kind_phys intent = inout - optional = F [q1] standard_name = specific_humidity_of_new_state long_name = updated vapor specific humidity @@ -254,7 +227,6 @@ type = real kind = kind_phys intent = inout - optional = F [t1] standard_name = air_temperature_of_new_state long_name = updated temperature @@ -263,7 +235,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind_of_new_state long_name = updated x-direction wind @@ -272,7 +243,6 @@ type = real kind = kind_phys intent = inout - optional = F [v1] standard_name = y_wind_of_new_state long_name = updated y-direction wind @@ -281,7 +251,6 @@ type = real kind = kind_phys intent = inout - optional = F [fscav] standard_name = chemical_tracer_scavenging_fractions long_name = array of aerosol scavenging coefficients @@ -290,7 +259,6 @@ type = real kind = kind_phys intent = in - optional = F [rn] standard_name = lwe_thickness_of_shallow_convective_precipitation_amount long_name = shallow convective rainfall amount on physics timestep @@ -299,7 +267,6 @@ type = real kind = kind_phys intent = out - optional = F [kbot] standard_name = vertical_index_at_cloud_base long_name = index at cloud base @@ -307,7 +274,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [ktop] standard_name = vertical_index_at_cloud_top long_name = index at cloud top @@ -315,7 +281,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [kcnv] standard_name = flag_deep_convection long_name = deep convection: 0=no, 1=yes @@ -323,7 +288,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [islimsk] standard_name = sea_land_ice_mask long_name = landmask: sea/land/ice=0/1/2 @@ -331,7 +295,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [garea] standard_name = cell_area long_name = grid cell area @@ -340,7 +303,6 @@ type = real kind = kind_phys intent = in - optional = F [dot] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -349,7 +311,6 @@ type = real kind = kind_phys intent = in - optional = F [ncloud] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -357,7 +318,6 @@ dimensions = () type = integer intent = in - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL top height @@ -366,7 +326,6 @@ type = real kind = kind_phys intent = in - optional = F [ud_mf] standard_name = instantaneous_atmosphere_updraft_convective_mass_flux long_name = (updraft mass flux) * delt @@ -375,7 +334,6 @@ type = real kind = kind_phys intent = out - optional = F [dt_mf] standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux long_name = (detrainment mass flux) * delt @@ -384,7 +342,6 @@ type = real kind = kind_phys intent = out - optional = F [cnvw] standard_name = convective_cloud_water_mixing_ratio long_name = moist convective cloud water mixing ratio @@ -393,7 +350,6 @@ type = real kind = kind_phys intent = out - optional = F [cnvc] standard_name = convective_cloud_cover long_name = convective cloud cover @@ -402,7 +358,6 @@ type = real kind = kind_phys intent = out - optional = F [clam] standard_name = entrainment_rate_coefficient_for_shallow_convection long_name = entrainment rate coefficient for shal conv. @@ -411,7 +366,6 @@ type = real kind = kind_phys intent = in - optional = F [c0s] standard_name = rain_conversion_parameter_for_shallow_convection long_name = convective rain conversion parameter for shal conv. @@ -420,7 +374,6 @@ type = real kind = kind_phys intent = in - optional = F [c1] standard_name = detrainment_conversion_parameter_for_shallow_convection long_name = convective detrainment conversion parameter for shal conv. @@ -429,7 +382,6 @@ type = real kind = kind_phys intent = in - optional = F [evef] standard_name = rain_evaporation_coefficient_for_convection long_name = convective rain evaporation coefficient for convection @@ -438,7 +390,6 @@ type = real kind = kind_phys intent = in - optional = F [pgcon] standard_name = momentum_transport_reduction_factor_due_to_pressure_gradient_force_for_shallow_convection long_name = reduction factor in momentum transport due to shal conv. induced pressure gradient force @@ -447,7 +398,6 @@ type = real kind = kind_phys intent = in - optional = F [asolfac] standard_name = aerosol_aware_multiplicative_rain_conversion_parameter_for_shallow_convection long_name = aerosol-aware parameter inversely proportional to CCN number concentraion from Lim (2011) for shal conv. @@ -456,7 +406,6 @@ type = real kind = kind_phys intent = in - optional = F [hwrf_samfshal] standard_name = flag_for_hurricane_specific_code_in_scale_aware_mass_flux_shallow_convection long_name = flag for hwrf samfshalcnv scheme @@ -464,7 +413,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -473,7 +421,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -481,4 +428,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sascnvn.meta b/physics/sascnvn.meta index 1ad5fa124..082b87d09 100644 --- a/physics/sascnvn.meta +++ b/physics/sascnvn.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [imfdeepcnv_sas] standard_name = identifier_for_simplified_arakawa_schubert_deep_convection long_name = flag for SAS deep convection scheme @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -31,7 +29,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -39,7 +36,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -53,7 +49,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -62,7 +57,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -71,7 +65,6 @@ type = real kind = kind_phys intent = in - optional = F [rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -80,7 +73,6 @@ type = real kind = kind_phys intent = in - optional = F [fv] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -89,7 +81,6 @@ type = real kind = kind_phys intent = in - optional = F [t0c] standard_name = temperature_at_zero_celsius long_name = temperature at 0 degree Celsius @@ -98,7 +89,6 @@ type = real kind = kind_phys intent = in - optional = F [rgas] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -107,7 +97,6 @@ type = real kind = kind_phys intent = in - optional = F [cvap] standard_name = specific_heat_of_water_vapor_at_constant_pressure long_name = specific heat of water vapor at constant pressure @@ -116,7 +105,6 @@ type = real kind = kind_phys intent = in - optional = F [cliq] standard_name = specific_heat_of_liquid_water_at_constant_pressure long_name = specific heat of liquid water at constant pressure @@ -125,7 +113,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -134,7 +121,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -143,7 +129,6 @@ type = real kind = kind_phys intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -151,7 +136,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -159,7 +143,6 @@ dimensions = () type = integer intent = in - optional = F [jcap] standard_name = number_of_spectral_wave_truncation_for_simplified_arakawa_schubert_convection long_name = number of spectral wave trancation used only by sascnv and sascnvn @@ -167,7 +150,6 @@ dimensions = () type = integer intent = in - optional = F [delt] standard_name = timestep_for_physics long_name = physics timestep @@ -176,7 +158,6 @@ type = real kind = kind_phys intent = in - optional = F [delp] standard_name = air_pressure_difference_between_midlayers long_name = air pressure difference between midlayers @@ -185,7 +166,6 @@ type = real kind = kind_phys intent = in - optional = F [prslp] standard_name = air_pressure long_name = mean layer pressure @@ -194,7 +174,6 @@ type = real kind = kind_phys intent = in - optional = F [psp] standard_name = surface_air_pressure long_name = surface pressure @@ -203,7 +182,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -212,7 +190,6 @@ type = real kind = kind_phys intent = in - optional = F [qlc] standard_name = cloud_condensed_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -221,7 +198,6 @@ type = real kind = kind_phys intent = inout - optional = F [qli] standard_name = ice_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -230,7 +206,6 @@ type = real kind = kind_phys intent = inout - optional = F [q1] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -239,7 +214,6 @@ type = real kind = kind_phys intent = inout - optional = F [t1] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -248,7 +222,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind_of_new_state long_name = zonal wind updated by physics @@ -257,7 +230,6 @@ type = real kind = kind_phys intent = inout - optional = F [v1] standard_name = y_wind_of_new_state long_name = meridional wind updated by physics @@ -266,7 +238,6 @@ type = real kind = kind_phys intent = inout - optional = F [cldwrk] standard_name = cloud_work_function long_name = cloud work function @@ -275,7 +246,6 @@ type = real kind = kind_phys intent = out - optional = F [rn] standard_name = lwe_thickness_of_deep_convective_precipitation_amount long_name = deep convective rainfall amount on physics timestep @@ -284,7 +254,6 @@ type = real kind = kind_phys intent = out - optional = F [kbot] standard_name = vertical_index_at_cloud_base long_name = index for cloud base @@ -292,7 +261,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [ktop] standard_name = vertical_index_at_cloud_top long_name = index for cloud top @@ -300,7 +268,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [kcnv] standard_name = flag_deep_convection long_name = deep convection: 0=no, 1=yes @@ -308,7 +275,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [islimsk] standard_name = sea_land_ice_mask long_name = landmask: sea/land/ice=0/1/2 @@ -316,7 +282,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [dot] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -325,7 +290,6 @@ type = real kind = kind_phys intent = in - optional = F [ncloud] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -333,7 +297,6 @@ dimensions = () type = integer intent = in - optional = F [ud_mf] standard_name = instantaneous_atmosphere_updraft_convective_mass_flux long_name = (updraft mass flux) * delt @@ -342,7 +305,6 @@ type = real kind = kind_phys intent = out - optional = F [dd_mf] standard_name = instantaneous_atmosphere_downdraft_convective_mass_flux long_name = (downdraft mass flux) * delt @@ -351,7 +313,6 @@ type = real kind = kind_phys intent = out - optional = F [dt_mf] standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux long_name = (detrainment mass flux) * delt @@ -360,7 +321,6 @@ type = real kind = kind_phys intent = out - optional = F [cnvw] standard_name = convective_cloud_water_mixing_ratio long_name = moist convective cloud water mixing ratio @@ -369,7 +329,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvc] standard_name = convective_cloud_cover long_name = convective cloud cover @@ -378,7 +337,6 @@ type = real kind = kind_phys intent = inout - optional = F [qlcn] standard_name = mass_fraction_of_convective_cloud_liquid_water long_name = mass fraction of convective cloud liquid water @@ -387,7 +345,6 @@ type = real kind = kind_phys intent = inout - optional = F [qicn] standard_name = mass_fraction_of_convective_cloud_ice long_name = mass fraction of convective cloud ice water @@ -396,7 +353,6 @@ type = real kind = kind_phys intent = inout - optional = F [w_upi] standard_name = vertical_velocity_for_updraft long_name = vertical velocity for updraft @@ -405,7 +361,6 @@ type = real kind = kind_phys intent = inout - optional = F [cf_upi] standard_name = convective_cloud_fraction_for_microphysics long_name = convective cloud fraction for microphysics @@ -414,7 +369,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_mfd] standard_name = detrained_mass_flux long_name = detrained mass flux @@ -423,7 +377,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_dqldt] standard_name = tendency_of_cloud_water_due_to_convective_microphysics long_name = tendency of cloud water due to convective microphysics @@ -432,7 +385,6 @@ type = real kind = kind_phys intent = inout - optional = F [clcn] standard_name = convective_cloud_volume_fraction long_name = convective cloud volume fraction @@ -441,7 +393,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_fice] standard_name = ice_fraction_in_convective_tower long_name = ice fraction in convective tower @@ -450,7 +401,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_ndrop] standard_name = number_concentration_of_cloud_liquid_water_particles_for_detrainment long_name = droplet number concentration in convective detrainment @@ -459,7 +409,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnv_nice] standard_name = number_concentration_of_ice_crystals_for_detrainment long_name = crystal number concentration in convective detrainment @@ -468,7 +417,6 @@ type = real kind = kind_phys intent = inout - optional = F [mp_phys] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -476,7 +424,6 @@ dimensions = () type = integer intent = in - optional = F [mp_phys_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -484,7 +431,6 @@ dimensions = () type = integer intent = in - optional = F [clam] standard_name = entrainment_rate_coefficient_for_deep_convection long_name = entrainment rate coefficient for deep convection @@ -493,7 +439,6 @@ type = real kind = kind_phys intent = in - optional = F [c0] standard_name = rain_conversion_parameter_for_deep_convection long_name = convective rain conversion parameter for deep convection @@ -502,7 +447,6 @@ type = real kind = kind_phys intent = in - optional = F [c1] standard_name = detrainment_conversion_parameter_for_deep_convection long_name = convective detrainment conversion parameter for deep convection @@ -511,7 +455,6 @@ type = real kind = kind_phys intent = in - optional = F [betal] standard_name = downdraft_fraction_reaching_surface_over_land_for_deep_convection long_name = downdraft fraction reaching surface over land for deep convection @@ -520,7 +463,6 @@ type = real kind = kind_phys intent = in - optional = F [betas] standard_name = downdraft_fraction_reaching_surface_over_water_for_deep_convection long_name = downdraft fraction reaching surface over water for deep convection @@ -529,7 +471,6 @@ type = real kind = kind_phys intent = in - optional = F [evfact] standard_name = rain_evaporation_coefficient_over_ocean_for_deep_convection long_name = convective rain evaporation coefficient for deep convection @@ -538,7 +479,6 @@ type = real kind = kind_phys intent = in - optional = F [evfactl] standard_name = rain_evaporation_coefficient_over_land_for_deep_convection long_name = convective rain evaporation coefficient over land for deep convection @@ -547,7 +487,6 @@ type = real kind = kind_phys intent = in - optional = F [pgcon] standard_name = momentum_transport_reduction_factor_due_to_pressure_gradient_force_for_deep_convection long_name = reduction factor in momentum transport due to deep convection induced pressure gradient force @@ -556,7 +495,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -565,7 +503,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -573,4 +510,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/satmedmfvdif.meta b/physics/satmedmfvdif.meta index 43800b441..6f1bc9c0a 100644 --- a/physics/satmedmfvdif.meta +++ b/physics/satmedmfvdif.meta @@ -14,9 +14,7 @@ dimensions = () type = logical intent = in - optional = F intent = in - optional = F [isatmedmf] standard_name = choice_of_scale_aware_TKE_moist_EDMF_PBL long_name = choice of scale-aware TKE moist EDMF PBL scheme @@ -24,7 +22,6 @@ dimensions = () type = integer intent = in - optional = F [isatmedmf_vdif] standard_name = choice_of_original_scale_aware_TKE_moist_EDMF_PBL long_name = choice of original scale-aware TKE moist EDMF PBL scheme @@ -32,7 +29,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -41,7 +37,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -49,7 +44,6 @@ dimensions = () type = integer intent = out - optional = F ##################################################################### [ccpp-arg-table] @@ -62,7 +56,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -70,7 +63,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_vertical_diffusion_tracers long_name = number of tracers to diffuse vertically @@ -78,7 +70,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_for_liquid_cloud_condensate_vertical_diffusion_tracer long_name = tracer index for cloud condensate (or liquid water) @@ -86,7 +77,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_for_ice_cloud_condensate_vertical_diffusion_tracer long_name = tracer index for ice water in the vertically diffused tracer array @@ -94,7 +84,6 @@ dimensions = () type = integer intent = in - optional = F [ntke] standard_name = index_for_turbulent_kinetic_energy_vertical_diffusion_tracer long_name = index for turbulent kinetic energy in the vertically diffused tracer array @@ -102,7 +91,6 @@ dimensions = () type = integer intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -111,7 +99,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -120,7 +107,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -129,7 +115,6 @@ type = real kind = kind_phys intent = in - optional = F [rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -138,7 +123,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -147,7 +131,6 @@ type = real kind = kind_phys intent = in - optional = F [hfus] standard_name = latent_heat_of_fusion_of_water_at_0C long_name = latent heat of fusion @@ -156,7 +139,6 @@ type = real kind = kind_phys intent = in - optional = F [fv] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -165,7 +147,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -174,7 +155,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -183,7 +163,6 @@ type = real kind = kind_phys intent = in - optional = F [dv] standard_name = process_split_cumulative_tendency_of_y_wind long_name = updated tendency of the y wind @@ -192,7 +171,6 @@ type = real kind = kind_phys intent = inout - optional = F [du] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind @@ -201,7 +179,6 @@ type = real kind = kind_phys intent = inout - optional = F [tdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -210,7 +187,6 @@ type = real kind = kind_phys intent = inout - optional = F [rtg] standard_name = tendency_of_vertically_diffused_tracer_concentration long_name = updated tendency of the tracers due to vertical diffusion in PBL scheme @@ -219,7 +195,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind long_name = x component of layer wind @@ -228,7 +203,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind long_name = y component of layer wind @@ -237,7 +211,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature long_name = layer mean air temperature @@ -246,7 +219,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = vertically_diffused_tracer_concentration long_name = tracer concentration diffused by PBL scheme @@ -255,7 +227,6 @@ type = real kind = kind_phys intent = in - optional = F [swh] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate @@ -264,7 +235,6 @@ type = real kind = kind_phys intent = in - optional = F [hlw] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate @@ -273,7 +243,6 @@ type = real kind = kind_phys intent = in - optional = F [xmu] standard_name = zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes long_name = zenith angle temporal adjustment factor for shortwave @@ -282,7 +251,6 @@ type = real kind = kind_phys intent = in - optional = F [garea] standard_name = cell_area long_name = area of the grid cell @@ -291,7 +259,6 @@ type = real kind = kind_phys intent = in - optional = F [psk] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at the surface interface @@ -300,7 +267,6 @@ type = real kind = kind_phys intent = in - optional = F [rbsoil] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -309,7 +275,6 @@ type = real kind = kind_phys intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length in cm @@ -318,7 +283,6 @@ type = real kind = kind_phys intent = in - optional = F [u10m] standard_name = x_wind_at_10m long_name = x component of wind at 10 m @@ -327,7 +291,6 @@ type = real kind = kind_phys intent = in - optional = F [v10m] standard_name = y_wind_at_10m long_name = y component of wind at 10 m @@ -336,7 +299,6 @@ type = real kind = kind_phys intent = in - optional = F [fm] standard_name = Monin_Obukhov_similarity_function_for_momentum long_name = Monin-Obukhov similarity function for momentum @@ -345,7 +307,6 @@ type = real kind = kind_phys intent = in - optional = F [fh] standard_name = Monin_Obukhov_similarity_function_for_heat long_name = Monin-Obukhov similarity function for heat @@ -354,7 +315,6 @@ type = real kind = kind_phys intent = in - optional = F [tsea] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -363,7 +323,6 @@ type = real kind = kind_phys intent = in - optional = F [heat] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -372,7 +331,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -381,7 +339,6 @@ type = real kind = kind_phys intent = in - optional = F [stress] standard_name = surface_wind_stress long_name = surface wind stress @@ -390,7 +347,6 @@ type = real kind = kind_phys intent = in - optional = F [spd1] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -399,7 +355,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = PBL top model level index @@ -407,7 +362,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -416,7 +370,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = pres(k) - pres(k+1) @@ -425,7 +378,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -434,7 +386,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = Exner function at layers @@ -443,7 +394,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -452,7 +402,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -461,7 +410,6 @@ type = real kind = kind_phys intent = in - optional = F [delt] standard_name = timestep_for_physics long_name = time step for physics @@ -470,7 +418,6 @@ type = real kind = kind_phys intent = in - optional = F [dspheat] standard_name = flag_TKE_dissipation_heating long_name = flag for using TKE dissipation heating @@ -478,7 +425,6 @@ dimensions = () type = logical intent = in - optional = F [dusfc] standard_name = instantaneous_surface_x_momentum_flux long_name = x momentum flux @@ -487,7 +433,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc] standard_name = instantaneous_surface_y_momentum_flux long_name = y momentum flux @@ -496,7 +441,6 @@ type = real kind = kind_phys intent = out - optional = F [dtsfc] standard_name = instantaneous_surface_upward_sensible_heat_flux long_name = surface upward sensible heat flux @@ -505,7 +449,6 @@ type = real kind = kind_phys intent = out - optional = F [dqsfc] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux @@ -514,7 +457,6 @@ type = real kind = kind_phys intent = out - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -523,7 +465,6 @@ type = real kind = kind_phys intent = out - optional = F [kinver] standard_name = index_of_highest_temperature_inversion long_name = index of highest temperature inversion @@ -531,7 +472,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [xkzm_m] standard_name = atmosphere_momentum_diffusivity_due_to_background long_name = background value of momentum diffusivity @@ -540,7 +480,6 @@ type = real kind = kind_phys intent = in - optional = F [xkzm_h] standard_name = atmosphere_heat_diffusivity_due_to_background long_name = background value of heat diffusivity @@ -549,7 +488,6 @@ type = real kind = kind_phys intent = in - optional = F [xkzm_s] standard_name = sigma_pressure_threshold_at_upper_extent_of_background_diffusion long_name = sigma level threshold for background diffusivity @@ -558,7 +496,6 @@ type = real kind = kind_phys intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -567,7 +504,6 @@ type = real kind = kind_phys intent = in - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -575,7 +511,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -583,7 +518,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -591,7 +525,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -599,7 +532,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_pbl] standard_name = index_of_subgrid_scale_vertical_mixing_process_in_cumulative_change_index long_name = index of subgrid scale vertical mixing process in second dimension of array cumulative change index @@ -607,7 +539,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -615,7 +546,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -623,7 +553,6 @@ dimensions = () type = integer intent = in - optional = F [gen_tend] standard_name = flag_for_generic_tendency_due_to_planetary_boundary_layer long_name = true if GFS_PBL_generic should calculate tendencies @@ -631,7 +560,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -639,7 +567,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -648,7 +575,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -656,4 +582,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/satmedmfvdifq.meta b/physics/satmedmfvdifq.meta index fe449ce68..20d40de8f 100644 --- a/physics/satmedmfvdifq.meta +++ b/physics/satmedmfvdifq.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [isatmedmf] standard_name = choice_of_scale_aware_TKE_moist_EDMF_PBL long_name = choice of scale-aware TKE moist EDMF PBL scheme @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [isatmedmf_vdifq] standard_name = choice_of_updated_scale_aware_TKE_moist_EDMF_PBL long_name = choice of updated scale-aware TKE moist EDMF PBL scheme @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -39,7 +36,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -47,7 +43,6 @@ dimensions = () type = integer intent = out - optional = F ##################################################################### [ccpp-arg-table] @@ -60,7 +55,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -68,7 +62,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_vertical_diffusion_tracers long_name = number of tracers to diffuse vertically @@ -76,7 +69,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_for_liquid_cloud_condensate_vertical_diffusion_tracer long_name = tracer index for cloud condensate (or liquid water) @@ -84,7 +76,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_for_ice_cloud_condensate_vertical_diffusion_tracer long_name = tracer index for ice water in the vertically diffused tracer array @@ -92,7 +83,6 @@ dimensions = () type = integer intent = in - optional = F [ntke] standard_name = index_for_turbulent_kinetic_energy_vertical_diffusion_tracer long_name = index for turbulent kinetic energy in the vertically diffused tracer array @@ -100,7 +90,6 @@ dimensions = () type = integer intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -118,7 +106,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -127,7 +114,6 @@ type = real kind = kind_phys intent = in - optional = F [rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -136,7 +122,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -145,7 +130,6 @@ type = real kind = kind_phys intent = in - optional = F [hfus] standard_name = latent_heat_of_fusion_of_water_at_0C long_name = latent heat of fusion @@ -154,7 +138,6 @@ type = real kind = kind_phys intent = in - optional = F [fv] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -163,7 +146,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -172,7 +154,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -181,7 +162,6 @@ type = real kind = kind_phys intent = in - optional = F [dv] standard_name = process_split_cumulative_tendency_of_y_wind long_name = updated tendency of the y wind @@ -190,7 +170,6 @@ type = real kind = kind_phys intent = inout - optional = F [du] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind @@ -199,7 +178,6 @@ type = real kind = kind_phys intent = inout - optional = F [tdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -208,7 +186,6 @@ type = real kind = kind_phys intent = inout - optional = F [rtg] standard_name = tendency_of_vertically_diffused_tracer_concentration long_name = updated tendency of the tracers due to vertical diffusion in PBL scheme @@ -217,7 +194,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind long_name = x component of layer wind @@ -226,7 +202,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind long_name = y component of layer wind @@ -235,7 +210,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature long_name = layer mean air temperature @@ -244,7 +218,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = vertically_diffused_tracer_concentration long_name = tracer concentration diffused by PBL scheme @@ -253,7 +226,6 @@ type = real kind = kind_phys intent = in - optional = F [swh] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate @@ -262,7 +234,6 @@ type = real kind = kind_phys intent = in - optional = F [hlw] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate @@ -271,7 +242,6 @@ type = real kind = kind_phys intent = in - optional = F [xmu] standard_name = zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes long_name = zenith angle temporal adjustment factor for shortwave @@ -280,7 +250,6 @@ type = real kind = kind_phys intent = in - optional = F [garea] standard_name = cell_area long_name = area of the grid cell @@ -289,7 +258,6 @@ type = real kind = kind_phys intent = in - optional = F [zvfun] standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction long_name = function of surface roughness length and green vegetation fraction @@ -298,7 +266,6 @@ type = real kind = kind_phys intent = in - optional = F [psk] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at the surface interface @@ -307,7 +274,6 @@ type = real kind = kind_phys intent = in - optional = F [rbsoil] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -316,7 +282,6 @@ type = real kind = kind_phys intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length in cm @@ -325,7 +290,6 @@ type = real kind = kind_phys intent = in - optional = F [u10m] standard_name = x_wind_at_10m long_name = x component of wind at 10 m @@ -334,7 +298,6 @@ type = real kind = kind_phys intent = in - optional = F [v10m] standard_name = y_wind_at_10m long_name = y component of wind at 10 m @@ -343,7 +306,6 @@ type = real kind = kind_phys intent = in - optional = F [fm] standard_name = Monin_Obukhov_similarity_function_for_momentum long_name = Monin-Obukhov similarity function for momentum @@ -352,7 +314,6 @@ type = real kind = kind_phys intent = in - optional = F [fh] standard_name = Monin_Obukhov_similarity_function_for_heat long_name = Monin-Obukhov similarity function for heat @@ -361,7 +322,6 @@ type = real kind = kind_phys intent = in - optional = F [tsea] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -370,7 +330,6 @@ type = real kind = kind_phys intent = in - optional = F [heat] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -379,7 +338,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -388,7 +346,6 @@ type = real kind = kind_phys intent = in - optional = F [stress] standard_name = surface_wind_stress long_name = surface wind stress @@ -397,7 +354,6 @@ type = real kind = kind_phys intent = in - optional = F [spd1] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -406,7 +362,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = PBL top model level index @@ -414,7 +369,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -423,7 +377,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = pres(k) - pres(k+1) @@ -432,7 +385,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -441,7 +393,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = Exner function at layers @@ -450,7 +401,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -459,7 +409,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -468,7 +417,6 @@ type = real kind = kind_phys intent = in - optional = F [delt] standard_name = timestep_for_physics long_name = time step for physics @@ -477,7 +425,6 @@ type = real kind = kind_phys intent = in - optional = F [dspheat] standard_name = flag_TKE_dissipation_heating long_name = flag for using TKE dissipation heating @@ -485,7 +432,6 @@ dimensions = () type = logical intent = in - optional = F [dusfc] standard_name = instantaneous_surface_x_momentum_flux long_name = x momentum flux @@ -494,7 +440,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc] standard_name = instantaneous_surface_y_momentum_flux long_name = y momentum flux @@ -503,7 +448,6 @@ type = real kind = kind_phys intent = out - optional = F [dtsfc] standard_name = instantaneous_surface_upward_sensible_heat_flux long_name = surface upward sensible heat flux @@ -512,7 +456,6 @@ type = real kind = kind_phys intent = out - optional = F [dqsfc] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux @@ -521,7 +464,6 @@ type = real kind = kind_phys intent = out - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -530,7 +472,6 @@ type = real kind = kind_phys intent = out - optional = F [dkt] standard_name = atmosphere_heat_diffusivity long_name = atmospheric heat diffusivity @@ -539,7 +480,6 @@ type = real kind = kind_phys intent = out - optional = F [dku] standard_name = atmosphere_momentum_diffusivity long_name = atmospheric momentum diffusivity @@ -548,7 +488,6 @@ type = real kind = kind_phys intent = out - optional = F [kinver] standard_name = index_of_highest_temperature_inversion long_name = index of highest temperature inversion @@ -556,7 +495,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [xkzm_m] standard_name = atmosphere_momentum_diffusivity_due_to_background long_name = background value of momentum diffusivity @@ -565,7 +503,6 @@ type = real kind = kind_phys intent = in - optional = F [xkzm_h] standard_name = atmosphere_heat_diffusivity_due_to_background long_name = background value of heat diffusivity @@ -574,7 +511,6 @@ type = real kind = kind_phys intent = in - optional = F [xkzm_s] standard_name = sigma_pressure_threshold_at_upper_extent_of_background_diffusion long_name = sigma level threshold for background diffusivity @@ -583,7 +519,6 @@ type = real kind = kind_phys intent = in - optional = F [dspfac] standard_name = multiplicative_tuning_parameter_for_tke_dissipative_heating long_name = tke dissipative heating factor @@ -592,7 +527,6 @@ type = real kind = kind_phys intent = in - optional = F [bl_upfr] standard_name = updraft_area_fraction_in_scale_aware_tke_moist_edmf_pbl_scheme long_name = updraft fraction in boundary layer mass flux scheme @@ -601,7 +535,6 @@ type = real kind = kind_phys intent = in - optional = F [bl_dnfr] standard_name = downdraft_area_fraction_in_scale_aware_tke_moist_edmf_pbl_scheme long_name = downdraft fraction in boundary layer mass flux scheme @@ -610,7 +543,6 @@ type = real kind = kind_phys intent = in - optional = F [rlmx] standard_name = maximum_allowed_mixing_length_in_boundary_layer_mass_flux_scheme long_name = maximum allowed mixing length in boundary layer mass flux scheme @@ -619,7 +551,6 @@ type = real kind = kind_phys intent = in - optional = F [elmx] standard_name = maximum_allowed_dissipation_mixing_length_in_boundary_layer_mass_flux_scheme long_name = maximum allowed dissipation mixing length in boundary layer mass flux scheme @@ -628,7 +559,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_rlm] standard_name = choice_of_near_surface_mixing_length_in_boundary_layer_mass_flux_scheme long_name = choice of near surface mixing length in boundary layer mass flux scheme @@ -636,7 +566,6 @@ dimensions = () type = integer intent = in - optional = F [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -644,7 +573,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -652,7 +580,6 @@ dimensions = () type = integer intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -661,7 +588,6 @@ type = real kind = kind_phys intent = in - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -669,7 +595,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -677,7 +602,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -685,7 +609,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -693,7 +616,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_pbl] standard_name = index_of_subgrid_scale_vertical_mixing_process_in_cumulative_change_index long_name = index of subgrid scale vertical mixing process in second dimension of array cumulative change index @@ -701,7 +623,6 @@ dimensions = () type = integer intent = in - optional = F [gen_tend] standard_name = flag_for_generic_tendency_due_to_planetary_boundary_layer long_name = true if GFS_PBL_generic should calculate tendencies @@ -709,7 +630,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -717,7 +637,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -726,7 +645,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -734,4 +652,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/scm_sfc_flux_spec.meta b/physics/scm_sfc_flux_spec.meta index d7b29a4c0..9ff2f15c4 100644 --- a/physics/scm_sfc_flux_spec.meta +++ b/physics/scm_sfc_flux_spec.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ################################# [ccpp-arg-table] @@ -45,7 +42,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind_at_surface_adjacent_layer long_name = y component of 1st model layer wind @@ -54,7 +50,6 @@ type = real kind = kind_phys intent = in - optional = F [z1] standard_name = height_above_ground_at_lowest_model_layer long_name = height above ground at 1st model layer @@ -63,7 +58,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = 1st model layer air temperature @@ -72,7 +66,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = 1st model layer specific humidity @@ -81,7 +74,6 @@ type = real kind = kind_phys intent = in - optional = F [p1] standard_name = air_pressure_at_surface_adjacent_layer long_name = Model layer 1 mean pressure @@ -90,7 +82,6 @@ type = real kind = kind_phys intent = in - optional = F [roughness_length] standard_name = surface_roughness_length long_name = surface roughness length @@ -99,7 +90,6 @@ type = real kind = kind_phys intent = in - optional = F [spec_sh_flux] standard_name = specified_surface_upward_temperature_flux long_name = specified kinematic surface upward sensible heat flux @@ -108,7 +98,6 @@ type = real kind = kind_phys intent = in - optional = F [spec_lh_flux] standard_name = specified_surface_upward_specific_humidity_flux long_name = specified kinematic surface upward latent heat flux @@ -117,7 +106,6 @@ type = real kind = kind_phys intent = in - optional = F [exner_inverse] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -126,7 +114,6 @@ type = real kind = kind_phys intent = in - optional = F [T_surf] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -135,7 +122,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -144,7 +130,6 @@ type = real kind = kind_phys intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -153,7 +138,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of vaporization of water at 0C @@ -162,7 +146,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -171,7 +154,6 @@ type = real kind = kind_phys intent = in - optional = F [fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -180,7 +162,6 @@ type = real kind = kind_phys intent = in - optional = F [vonKarman] standard_name = von_karman_constant long_name = Von Karman constant @@ -189,7 +170,6 @@ type = real kind = kind_phys intent = in - optional = F [sh_flux] standard_name = surface_upward_temperature_flux long_name = surface upward sensible heat flux @@ -198,7 +178,6 @@ type = real kind = kind_phys intent = out - optional = F [lh_flux] standard_name = surface_upward_specific_humidity_flux long_name = surface upward evaporation flux @@ -207,7 +186,6 @@ type = real kind = kind_phys intent = out - optional = F [sh_flux_chs] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -216,7 +194,6 @@ type = real kind = kind_phys intent = out - optional = F [u_star] standard_name = surface_friction_velocity long_name = boundary layer parameter @@ -225,7 +202,6 @@ type = real kind = kind_phys intent = out - optional = F [sfc_stress] standard_name = surface_wind_stress long_name = surface wind stress @@ -234,7 +210,6 @@ type = real kind = kind_phys intent = out - optional = F [cm] standard_name = surface_drag_coefficient_for_momentum_in_air long_name = surface exchange coeff for momentum @@ -243,7 +218,6 @@ type = real kind = kind_phys intent = out - optional = F [ch] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air long_name = surface exchange coeff heat & moisture @@ -252,7 +226,6 @@ type = real kind = kind_phys intent = out - optional = F [fm] standard_name = Monin_Obukhov_similarity_function_for_momentum long_name = Monin-Obukhov similarity function for momentum @@ -261,7 +234,6 @@ type = real kind = kind_phys intent = out - optional = F [fh] standard_name = Monin_Obukhov_similarity_function_for_heat long_name = Monin-Obukhov similarity function for heat @@ -270,7 +242,6 @@ type = real kind = kind_phys intent = out - optional = F [rb] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -279,7 +250,6 @@ type = real kind = kind_phys intent = out - optional = F [u10m] standard_name = x_wind_at_10m long_name = 10 meter u wind speed @@ -288,7 +258,6 @@ type = real kind = kind_phys intent = out - optional = F [v10m] standard_name = y_wind_at_10m long_name = 10 meter v wind speed @@ -297,7 +266,6 @@ type = real kind = kind_phys intent = out - optional = F [wind1] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -306,7 +274,6 @@ type = real kind = kind_phys intent = out - optional = F [qss] standard_name = surface_specific_humidity long_name = surface air saturation specific humidity @@ -315,7 +282,6 @@ type = real kind = kind_phys intent = out - optional = F [t2m] standard_name = air_temperature_at_2m long_name = 2 meter temperature @@ -324,7 +290,6 @@ type = real kind = kind_phys intent = out - optional = F [q2m] standard_name = specific_humidity_at_2m long_name = 2 meter specific humidity @@ -333,7 +298,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -342,7 +306,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -350,4 +313,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_cice.meta b/physics/sfc_cice.meta index 7c8b72b85..fd259111a 100644 --- a/physics/sfc_cice.meta +++ b/physics/sfc_cice.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [cplflx] standard_name = flag_for_surface_flux_coupling long_name = flag controlling cplflx collection (default off) @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -31,7 +29,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -40,7 +37,6 @@ type = real kind = kind_phys intent = in - optional = F [rvrdm1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -49,7 +45,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -58,7 +53,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = surface layer mean temperature @@ -67,7 +61,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = surface layer mean specific humidity @@ -76,7 +69,6 @@ type = real kind = kind_phys intent = in - optional = F [cm] standard_name = surface_drag_coefficient_for_momentum_in_air_over_ice long_name = surface exchange coeff for momentum over ice @@ -85,7 +77,6 @@ type = real kind = kind_phys intent = in - optional = F [ch] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ice long_name = surface exchange coeff heat & moisture over ice @@ -94,7 +85,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl1] standard_name = air_pressure_at_surface_adjacent_layer long_name = surface layer mean pressure @@ -103,7 +93,6 @@ type = real kind = kind_phys intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -112,7 +101,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_cice] standard_name = flag_for_cice long_name = flag for cice @@ -120,7 +108,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -128,7 +115,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [dqsfc] standard_name = surface_upward_latent_heat_flux_from_coupled_process long_name = sfc latent heat flux for coupling @@ -137,7 +123,6 @@ type = real kind = kind_phys intent = in - optional = F [dtsfc] standard_name = surface_upward_sensible_heat_flux_from_coupled_process long_name = sfc sensible heat flux for coupling @@ -146,7 +131,6 @@ type = real kind = kind_phys intent = in - optional = F [dusfc] standard_name = surface_x_momentum_flux_from_coupled_process long_name = sfc x momentum flux for coupling @@ -155,7 +139,6 @@ type = real kind = kind_phys intent = in - optional = F [dvsfc] standard_name = surface_y_momentum_flux_from_coupled_process long_name = sfc y momentum flux for coupling @@ -164,7 +147,6 @@ type = real kind = kind_phys intent = in - optional = F [snowd] standard_name = lwe_surface_snow_from_coupled_process long_name = sfc snow depth in meters over sea ice for coupling @@ -173,7 +155,6 @@ type = real kind = kind_phys intent = in - optional = F [qsurf] standard_name = surface_specific_humidity_over_ice long_name = surface air saturation specific humidity over ice @@ -182,7 +163,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmm] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_ice long_name = momentum exchange coefficient over ice @@ -191,7 +171,6 @@ type = real kind = kind_phys intent = inout - optional = F [chh] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_ice long_name = thermal exchange coefficient over ice @@ -200,7 +179,6 @@ type = real kind = kind_phys intent = inout - optional = F [evap] standard_name = kinematic_surface_upward_latent_heat_flux_over_ice long_name = kinematic surface upward latent heat flux over ice @@ -209,7 +187,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_over_ice long_name = kinematic surface upward sensible heat flux over ice @@ -218,7 +195,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress] standard_name = surface_wind_stress_over_ice long_name = surface wind stress over ice @@ -227,7 +203,6 @@ type = real kind = kind_phys intent = inout - optional = F [weasd] standard_name = water_equivalent_accumulated_snow_depth_over_ice long_name = water equiv of acc snow depth over ice @@ -236,7 +211,6 @@ type = real kind = kind_phys intent = inout - optional = F [snwdph] standard_name = surface_snow_thickness_water_equivalent_over_ice long_name = water equivalent snow depth over ice @@ -245,7 +219,6 @@ type = real kind = kind_phys intent = inout - optional = F [ep] standard_name = surface_upward_potential_latent_heat_flux_over_ice long_name = surface upward potential latent heat flux over ice @@ -254,7 +227,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -263,7 +235,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -271,4 +242,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_diag.meta b/physics/sfc_diag.meta index f897996ef..d19a62542 100644 --- a/physics/sfc_diag.meta +++ b/physics/sfc_diag.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -32,7 +30,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -41,7 +38,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -50,7 +46,6 @@ type = real kind = kind_phys intent = in - optional = F [ps] standard_name = surface_air_pressure long_name = surface pressure @@ -59,7 +54,6 @@ type = real kind = kind_phys intent = in - optional = F [u1] standard_name = x_wind_of_new_state_at_surface_adjacent_layer long_name = x component of 1st model layer wind @@ -68,7 +62,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind_of_new_state_at_surface_adjacent_layer long_name = y component of 1st model layer wind @@ -77,7 +70,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_of_new_state_at_surface_adjacent_layer long_name = 1st model layer air temperature @@ -86,7 +78,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_of_new_state_at_surface_adjacent_layer long_name = 1st model layer specific humidity @@ -95,7 +86,6 @@ type = real kind = kind_phys intent = in - optional = F [prslki] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -104,7 +94,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = surface upward evaporation flux @@ -113,7 +102,6 @@ type = real kind = kind_phys intent = in - optional = F [fm] standard_name = Monin_Obukhov_similarity_function_for_momentum long_name = Monin-Obukhov similarity parameter for momentum @@ -122,7 +110,6 @@ type = real kind = kind_phys intent = in - optional = F [fh] standard_name = Monin_Obukhov_similarity_function_for_heat long_name = Monin-Obukhov similarity parameter for heat @@ -131,7 +118,6 @@ type = real kind = kind_phys intent = in - optional = F [fm10] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m long_name = Monin-Obukhov similarity parameter for momentum @@ -140,7 +126,6 @@ type = real kind = kind_phys intent = in - optional = F [fh2] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m long_name = Monin-Obukhov similarity parameter for heat @@ -149,7 +134,6 @@ type = real kind = kind_phys intent = in - optional = F [tskin] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -158,7 +142,6 @@ type = real kind = kind_phys intent = in - optional = F [qsurf] standard_name = surface_specific_humidity long_name = surface specific humidity @@ -167,7 +150,6 @@ type = real kind = kind_phys intent = in - optional = F [thsfc_loc] standard_name = flag_for_reference_pressure_theta long_name = flag for reference pressure in theta calculation @@ -175,7 +157,6 @@ dimensions = () type = logical intent = in - optional = F [f10m] standard_name = ratio_of_wind_at_surface_adjacent_layer_to_wind_at_10m long_name = ratio of fm10 and fm @@ -184,7 +165,6 @@ type = real kind = kind_phys intent = out - optional = F [u10m] standard_name = x_wind_at_10m long_name = x component of wind at 10 m @@ -193,7 +173,6 @@ type = real kind = kind_phys intent = out - optional = F [v10m] standard_name = y_wind_at_10m long_name = y component of wind at 10 m @@ -202,7 +181,6 @@ type = real kind = kind_phys intent = out - optional = F [t2m] standard_name = air_temperature_at_2m long_name = temperature at 2 m @@ -211,7 +189,6 @@ type = real kind = kind_phys intent = out - optional = F [q2m] standard_name = specific_humidity_at_2m long_name = specific humidity at 2 m @@ -220,7 +197,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -229,7 +205,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -237,4 +212,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_diag_post.meta b/physics/sfc_diag_post.meta index 8f4378566..d66a468fa 100644 --- a/physics/sfc_diag_post.meta +++ b/physics/sfc_diag_post.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [lsm] standard_name = control_for_land_surface_scheme long_name = flag for land surface model @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -38,7 +35,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -46,7 +42,6 @@ dimensions = () type = logical intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -55,7 +50,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -64,7 +58,6 @@ type = real kind = kind_phys intent = in - optional = F [con_epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -73,7 +66,6 @@ type = real kind = kind_phys intent = in - optional = F [pgr] standard_name = surface_air_pressure long_name = surface pressure @@ -82,7 +74,6 @@ type = real kind = kind_phys intent = in - optional = F [t2mmp] standard_name = temperature_at_2m_from_noahmp long_name = 2 meter temperature from noahmp @@ -91,7 +82,6 @@ type = real kind = kind_phys intent = in - optional = F [q2mp] standard_name = specific_humidity_at_2m_from_noahmp long_name = 2 meter specific humidity from noahmp @@ -100,7 +90,6 @@ type = real kind = kind_phys intent = in - optional = F [t2m] standard_name = air_temperature_at_2m long_name = 2 meter temperature @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = inout - optional = F [q2m] standard_name = specific_humidity_at_2m long_name = 2 meter specific humidity @@ -118,7 +106,6 @@ type = real kind = kind_phys intent = inout - optional = F [u10m] standard_name = x_wind_at_10m long_name = 10 meter u wind speed @@ -127,7 +114,6 @@ type = real kind = kind_phys intent = in - optional = F [v10m] standard_name = y_wind_at_10m long_name = 10 meter v wind speed @@ -136,7 +122,6 @@ type = real kind = kind_phys intent = in - optional = F [tmpmin] standard_name = minimum_temperature_at_2m long_name = min temperature at 2m height @@ -145,7 +130,6 @@ type = real kind = kind_phys intent = inout - optional = F [tmpmax] standard_name = maximum_temperature_at_2m long_name = max temperature at 2m height @@ -154,7 +138,6 @@ type = real kind = kind_phys intent = inout - optional = F [spfhmin] standard_name = minimum_specific_humidity_at_2m long_name = minimum specific humidity at 2m height @@ -163,7 +146,6 @@ type = real kind = kind_phys intent = inout - optional = F [spfhmax] standard_name = maximum_specific_humidity_at_2m long_name = maximum specific humidity at 2m height @@ -172,7 +154,6 @@ type = real kind = kind_phys intent = inout - optional = F [wind10mmax] standard_name = maximum_wind_at_10m long_name = maximum wind speed at 10 m @@ -181,7 +162,6 @@ type = real kind = kind_phys intent = inout - optional = F [u10mmax] standard_name = maximum_x_wind_at_10m long_name = maximum x wind at 10 m @@ -190,7 +170,6 @@ type = real kind = kind_phys intent = inout - optional = F [v10mmax] standard_name = maximum_y_wind_at_10m long_name = maximum y wind at 10 m @@ -199,7 +178,6 @@ type = real kind = kind_phys intent = inout - optional = F [dpt2m] standard_name = dewpoint_temperature_at_2m long_name = 2 meter dewpoint temperature @@ -208,7 +186,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -217,7 +194,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -225,4 +201,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_diff.meta b/physics/sfc_diff.meta index e04fb5d3e..86268392d 100644 --- a/physics/sfc_diff.meta +++ b/physics/sfc_diff.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [rvrdm1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -32,7 +30,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -41,7 +38,6 @@ type = real kind = kind_phys intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -50,7 +46,6 @@ type = real kind = kind_phys intent = in - optional = F [ps] standard_name = surface_air_pressure long_name = surface pressure @@ -59,7 +54,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = 1st model layer air temperature @@ -68,7 +62,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = 1st model layer specific humidity @@ -77,7 +70,6 @@ type = real kind = kind_phys intent = in - optional = F [z1] standard_name = height_above_ground_at_lowest_model_layer long_name = height above ground at 1st model layer @@ -86,7 +78,6 @@ type = real kind = kind_phys intent = in - optional = F [garea] standard_name = cell_area long_name = area of the grid cell @@ -95,7 +86,6 @@ type = real kind = kind_phys intent = in - optional = F [zvfun] standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction long_name = function of surface roughness length and green vegetation fraction @@ -104,7 +94,6 @@ type = real kind = kind_phys intent = out - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -113,7 +102,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl1] standard_name = air_pressure_at_surface_adjacent_layer long_name = Model layer 1 mean pressure @@ -122,7 +110,6 @@ type = real kind = kind_phys intent = in - optional = F [prslki] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -131,7 +118,6 @@ type = real kind = kind_phys intent = in - optional = F [prsik1] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at the ground surface @@ -140,7 +126,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk1] standard_name = dimensionless_exner_function_at_surface_adjacent_layer long_name = dimensionless Exner function at the lowest model layer @@ -149,7 +134,6 @@ type = real kind = kind_phys intent = in - optional = F [sigmaf] standard_name = bounded_vegetation_area_fraction long_name = areal fractional cover of green vegetation bounded on the bottom @@ -158,7 +142,6 @@ type = real kind = kind_phys intent = in - optional = F [vegtype] standard_name = vegetation_type_classification long_name = vegetation type at each grid cell @@ -166,7 +149,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [shdmax] standard_name = max_vegetation_area_fraction long_name = max fractnl cover of green veg @@ -175,7 +157,6 @@ type = real kind = kind_phys intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -183,7 +164,6 @@ dimensions = () type = integer intent = in - optional = F [z0pert] standard_name = perturbation_of_momentum_roughness_length long_name = perturbation of momentum roughness length @@ -192,7 +172,6 @@ type = real kind = kind_phys intent = in - optional = F [ztpert] standard_name = perturbation_of_heat_to_momentum_roughness_length_ratio long_name = perturbation of heat to momentum roughness length ratio @@ -201,7 +180,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -209,7 +187,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [redrag] standard_name = flag_for_limited_surface_roughness_length_over_ocean long_name = flag for reduced drag coefficient over sea @@ -217,7 +194,6 @@ dimensions = () type = logical intent = in - optional = F [u10m] standard_name = x_wind_at_10m long_name = 10 meter u wind speed @@ -226,7 +202,6 @@ type = real kind = kind_phys intent = in - optional = F [v10m] standard_name = y_wind_at_10m long_name = 10 meter v wind speed @@ -235,7 +210,6 @@ type = real kind = kind_phys intent = in - optional = F [sfc_z0_type] standard_name = flag_for_surface_roughness_option_over_water long_name = surface roughness options over water @@ -243,7 +217,6 @@ dimensions = () type = integer intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -251,7 +224,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -259,7 +231,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -267,7 +238,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [thsfc_loc] standard_name = flag_for_reference_pressure_theta long_name = flag for reference pressure in theta calculation @@ -275,7 +245,6 @@ dimensions = () type = logical intent = in - optional = F [tskin_wat] standard_name = surface_skin_temperature_over_water long_name = surface skin temperature over water @@ -284,7 +253,6 @@ type = real kind = kind_phys intent = in - optional = F [tskin_lnd] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -293,7 +261,6 @@ type = real kind = kind_phys intent = in - optional = F [tskin_ice] standard_name = surface_skin_temperature_over_ice long_name = surface skin temperature over ice @@ -302,7 +269,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_wat] standard_name = surface_skin_temperature_after_iteration_over_water long_name = surface skin temperature after iteration over water @@ -311,7 +277,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_lnd] standard_name = surface_skin_temperature_after_iteration_over_land long_name = surface skin temperature after iteration over land @@ -320,7 +285,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_ice] standard_name = surface_skin_temperature_after_iteration_over_ice long_name = surface skin temperature after iteration over ice @@ -329,7 +293,6 @@ type = real kind = kind_phys intent = in - optional = F [z0rl_wat] standard_name = surface_roughness_length_over_water long_name = surface roughness length over water (temporary use as interstitial) @@ -338,7 +301,6 @@ type = real kind = kind_phys intent = inout - optional = F [z0rl_lnd] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land (temporary use as interstitial) @@ -347,7 +309,6 @@ type = real kind = kind_phys intent = inout - optional = F [z0rl_ice] standard_name = surface_roughness_length_over_ice long_name = surface roughness length over ice (temporary use as interstitial) @@ -356,7 +317,6 @@ type = real kind = kind_phys intent = inout - optional = F [z0rl_wav] standard_name = surface_roughness_length_from_wave_model long_name = surface roughness length from wave model @@ -365,7 +325,6 @@ type = real kind = kind_phys intent = in - optional = F [ustar_wat] standard_name = surface_friction_velocity_over_water long_name = surface friction velocity over water @@ -374,7 +333,6 @@ type = real kind = kind_phys intent = inout - optional = F [ustar_lnd] standard_name = surface_friction_velocity_over_land long_name = surface friction velocity over land @@ -383,7 +341,6 @@ type = real kind = kind_phys intent = inout - optional = F [ustar_ice] standard_name = surface_friction_velocity_over_ice long_name = surface friction velocity over ice @@ -392,7 +349,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm_wat] standard_name = surface_drag_coefficient_for_momentum_in_air_over_water long_name = surface exchange coeff for momentum over water @@ -401,7 +357,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm_lnd] standard_name = surface_drag_coefficient_for_momentum_in_air_over_land long_name = surface exchange coeff for momentum over land @@ -410,7 +365,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm_ice] standard_name = surface_drag_coefficient_for_momentum_in_air_over_ice long_name = surface exchange coeff for momentum over ice @@ -419,7 +373,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_wat] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water @@ -428,7 +381,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_lnd] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land long_name = surface exchange coeff heat & moisture over land @@ -437,7 +389,6 @@ type = real kind = kind_phys intent = inout - optional = F [ch_ice] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ice long_name = surface exchange coeff heat & moisture over ice @@ -446,7 +397,6 @@ type = real kind = kind_phys intent = inout - optional = F [rb_wat] standard_name = bulk_richardson_number_at_lowest_model_level_over_water long_name = bulk Richardson number at the surface over water @@ -455,7 +405,6 @@ type = real kind = kind_phys intent = inout - optional = F [rb_lnd] standard_name = bulk_richardson_number_at_lowest_model_level_over_land long_name = bulk Richardson number at the surface over land @@ -464,7 +413,6 @@ type = real kind = kind_phys intent = inout - optional = F [rb_ice] standard_name = bulk_richardson_number_at_lowest_model_level_over_ice long_name = bulk Richardson number at the surface over ice @@ -473,7 +421,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_wat] standard_name = surface_wind_stress_over_water long_name = surface wind stress over water @@ -482,7 +429,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_lnd] standard_name = surface_wind_stress_over_land long_name = surface wind stress over land @@ -491,7 +437,6 @@ type = real kind = kind_phys intent = inout - optional = F [stress_ice] standard_name = surface_wind_stress_over_ice long_name = surface wind stress over ice @@ -500,7 +445,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_wat] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_water long_name = Monin-Obukhov similarity function for momentum over water @@ -509,7 +453,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_lnd] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_land long_name = Monin-Obukhov similarity function for momentum over land @@ -518,7 +461,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm_ice] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_ice long_name = Monin-Obukhov similarity function for momentum over ice @@ -527,7 +469,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_wat] standard_name = Monin_Obukhov_similarity_function_for_heat_over_water long_name = Monin-Obukhov similarity function for heat over water @@ -536,7 +477,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_lnd] standard_name = Monin_Obukhov_similarity_function_for_heat_over_land long_name = Monin-Obukhov similarity function for heat over land @@ -545,7 +485,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh_ice] standard_name = Monin_Obukhov_similarity_function_for_heat_over_ice long_name = Monin-Obukhov similarity function for heat over ice @@ -554,7 +493,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_wat] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_water long_name = Monin-Obukhov similarity parameter for momentum at 10m over water @@ -563,7 +501,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_lnd] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_land long_name = Monin-Obukhov similarity parameter for momentum at 10m over land @@ -572,7 +509,6 @@ type = real kind = kind_phys intent = inout - optional = F [fm10_ice] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_ice long_name = Monin-Obukhov similarity parameter for momentum at 10m over ice @@ -581,7 +517,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_wat] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_water long_name = Monin-Obukhov similarity parameter for heat at 2m over water @@ -590,7 +525,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_lnd] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_land long_name = Monin-Obukhov similarity parameter for heat at 2m over land @@ -599,7 +533,6 @@ type = real kind = kind_phys intent = inout - optional = F [fh2_ice] standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_ice long_name = Monin-Obukhov similarity parameter for heat at 2m over ice @@ -608,7 +541,6 @@ type = real kind = kind_phys intent = inout - optional = F [ztmax_wat] standard_name = bounded_surface_roughness_length_for_heat_over_water long_name = bounded surface roughness length for heat over water @@ -617,7 +549,6 @@ type = real kind = kind_phys intent = inout - optional = F [ztmax_lnd] standard_name = bounded_surface_roughness_length_for_heat_over_land long_name = bounded surface roughness length for heat over land @@ -626,7 +557,6 @@ type = real kind = kind_phys intent = inout - optional = F [ztmax_ice] standard_name = bounded_surface_roughness_length_for_heat_over_ice long_name = bounded surface roughness length for heat over ice @@ -635,7 +565,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -644,7 +573,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -652,4 +580,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_drv.meta b/physics/sfc_drv.meta index 08ec02be7..aba4862fd 100644 --- a/physics/sfc_drv.meta +++ b/physics/sfc_drv.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noah] standard_name = identifier_for_noah_land_surface_scheme long_name = flag for NOAH land surface model @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [nlunit] standard_name = iounit_of_namelist long_name = fortran unit number for file opens @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [pores] standard_name = maximum_soil_moisture_content_for_land_surface_model long_name = maximum soil moisture for a given soil type for land surface model @@ -79,7 +73,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -87,7 +80,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -101,7 +93,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -109,7 +100,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -122,7 +112,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_dimension_of_soil long_name = soil vertical layer dimension @@ -130,7 +119,6 @@ dimensions = () type = integer intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -139,7 +127,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -148,7 +135,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -157,7 +143,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -166,7 +151,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -175,7 +159,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -184,7 +167,6 @@ type = real kind = kind_phys intent = in - optional = F [rvrdm1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -193,7 +175,6 @@ type = real kind = kind_phys intent = in - optional = F [ps] standard_name = surface_air_pressure long_name = surface pressure @@ -202,7 +183,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = 1st model layer air temperature @@ -211,7 +191,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = 1st model layer specific humidity @@ -220,7 +199,6 @@ type = real kind = kind_phys intent = in - optional = F [soiltyp] standard_name = soil_type_classification long_name = soil type at each grid cell @@ -228,7 +206,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [vegtype] standard_name = vegetation_type_classification long_name = vegetation type at each grid cell @@ -236,7 +213,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [sigmaf] standard_name = bounded_vegetation_area_fraction long_name = areal fractional cover of green vegetation bounded on the bottom @@ -245,7 +221,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcemis] standard_name = surface_longwave_emissivity_over_land_interstitial long_name = surface lw emissivity in fraction over land (temporary use as interstitial) @@ -254,7 +229,6 @@ type = real kind = kind_phys intent = in - optional = F [dlwflx] standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_land long_name = total sky surface downward longwave flux absorbed by the ground over land @@ -263,7 +237,6 @@ type = real kind = kind_phys intent = in - optional = F [dswsfc] standard_name = surface_downwelling_shortwave_flux long_name = total sky surface downward shortwave flux @@ -272,7 +245,6 @@ type = real kind = kind_phys intent = in - optional = F [delt] standard_name = timestep_for_dynamics long_name = dynamics time step @@ -281,7 +253,6 @@ type = real kind = kind_phys intent = in - optional = F [tg3] standard_name = deep_soil_temperature long_name = bottom soil temperature @@ -290,7 +261,6 @@ type = real kind = kind_phys intent = in - optional = F [cm] standard_name = surface_drag_coefficient_for_momentum_in_air_over_land long_name = surface exchange coeff for momentum over land @@ -299,7 +269,6 @@ type = real kind = kind_phys intent = in - optional = F [ch] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land long_name = surface exchange coeff heat & moisture over land @@ -308,7 +277,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl1] standard_name = air_pressure_at_surface_adjacent_layer long_name = Model layer 1 mean pressure @@ -317,7 +285,6 @@ type = real kind = kind_phys intent = in - optional = F [prslki] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -326,7 +293,6 @@ type = real kind = kind_phys intent = in - optional = F [zf] standard_name = height_above_ground_at_lowest_model_layer long_name = height above ground at 1st model layer @@ -335,7 +301,6 @@ type = real kind = kind_phys intent = in - optional = F [land] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -343,7 +308,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -352,7 +316,6 @@ type = real kind = kind_phys intent = in - optional = F [slopetyp] standard_name = surface_slope_classification long_name = surface slope type at each grid cell @@ -360,7 +323,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [shdmin] standard_name = min_vegetation_area_fraction long_name = min fractional coverage of green veg @@ -369,7 +331,6 @@ type = real kind = kind_phys intent = in - optional = F [shdmax] standard_name = max_vegetation_area_fraction long_name = max fractnl cover of green veg (not used) @@ -378,7 +339,6 @@ type = real kind = kind_phys intent = in - optional = F [snoalb] standard_name = upper_bound_of_max_albedo_assuming_deep_snow long_name = upper bound on max albedo over deep snow @@ -387,7 +347,6 @@ type = real kind = kind_phys intent = in - optional = F [sfalb] standard_name = surface_albedo_for_diffused_shortwave_on_radiation_timestep long_name = mean surface diffused shortwave albedo @@ -396,7 +355,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -404,7 +362,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_guess] standard_name = flag_for_guess_run long_name = flag for guess run @@ -412,7 +369,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [lheatstrg] standard_name = flag_for_canopy_heat_storage_in_land_surface_scheme long_name = flag for canopy heat storage parameterization @@ -420,7 +376,6 @@ dimensions = () type = logical intent = in - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -428,7 +383,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -436,7 +390,6 @@ dimensions = () type = integer intent = in - optional = F [bexppert] standard_name = perturbation_of_soil_type_b_parameter long_name = perturbation of soil type "b" parameter @@ -445,7 +398,6 @@ type = real kind = kind_phys intent = in - optional = F [xlaipert] standard_name = perturbation_of_leaf_area_index long_name = perturbation of leaf area index @@ -454,7 +406,6 @@ type = real kind = kind_phys intent = in - optional = F [vegfpert] standard_name = perturbation_of_vegetation_fraction long_name = perturbation of vegetation fraction @@ -463,7 +414,6 @@ type = real kind = kind_phys intent = in - optional = F [pertvegf] standard_name = magnitude_of_perturbation_of_vegetation_fraction long_name = magnitude of perturbation of vegetation fraction @@ -472,7 +422,6 @@ type = real kind = kind_phys intent = in - optional = F [albdvis_lnd] standard_name = surface_albedo_direct_visible_over_land long_name = direct surface albedo visible band over land @@ -481,7 +430,6 @@ type = real kind = kind_phys intent = in - optional = F [albdnir_lnd] standard_name = surface_albedo_direct_NIR_over_land long_name = direct surface albedo NIR band over land @@ -490,7 +438,6 @@ type = real kind = kind_phys intent = in - optional = F [albivis_lnd] standard_name = surface_albedo_diffuse_visible_over_land long_name = diffuse surface albedo visible band over land @@ -499,7 +446,6 @@ type = real kind = kind_phys intent = in - optional = F [albinir_lnd] standard_name = surface_albedo_diffuse_NIR_over_land long_name = diffuse surface albedo NIR band over land @@ -508,7 +454,6 @@ type = real kind = kind_phys intent = in - optional = F [adjvisbmd] standard_name = surface_downwelling_direct_ultraviolet_and_visible_shortwave_flux long_name = surface downwelling beam ultraviolet plus visible shortwave flux at current time @@ -517,7 +462,6 @@ type = real kind = kind_phys intent = in - optional = F [adjnirbmd] standard_name = surface_downwelling_direct_near_infrared_shortwave_flux long_name = surface downwelling beam near-infrared shortwave flux at current time @@ -526,7 +470,6 @@ type = real kind = kind_phys intent = in - optional = F [adjvisdfd] standard_name = surface_downwelling_diffuse_ultraviolet_and_visible_shortwave_flux long_name = surface downwelling diffuse ultraviolet plus visible shortwave flux at current time @@ -535,7 +478,6 @@ type = real kind = kind_phys intent = in - optional = F [adjnirdfd] standard_name = surface_downwelling_diffuse_near_infrared_shortwave_flux long_name = surface downwelling diffuse near-infrared shortwave flux at current time @@ -544,7 +486,6 @@ type = real kind = kind_phys intent = in - optional = F [weasd] standard_name = water_equivalent_accumulated_snow_depth_over_land long_name = water equiv of acc snow depth over land @@ -553,7 +494,6 @@ type = real kind = kind_phys intent = inout - optional = F [snwdph] standard_name = surface_snow_thickness_water_equivalent_over_land long_name = water equivalent snow depth over land @@ -562,7 +502,6 @@ type = real kind = kind_phys intent = inout - optional = F [tskin] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -571,7 +510,6 @@ type = real kind = kind_phys intent = inout - optional = F [tprcp] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_land long_name = total precipitation amount in each time step over land @@ -580,7 +518,6 @@ type = real kind = kind_phys intent = inout - optional = F [srflag] standard_name = precipitation_type long_name = flag for snow or rain precipitation @@ -589,7 +526,6 @@ type = real kind = kind_phys intent = inout - optional = F [smc] standard_name = volume_fraction_of_condensed_water_in_soil long_name = volumetric fraction of soil moisture @@ -598,7 +534,6 @@ type = real kind = kind_phys intent = inout - optional = F [stc] standard_name = soil_temperature long_name = soil temperature @@ -607,7 +542,6 @@ type = real kind = kind_phys intent = inout - optional = F [slc] standard_name = volume_fraction_of_unfrozen_water_in_soil long_name = volume fraction of unfrozen soil moisture @@ -616,7 +550,6 @@ type = real kind = kind_phys intent = inout - optional = F [canopy] standard_name = canopy_water_amount long_name = canopy moisture content @@ -625,7 +558,6 @@ type = real kind = kind_phys intent = inout - optional = F [trans] standard_name = transpiration_flux long_name = total plant transpiration rate @@ -634,7 +566,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsurf] standard_name = surface_skin_temperature_after_iteration_over_land long_name = surface skin temperature after iteration over land @@ -643,7 +574,6 @@ type = real kind = kind_phys intent = inout - optional = F [zorl] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land (temporary use as interstitial) @@ -652,7 +582,6 @@ type = real kind = kind_phys intent = inout - optional = F [sncovr1] standard_name = surface_snow_area_fraction_over_land long_name = surface snow area fraction @@ -661,7 +590,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsurf] standard_name = surface_specific_humidity_over_land long_name = surface air saturation specific humidity over land @@ -670,7 +598,6 @@ type = real kind = kind_phys intent = inout - optional = F [gflux] standard_name = upward_heat_flux_in_soil_over_land long_name = soil heat flux over land @@ -679,7 +606,6 @@ type = real kind = kind_phys intent = inout - optional = F [drain] standard_name = subsurface_runoff_flux long_name = subsurface runoff flux @@ -688,7 +614,6 @@ type = real kind = kind_phys intent = inout - optional = F [evap] standard_name = kinematic_surface_upward_latent_heat_flux_over_land long_name = kinematic surface upward latent heat flux over land @@ -697,7 +622,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_over_land long_name = kinematic surface upward sensible heat flux over land @@ -706,7 +630,6 @@ type = real kind = kind_phys intent = inout - optional = F [ep] standard_name = surface_upward_potential_latent_heat_flux_over_land long_name = surface upward potential latent heat flux over land @@ -715,7 +638,6 @@ type = real kind = kind_phys intent = inout - optional = F [runoff] standard_name = surface_runoff_flux long_name = surface runoff flux @@ -724,7 +646,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmm] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_land long_name = momentum exchange coefficient over land @@ -733,7 +654,6 @@ type = real kind = kind_phys intent = inout - optional = F [chh] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_land long_name = thermal exchange coefficient over land @@ -742,7 +662,6 @@ type = real kind = kind_phys intent = inout - optional = F [evbs] standard_name = soil_upward_latent_heat_flux long_name = soil upward latent heat flux @@ -751,7 +670,6 @@ type = real kind = kind_phys intent = inout - optional = F [evcw] standard_name = canopy_upward_latent_heat_flux long_name = canopy upward latent heat flux @@ -760,7 +678,6 @@ type = real kind = kind_phys intent = inout - optional = F [sbsno] standard_name = snow_deposition_sublimation_upward_latent_heat_flux long_name = latent heat flux from snow depo/subl @@ -769,7 +686,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowc] standard_name = surface_snow_area_fraction long_name = surface snow area fraction @@ -778,7 +694,6 @@ type = real kind = kind_phys intent = inout - optional = F [stm] standard_name = soil_moisture_content long_name = soil moisture content @@ -787,7 +702,6 @@ type = real kind = kind_phys intent = inout - optional = F [snohf] standard_name = snow_freezing_rain_upward_latent_heat_flux long_name = latent heat flux due to snow and frz rain @@ -796,7 +710,6 @@ type = real kind = kind_phys intent = inout - optional = F [smcwlt2] standard_name = volume_fraction_of_condensed_water_in_soil_at_wilting_point long_name = soil water fraction at wilting point @@ -805,7 +718,6 @@ type = real kind = kind_phys intent = inout - optional = F [smcref2] standard_name = threshold_volume_fraction_of_condensed_water_in_soil long_name = soil moisture threshold @@ -814,7 +726,6 @@ type = real kind = kind_phys intent = inout - optional = F [wet1] standard_name = normalized_soil_wetness long_name = normalized soil wetness @@ -823,7 +734,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -832,7 +742,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -840,4 +749,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_drv_ruc.meta b/physics/sfc_drv_ruc.meta index c793b5b9a..c1dcfc4d4 100644 --- a/physics/sfc_drv_ruc.meta +++ b/physics/sfc_drv_ruc.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = master MPI-rank @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [nlunit] standard_name = iounit_of_namelist long_name = fortran unit number for file opens @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -54,7 +49,6 @@ dimensions = () type = logical intent = in - optional = F [flag_init] standard_name = flag_for_first_timestep long_name = flag signaling first time step for time integration loop @@ -62,7 +56,6 @@ dimensions = () type = logical intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -71,7 +64,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -80,7 +72,6 @@ type = real kind = kind_phys intent = in - optional = F [im] standard_name = horizontal_dimension long_name = horizontal dimension @@ -88,7 +79,6 @@ dimensions = () type = integer intent = in - optional = F [lsoil_ruc] standard_name = vertical_dimension_of_soil_internal_to_land_surface_scheme long_name = number of soil layers internal to land surface model @@ -96,7 +86,6 @@ dimensions = () type = integer intent = in - optional = F [lsoil] standard_name = vertical_dimension_of_soil long_name = soil vertical layer dimension @@ -104,7 +93,6 @@ dimensions = () type = integer intent = in - optional = F [kice] standard_name = vertical_dimension_of_sea_ice long_name = vertical loop extent for ice levels, start at 1 @@ -112,7 +100,6 @@ dimensions = () type = integer intent = in - optional = F [nlev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -120,7 +107,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model @@ -128,7 +114,6 @@ dimensions = () type = integer intent = in - optional = F [lsm] standard_name = control_for_land_surface_scheme long_name = flag for land surface model @@ -136,7 +121,6 @@ dimensions = () type = integer intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -145,7 +129,6 @@ type = real kind = kind_phys intent = in - optional = F [stype] standard_name = soil_type_classification long_name = soil type for lsm @@ -153,7 +136,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [vtype] standard_name = vegetation_type_classification long_name = vegetation type for lsm @@ -161,7 +143,6 @@ dimensions = (horizontal_dimension) type = integer intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = water vapor specific humidity at lowest model layer @@ -170,7 +151,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl1] standard_name = air_pressure_at_surface_adjacent_layer long_name = mean pressure at lowest model layer @@ -179,7 +159,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc_lnd] standard_name = surface_skin_temperature long_name = surface skin temperature @@ -188,7 +167,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc_ice] standard_name = sea_ice_temperature long_name = sea ice surface skin temperature @@ -197,7 +175,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc_wat] standard_name = sea_surface_temperature long_name = sea surface temperature @@ -206,7 +183,6 @@ type = real kind = kind_phys intent = in - optional = F [tg3] standard_name = deep_soil_temperature long_name = deep soil temperature @@ -215,7 +191,6 @@ type = real kind = kind_phys intent = in - optional = F [smc] standard_name = volume_fraction_of_condensed_water_in_soil long_name = total soil moisture @@ -224,7 +199,6 @@ type = real kind = kind_phys intent = in - optional = F [slc] standard_name = volume_fraction_of_unfrozen_water_in_soil long_name = liquid soil moisture @@ -233,7 +207,6 @@ type = real kind = kind_phys intent = in - optional = F [stc] standard_name = soil_temperature long_name = soil temperature @@ -242,7 +215,6 @@ type = real kind = kind_phys intent = in - optional = F [fice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -251,7 +223,6 @@ type = real kind = kind_phys intent = in - optional = F [min_seaice] standard_name = min_sea_ice_area_fraction long_name = minimum sea ice value @@ -260,7 +231,6 @@ type = real kind = kind_phys intent = in - optional = F [sncovr_lnd] standard_name = surface_snow_area_fraction_over_land long_name = surface snow area fraction over land @@ -269,7 +239,6 @@ type = real kind = kind_phys intent = in - optional = F [sncovr_ice] standard_name = surface_snow_area_fraction_over_ice long_name = surface snow area fraction over ice @@ -278,7 +247,6 @@ type = real kind = kind_phys intent = in - optional = F [snoalb] standard_name = upper_bound_of_max_albedo_assuming_deep_snow long_name = maximum snow albedo @@ -287,7 +255,6 @@ type = real kind = kind_phys intent = in - optional = F [facsf] standard_name = strong_cosz_area_fraction long_name = fractional coverage with strong cosz dependency @@ -296,7 +263,6 @@ type = real kind = kind_phys intent = in - optional = F [facwf] standard_name = weak_cosz_area_fraction long_name = fractional coverage with weak cosz dependency @@ -305,7 +271,6 @@ type = real kind = kind_phys intent = in - optional = F [alvsf] standard_name = vis_albedo_strong_cosz long_name = mean vis albedo with strong cosz dependency @@ -314,7 +279,6 @@ type = real kind = kind_phys intent = in - optional = F [alvwf] standard_name = vis_albedo_weak_cosz long_name = mean vis albedo with weak cosz dependency @@ -323,7 +287,6 @@ type = real kind = kind_phys intent = in - optional = F [alnsf] standard_name = nir_albedo_strong_cosz long_name = mean nir albedo with strong cosz dependency @@ -332,7 +295,6 @@ type = real kind = kind_phys intent = in - optional = F [alnwf] standard_name = nir_albedo_weak_cosz long_name = mean nir albedo with weak cosz dependency @@ -341,7 +303,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcqv_lnd] standard_name = water_vapor_mixing_ratio_at_surface_over_land long_name = water vapor mixing ratio at surface over land @@ -350,7 +311,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcqv_ice] standard_name = water_vapor_mixing_ratio_at_surface_over_ice long_name = water vapor mixing ratio at surface over ice @@ -359,7 +319,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfalb_lnd_bck] standard_name =surface_snow_free_albedo_over_land long_name = surface snow-free albedo over ice @@ -368,7 +327,6 @@ type = real kind = kind_phys intent = inout - optional = F [semisbase] standard_name = baseline_surface_longwave_emissivity long_name = baseline surface lw emissivity in fraction @@ -377,7 +335,6 @@ type = real kind = kind_phys intent = out - optional = F [semis_lnd] standard_name = surface_longwave_emissivity_over_land long_name = surface lw emissivity in fraction over land @@ -386,7 +343,6 @@ type = real kind = kind_phys intent = inout - optional = F [semis_ice] standard_name = surface_longwave_emissivity_over_ice long_name = surface lw emissivity in fraction over ice @@ -395,7 +351,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdvis_lnd] standard_name = surface_albedo_direct_visible_over_land long_name = direct surface albedo visible band over land @@ -404,7 +359,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdnir_lnd] standard_name = surface_albedo_direct_NIR_over_land long_name = direct surface albedo NIR band over land @@ -413,7 +367,6 @@ type = real kind = kind_phys intent = inout - optional = F [albivis_lnd] standard_name = surface_albedo_diffuse_visible_over_land long_name = diffuse surface albedo visible band over land @@ -422,7 +375,6 @@ type = real kind = kind_phys intent = inout - optional = F [albinir_lnd] standard_name = surface_albedo_diffuse_NIR_over_land long_name = diffuse surface albedo NIR band over land @@ -431,7 +383,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdvis_ice] standard_name = surface_albedo_direct_visible_over_ice long_name = direct surface albedo visible band over ice @@ -440,7 +391,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdnir_ice] standard_name = surface_albedo_direct_NIR_over_ice long_name = direct surface albedo NIR band over ice @@ -449,7 +399,6 @@ type = real kind = kind_phys intent = inout - optional = F [albivis_ice] standard_name = surface_albedo_diffuse_visible_over_ice long_name = diffuse surface albedo visible band over ice @@ -458,7 +407,6 @@ type = real kind = kind_phys intent = inout - optional = F [albinir_ice] standard_name = surface_albedo_diffuse_NIR_over_ice long_name = diffuse surface albedo NIR band over ice @@ -467,7 +415,6 @@ type = real kind = kind_phys intent = inout - optional = F [zs] standard_name = depth_of_soil_layers long_name = depth of soil levels for land surface model @@ -476,7 +423,6 @@ type = real kind = kind_phys intent = out - optional = F [sh2o] standard_name = volume_fraction_of_unfrozen_soil_moisture_for_land_surface_model long_name = volume fraction of unfrozen soil moisture for lsm @@ -485,7 +431,6 @@ type = real kind = kind_phys intent = inout - optional = F [smfrkeep] standard_name = volume_fraction_of_frozen_soil_moisture_for_land_surface_model long_name = volume fraction of frozen soil moisture for lsm @@ -494,7 +439,6 @@ type = real kind = kind_phys intent = inout - optional = F [tslb] standard_name = soil_temperature_for_land_surface_model long_name = soil temperature for land surface model @@ -503,7 +447,6 @@ type = real kind = kind_phys intent = inout - optional = F [smois] standard_name = volume_fraction_of_soil_moisture_for_land_surface_model long_name = volumetric fraction of soil moisture for lsm @@ -512,7 +455,6 @@ type = real kind = kind_phys intent = inout - optional = F [wetness] standard_name = normalized_soil_wetness_for_land_surface_model long_name = normalized soil wetness @@ -521,7 +463,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsice] standard_name = temperature_in_ice_layer long_name = sea ice internal temperature @@ -530,7 +471,6 @@ type = real kind = kind_phys intent = out - optional = F [pores] standard_name = maximum_soil_moisture_content_for_land_surface_model long_name = maximum soil moisture for a given soil type for land surface model @@ -555,7 +495,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -563,7 +502,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -577,7 +515,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -585,7 +522,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -598,7 +534,6 @@ dimensions = () type = integer intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -606,7 +541,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = master MPI-rank @@ -614,7 +548,6 @@ dimensions = () type = integer intent = in - optional = F [delt] standard_name = timestep_for_dynamics long_name = physics time step @@ -623,7 +556,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current number of time steps @@ -631,7 +563,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -639,7 +570,6 @@ dimensions = () type = integer intent = in - optional = F [nlev] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -647,7 +577,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model @@ -655,7 +584,6 @@ dimensions = () type = integer intent = in - optional = F [lsm] standard_name = control_for_land_surface_scheme long_name = flag for land surface model @@ -663,7 +591,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -671,7 +598,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_gfdl] standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme @@ -679,7 +605,6 @@ dimensions = () type = integer intent = in - optional = F [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -687,7 +612,6 @@ dimensions = () type = integer intent = in - optional = F [do_mynnsfclay] standard_name = flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme long_name = flag to activate MYNN surface layer @@ -695,7 +619,6 @@ dimensions = () type = logical intent = in - optional = F [lsoil_ruc] standard_name = vertical_dimension_of_soil_internal_to_land_surface_scheme long_name = number of soil layers internal to land surface model @@ -703,7 +626,6 @@ dimensions = () type = integer intent = in - optional = F [lsoil] standard_name = vertical_dimension_of_soil long_name = soil vertical layer dimension @@ -711,7 +633,6 @@ dimensions = () type = integer intent = in - optional = F [rdlai] standard_name = flag_for_reading_leaf_area_index_from_input long_name = flag for reading leaf area index from initial conditions for RUC LSM @@ -719,7 +640,6 @@ dimensions = () type = logical intent = in - optional = F [zs] standard_name = depth_of_soil_layers long_name = depth of soil levels for land surface model @@ -728,7 +648,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = mean temperature at lowest model layer @@ -737,7 +656,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = water vapor specific humidity at lowest model layer @@ -746,7 +664,6 @@ type = real kind = kind_phys intent = in - optional = F [qc] standard_name = cloud_liquid_water_mixing_ratio_at_surface_adjacent_layer long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) at lowest model layer @@ -755,7 +672,6 @@ type = real kind = kind_phys intent = in - optional = F [stype] standard_name = soil_type_classification long_name = soil type at each grid cell @@ -763,7 +679,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [vtype] standard_name = vegetation_type_classification long_name = vegetation type at each grid cell @@ -771,7 +686,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [sigmaf] standard_name = vegetation_area_fraction long_name = areal fractional cover of green vegetation @@ -780,7 +694,6 @@ type = real kind = kind_phys intent = in - optional = F [laixy] standard_name = leaf_area_index long_name = leaf area index @@ -789,7 +702,6 @@ type = real kind = kind_phys intent = in - optional = F [dlwflx] standard_name = surface_downwelling_longwave_flux long_name = surface downwelling longwave flux at current time @@ -798,7 +710,6 @@ type = real kind = kind_phys intent = in - optional = F [dswsfc] standard_name = surface_downwelling_shortwave_flux long_name = surface downwelling shortwave flux at current time @@ -807,7 +718,6 @@ type = real kind = kind_phys intent = in - optional = F [tg3] standard_name = deep_soil_temperature long_name = deep soil temperature @@ -816,7 +726,6 @@ type = real kind = kind_phys intent = in - optional = F [coszen] standard_name = instantaneous_cosine_of_zenith_angle long_name = cosine of zenith angle at current time @@ -825,7 +734,6 @@ type = real kind = kind_phys intent = in - optional = F [land] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -833,7 +741,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -841,7 +748,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [lake] standard_name = flag_for_using_flake long_name = flag indicating lake points using flake model @@ -849,7 +755,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [rainnc] standard_name = lwe_thickness_of_explicit_precipitation_amount_on_previous_timestep long_name = explicit rainfall from previous timestep @@ -858,7 +763,6 @@ type = real kind = kind_phys intent = in - optional = F [rainc] standard_name = lwe_thickness_of_convective_precipitation_amount_on_previous_timestep long_name = convective_precipitation_amount from previous timestep @@ -867,7 +771,6 @@ type = real kind = kind_phys intent = in - optional = F [ice] standard_name = lwe_thickness_of_ice_precipitation_amount_on_previous_timestep long_name = ice amount from previous timestep @@ -876,7 +779,6 @@ type = real kind = kind_phys intent = in - optional = F [snow] standard_name = snow_mass_on_previous_timestep long_name = snow amount from previous timestep @@ -885,7 +787,6 @@ type = real kind = kind_phys intent = in - optional = F [graupel] standard_name = lwe_thickness_of_graupel_amount_on_previous_timestep long_name = graupel amount from previous timestep @@ -894,7 +795,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl1] standard_name = air_pressure_at_surface_adjacent_layer long_name = mean pressure at lowest model layer @@ -903,7 +803,6 @@ type = real kind = kind_phys intent = in - optional = F [zf] standard_name = height_above_ground_at_lowest_model_layer long_name = layer 1 height above ground (not MSL) @@ -912,7 +811,6 @@ type = real kind = kind_phys intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -921,7 +819,6 @@ type = real kind = kind_phys intent = in - optional = F [shdmin] standard_name = min_vegetation_area_fraction long_name = min fractional coverage of green vegetation @@ -930,7 +827,6 @@ type = real kind = kind_phys intent = in - optional = F [shdmax] standard_name = max_vegetation_area_fraction long_name = max fractional coverage of green vegetation @@ -939,7 +835,6 @@ type = real kind = kind_phys intent = in - optional = F [srflag] standard_name = precipitation_type long_name = snow/rain flag for precipitation @@ -948,7 +843,6 @@ type = real kind = kind_phys intent = in - optional = F [sfalb_lnd_bck] standard_name =surface_snow_free_albedo_over_land long_name = surface snow-free albedo over ice @@ -957,7 +851,6 @@ type = real kind = kind_phys intent = in - optional = F [snoalb] standard_name = upper_bound_of_max_albedo_assuming_deep_snow long_name = maximum snow albedo @@ -966,7 +859,6 @@ type = real kind = kind_phys intent = in - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -974,7 +866,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -982,7 +873,6 @@ dimensions = () type = integer intent = in - optional = F [fice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water @@ -991,7 +881,6 @@ type = real kind = kind_phys intent = inout - optional = F [smcwlt2] standard_name = volume_fraction_of_condensed_water_in_soil_at_wilting_point long_name = soil water fraction at wilting point @@ -1000,7 +889,6 @@ type = real kind = kind_phys intent = inout - optional = F [smcref2] standard_name = threshold_volume_fraction_of_condensed_water_in_soil long_name = soil moisture threshold @@ -1009,7 +897,6 @@ type = real kind = kind_phys intent = inout - optional = F [min_lakeice] standard_name = min_lake_ice_area_fraction long_name = minimum lake ice value @@ -1018,7 +905,6 @@ type = real kind = kind_phys intent = in - optional = F [min_seaice] standard_name = min_sea_ice_area_fraction long_name = minimum sea ice value @@ -1027,7 +913,6 @@ type = real kind = kind_phys intent = in - optional = F [oceanfrac] standard_name = sea_area_fraction long_name = fraction of horizontal grid area occupied by ocean @@ -1036,7 +921,6 @@ type = real kind = kind_phys intent = in - optional = F [con_cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat !of dry air at constant pressure @@ -1045,7 +929,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -1054,7 +937,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -1063,7 +945,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -1072,7 +953,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -1081,7 +961,6 @@ type = real kind = kind_phys intent = in - optional = F [con_hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of vaporization/sublimation (hvap) @@ -1090,7 +969,6 @@ type = real kind = kind_phys intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -1099,7 +977,6 @@ type = real kind = kind_phys intent = in - optional = F [ch_wat] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water @@ -1108,7 +985,6 @@ type = real kind = kind_phys intent = in - optional = F [tskin_wat] standard_name = surface_skin_temperature_over_water long_name = surface skin temperature over water @@ -1117,7 +993,6 @@ type = real kind = kind_phys intent = in - optional = F [semisbase] standard_name = baseline_surface_longwave_emissivity long_name = baseline surface lw emissivity in fraction @@ -1126,7 +1001,6 @@ type = real kind = kind_phys intent = inout - optional = F [semis_lnd] standard_name = surface_longwave_emissivity_over_land long_name = surface lw emissivity in fraction over land @@ -1135,7 +1009,6 @@ type = real kind = kind_phys intent = inout - optional = F [semis_ice] standard_name = surface_longwave_emissivity_over_ice long_name = surface lw emissivity in fraction over ice @@ -1144,7 +1017,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfalb_lnd] standard_name = surface_diffused_shortwave_albedo_over_land long_name = mean surface diffused sw albedo over land @@ -1153,7 +1025,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfalb_ice] standard_name = surface_diffused_shortwave_albedo_over_ice long_name = mean surface diffused sw albedo over ice @@ -1162,7 +1033,6 @@ type = real kind = kind_phys intent = inout - optional = F [sncovr1_lnd] standard_name = surface_snow_area_fraction_over_land long_name = surface snow area fraction over land @@ -1171,7 +1041,6 @@ type = real kind = kind_phys intent = inout - optional = F [weasd_lnd] standard_name = water_equivalent_accumulated_snow_depth_over_land long_name = water equiv of acc snow depth over land @@ -1180,7 +1049,6 @@ type = real kind = kind_phys intent = inout - optional = F [snwdph_lnd] standard_name = surface_snow_thickness_water_equivalent_over_land long_name = water equivalent snow depth over land @@ -1189,7 +1057,6 @@ type = real kind = kind_phys intent = inout - optional = F [tskin_lnd] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -1198,7 +1065,6 @@ type = real kind = kind_phys intent = inout - optional = F [sncovr1_ice] standard_name = surface_snow_area_fraction_over_ice long_name = surface snow area fraction over ice @@ -1207,7 +1073,6 @@ type = real kind = kind_phys intent = inout - optional = F [weasd_ice] standard_name = water_equivalent_accumulated_snow_depth_over_ice long_name = water equiv of acc snow depth over ice @@ -1216,7 +1081,6 @@ type = real kind = kind_phys intent = inout - optional = F [snwdph_ice] standard_name = surface_snow_thickness_water_equivalent_over_ice long_name = water equivalent snow depth over ice @@ -1225,7 +1089,6 @@ type = real kind = kind_phys intent = inout - optional = F [tskin_ice] standard_name = surface_skin_temperature_over_ice long_name = surface skin temperature over ice @@ -1234,7 +1097,6 @@ type = real kind = kind_phys intent = inout - optional = F [smois] standard_name = volume_fraction_of_soil_moisture_for_land_surface_model long_name = volumetric fraction of soil moisture for lsm @@ -1243,7 +1105,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsice] standard_name = temperature_in_ice_layer long_name = sea ice internal temperature @@ -1252,7 +1113,6 @@ type = real kind = kind_phys intent = inout - optional = F [tslb] standard_name = soil_temperature_for_land_surface_model long_name = soil temperature for land surface model @@ -1261,7 +1121,6 @@ type = real kind = kind_phys intent = inout - optional = F [sh2o] standard_name = volume_fraction_of_unfrozen_soil_moisture_for_land_surface_model long_name = volume fraction of unfrozen soil moisture for lsm @@ -1270,7 +1129,6 @@ type = real kind = kind_phys intent = inout - optional = F [keepfr] standard_name = control_for_frozen_soil_physics long_name = flag for frozen soil physics (RUC) @@ -1279,7 +1137,6 @@ type = real kind = kind_phys intent = inout - optional = F [smfrkeep] standard_name = volume_fraction_of_frozen_soil_moisture_for_land_surface_model long_name = volume fraction of frozen soil moisture for lsm @@ -1288,7 +1145,6 @@ type = real kind = kind_phys intent = inout - optional = F [canopy] standard_name = canopy_water_amount long_name = canopy water amount @@ -1297,7 +1153,6 @@ type = real kind = kind_phys intent = inout - optional = F [trans] standard_name = transpiration_flux long_name = total plant transpiration rate @@ -1306,7 +1161,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsurf_lnd] standard_name = surface_skin_temperature_after_iteration_over_land long_name = surface skin temperature after iteration over land @@ -1315,7 +1169,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsnow_lnd] standard_name = temperature_in_surface_snow_at_surface_adjacent_layer_over_land long_name = snow temperature at the bottom of first snow layer over land @@ -1324,7 +1177,6 @@ type = real kind = kind_phys intent = inout - optional = F [z0rl_lnd] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land (temporary use as interstitial) @@ -1333,7 +1185,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcqc_lnd] standard_name = cloud_condensed_water_mixing_ratio_at_surface_over_land long_name = moist cloud water mixing ratio at surface over land @@ -1342,7 +1193,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcqv_lnd] standard_name = water_vapor_mixing_ratio_at_surface_over_land long_name = water vapor mixing ratio at surface over land @@ -1351,7 +1201,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsurf_lnd] standard_name = surface_specific_humidity_over_land long_name = surface air saturation specific humidity over land @@ -1360,7 +1209,6 @@ type = real kind = kind_phys intent = inout - optional = F [gflux_lnd] standard_name = upward_heat_flux_in_soil_over_land long_name = soil heat flux over land @@ -1369,7 +1217,6 @@ type = real kind = kind_phys intent = inout - optional = F [evap_lnd] standard_name = kinematic_surface_upward_latent_heat_flux_over_land long_name = kinematic surface upward evaporation flux over land @@ -1378,7 +1225,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx_lnd] standard_name = kinematic_surface_upward_sensible_heat_flux_over_land long_name = kinematic surface upward sensible heat flux over land @@ -1387,7 +1233,6 @@ type = real kind = kind_phys intent = inout - optional = F [runof] standard_name = surface_runoff_flux long_name = surface runoff flux @@ -1396,7 +1241,6 @@ type = real kind = kind_phys intent = inout - optional = F [runoff] standard_name = total_runoff long_name = total water runoff @@ -1405,7 +1249,6 @@ type = real kind = kind_phys intent = inout - optional = F [srunoff] standard_name = surface_runoff long_name = surface water runoff (from lsm) @@ -1414,7 +1257,6 @@ type = real kind = kind_phys intent = inout - optional = F [drain] standard_name = subsurface_runoff_flux long_name = subsurface runoff flux @@ -1423,7 +1265,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm_lnd] standard_name = surface_drag_coefficient_for_momentum_in_air_over_land long_name = surface exchange coeff for momentum over land @@ -1432,7 +1273,6 @@ type = real kind = kind_phys intent = in - optional = F [ch_lnd] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land long_name = surface exchange coeff heat & moisture over land @@ -1441,7 +1281,6 @@ type = real kind = kind_phys intent = in - optional = F [evbs] standard_name = soil_upward_latent_heat_flux long_name = soil upward latent heat flux @@ -1450,7 +1289,6 @@ type = real kind = kind_phys intent = inout - optional = F [evcw] standard_name = canopy_upward_latent_heat_flux long_name = canopy upward latent heat flux @@ -1459,7 +1297,6 @@ type = real kind = kind_phys intent = inout - optional = F [stm] standard_name = soil_moisture_content long_name = soil moisture content @@ -1468,7 +1305,6 @@ type = real kind = kind_phys intent = inout - optional = F [wetness] standard_name = normalized_soil_wetness_for_land_surface_model long_name = normalized soil wetness @@ -1477,7 +1313,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowfallac_lnd] standard_name = surface_snow_amount_over_land long_name = run-total snow accumulation on the ground over land @@ -1486,7 +1321,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdvis_lnd] standard_name = surface_albedo_direct_visible_over_land long_name = direct surface albedo visible band over land @@ -1495,7 +1329,6 @@ type = real kind = kind_phys intent = out - optional = F [albdnir_lnd] standard_name = surface_albedo_direct_NIR_over_land long_name = direct surface albedo NIR band over land @@ -1504,7 +1337,6 @@ type = real kind = kind_phys intent = out - optional = F [albivis_lnd] standard_name = surface_albedo_diffuse_visible_over_land long_name = diffuse surface albedo visible band over land @@ -1513,7 +1345,6 @@ type = real kind = kind_phys intent = out - optional = F [albinir_lnd] standard_name = surface_albedo_diffuse_NIR_over_land long_name = diffuse surface albedo NIR band over land @@ -1522,7 +1353,6 @@ type = real kind = kind_phys intent = out - optional = F [sfcqc_ice] standard_name = cloud_condensed_water_mixing_ratio_at_surface_over_ice long_name = moist cloud water mixing ratio at surface over ice @@ -1531,7 +1361,6 @@ type = real kind = kind_phys intent = inout - optional = F [sfcqv_ice] standard_name = water_vapor_mixing_ratio_at_surface_over_ice long_name = water vapor mixing ratio at surface over ice @@ -1540,7 +1369,6 @@ type = real kind = kind_phys intent = inout - optional = F [tice] standard_name = sea_ice_temperature long_name = sea ice surface skin temperature @@ -1549,7 +1377,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsurf_ice] standard_name = surface_skin_temperature_after_iteration_over_ice long_name = surface skin temperature after iteration over ice @@ -1558,7 +1385,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsnow_ice] standard_name = temperature_in_surface_snow_at_surface_adjacent_layer_over_ice long_name = snow temperature at the bottom of first snow layer over ice @@ -1567,7 +1393,6 @@ type = real kind = kind_phys intent = inout - optional = F [z0rl_ice] standard_name = surface_roughness_length_over_ice long_name = surface roughness length over ice (temporary use as interstitial) @@ -1576,7 +1401,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsurf_ice] standard_name = surface_specific_humidity_over_ice long_name = surface air saturation specific humidity over ice @@ -1585,7 +1409,6 @@ type = real kind = kind_phys intent = inout - optional = F [gflux_ice] standard_name = upward_heat_flux_in_soil_over_ice long_name = soil heat flux over ice @@ -1594,7 +1417,6 @@ type = real kind = kind_phys intent = inout - optional = F [evap_ice] standard_name = kinematic_surface_upward_latent_heat_flux_over_ice long_name = kinematic surface upward latent heat flux over ice @@ -1603,7 +1425,6 @@ type = real kind = kind_phys intent = inout - optional = F [ep1d_ice] standard_name = surface_upward_potential_latent_heat_flux_over_ice long_name = surface upward potential latent heat flux over ice @@ -1612,7 +1433,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx_ice] standard_name = kinematic_surface_upward_sensible_heat_flux_over_ice long_name = kinematic surface upward sensible heat flux over ice @@ -1621,7 +1441,6 @@ type = real kind = kind_phys intent = inout - optional = F [cm_ice] standard_name = surface_drag_coefficient_for_momentum_in_air_over_ice long_name = surface exchange coeff for momentum over ice @@ -1630,7 +1449,6 @@ type = real kind = kind_phys intent = in - optional = F [ch_ice] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ice long_name = surface exchange coeff heat & moisture over ice @@ -1639,7 +1457,6 @@ type = real kind = kind_phys intent = in - optional = F [snowfallac_ice] standard_name = surface_snow_amount_over_ice long_name = run-total snow accumulation on the ground over ice @@ -1648,7 +1465,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdvis_ice] standard_name = surface_albedo_direct_visible_over_ice long_name = direct surface albedo visible band over ice @@ -1657,7 +1473,6 @@ type = real kind = kind_phys intent = out - optional = F [albdnir_ice] standard_name = surface_albedo_direct_NIR_over_ice long_name = direct surface albedo NIR band over ice @@ -1666,7 +1481,6 @@ type = real kind = kind_phys intent = out - optional = F [albivis_ice] standard_name = surface_albedo_diffuse_visible_over_ice long_name = diffuse surface albedo visible band over ice @@ -1675,7 +1489,6 @@ type = real kind = kind_phys intent = out - optional = F [albinir_ice] standard_name = surface_albedo_diffuse_NIR_over_ice long_name = diffuse surface albedo NIR band over ice @@ -1684,7 +1497,6 @@ type = real kind = kind_phys intent = out - optional = F [rhosnf] standard_name = frozen_precipitation_density long_name = density of frozen precipitation @@ -1693,7 +1505,6 @@ type = real kind = kind_phys intent = inout - optional = F [sbsno] standard_name = snow_deposition_sublimation_upward_latent_heat_flux long_name = latent heat flux from snow depo/subl @@ -1702,7 +1513,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmm_lnd] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_land long_name = momentum exchange coefficient over land @@ -1711,7 +1521,6 @@ type = real kind = kind_phys intent = inout - optional = F [chh_lnd] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_land long_name = thermal exchange coefficient over land @@ -1720,7 +1529,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmm_ice] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_ice long_name = momentum exchange coefficient over ice @@ -1729,7 +1537,6 @@ type = real kind = kind_phys intent = inout - optional = F [chh_ice] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_ice long_name = thermal exchange coefficient over ice @@ -1738,7 +1545,6 @@ type = real kind = kind_phys intent = inout - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -1746,7 +1552,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_guess] standard_name = flag_for_guess_run long_name = flag for guess run @@ -1754,7 +1559,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_init] standard_name = flag_for_first_timestep long_name = flag signaling first time step for time integration loop @@ -1762,7 +1566,6 @@ dimensions = () type = logical intent = in - optional = F [flag_restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -1770,7 +1573,6 @@ dimensions = () type = logical intent = in - optional = F [flag_cice] standard_name = flag_for_cice long_name = flag for cice @@ -1778,7 +1580,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [frac_grid] standard_name = flag_for_fractional_landmask long_name = flag for fractional grid @@ -1786,7 +1587,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1795,7 +1595,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1803,4 +1602,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_noah_wrfv4.meta b/physics/sfc_noah_wrfv4.meta index e0f2538f6..548c808f1 100644 --- a/physics/sfc_noah_wrfv4.meta +++ b/physics/sfc_noah_wrfv4.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noah_wrfv4] standard_name = identifier_for_noah_wrfv4_land_surface_scheme long_name = flag for NOAH WRFv4 land surface model @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [nsoil] standard_name = vertical_dimension_of_soil long_name = soil vertical layer dimension @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [ua_phys] standard_name = flag_for_noah_lsm_ua_extension long_name = flag for using University of Arizona(?) extension for NOAH LSM (see module_sf_noahlsm.F) @@ -38,7 +35,6 @@ dimensions = () type = logical intent = in - optional = F [fasdas] standard_name = control_for_flux_adjusting_surface_data_assimilation_system long_name = flag to use the flux adjusting surface data assimilation system for NOAH LSM WRFv4 (see module_sf_noahlsm.F) @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -54,7 +49,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -63,7 +57,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -71,7 +64,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -85,7 +77,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -93,7 +84,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -106,7 +96,6 @@ dimensions = () type = integer intent = in - optional = F [isice] standard_name = index_of_ice_vegetation_category long_name = index of the permanent snow/ice category in the chosen vegetation dataset @@ -114,7 +103,6 @@ dimensions = () type = integer intent = in - optional = F [flag_lsm] standard_name = flag_for_calling_land_surface_model long_name = flag for calling land surface model @@ -122,7 +110,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_lsm_glacier] standard_name = flag_for_calling_land_surface_model_glacier long_name = flag for calling land surface model over glacier @@ -130,7 +117,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [srflag] standard_name = precipitation_type long_name = flag for snow or rain precipitation @@ -139,7 +125,6 @@ type = real kind = kind_phys intent = in - optional = F [isurban] standard_name = index_of_urban_vegetation_category long_name = index of the urban vegetation category in the chosen vegetation dataset @@ -147,7 +132,6 @@ dimensions = () type = integer intent = in - optional = F [rdlai] standard_name = flag_for_reading_leaf_area_index_from_input long_name = flag for reading leaf area index from initial conditions @@ -155,7 +139,6 @@ dimensions = () type = logical intent = in - optional = F [ua_phys] standard_name = flag_for_noah_lsm_ua_extension long_name = flag for using University of Arizona(?) extension for NOAH LSM (see module_sf_noahlsm.F) @@ -163,7 +146,6 @@ dimensions = () type = logical intent = in - optional = F [usemonalb] standard_name = flag_for_reading_surface_albedo_for_diffused_shortwave_from_input long_name = flag for reading surface diffused shortwave albedo for NOAH LSM WRFv4 (see module_sf_noahlsm.F) @@ -171,7 +153,6 @@ dimensions = () type = logical intent = in - optional = F [aoasis] standard_name = multiplicative_tuning_parameter_for_potential_evaporation long_name = potential evaporation multiplicative factor for NOAH LSM WRFv4 (see module_sf_noahlsm.F) @@ -180,7 +161,6 @@ type = real kind = kind_phys intent = in - optional = F [fasdas] standard_name = control_for_flux_adjusting_surface_data_assimilation_system long_name = flag to use the flux adjusting surface data assimilation system for NOAH LSM WRFv4 (see module_sf_noahlsm.F) @@ -188,7 +168,6 @@ dimensions = () type = integer intent = in - optional = F [dt] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -197,7 +176,6 @@ type = real kind = kind_phys intent = in - optional = F [zlvl] standard_name = height_above_ground_at_lowest_model_layer long_name = height above ground at 1st model layer @@ -206,7 +184,6 @@ type = real kind = kind_phys intent = in - optional = F [nsoil] standard_name = vertical_dimension_of_soil long_name = soil vertical layer dimension @@ -214,7 +191,6 @@ dimensions = () type = integer intent = in - optional = F [sthick] standard_name = thickness_of_soil_layers_for_land_surface_model long_name = soil layer thickness @@ -223,7 +199,6 @@ type = real kind = kind_phys intent = in - optional = F [lwdn] standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_land long_name = total sky surface downward longwave flux absorbed by the ground over land @@ -232,7 +207,6 @@ type = real kind = kind_phys intent = in - optional = F [soldn] standard_name = surface_downwelling_shortwave_flux long_name = total sky surface downward shortwave flux @@ -241,7 +215,6 @@ type = real kind = kind_phys intent = in - optional = F [solnet] standard_name = surface_net_downwelling_shortwave_flux long_name = total sky surface net shortwave flux @@ -250,7 +223,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcprs] standard_name = air_pressure_at_surface_adjacent_layer long_name = Model layer 1 mean pressure @@ -259,7 +231,6 @@ type = real kind = kind_phys intent = in - optional = F [prcp] standard_name = total_precipitation_rate_on_dynamics_timestep_over_land long_name = total precipitation rate in each time step over land @@ -268,7 +239,6 @@ type = real kind = kind_phys intent = in - optional = F [sfctmp] standard_name = air_temperature_at_surface_adjacent_layer long_name = 1st model layer air temperature @@ -277,7 +247,6 @@ type = real kind = kind_phys intent = in - optional = F [q1k] standard_name = bounded_specific_humidity_at_lowest_model_layer_over_land long_name = specific humidity at lowest model layer over land bounded between a nonzero epsilon and saturation @@ -286,7 +255,6 @@ type = real kind = kind_phys intent = in - optional = F [th1] standard_name = potential_temperature_at_lowest_model_layer long_name = potential_temperature_at_lowest_model_layer @@ -295,7 +263,6 @@ type = real kind = kind_phys intent = in - optional = F [qs1] standard_name = saturation_specific_humidity_at_lowest_model_layer long_name = saturation specific humidity at lowest model layer @@ -304,7 +271,6 @@ type = real kind = kind_phys intent = in - optional = F [dqsdt2] standard_name = saturation_specific_humidity_slope long_name = saturation specific humidity slope at lowest model layer @@ -313,7 +279,6 @@ type = real kind = kind_phys intent = in - optional = F [vegtyp] standard_name = vegetation_type_classification long_name = vegetation type at each grid cell @@ -321,7 +286,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [soiltyp] standard_name = soil_type_classification long_name = soil type at each grid cell @@ -329,7 +293,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [slopetyp] standard_name = surface_slope_classification long_name = surface slope type at each grid cell @@ -337,7 +300,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [shdfac] standard_name = bounded_vegetation_area_fraction long_name = areal fractional cover of green vegetation bounded on the bottom @@ -346,7 +308,6 @@ type = real kind = kind_phys intent = inout - optional = F [shmin] standard_name = min_vegetation_area_fraction long_name = min fractional coverage of green vegetation @@ -355,7 +316,6 @@ type = real kind = kind_phys intent = in - optional = F [shmax] standard_name = max_vegetation_area_fraction long_name = max fractional coverage of green vegetation @@ -364,7 +324,6 @@ type = real kind = kind_phys intent = in - optional = F [albbrd] standard_name = surface_albedo_for_diffused_shortwave_on_radiation_timestep long_name = mean surface diffused shortwave albedo @@ -373,7 +332,6 @@ type = real kind = kind_phys intent = inout - optional = F [snoalb] standard_name = upper_bound_of_max_albedo_assuming_deep_snow long_name = maximum snow albedo @@ -382,7 +340,6 @@ type = real kind = kind_phys intent = in - optional = F [tbot] standard_name = deep_soil_temperature long_name = bottom soil temperature @@ -391,7 +348,6 @@ type = real kind = kind_phys intent = in - optional = F [z0brd] standard_name = baseline_surface_roughness_length long_name = baseline surface roughness length for momentum in meter @@ -400,7 +356,6 @@ type = real kind = kind_phys intent = inout - optional = F [z0k] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land (temporary use as interstitial) @@ -409,7 +364,6 @@ type = real kind = kind_phys intent = inout - optional = F [emissi] standard_name = surface_longwave_emissivity_over_land_interstitial long_name = surface lw emissivity in fraction over land (temporary use as interstitial) @@ -418,7 +372,6 @@ type = real kind = kind_phys intent = inout - optional = F [embrd] standard_name = baseline_surface_longwave_emissivity long_name = baseline surface lw emissivity in fraction @@ -427,7 +380,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmc] standard_name = canopy_water_amount_in_m long_name = canopy water amount in m @@ -436,7 +388,6 @@ type = real kind = kind_phys intent = inout - optional = F [t1] standard_name = surface_skin_temperature_after_iteration_over_land long_name = surface skin temperature after iteration over land @@ -445,7 +396,6 @@ type = real kind = kind_phys intent = inout - optional = F [stc] standard_name = soil_temperature long_name = soil temperature @@ -454,7 +404,6 @@ type = real kind = kind_phys intent = inout - optional = F [smc] standard_name = volume_fraction_of_condensed_water_in_soil long_name = volumetric fraction of soil moisture @@ -463,7 +412,6 @@ type = real kind = kind_phys intent = inout - optional = F [swc] standard_name = volume_fraction_of_unfrozen_water_in_soil long_name = volume fraction of unfrozen soil moisture @@ -472,7 +420,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowhk] standard_name = actual_snow_depth long_name = actual snow depth @@ -481,7 +428,6 @@ type = real kind = kind_phys intent = inout - optional = F [sneqv] standard_name = water_equivalent_accumulated_snow_depth_over_land long_name = water equiv of acc snow depth over land @@ -490,7 +436,6 @@ type = real kind = kind_phys intent = inout - optional = F [chk] standard_name = surface_conductance_for_heat_and_moisture_in_air_over_land long_name = surface conductance for heat & moisture over land @@ -499,7 +444,6 @@ type = real kind = kind_phys intent = inout - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -508,7 +452,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -517,7 +460,6 @@ type = real kind = kind_phys intent = in - optional = F [sigma] standard_name = stefan_boltzmann_constant long_name = Steffan-Boltzmann constant @@ -526,7 +468,6 @@ type = real kind = kind_phys intent = in - optional = F [cph2o] standard_name = specific_heat_of_liquid_water_at_constant_pressure long_name = specific heat of liquid water at constant pressure @@ -535,7 +476,6 @@ type = real kind = kind_phys intent = in - optional = F [cpice] standard_name = specific_heat_of_ice_at_constant_pressure long_name = specific heat of ice at constant pressure @@ -544,7 +484,6 @@ type = real kind = kind_phys intent = in - optional = F [lsubf] standard_name = latent_heat_of_fusion_of_water_at_0C long_name = latent heat of fusion @@ -553,7 +492,6 @@ type = real kind = kind_phys intent = in - optional = F [sheat] standard_name = instantaneous_surface_upward_sensible_heat_flux long_name = surface upward sensible heat flux @@ -562,7 +500,6 @@ type = real kind = kind_phys intent = inout - optional = F [eta] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux @@ -571,7 +508,6 @@ type = real kind = kind_phys intent = inout - optional = F [ec] standard_name = canopy_upward_latent_heat_flux long_name = canopy upward latent heat flux @@ -580,7 +516,6 @@ type = real kind = kind_phys intent = inout - optional = F [edir] standard_name = soil_upward_latent_heat_flux long_name = soil upward latent heat flux @@ -589,7 +524,6 @@ type = real kind = kind_phys intent = inout - optional = F [ett] standard_name = transpiration_flux long_name = total plant transpiration rate @@ -598,7 +532,6 @@ type = real kind = kind_phys intent = inout - optional = F [esnow] standard_name = snow_deposition_sublimation_upward_latent_heat_flux long_name = latent heat flux from snow depo/subl @@ -607,7 +540,6 @@ type = real kind = kind_phys intent = inout - optional = F [etp] standard_name = surface_upward_potential_latent_heat_flux_over_land long_name = surface upward potential latent heat flux over land @@ -616,7 +548,6 @@ type = real kind = kind_phys intent = inout - optional = F [ssoil] standard_name = upward_heat_flux_in_soil_over_land long_name = soil heat flux over land @@ -625,7 +556,6 @@ type = real kind = kind_phys intent = inout - optional = F [flx1] standard_name = latent_heat_flux_from_precipitating_snow long_name = latent heat flux due to precipitating snow @@ -634,7 +564,6 @@ type = real kind = kind_phys intent = inout - optional = F [flx2] standard_name = latent_heat_flux_from_freezing_rain long_name = latent heat flux due to freezing rain @@ -643,7 +572,6 @@ type = real kind = kind_phys intent = inout - optional = F [flx3] standard_name = latent_heat_flux_due_to_snowmelt long_name = latent heat flux due to snowmelt phase change @@ -652,7 +580,6 @@ type = real kind = kind_phys intent = inout - optional = F [sncovr] standard_name = surface_snow_area_fraction_over_land long_name = surface snow area fraction @@ -661,7 +588,6 @@ type = real kind = kind_phys intent = inout - optional = F [runoff1] standard_name = surface_runoff_flux_in_m_sm1 long_name = surface runoff flux in m s-1 @@ -670,7 +596,6 @@ type = real kind = kind_phys intent = inout - optional = F [runoff2] standard_name = subsurface_runoff_flux_in_m_sm1 long_name = subsurface runoff flux in m s-1 @@ -679,7 +604,6 @@ type = real kind = kind_phys intent = inout - optional = F [soilm] standard_name = soil_moisture_content_in_m long_name = soil moisture in meters @@ -688,7 +612,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsurf] standard_name = surface_specific_humidity_over_land long_name = surface air saturation specific humidity over land @@ -697,7 +620,6 @@ type = real kind = kind_phys intent = inout - optional = F [ribb] standard_name = bulk_richardson_number_at_lowest_model_level_over_land long_name = bulk Richardson number at the surface over land @@ -706,7 +628,6 @@ type = real kind = kind_phys intent = inout - optional = F [smcwlt] standard_name = volume_fraction_of_condensed_water_in_soil_at_wilting_point long_name = soil water fraction at wilting point @@ -715,7 +636,6 @@ type = real kind = kind_phys intent = inout - optional = F [smcref] standard_name = threshold_volume_fraction_of_condensed_water_in_soil long_name = soil moisture threshold @@ -724,7 +644,6 @@ type = real kind = kind_phys intent = inout - optional = F [smcmax] standard_name = soil_porosity long_name = volumetric soil porosity @@ -733,7 +652,6 @@ type = real kind = kind_phys intent = inout - optional = F [opt_thcnd] standard_name = control_for_land_surface_scheme_thermal_conductivity_option long_name = choice for thermal conductivity option (see module_sf_noahlsm) @@ -741,7 +659,6 @@ dimensions = () type = integer intent = in - optional = F [snotime] standard_name = time_since_last_snowfall long_name = elapsed time since last snowfall @@ -750,7 +667,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -759,7 +675,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -767,4 +682,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_noah_wrfv4_interstitial.meta b/physics/sfc_noah_wrfv4_interstitial.meta index e2d98e15a..35fcbe9dd 100644 --- a/physics/sfc_noah_wrfv4_interstitial.meta +++ b/physics/sfc_noah_wrfv4_interstitial.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noah_wrfv4] standard_name = identifier_for_noah_wrfv4_land_surface_scheme long_name = flag for NOAH WRFv4 land surface model @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [veg_data_choice] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [soil_data_choice] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [isurban] standard_name = index_of_urban_vegetation_category long_name = index of the urban vegetation category in the chosen vegetation dataset @@ -46,7 +42,6 @@ dimensions = () type = integer intent = inout - optional = F [isice] standard_name = index_of_ice_vegetation_category long_name = index of the permanent snow/ice category in the chosen vegetation dataset @@ -54,7 +49,6 @@ dimensions = () type = integer intent = inout - optional = F [iswater] standard_name = index_of_water_vegetation_category long_name = index of the water body vegetation category in the chosen vegetation dataset @@ -62,7 +56,6 @@ dimensions = () type = integer intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -71,7 +64,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -79,7 +71,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -93,7 +84,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -101,7 +91,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -114,7 +103,6 @@ dimensions = () type = integer intent = in - optional = F [nsoil] standard_name = vertical_dimension_of_soil long_name = soil vertical layer dimension @@ -122,7 +110,6 @@ dimensions = () type = integer intent = in - optional = F [ialb] standard_name = control_for_surface_albedo long_name = flag for using climatology alb, based on sfc type @@ -130,7 +117,6 @@ dimensions = () type = integer intent = in - optional = F [isice] standard_name = index_of_ice_vegetation_category long_name = index of the permanent snow/ice category in the chosen vegetation dataset @@ -138,7 +124,6 @@ dimensions = () type = integer intent = in - optional = F [land] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -146,7 +131,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_guess] standard_name = flag_for_guess_run long_name = flag for guess run @@ -154,7 +138,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -162,7 +145,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [restart] standard_name = flag_for_restart long_name = flag for restart (warmstart) or coldstart @@ -170,7 +152,6 @@ dimensions = () type = logical intent = in - optional = F [first_time_step] standard_name = flag_for_first_timestep long_name = flag for first time step for time integration loop (cold/warmstart) @@ -178,7 +159,6 @@ dimensions = () type = logical intent = in - optional = F [flag_lsm] standard_name = flag_for_calling_land_surface_model long_name = flag for calling land surface model @@ -186,7 +166,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [flag_lsm_glacier] standard_name = flag_for_calling_land_surface_model_glacier long_name = flag for calling land surface model over glacier @@ -194,7 +173,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [dt] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -203,7 +181,6 @@ type = real kind = kind_phys intent = in - optional = F [rhowater] standard_name = fresh_liquid_water_density_at_0c long_name = density of liquid water @@ -212,7 +189,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -221,7 +197,6 @@ type = real kind = kind_phys intent = in - optional = F [rvrdm1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -230,7 +205,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -239,7 +213,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -248,7 +221,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcprs] standard_name = air_pressure_at_surface_adjacent_layer long_name = Model layer 1 mean pressure @@ -257,7 +229,6 @@ type = real kind = kind_phys intent = in - optional = F [tprcp] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_land long_name = total precipitation amount in each time step over land @@ -266,7 +237,6 @@ type = real kind = kind_phys intent = in - optional = F [sfctmp] standard_name = air_temperature_at_surface_adjacent_layer long_name = 1st model layer air temperature @@ -275,7 +245,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = 1st model layer specific humidity @@ -284,7 +253,6 @@ type = real kind = kind_phys intent = in - optional = F [prslki] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -293,7 +261,6 @@ type = real kind = kind_phys intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -302,7 +269,6 @@ type = real kind = kind_phys intent = in - optional = F [snwdph] standard_name = surface_snow_thickness_water_equivalent_over_land long_name = water equivalent snow depth over land @@ -311,7 +277,6 @@ type = real kind = kind_phys intent = in - optional = F [cm] standard_name = surface_drag_coefficient_for_momentum_in_air_over_land long_name = surface exchange coeff for momentum over land @@ -320,7 +285,6 @@ type = real kind = kind_phys intent = in - optional = F [ch] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land long_name = surface exchange coeff heat & moisture over land @@ -329,7 +293,6 @@ type = real kind = kind_phys intent = in - optional = F [weasd] standard_name = water_equivalent_accumulated_snow_depth_over_land long_name = water equiv of acc snow depth over land @@ -338,7 +301,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -347,7 +309,6 @@ type = real kind = kind_phys intent = in - optional = F [vtype] standard_name = vegetation_type_classification long_name = vegetation type for lsm @@ -355,7 +316,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [smc] standard_name = volume_fraction_of_condensed_water_in_soil long_name = volumetric fraction of soil moisture @@ -364,7 +324,6 @@ type = real kind = kind_phys intent = in - optional = F [stc] standard_name = soil_temperature long_name = soil temperature @@ -373,7 +332,6 @@ type = real kind = kind_phys intent = in - optional = F [slc] standard_name = volume_fraction_of_unfrozen_water_in_soil long_name = liquid soil moisture @@ -382,7 +340,6 @@ type = real kind = kind_phys intent = in - optional = F [snoalb] standard_name = upper_bound_of_max_albedo_assuming_deep_snow long_name = maximum snow albedo @@ -391,7 +348,6 @@ type = real kind = kind_phys intent = inout - optional = F [prcp] standard_name = total_precipitation_rate_on_dynamics_timestep_over_land long_name = total precipitation rate in each time step over land @@ -400,7 +356,6 @@ type = real kind = kind_phys intent = inout - optional = F [q2k] standard_name = bounded_specific_humidity_at_lowest_model_layer_over_land long_name = specific humidity at lowest model layer over land bounded between a nonzero epsilon and saturation @@ -409,7 +364,6 @@ type = real kind = kind_phys intent = inout - optional = F [rho1] standard_name = air_density_at_lowest_model_layer long_name = air density at lowest model layer @@ -418,7 +372,6 @@ type = real kind = kind_phys intent = inout - optional = F [qs1] standard_name = saturation_specific_humidity_at_lowest_model_layer long_name = saturation specific humidity at lowest model layer @@ -427,7 +380,6 @@ type = real kind = kind_phys intent = inout - optional = F [th1] standard_name = potential_temperature_at_lowest_model_layer long_name = potential_temperature_at_lowest_model_layer @@ -436,7 +388,6 @@ type = real kind = kind_phys intent = inout - optional = F [dqsdt2] standard_name = saturation_specific_humidity_slope long_name = saturation specific humidity slope at lowest model layer @@ -445,7 +396,6 @@ type = real kind = kind_phys intent = inout - optional = F [canopy] standard_name = canopy_water_amount long_name = canopy moisture content @@ -454,7 +404,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmc] standard_name = canopy_water_amount_in_m long_name = canopy water amount in m @@ -463,7 +412,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowhk] standard_name = actual_snow_depth long_name = actual snow depth @@ -472,7 +420,6 @@ type = real kind = kind_phys intent = inout - optional = F [chk] standard_name = surface_conductance_for_heat_and_moisture_in_air_over_land long_name = surface conductance for heat & moisture over land @@ -481,7 +428,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmm] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_land long_name = momentum exchange coefficient over land @@ -490,7 +436,6 @@ type = real kind = kind_phys intent = inout - optional = F [chh] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_land long_name = thermal exchange coefficient over land @@ -499,7 +444,6 @@ type = real kind = kind_phys intent = inout - optional = F [weasd_save] standard_name = water_equivalent_accumulated_snow_depth_over_land_save long_name = water equiv of acc snow depth over land before entering a physics scheme @@ -508,7 +452,6 @@ type = real kind = kind_phys intent = inout - optional = F [snwdph_save] standard_name = surface_snow_thickness_water_equivalent_over_land_save long_name = water equivalent snow depth over land before entering a physics scheme @@ -517,7 +460,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfc_save] standard_name = surface_skin_temperature_over_land_save long_name = surface skin temperature over land before entering a physics scheme @@ -526,7 +468,6 @@ type = real kind = kind_phys intent = inout - optional = F [canopy_save] standard_name = canopy_water_amount_save long_name = canopy water amount before entering a physics scheme @@ -535,7 +476,6 @@ type = real kind = kind_phys intent = inout - optional = F [smc_save] standard_name = volume_fraction_of_soil_moisture_save long_name = total soil moisture before entering a physics scheme @@ -544,7 +484,6 @@ type = real kind = kind_phys intent = inout - optional = F [stc_save] standard_name = soil_temperature_save long_name = soil temperature before entering a physics scheme @@ -553,7 +492,6 @@ type = real kind = kind_phys intent = inout - optional = F [slc_save] standard_name = volume_fraction_of_unfrozen_soil_moisture_save long_name = liquid soil moisture before entering a physics scheme @@ -562,7 +500,6 @@ type = real kind = kind_phys intent = inout - optional = F [ep] standard_name = surface_upward_potential_latent_heat_flux_over_land long_name = surface upward potential latent heat flux over land @@ -571,7 +508,6 @@ type = real kind = kind_phys intent = inout - optional = F [evap] standard_name = kinematic_surface_upward_latent_heat_flux_over_land long_name = kinematic surface upward latent heat flux over land @@ -580,7 +516,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_over_land long_name = kinematic surface upward sensible heat flux over land @@ -589,7 +524,6 @@ type = real kind = kind_phys intent = inout - optional = F [gflux] standard_name = upward_heat_flux_in_soil_over_land long_name = soil heat flux over land @@ -598,7 +532,6 @@ type = real kind = kind_phys intent = inout - optional = F [drain] standard_name = subsurface_runoff_flux long_name = subsurface runoff flux @@ -607,7 +540,6 @@ type = real kind = kind_phys intent = inout - optional = F [evbs] standard_name = soil_upward_latent_heat_flux long_name = soil upward latent heat flux @@ -616,7 +548,6 @@ type = real kind = kind_phys intent = inout - optional = F [evcw] standard_name = canopy_upward_latent_heat_flux long_name = canopy upward latent heat flux @@ -625,7 +556,6 @@ type = real kind = kind_phys intent = inout - optional = F [trans] standard_name = transpiration_flux long_name = total plant transpiration rate @@ -634,7 +564,6 @@ type = real kind = kind_phys intent = inout - optional = F [sbsno] standard_name = snow_deposition_sublimation_upward_latent_heat_flux long_name = latent heat flux from snow depo/subl @@ -643,7 +572,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowc] standard_name = surface_snow_area_fraction long_name = surface snow area fraction @@ -652,7 +580,6 @@ type = real kind = kind_phys intent = inout - optional = F [snohf] standard_name = snow_freezing_rain_upward_latent_heat_flux long_name = latent heat flux due to snow and frz rain @@ -661,7 +588,6 @@ type = real kind = kind_phys intent = inout - optional = F [sthick] standard_name = thickness_of_soil_layers_for_land_surface_model long_name = soil layer thickness @@ -670,7 +596,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -679,7 +604,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -687,7 +611,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -706,7 +629,6 @@ dimensions = () type = integer intent = in - optional = F [nsoil] standard_name = vertical_dimension_of_soil long_name = soil vertical layer dimension @@ -714,7 +636,6 @@ dimensions = () type = integer intent = in - optional = F [land] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -722,7 +643,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_guess] standard_name = flag_for_guess_run long_name = flag for guess run @@ -730,7 +650,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_lsm] standard_name = flag_for_calling_land_surface_model long_name = flag for calling land surface model @@ -738,7 +657,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [rhowater] standard_name = fresh_liquid_water_density_at_0c long_name = density of liquid water @@ -747,7 +665,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -756,7 +673,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -765,7 +681,6 @@ type = real kind = kind_phys intent = in - optional = F [cmc] standard_name = canopy_water_amount_in_m long_name = canopy water amount in m @@ -774,7 +689,6 @@ type = real kind = kind_phys intent = in - optional = F [rho1] standard_name = air_density_at_lowest_model_layer long_name = air density at lowest model layer @@ -783,7 +697,6 @@ type = real kind = kind_phys intent = in - optional = F [sheat] standard_name = instantaneous_surface_upward_sensible_heat_flux long_name = surface upward sensible heat flux @@ -792,7 +705,6 @@ type = real kind = kind_phys intent = in - optional = F [eta] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux @@ -801,7 +713,6 @@ type = real kind = kind_phys intent = in - optional = F [flx1] standard_name = latent_heat_flux_from_precipitating_snow long_name = latent heat flux due to precipitating snow @@ -810,7 +721,6 @@ type = real kind = kind_phys intent = in - optional = F [flx2] standard_name = latent_heat_flux_from_freezing_rain long_name = latent heat flux due to freezing rain @@ -819,7 +729,6 @@ type = real kind = kind_phys intent = in - optional = F [flx3] standard_name = latent_heat_flux_due_to_snowmelt long_name = latent heat flux due to snowmelt phase change @@ -828,7 +737,6 @@ type = real kind = kind_phys intent = in - optional = F [sncovr] standard_name = surface_snow_area_fraction_over_land long_name = surface snow area fraction @@ -837,7 +745,6 @@ type = real kind = kind_phys intent = in - optional = F [runoff1] standard_name = surface_runoff_flux_in_m_sm1 long_name = surface runoff flux in m s-1 @@ -846,7 +753,6 @@ type = real kind = kind_phys intent = in - optional = F [runoff2] standard_name = subsurface_runoff_flux_in_m_sm1 long_name = subsurface runoff flux in m s-1 @@ -855,7 +761,6 @@ type = real kind = kind_phys intent = in - optional = F [soilm] standard_name = soil_moisture_content_in_m long_name = soil moisture in meters @@ -864,7 +769,6 @@ type = real kind = kind_phys intent = in - optional = F [snowhk] standard_name = actual_snow_depth long_name = actual snow depth @@ -873,7 +777,6 @@ type = real kind = kind_phys intent = in - optional = F [weasd_save] standard_name = water_equivalent_accumulated_snow_depth_over_land_save long_name = water equiv of acc snow depth over land before entering a physics scheme @@ -882,7 +785,6 @@ type = real kind = kind_phys intent = in - optional = F [snwdph_save] standard_name = surface_snow_thickness_water_equivalent_over_land_save long_name = water equivalent snow depth over land before entering a physics scheme @@ -891,7 +793,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfc_save] standard_name = surface_skin_temperature_over_land_save long_name = surface skin temperature over land before entering a physics scheme (temporary use as interstitial) @@ -900,7 +801,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf] standard_name = surface_skin_temperature_after_iteration_over_land long_name = surface skin temperature after iteration over land @@ -909,7 +809,6 @@ type = real kind = kind_phys intent = in - optional = F [canopy_save] standard_name = canopy_water_amount_save long_name = canopy water amount before entering a physics scheme @@ -918,7 +817,6 @@ type = real kind = kind_phys intent = in - optional = F [smc_save] standard_name = volume_fraction_of_soil_moisture_save long_name = total soil moisture before entering a physics scheme @@ -927,7 +825,6 @@ type = real kind = kind_phys intent = in - optional = F [stc_save] standard_name = soil_temperature_save long_name = soil temperature before entering a physics scheme @@ -936,7 +833,6 @@ type = real kind = kind_phys intent = in - optional = F [slc_save] standard_name = volume_fraction_of_unfrozen_soil_moisture_save long_name = liquid soil moisture before entering a physics scheme @@ -945,7 +841,6 @@ type = real kind = kind_phys intent = in - optional = F [smcmax] standard_name = soil_porosity long_name = volumetric soil porosity @@ -954,7 +849,6 @@ type = real kind = kind_phys intent = in - optional = F [canopy] standard_name = canopy_water_amount long_name = canopy moisture content @@ -963,7 +857,6 @@ type = real kind = kind_phys intent = inout - optional = F [shflx] standard_name = kinematic_surface_upward_sensible_heat_flux_over_land long_name = kinematic surface upward sensible heat flux over land @@ -972,7 +865,6 @@ type = real kind = kind_phys intent = inout - optional = F [lhflx] standard_name = kinematic_surface_upward_latent_heat_flux_over_land long_name = kinematic surface upward latent heat flux over land @@ -981,7 +873,6 @@ type = real kind = kind_phys intent = inout - optional = F [snohf] standard_name = snow_freezing_rain_upward_latent_heat_flux long_name = latent heat flux due to snow and frz rain @@ -990,7 +881,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowc] standard_name = surface_snow_area_fraction long_name = surface snow area fraction @@ -999,7 +889,6 @@ type = real kind = kind_phys intent = inout - optional = F [runoff] standard_name = surface_runoff_flux long_name = surface runoff flux @@ -1008,7 +897,6 @@ type = real kind = kind_phys intent = inout - optional = F [drain] standard_name = subsurface_runoff_flux long_name = subsurface runoff flux @@ -1017,7 +905,6 @@ type = real kind = kind_phys intent = inout - optional = F [stm] standard_name = soil_moisture_content long_name = soil moisture @@ -1026,7 +913,6 @@ type = real kind = kind_phys intent = inout - optional = F [weasd] standard_name = water_equivalent_accumulated_snow_depth_over_land long_name = water equiv of acc snow depth over land @@ -1035,7 +921,6 @@ type = real kind = kind_phys intent = inout - optional = F [snwdph] standard_name = surface_snow_thickness_water_equivalent_over_land long_name = water equivalent snow depth over land @@ -1044,7 +929,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfc] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -1053,7 +937,6 @@ type = real kind = kind_phys intent = inout - optional = F [smc] standard_name = volume_fraction_of_condensed_water_in_soil long_name = volumetric fraction of soil moisture @@ -1062,7 +945,6 @@ type = real kind = kind_phys intent = inout - optional = F [stc] standard_name = soil_temperature long_name = soil temperature @@ -1071,7 +953,6 @@ type = real kind = kind_phys intent = inout - optional = F [slc] standard_name = volume_fraction_of_unfrozen_water_in_soil long_name = liquid soil moisture @@ -1080,7 +961,6 @@ type = real kind = kind_phys intent = inout - optional = F [wet1] standard_name = normalized_soil_wetness long_name = normalized soil wetness @@ -1089,7 +969,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1098,7 +977,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1106,4 +984,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_noahmp_drv.meta b/physics/sfc_noahmp_drv.meta index bed1a3de2..52b354739 100644 --- a/physics/sfc_noahmp_drv.meta +++ b/physics/sfc_noahmp_drv.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [lsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [me] standard_name = mpi_rank long_name = current MPI-rank @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [isot] standard_name = control_for_soil_type_dataset long_name = soil type dataset choice @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [ivegsrc] standard_name = control_for_vegetation_dataset long_name = land use dataset choice @@ -46,7 +42,6 @@ dimensions = () type = integer intent = in - optional = F [nlunit] standard_name = iounit_of_namelist long_name = fortran unit number for file opens @@ -54,7 +49,6 @@ dimensions = () type = integer intent = in - optional = F [pores] standard_name = maximum_soil_moisture_content_for_land_surface_model long_name = maximum soil moisture for a given soil type for land surface model @@ -79,7 +73,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -87,7 +80,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -100,7 +92,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_dimension_of_soil long_name = soil vertical layer dimension @@ -108,7 +99,6 @@ dimensions = () type = integer intent = in - optional = F [lsnowl] standard_name = lower_bound_of_vertical_dimension_of_surface_snow long_name = lower bound of of snow-related arrays for land surface model @@ -116,7 +106,6 @@ dimensions = () type = integer intent = in - optional = F [itime] standard_name = index_of_timestep long_name = current forecast iteration @@ -124,7 +113,6 @@ dimensions = () type = integer intent = in - optional = F [ps] standard_name = surface_air_pressure long_name = surface pressure @@ -133,7 +121,6 @@ type = real kind = kind_phys intent = in - optional = F [u1] standard_name = x_wind_at_surface_adjacent_layer long_name = zonal wind at lowest model layer @@ -142,7 +129,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind_at_surface_adjacent_layer long_name = meridional wind at lowest model layer @@ -151,7 +137,6 @@ type = real kind = kind_phys intent= in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = mean temperature at lowest model layer @@ -160,7 +145,6 @@ type = real kind = kind_phys intent= in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = water vapor specific humidity at lowest model layer @@ -169,7 +153,6 @@ type = real kind = kind_phys intent= in - optional = F [soiltyp] standard_name = soil_type_classification long_name = soil type at each grid cell @@ -177,7 +160,6 @@ dimensions = (horizontal_loop_extent) type = integer intent= in - optional = F [vegtype] standard_name = vegetation_type_classification long_name = vegetation type at each grid cell @@ -185,7 +167,6 @@ dimensions = (horizontal_loop_extent) type = integer intent= in - optional = F [sigmaf] standard_name = bounded_vegetation_area_fraction long_name = areal fractional cover of green vegetation bounded on the bottom @@ -194,7 +175,6 @@ type = real kind = kind_phys intent= in - optional = F [dlwflx] standard_name = surface_downwelling_longwave_flux long_name = surface downwelling longwave flux at current time @@ -203,7 +183,6 @@ type = real kind = kind_phys intent = in - optional = F [dswsfc] standard_name = surface_downwelling_shortwave_flux long_name = surface downwelling shortwave flux at current time @@ -212,7 +191,6 @@ type = real kind = kind_phys intent= in - optional = F [snet] standard_name = surface_net_downwelling_shortwave_flux long_name = surface net downwelling shortwave flux at current time @@ -221,7 +199,6 @@ type = real kind = kind_phys intent = in - optional = F [delt] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -230,7 +207,6 @@ type = real kind = kind_phys intent = in - optional = F [tg3] standard_name = deep_soil_temperature long_name = deep soil temperature @@ -239,7 +215,6 @@ type = real kind = kind_phys intent = in - optional = F [cm] standard_name = surface_drag_coefficient_for_momentum_in_air_over_land long_name = surface exchange coeff for momentum over land @@ -248,7 +223,6 @@ type = real kind = kind_phys intent = in - optional = F [ch] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land long_name = surface exchange coeff heat & moisture over land @@ -257,7 +231,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl1] standard_name = air_pressure_at_surface_adjacent_layer long_name = mean pressure at lowest model layer @@ -266,7 +239,6 @@ type = real kind = kind_phys intent = in - optional = F [prslki] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -275,7 +247,6 @@ type = real kind = kind_phys intent = in - optional = F [zf] standard_name = height_above_ground_at_lowest_model_layer long_name = layer 1 height above ground (not MSL) @@ -284,7 +255,6 @@ type = real kind = kind_phys intent = in - optional = F [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -292,7 +262,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -301,7 +270,6 @@ type = real kind = kind_phys intent = in - optional = F [slopetyp] standard_name = surface_slope_classification long_name = surface slope type at each grid cell @@ -309,7 +277,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [shdmin] standard_name = min_vegetation_area_fraction long_name = min fractional coverage of green vegetation @@ -318,7 +285,6 @@ type = real kind = kind_phys intent = in - optional = F [shdmax] standard_name = max_vegetation_area_fraction long_name = max fractional coverage of green vegetation @@ -327,7 +293,6 @@ type = real kind = kind_phys intent = in - optional = F [snoalb] standard_name = upper_bound_of_max_albedo_assuming_deep_snow long_name = maximum snow albedo @@ -336,7 +301,6 @@ type = real kind = kind_phys intent = in - optional = F [sfalb] standard_name = surface_albedo_for_diffused_shortwave_on_radiation_timestep long_name = mean surface diffused sw albedo @@ -345,7 +309,6 @@ type = real kind = kind_phys intent = inout - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -353,7 +316,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_guess] standard_name = flag_for_guess_run long_name = flag for guess run @@ -361,7 +323,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [idveg] standard_name = control_for_land_surface_scheme_dynamic_vegetation long_name = choice for dynamic vegetation option (see noahmp module for definition) @@ -369,7 +330,6 @@ dimensions = () type = integer intent = in - optional = F [iopt_crs] standard_name = control_for_land_surface_scheme_canopy_stomatal_resistance long_name = choice for canopy stomatal resistance option (see noahmp module for definition) @@ -377,7 +337,6 @@ dimensions = () type = integer intent = in - optional = F [iopt_btr] standard_name = control_for_land_surface_scheme_soil_moisture_factor_stomatal_resistance long_name = choice for soil moisture factor for canopy stomatal resistance option (see noahmp module for definition) @@ -385,7 +344,6 @@ dimensions = () type = integer intent = in - optional = F [iopt_run] standard_name = control_for_land_surface_scheme_runoff_and_groundwater long_name = choice for runoff and groundwater option (see noahmp module for definition) @@ -393,7 +351,6 @@ dimensions = () type = integer intent = in - optional = F [iopt_sfc] standard_name = control_for_land_surface_scheme_surface_layer_drag_coefficient long_name = choice for surface layer drag coefficient option (see noahmp module for definition) @@ -401,7 +358,6 @@ dimensions = () type = integer intent = in - optional = F [iopt_frz] standard_name = control_for_land_surface_scheme_supercooled_liquid_water long_name = choice for supercooled liquid water option (see noahmp module for definition) @@ -409,7 +365,6 @@ dimensions = () type = integer intent = in - optional = F [iopt_inf] standard_name = control_for_land_surface_scheme_frozen_soil_permeability long_name = choice for frozen soil permeability option (see noahmp module for definition) @@ -417,7 +372,6 @@ dimensions = () type = integer intent = in - optional = F [iopt_rad] standard_name = control_for_land_surface_scheme_radiative_transfer long_name = choice for radiation transfer option (see noahmp module for definition) @@ -425,7 +379,6 @@ dimensions = () type = integer intent = in - optional = F [iopt_alb] standard_name = control_for_land_surface_scheme_surface_snow_albedo long_name = choice for ground snow surface albedo option (see noahmp module for definition) @@ -433,7 +386,6 @@ dimensions = () type = integer intent = in - optional = F [iopt_snf] standard_name = control_for_land_surface_scheme_precipitation_type_partition long_name = choice for precipitation partition option (see noahmp module for definition) @@ -441,7 +393,6 @@ dimensions = () type = integer intent = in - optional = F [iopt_tbot] standard_name = control_for_land_surface_scheme_lower_boundary_soil_temperature long_name = choice for lower boundary soil temperature option (see noahmp module for definition) @@ -449,7 +400,6 @@ dimensions = () type = integer intent = in - optional = F [iopt_stc] standard_name = control_for_land_surface_scheme_soil_and_snow_temperature_time_integration long_name = choice for soil and snow temperature time stepping option (see noahmp module for definition) @@ -457,7 +407,6 @@ dimensions = () type = integer intent = in - optional = F [xlatin] standard_name = latitude long_name = latitude @@ -466,7 +415,6 @@ type = real kind = kind_phys intent = in - optional = F [xcoszin] standard_name = instantaneous_cosine_of_zenith_angle long_name = cosine of zenith angle at current time @@ -475,7 +423,6 @@ type = real kind = kind_phys intent = in - optional = F [iyrlen] standard_name = number_of_days_in_current_year long_name = number of days in a year @@ -483,7 +430,6 @@ dimensions = () type = integer intent = in - optional = F [julian] standard_name = forecast_julian_day long_name = julian day @@ -492,7 +438,6 @@ type = real kind = kind_phys intent = in - optional = F [rainn_mp] standard_name = explicit_precipitation_rate_on_previous_timestep long_name = explicit rainfall rate previous timestep @@ -501,7 +446,6 @@ type = real kind = kind_phys intent = in - optional = F [rainc_mp] standard_name = convective_precipitation_rate_on_previous_timestep long_name = convective precipitation rate from previous timestep @@ -510,7 +454,6 @@ type = real kind = kind_phys intent = in - optional = F [snow_mp] standard_name = snowfall_rate_on_previous_timestep long_name = snow precipitation rate from previous timestep @@ -519,7 +462,6 @@ type = real kind = kind_phys intent = in - optional = F [graupel_mp] standard_name = graupel_precipitation_rate_on_previous_timestep long_name = graupel precipitation rate from previous timestep @@ -528,7 +470,6 @@ type = real kind = kind_phys intent = in - optional = F [ice_mp] standard_name = ice_precipitation_rate_on_previous_timestep long_name = ice precipitation rate from previous timestep @@ -537,7 +478,6 @@ type = real kind = kind_phys intent = in - optional = F [con_hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -546,7 +486,6 @@ type = real kind = kind_phys intent = in - optional = F [con_cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -555,7 +494,6 @@ type = real kind = kind_phys intent = in - optional = F [con_jcal] standard_name = joules_per_calorie_constant long_name = joules per calorie constant @@ -564,7 +502,6 @@ type = real kind = kind_phys intent = in - optional = F [rhoh2o] standard_name = fresh_liquid_water_density_at_0c long_name = density of liquid water @@ -573,7 +510,6 @@ type = real kind = kind_phys intent = in - optional = F [con_eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -582,7 +518,6 @@ type = real kind = kind_phys intent = in - optional = F [con_epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -591,7 +526,6 @@ type = real kind = kind_phys intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -600,7 +534,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -609,7 +542,6 @@ type = real kind = kind_phys intent = in - optional = F [con_hfus] standard_name = latent_heat_of_fusion_of_water_at_0C long_name = latent heat of fusion @@ -618,7 +550,6 @@ type = real kind = kind_phys intent = in - optional = F [weasd] standard_name = water_equivalent_accumulated_snow_depth_over_land long_name = water equiv of acc snow depth over land @@ -627,7 +558,6 @@ type = real kind = kind_phys intent = inout - optional = F [snwdph] standard_name = surface_snow_thickness_water_equivalent_over_land long_name = water equivalent snow depth over land @@ -636,7 +566,6 @@ type = real kind = kind_phys intent = inout - optional = F [tskin] standard_name = surface_skin_temperature_over_land long_name = surface skin temperature over land @@ -645,7 +574,6 @@ type = real kind = kind_phys intent = inout - optional = F [tprcp] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_land long_name = total precipitation amount in each time step over land @@ -654,7 +582,6 @@ type = real kind = kind_phys intent = inout - optional = F [srflag] standard_name = precipitation_type long_name = snow/rain flag for precipitation @@ -663,7 +590,6 @@ type = real kind = kind_phys intent = inout - optional = F [smc] standard_name = volume_fraction_of_condensed_water_in_soil long_name = total soil moisture @@ -672,7 +598,6 @@ type = real kind = kind_phys intent = inout - optional = F [stc] standard_name = soil_temperature long_name = soil temperature @@ -681,7 +606,6 @@ type = real kind = kind_phys intent = inout - optional = F [slc] standard_name = volume_fraction_of_unfrozen_water_in_soil long_name = liquid soil moisture @@ -690,7 +614,6 @@ type = real kind = kind_phys intent = inout - optional = F [canopy] standard_name = canopy_water_amount long_name = canopy water amount @@ -699,7 +622,6 @@ type = real kind = kind_phys intent = inout - optional = F [trans] standard_name = transpiration_flux long_name = total plant transpiration rate @@ -708,7 +630,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsurf] standard_name = surface_skin_temperature_after_iteration_over_land long_name = surface skin temperature after iteration over land @@ -717,7 +638,6 @@ type = real kind = kind_phys intent = inout - optional = F [zorl] standard_name = surface_roughness_length_over_land long_name = surface roughness length over land (temporary use as interstitial) @@ -726,7 +646,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowxy] standard_name = number_of_snow_layers long_name = number of snow layers @@ -735,7 +654,6 @@ type = real kind = kind_phys intent = inout - optional = F [tvxy] standard_name = canopy_temperature long_name = vegetation temperature @@ -744,7 +662,6 @@ type = real kind = kind_phys intent = inout - optional = F [tgxy] standard_name = ground_temperature long_name = ground temperature for noahmp @@ -753,7 +670,6 @@ type = real kind = kind_phys intent = inout - optional = F [canicexy] standard_name = canopy_intercepted_ice_mass long_name = canopy intercepted ice mass @@ -762,7 +678,6 @@ type = real kind = kind_phys intent = inout - optional = F [canliqxy] standard_name = canopy_intercepted_liquid_water long_name = canopy intercepted liquid water @@ -771,7 +686,6 @@ type = real kind = kind_phys intent = inout - optional = F [eahxy] standard_name = air_vapor_pressure_in_canopy long_name = canopy air vapor pressure @@ -780,7 +694,6 @@ type = real kind = kind_phys intent = inout - optional = F [tahxy] standard_name = air_temperature_in_canopy long_name = canopy air temperature @@ -789,7 +702,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmxy] standard_name = surface_drag_coefficient_for_momentum_for_noahmp long_name = surface drag coefficient for momentum for noahmp @@ -798,7 +710,6 @@ type = real kind = kind_phys intent = inout - optional = F [chxy] standard_name = surface_drag_coefficient_for_heat_and_moisture_for_noahmp long_name = surface exchange coeff heat & moisture for noahmp @@ -807,7 +718,6 @@ type = real kind = kind_phys intent = inout - optional = F [fwetxy] standard_name = wet_canopy_area_fraction long_name = area fraction of canopy that is wetted/snowed @@ -816,7 +726,6 @@ type = real kind = kind_phys intent = inout - optional = F [sneqvoxy] standard_name = lwe_thickness_of_snowfall_amount_on_previous_timestep long_name = snow mass at previous time step @@ -825,7 +734,6 @@ type = real kind = kind_phys intent = inout - optional = F [alboldxy] standard_name = surface_albedo_assuming_deep_snow_on_previous_timestep long_name = snow albedo at previous time step @@ -834,7 +742,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsnowxy] standard_name = lwe_snowfall_rate long_name = snow precipitation rate at surface @@ -843,7 +750,6 @@ type = real kind = kind_phys intent = inout - optional = F [wslakexy] standard_name = water_storage_in_lake long_name = lake water storage @@ -852,7 +758,6 @@ type = real kind = kind_phys intent = inout - optional = F [zwtxy] standard_name = water_table_depth long_name = water table depth @@ -861,7 +766,6 @@ type = real kind = kind_phys intent = inout - optional = F [waxy] standard_name = water_storage_in_aquifer long_name = water storage in aquifer @@ -870,7 +774,6 @@ type = real kind = kind_phys intent = inout - optional = F [wtxy] standard_name = water_storage_in_aquifer_and_saturated_soil long_name = water storage in aquifer and saturated soil @@ -879,7 +782,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsnoxy] standard_name = temperature_in_surface_snow long_name = temperature_in_surface_snow @@ -888,7 +790,6 @@ type = real kind = kind_phys intent = inout - optional = F [zsnsoxy] standard_name = depth_from_snow_surface_at_bottom_interface long_name = depth from the top of the snow surface at the bottom of the layer @@ -897,7 +798,6 @@ type = real kind = kind_phys intent = inout - optional = F [snicexy] standard_name = lwe_thickness_of_ice_in_surface_snow long_name = lwe_thickness_of_ice_in_surface_snow @@ -906,7 +806,6 @@ type = real kind = kind_phys intent = inout - optional = F [snliqxy] standard_name = lwe_thickness_of_liquid_water_in_surface_snow long_name = snow layer liquid water @@ -915,7 +814,6 @@ type = real kind = kind_phys intent = inout - optional = F [lfmassxy] standard_name = leaf_mass_content long_name = leaf mass @@ -924,7 +822,6 @@ type = real kind = kind_phys intent = inout - optional = F [rtmassxy] standard_name = fine_root_mass_content long_name = fine root mass @@ -933,7 +830,6 @@ type = real kind = kind_phys intent = inout - optional = F [stmassxy] standard_name = stem_mass_content long_name = stem mass @@ -942,7 +838,6 @@ type = real kind = kind_phys intent = inout - optional = F [woodxy] standard_name = wood_mass_content long_name = wood mass including woody roots @@ -951,7 +846,6 @@ type = real kind = kind_phys intent = inout - optional = F [stblcpxy] standard_name = slow_soil_pool_mass_content_of_carbon long_name = stable carbon in deep soil @@ -960,7 +854,6 @@ type = real kind = kind_phys intent = inout - optional = F [fastcpxy] standard_name = fast_soil_pool_mass_content_of_carbon long_name = short-lived carbon in shallow soil @@ -969,7 +862,6 @@ type = real kind = kind_phys intent = inout - optional = F [xlaixy] standard_name = leaf_area_index long_name = leaf area index @@ -978,7 +870,6 @@ type = real kind = kind_phys intent = inout - optional = F [xsaixy] standard_name = stem_area_index long_name = stem area index @@ -987,7 +878,6 @@ type = real kind = kind_phys intent = inout - optional = F [taussxy] standard_name = dimensionless_age_of_surface_snow long_name = non-dimensional snow age @@ -996,7 +886,6 @@ type = real kind = kind_phys intent = inout - optional = F [smoiseq] standard_name = volumetric_equilibrium_soil_moisture long_name = equilibrium soil water content @@ -1005,7 +894,6 @@ type = real kind = kind_phys intent = inout - optional = F [smcwtdxy] standard_name = volumetric_soil_moisture_between_soil_bottom_and_water_table long_name = soil water content between the bottom of the soil and the water table @@ -1014,7 +902,6 @@ type = real kind = kind_phys intent = inout - optional = F [deeprechxy] standard_name = water_table_recharge_assuming_deep long_name = recharge to or from the water table when deep @@ -1023,7 +910,6 @@ type = real kind = kind_phys intent = inout - optional = F [rechxy] standard_name = water_table_recharge_assuming_shallow long_name = recharge to or from the water table when shallow @@ -1032,7 +918,6 @@ type = real kind = kind_phys intent = inout - optional = F [albdvis] standard_name = surface_albedo_direct_visible_over_land long_name = direct surface albedo visible band over land @@ -1041,7 +926,6 @@ type = real kind = kind_phys intent = out - optional = F [albdnir] standard_name = surface_albedo_direct_NIR_over_land long_name = direct surface albedo NIR band over land @@ -1050,7 +934,6 @@ type = real kind = kind_phys intent = out - optional = F [albivis] standard_name = surface_albedo_diffuse_visible_over_land long_name = diffuse surface albedo visible band over land @@ -1059,7 +942,6 @@ type = real kind = kind_phys intent = out - optional = F [albinir] standard_name = surface_albedo_diffuse_NIR_over_land long_name = diffuse surface albedo NIR band over land @@ -1068,7 +950,6 @@ type = real kind = kind_phys intent = out - optional = F [emiss] standard_name = surface_longwave_emissivity_over_land long_name = surface lw emissivity in fraction over land @@ -1077,7 +958,6 @@ type = real kind = kind_phys intent = out - optional = F [sncovr1] standard_name = surface_snow_area_fraction_over_land long_name = surface snow area fraction @@ -1086,7 +966,6 @@ type = real kind = kind_phys intent = out - optional = F [qsurf] standard_name = surface_specific_humidity_over_land long_name = surface air saturation specific humidity over land @@ -1095,7 +974,6 @@ type = real kind = kind_phys intent = out - optional = F [gflux] standard_name = upward_heat_flux_in_soil_over_land long_name = soil heat flux over land @@ -1104,7 +982,6 @@ type = real kind = kind_phys intent = out - optional = F [drain] standard_name = subsurface_runoff_flux long_name = subsurface runoff flux @@ -1113,7 +990,6 @@ type = real kind = kind_phys intent = out - optional = F [evap] standard_name = kinematic_surface_upward_latent_heat_flux_over_land long_name = kinematic surface upward latent heat flux over land @@ -1122,7 +998,6 @@ type = real kind = kind_phys intent = out - optional = F [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_over_land long_name = kinematic surface upward sensible heat flux over land @@ -1131,7 +1006,6 @@ type = real kind = kind_phys intent = out - optional = F [ep] standard_name = surface_upward_potential_latent_heat_flux_over_land long_name = surface upward potential latent heat flux over land @@ -1140,7 +1014,6 @@ type = real kind = kind_phys intent = out - optional = F [runoff] standard_name = surface_runoff_flux long_name = surface runoff flux @@ -1149,7 +1022,6 @@ type = real kind = kind_phys intent = out - optional = F [cmm] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_land long_name = momentum exchange coefficient over land @@ -1158,7 +1030,6 @@ type = real kind = kind_phys intent = out - optional = F [chh] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_land long_name = thermal exchange coefficient over land @@ -1167,7 +1038,6 @@ type = real kind = kind_phys intent = out - optional = F [evbs] standard_name = soil_upward_latent_heat_flux long_name = soil upward latent heat flux @@ -1176,7 +1046,6 @@ type = real kind = kind_phys intent = out - optional = F [evcw] standard_name = canopy_upward_latent_heat_flux long_name = canopy upward latent heat flux @@ -1185,7 +1054,6 @@ type = real kind = kind_phys intent = out - optional = F [sbsno] standard_name = snow_deposition_sublimation_upward_latent_heat_flux long_name = latent heat flux from snow depo/subl @@ -1194,7 +1062,6 @@ type = real kind = kind_phys intent = out - optional = F [snowc] standard_name = surface_snow_area_fraction long_name = surface snow area fraction @@ -1203,7 +1070,6 @@ type = real kind = kind_phys intent = out - optional = F [stm] standard_name = soil_moisture_content long_name = soil moisture @@ -1212,7 +1078,6 @@ type = real kind = kind_phys intent = out - optional = F [snohf] standard_name = snow_freezing_rain_upward_latent_heat_flux long_name = latent heat flux due to snow and frz rain @@ -1221,7 +1086,6 @@ type = real kind = kind_phys intent = out - optional = F [smcwlt2] standard_name = volume_fraction_of_condensed_water_in_soil_at_wilting_point long_name = wilting point (volumetric) @@ -1230,7 +1094,6 @@ type = real kind = kind_phys intent = out - optional = F [smcref2] standard_name = threshold_volume_fraction_of_condensed_water_in_soil long_name = soil moisture threshold (volumetric) @@ -1239,7 +1102,6 @@ type = real kind = kind_phys intent = out - optional = F [wet1] standard_name = normalized_soil_wetness long_name = normalized soil wetness @@ -1248,7 +1110,6 @@ type = real kind = kind_phys intent = out - optional = F [t2mmp] standard_name = temperature_at_2m_from_noahmp long_name = 2 meter temperature from noahmp @@ -1257,7 +1118,6 @@ type = real kind = kind_phys intent = out - optional = F [q2mp] standard_name = specific_humidity_at_2m_from_noahmp long_name = 2 meter specific humidity from noahmp @@ -1266,7 +1126,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1275,7 +1134,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1283,4 +1141,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_nst.meta b/physics/sfc_nst.meta index 5bc0774f8..7d5fcfca5 100644 --- a/physics/sfc_nst.meta +++ b/physics/sfc_nst.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -32,7 +30,6 @@ type = real kind = kind_phys intent = in - optional = F [hfus] standard_name = latent_heat_of_fusion_of_water_at_0C long_name = latent heat of fusion @@ -41,7 +38,6 @@ type = real kind = kind_phys intent = in - optional = F [jcal] standard_name = joules_per_calorie_constant long_name = joules per calorie constant @@ -50,7 +46,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -59,7 +54,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -68,7 +62,6 @@ type = real kind = kind_phys intent = in - optional = F [rvrdm1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -77,7 +70,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -86,7 +78,6 @@ type = real kind = kind_phys intent = in - optional = F [rhw0] standard_name = sea_water_reference_density long_name = sea water reference density @@ -95,7 +86,6 @@ type = real kind = kind_phys intent = in - optional = F [pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -104,7 +94,6 @@ type = real kind = kind_phys intent = in - optional = F [tgice] standard_name = freezing_point_temperature_of_seawater long_name = freezing point temperature of seawater @@ -113,7 +102,6 @@ type = real kind = kind_phys intent = in - optional = F [sbc] standard_name = stefan_boltzmann_constant long_name = Stefan-Boltzmann constant @@ -122,7 +110,6 @@ type = real kind = kind_phys intent = in - optional = F [ps] standard_name = surface_air_pressure long_name = surface pressure @@ -131,7 +118,6 @@ type = real kind = kind_phys intent = in - optional = F [u1] standard_name = x_wind_at_surface_adjacent_layer long_name = x component of surface layer wind @@ -140,7 +126,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind_at_surface_adjacent_layer long_name = y component of surface layer wind @@ -149,7 +134,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = surface layer mean temperature @@ -158,7 +142,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = surface layer mean specific humidity @@ -167,7 +150,6 @@ type = real kind = kind_phys intent = in - optional = F [tref] standard_name = reference_sea_surface_temperature long_name = reference/foundation temperature @@ -176,7 +158,6 @@ type = real kind = kind_phys intent = in - optional = F [cm] standard_name = surface_drag_coefficient_for_momentum_in_air_over_water long_name = surface exchange coeff for momentum over water @@ -185,7 +166,6 @@ type = real kind = kind_phys intent = in - optional = F [ch] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water @@ -194,7 +174,6 @@ type = real kind = kind_phys intent = in - optional = F [lseaspray] standard_name = flag_for_sea_spray long_name = flag for sea spray parameterization @@ -202,7 +181,6 @@ dimensions = () type = logical intent = in - optional = F [fm] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_water long_name = Monin-Obukhov similarity function for momentum over water @@ -211,7 +189,6 @@ type = real kind = kind_phys intent = in - optional = F [fm10] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_water long_name = Monin-Obukhov similarity parameter for momentum at 10m over water @@ -220,7 +197,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl1] standard_name = air_pressure_at_surface_adjacent_layer long_name = surface layer mean pressure @@ -229,7 +205,6 @@ type = real kind = kind_phys intent = in - optional = F [prslki] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -238,7 +213,6 @@ type = real kind = kind_phys intent = in - optional = F [prsik1] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at the ground surface @@ -247,7 +221,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk1] standard_name = dimensionless_exner_function_at_surface_adjacent_layer long_name = dimensionless Exner function at the lowest model layer @@ -256,7 +229,6 @@ type = real kind = kind_phys intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -264,7 +236,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [use_flake] standard_name = flag_for_using_flake long_name = flag indicating lake points using flake model @@ -272,7 +243,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [xlon] standard_name = longitude long_name = longitude @@ -281,7 +251,6 @@ type = real kind = kind_phys intent = in - optional = F [sinlat] standard_name = sine_of_latitude long_name = sine of latitude @@ -290,7 +259,6 @@ type = real kind = kind_phys intent = in - optional = F [stress] standard_name = surface_wind_stress_over_water long_name = surface wind stress over water @@ -299,7 +267,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcemis] standard_name = surface_longwave_emissivity_over_water long_name = surface lw emissivity in fraction over water @@ -308,7 +275,6 @@ type = real kind = kind_phys intent = in - optional = F [dlwflx] standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_water long_name = total sky surface downward longwave flux absorbed by the ground over water @@ -317,7 +283,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcnsw] standard_name = surface_net_downwelling_shortwave_flux long_name = total sky sfc net sw flx into ocean @@ -326,7 +291,6 @@ type = real kind = kind_phys intent = in - optional = F [rain] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_water long_name = total precipitation amount in each time step over water @@ -335,7 +299,6 @@ type = real kind = kind_phys intent = in - optional = F [timestep] standard_name = timestep_for_dynamics long_name = timestep interval @@ -344,7 +307,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current time step index @@ -352,7 +314,6 @@ dimensions = () type = integer intent = in - optional = F [solhr] standard_name = forecast_utc_hour long_name = time in hours after 00z at the current timestep @@ -361,7 +322,6 @@ type = real kind = kind_phys intent = in - optional = F [xcosz] standard_name = instantaneous_cosine_of_zenith_angle long_name = cosine of solar zenith angle @@ -370,7 +330,6 @@ type = real kind = kind_phys intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -379,7 +338,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -387,7 +345,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [flag_guess] standard_name = flag_for_guess_run long_name = flag for guess run @@ -395,7 +352,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [nstf_name1] standard_name = control_for_nsstm long_name = NSSTM flag: off/uncoupled/coupled=0/1/2 @@ -403,7 +359,6 @@ dimensions = () type = integer intent = in - optional = F [nstf_name4] standard_name = lower_bound_for_depth_of_sea_temperature_for_nsstm long_name = zsea1 @@ -411,7 +366,6 @@ dimensions = () type = integer intent = in - optional = F [nstf_name5] standard_name = upper_bound_for_depth_of_sea_temperature_for_nsstm long_name = zsea2 @@ -419,7 +373,6 @@ dimensions = () type = integer intent = in - optional = F [lprnt] standard_name = flag_print long_name = flag for printing diagnostics to output @@ -427,7 +380,6 @@ dimensions = () type = logical intent = in - optional = F [ipr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of printed column @@ -435,7 +387,6 @@ dimensions = () type = integer intent = in - optional = F [thsfc_loc] standard_name = flag_for_reference_pressure_theta long_name = flag for reference pressure in theta calculation @@ -443,7 +394,6 @@ dimensions = () type = logical intent = in - optional = F [tskin] standard_name = surface_skin_temperature_for_nsst long_name = ocean surface skin temperature @@ -452,7 +402,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsurf] standard_name = surface_skin_temperature_after_iteration_over_water long_name = surface skin temperature after iteration over water @@ -461,7 +410,6 @@ type = real kind = kind_phys intent = inout - optional = F [xt] standard_name = heat_content_in_diurnal_thermocline long_name = heat content in diurnal thermocline layer @@ -470,7 +418,6 @@ type = real kind = kind_phys intent = inout - optional = F [xs] standard_name = sea_water_salinity_in_diurnal_thermocline long_name = salinity content in diurnal thermocline layer @@ -479,7 +426,6 @@ type = real kind = kind_phys intent = inout - optional = F [xu] standard_name = x_current_in_diurnal_thermocline long_name = u-current content in diurnal thermocline layer @@ -488,7 +434,6 @@ type = real kind = kind_phys intent = inout - optional = F [xv] standard_name = y_current_in_diurnal_thermocline long_name = v-current content in diurnal thermocline layer @@ -497,7 +442,6 @@ type = real kind = kind_phys intent = inout - optional = F [xz] standard_name = diurnal_thermocline_layer_thickness long_name = diurnal thermocline layer thickness @@ -506,7 +450,6 @@ type = real kind = kind_phys intent = inout - optional = F [zm] standard_name = ocean_mixed_layer_thickness long_name = mixed layer thickness @@ -515,7 +458,6 @@ type = real kind = kind_phys intent = inout - optional = F [xtts] standard_name = derivative_of_heat_content_in_diurnal_thermocline_wrt_surface_skin_temperature long_name = d(xt)/d(ts) @@ -524,7 +466,6 @@ type = real kind = kind_phys intent = inout - optional = F [xzts] standard_name = derivative_of_diurnal_thermocline_layer_thickness_wrt_surface_skin_temperature long_name = d(xz)/d(ts) @@ -533,7 +474,6 @@ type = real kind = kind_phys intent = inout - optional = F [dt_cool] standard_name = molecular_sublayer_temperature_correction_in_sea_water long_name = sub-layer cooling amount @@ -542,7 +482,6 @@ type = real kind = kind_phys intent = inout - optional = F [z_c] standard_name = molecular_sublayer_thickness_in_sea_water long_name = sub-layer cooling thickness @@ -551,7 +490,6 @@ type = real kind = kind_phys intent = inout - optional = F [c_0] standard_name = coefficient_c_0 long_name = coefficient1 to calculate d(tz)/d(ts) @@ -560,7 +498,6 @@ type = real kind = kind_phys intent = inout - optional = F [c_d] standard_name = coefficient_c_d long_name = coefficient2 to calculate d(tz)/d(ts) @@ -569,7 +506,6 @@ type = real kind = kind_phys intent = inout - optional = F [w_0] standard_name = coefficient_w_0 long_name = coefficient3 to calculate d(tz)/d(ts) @@ -578,7 +514,6 @@ type = real kind = kind_phys intent = inout - optional = F [w_d] standard_name = coefficient_w_d long_name = coefficient4 to calculate d(tz)/d(ts) @@ -587,7 +522,6 @@ type = real kind = kind_phys intent = inout - optional = F [d_conv] standard_name = free_convection_layer_thickness_in_sea_water long_name = thickness of free convection layer @@ -596,7 +530,6 @@ type = real kind = kind_phys intent = inout - optional = F [ifd] standard_name = control_for_diurnal_thermocline_calculation long_name = index to start dtlm run or not @@ -605,7 +538,6 @@ type = real kind = kind_phys intent = inout - optional = F [qrain] standard_name = surface_sensible_heat_due_to_rainfall long_name = sensible heat flux due to rainfall @@ -614,7 +546,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsurf] standard_name = surface_specific_humidity_over_water long_name = surface air saturation specific humidity over water @@ -623,7 +554,6 @@ type = real kind = kind_phys intent = inout - optional = F [gflux] standard_name = upward_heat_flux_in_soil_over_water long_name = soil heat flux over water @@ -632,7 +562,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmm] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_water long_name = momentum exchange coefficient over water @@ -641,7 +570,6 @@ type = real kind = kind_phys intent = inout - optional = F [chh] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_water long_name = thermal exchange coefficient over water @@ -650,7 +578,6 @@ type = real kind = kind_phys intent = inout - optional = F [evap] standard_name = kinematic_surface_upward_latent_heat_flux_over_water long_name = kinematic surface upward latent heat flux over water @@ -659,7 +586,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_over_water long_name = kinematic surface upward sensible heat flux over water @@ -668,7 +594,6 @@ type = real kind = kind_phys intent = inout - optional = F [ep] standard_name = surface_upward_potential_latent_heat_flux_over_water long_name = surface upward potential latent heat flux over water @@ -677,7 +602,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -686,7 +610,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -694,7 +617,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -713,7 +635,6 @@ dimensions = () type = integer intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -721,7 +642,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [tgice] standard_name = freezing_point_temperature_of_seawater long_name = freezing point temperature of seawater @@ -730,7 +650,6 @@ type = real kind = kind_phys intent = in - optional = F [tsfco] standard_name = sea_surface_temperature long_name = sea surface temperature @@ -739,7 +658,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_wat] standard_name = surface_skin_temperature_after_iteration_over_water long_name = surface skin temperature after iteration over water @@ -748,7 +666,6 @@ type = real kind = kind_phys intent = inout - optional = F [tseal] standard_name = surface_skin_temperature_for_nsst long_name = ocean surface skin temperature @@ -757,7 +674,6 @@ type = real kind = kind_phys intent = inout - optional = F [xt] standard_name = heat_content_in_diurnal_thermocline long_name = heat content in diurnal thermocline layer @@ -766,7 +682,6 @@ type = real kind = kind_phys intent = in - optional = F [xz] standard_name = diurnal_thermocline_layer_thickness long_name = diurnal thermocline layer thickness @@ -775,7 +690,6 @@ type = real kind = kind_phys intent = in - optional = F [dt_cool] standard_name = molecular_sublayer_temperature_correction_in_sea_water long_name = sub-layer cooling amount @@ -784,7 +698,6 @@ type = real kind = kind_phys intent = in - optional = F [z_c] standard_name = molecular_sublayer_thickness_in_sea_water long_name = sub-layer cooling thickness @@ -793,7 +706,6 @@ type = real kind = kind_phys intent = in - optional = F [tref] standard_name = reference_sea_surface_temperature long_name = reference/foundation temperature @@ -802,7 +714,6 @@ type = real kind = kind_phys intent = inout - optional = F [cplflx] standard_name = flag_for_surface_flux_coupling long_name = flag controlling cplflx collection (default off) @@ -810,7 +721,6 @@ dimensions = () type = logical intent = in - optional = F [oceanfrac] standard_name = sea_area_fraction long_name = fraction of horizontal grid area occupied by ocean @@ -819,7 +729,6 @@ type = real kind = kind_phys intent = in - optional = F [nthreads] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available for physics schemes @@ -827,7 +736,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -836,7 +744,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -844,7 +751,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-table-properties] @@ -863,7 +769,6 @@ dimensions = () type = integer intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current time step index @@ -871,7 +776,6 @@ dimensions = () type = integer intent = in - optional = F [rlapse] standard_name = air_temperature_lapse_rate_constant long_name = environmental air temperature lapse rate constant @@ -880,7 +784,6 @@ type = real kind = kind_phys intent = in - optional = F [tgice] standard_name = freezing_point_temperature_of_seawater long_name = freezing point temperature of seawater @@ -889,7 +792,6 @@ type = real kind = kind_phys intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -897,7 +799,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [use_flake] standard_name = flag_for_using_flake long_name = flag indicating lake points using flake model @@ -905,7 +806,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [icy] standard_name = flag_nonzero_sea_ice_surface_fraction long_name = flag indicating presence of some sea ice surface area fraction @@ -913,7 +813,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [oro] standard_name = height_above_mean_sea_level long_name = height_above_mean_sea_level @@ -922,7 +821,6 @@ type = real kind = kind_phys intent = in - optional = F [oro_uf] standard_name = unfiltered_height_above_mean_sea_level long_name = unfiltered height_above_mean_sea_level @@ -931,7 +829,6 @@ type = real kind = kind_phys intent = in - optional = F [nstf_name1] standard_name = control_for_nsstm long_name = NSSTM flag: off/uncoupled/coupled=0/1/2 @@ -939,7 +836,6 @@ dimensions = () type = integer intent = in - optional = F [nstf_name4] standard_name = lower_bound_for_depth_of_sea_temperature_for_nsstm long_name = zsea1 @@ -947,7 +843,6 @@ dimensions = () type = integer intent = in - optional = F [nstf_name5] standard_name = upper_bound_for_depth_of_sea_temperature_for_nsstm long_name = zsea2 @@ -955,7 +850,6 @@ dimensions = () type = integer intent = in - optional = F [xt] standard_name = heat_content_in_diurnal_thermocline long_name = heat content in diurnal thermocline layer @@ -964,7 +858,6 @@ type = real kind = kind_phys intent = in - optional = F [xz] standard_name = diurnal_thermocline_layer_thickness long_name = diurnal thermocline layer thickness @@ -973,7 +866,6 @@ type = real kind = kind_phys intent = in - optional = F [dt_cool] standard_name = molecular_sublayer_temperature_correction_in_sea_water long_name = sub-layer cooling amount @@ -982,7 +874,6 @@ type = real kind = kind_phys intent = in - optional = F [z_c] standard_name = molecular_sublayer_thickness_in_sea_water long_name = sub-layer cooling thickness @@ -991,7 +882,6 @@ type = real kind = kind_phys intent = in - optional = F [tref] standard_name = reference_sea_surface_temperature long_name = reference/foundation temperature @@ -1000,7 +890,6 @@ type = real kind = kind_phys intent = in - optional = F [xlon] standard_name = longitude long_name = longitude @@ -1009,7 +898,6 @@ type = real kind = kind_phys intent = in - optional = F [tsurf_wat] standard_name = surface_skin_temperature_after_iteration_over_water long_name = surface skin temperature after iteration over water @@ -1018,7 +906,6 @@ type = real kind = kind_phys intent = inout - optional = F [tsfc_wat] standard_name = surface_skin_temperature_over_water long_name = surface skin temperature over water @@ -1027,7 +914,6 @@ type = real kind = kind_phys intent = inout - optional = F [nthreads] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available for physics schemes @@ -1035,7 +921,6 @@ dimensions = () type = integer intent = in - optional = F [dtzm] standard_name = mean_change_over_depth_in_sea_water_temperature long_name = mean of dT(z) (zsea1 to zsea2) @@ -1044,7 +929,6 @@ type = real kind = kind_phys intent = out - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1053,7 +937,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1061,4 +944,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_ocean.meta b/physics/sfc_ocean.meta index 67862ef57..85a891644 100644 --- a/physics/sfc_ocean.meta +++ b/physics/sfc_ocean.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -32,7 +30,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -41,7 +38,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -50,7 +46,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -59,7 +54,6 @@ type = real kind = kind_phys intent = in - optional = F [rvrdm1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -68,7 +62,6 @@ type = real kind = kind_phys intent = in - optional = F [ps] standard_name = surface_air_pressure long_name = surface pressure @@ -77,7 +70,6 @@ type = real kind = kind_phys intent = in - optional = F [u1] standard_name = x_wind_at_surface_adjacent_layer long_name = x component of surface layer wind @@ -86,7 +78,6 @@ type = real kind = kind_phys intent = in - optional = F [v1] standard_name = y_wind_at_surface_adjacent_layer long_name = y component of surface layer wind @@ -95,7 +86,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = surface layer mean temperature @@ -104,7 +94,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = surface layer mean specific humidity @@ -113,7 +102,6 @@ type = real kind = kind_phys intent = in - optional = F [tskin] standard_name = surface_skin_temperature_over_water long_name = surface skin temperature over water @@ -122,7 +110,6 @@ type = real kind = kind_phys intent = in - optional = F [cm] standard_name = surface_drag_coefficient_for_momentum_in_air_over_water long_name = surface exchange coeff for momentum over water @@ -131,7 +118,6 @@ type = real kind = kind_phys intent = in - optional = F [ch] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water @@ -140,7 +126,6 @@ type = real kind = kind_phys intent = in - optional = F [lseaspray] standard_name = flag_for_sea_spray long_name = flag for sea spray parameterization @@ -148,7 +133,6 @@ dimensions = () type = logical intent = in - optional = F [fm] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_water long_name = Monin-Obukhov similarity function for momentum over water @@ -157,7 +141,6 @@ type = real kind = kind_phys intent = in - optional = F [fm10] standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_water long_name = Monin-Obukhov similarity parameter for momentum at 10m over water @@ -166,7 +149,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl1] standard_name = air_pressure_at_surface_adjacent_layer long_name = surface layer mean pressure @@ -175,7 +157,6 @@ type = real kind = kind_phys intent = in - optional = F [prslki] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -184,7 +165,6 @@ type = real kind = kind_phys intent = in - optional = F [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction @@ -192,7 +172,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [use_flake] standard_name = flag_for_using_flake long_name = flag indicating lake points using flake model @@ -200,7 +179,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -209,7 +187,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -217,7 +194,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [qsurf] standard_name = surface_specific_humidity_over_water long_name = surface air saturation specific humidity over water @@ -226,7 +202,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmm] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_water long_name = momentum exchange coefficient over water @@ -235,7 +210,6 @@ type = real kind = kind_phys intent = inout - optional = F [chh] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_water long_name = thermal exchange coefficient over water @@ -244,7 +218,6 @@ type = real kind = kind_phys intent = inout - optional = F [gflux] standard_name = upward_heat_flux_in_soil_over_water long_name = soil heat flux over water @@ -253,7 +226,6 @@ type = real kind = kind_phys intent = inout - optional = F [evap] standard_name = kinematic_surface_upward_latent_heat_flux_over_water long_name = kinematic surface upward latent heat flux over water @@ -262,7 +234,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_over_water long_name = kinematic surface upward sensible heat flux over water @@ -271,7 +242,6 @@ type = real kind = kind_phys intent = inout - optional = F [ep] standard_name = surface_upward_potential_latent_heat_flux_over_water long_name = surface upward potential latent heat flux over water @@ -280,7 +250,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -289,7 +258,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -297,4 +265,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/sfc_sice.meta b/physics/sfc_sice.meta index 7d45e7f24..03b303d6f 100644 --- a/physics/sfc_sice.meta +++ b/physics/sfc_sice.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [kice] standard_name = vertical_dimension_of_sea_ice long_name = vertical loop extent for ice levels, start at 1 @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [sbc] standard_name = stefan_boltzmann_constant long_name = Stefan-Boltzmann constant @@ -31,7 +29,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -40,7 +37,6 @@ type = real kind = kind_phys intent = in - optional = F [tgice] standard_name = freezing_point_temperature_of_seawater long_name = freezing point temperature of seawater @@ -49,7 +45,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -58,7 +53,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -67,7 +61,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -76,7 +69,6 @@ type = real kind = kind_phys intent = in - optional = F [rvrdm1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -85,7 +77,6 @@ type = real kind = kind_phys intent = in - optional = F [grav] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -94,7 +85,6 @@ type = real kind = kind_phys intent = in - optional = F [t0c] standard_name = temperature_at_zero_celsius long_name = temperature at 0 degree Celsius @@ -103,7 +93,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -112,7 +101,6 @@ type = real kind = kind_phys intent = in - optional = F [ps] standard_name = surface_air_pressure long_name = surface pressure @@ -121,7 +109,6 @@ type = real kind = kind_phys intent = in - optional = F [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = surface layer mean temperature @@ -130,7 +117,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity_at_surface_adjacent_layer long_name = surface layer mean specific humidity @@ -139,7 +125,6 @@ type = real kind = kind_phys intent = in - optional = F [delt] standard_name = timestep_for_dynamics long_name = time step @@ -148,7 +133,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcemis] standard_name = surface_longwave_emissivity_over_ice_interstitial long_name = surface lw emissivity in fraction over ice (temporary use as interstitial) @@ -157,7 +141,6 @@ type = real kind = kind_phys intent = in - optional = F [dlwflx] standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_ice long_name = total sky surface downward longwave flux absorbed by the ground over ice @@ -166,7 +149,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcnsw] standard_name = surface_net_downwelling_shortwave_flux long_name = total sky sfc netsw flx into ground @@ -175,7 +157,6 @@ type = real kind = kind_phys intent = in - optional = F [sfcdsw] standard_name = surface_downwelling_shortwave_flux long_name = total sky sfc downward sw flux @@ -184,7 +165,6 @@ type = real kind = kind_phys intent = in - optional = F [srflag] standard_name = precipitation_type long_name = snow/rain flag for precipitation @@ -193,7 +173,6 @@ type = real kind = kind_phys intent = in - optional = F [cm] standard_name = surface_drag_coefficient_for_momentum_in_air_over_ice long_name = surface exchange coeff for momentum over ice @@ -202,7 +181,6 @@ type = real kind = kind_phys intent = in - optional = F [ch] standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ice long_name = surface exchange coeff heat & moisture over ice @@ -211,7 +189,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl1] standard_name = air_pressure_at_surface_adjacent_layer long_name = surface layer mean pressure @@ -220,7 +197,6 @@ type = real kind = kind_phys intent = in - optional = F [prslki] standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer long_name = Exner function ratio bt midlayer and interface at 1st layer @@ -229,7 +205,6 @@ type = real kind = kind_phys intent = in - optional = F [prsik1] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at the ground surface @@ -238,7 +213,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk1] standard_name = dimensionless_exner_function_at_surface_adjacent_layer long_name = dimensionless Exner function at the lowest model layer @@ -247,7 +221,6 @@ type = real kind = kind_phys intent = in - optional = F [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -256,7 +229,6 @@ type = real kind = kind_phys intent = in - optional = F [flag_iter] standard_name = flag_for_iteration long_name = flag for iteration @@ -264,7 +236,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [use_flake] standard_name = flag_for_using_flake long_name = flag indicating lake points using flake model @@ -272,7 +243,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in - optional = F [lprnt] standard_name = flag_print long_name = switch for printing sample column to stdout @@ -280,7 +250,6 @@ dimensions = () type = logical intent = in - optional = F [ipr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of printed column @@ -288,7 +257,6 @@ dimensions = () type = integer intent = in - optional = F [thsfc_loc] standard_name = flag_for_reference_pressure_theta long_name = flag for reference pressure in theta calculation @@ -296,7 +264,6 @@ dimensions = () type = logical intent = in - optional = F [hice] standard_name = sea_ice_thickness long_name = sea-ice thickness @@ -305,7 +272,6 @@ type = real kind = kind_phys intent = inout - optional = F [fice] standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = sea-ice concentration [0,1] @@ -314,7 +280,6 @@ type = real kind = kind_phys intent = inout - optional = F [tice] standard_name = sea_ice_temperature long_name = sea ice surface skin temperature @@ -323,7 +288,6 @@ type = real kind = kind_phys intent = inout - optional = F [weasd] standard_name = water_equivalent_accumulated_snow_depth_over_ice long_name = water equiv of acc snow depth over ice @@ -332,7 +296,6 @@ type = real kind = kind_phys intent = inout - optional = F [tskin] standard_name = surface_skin_temperature_over_ice long_name = surface skin temperature over ice @@ -341,7 +304,6 @@ type = real kind = kind_phys intent = inout - optional = F [tprcp] standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_ice long_name = total precipitation amount in each time step over ice @@ -350,7 +312,6 @@ type = real kind = kind_phys intent = inout - optional = F [tiice] standard_name = temperature_in_ice_layer long_name = sea ice internal temperature @@ -359,7 +320,6 @@ type = real kind = kind_phys intent = inout - optional = F [ep] standard_name = surface_upward_potential_latent_heat_flux_over_ice long_name = surface upward potential latent heat flux over ice @@ -368,7 +328,6 @@ type = real kind = kind_phys intent = inout - optional = F [snwdph] standard_name = surface_snow_thickness_water_equivalent_over_ice long_name = water equivalent snow depth over ice @@ -377,7 +336,6 @@ type = real kind = kind_phys intent = inout - optional = F [qsurf] standard_name = surface_specific_humidity_over_ice long_name = surface air saturation specific humidity over ice @@ -386,7 +344,6 @@ type = real kind = kind_phys intent = inout - optional = F [snowmt] standard_name = surface_snow_melt long_name = snow melt during timestep @@ -395,7 +352,6 @@ type = real kind = kind_phys intent = inout - optional = F [gflux] standard_name = upward_heat_flux_in_soil_over_ice long_name = soil heat flux over ice @@ -404,7 +360,6 @@ type = real kind = kind_phys intent = inout - optional = F [cmm] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_ice long_name = momentum exchange coefficient over ice @@ -413,7 +368,6 @@ type = real kind = kind_phys intent = inout - optional = F [chh] standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_ice long_name = thermal exchange coefficient over ice @@ -422,7 +376,6 @@ type = real kind = kind_phys intent = inout - optional = F [evap] standard_name = kinematic_surface_upward_latent_heat_flux_over_ice long_name = kinematic surface upward latent heat flux over ice @@ -431,7 +384,6 @@ type = real kind = kind_phys intent = inout - optional = F [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_over_ice long_name = kinematic surface upward sensible heat flux over ice @@ -440,7 +392,6 @@ type = real kind = kind_phys intent = inout - optional = F [islmsk] standard_name = sea_land_ice_mask_cice long_name = sea/land/ice mask cice (=0/1/2) @@ -448,7 +399,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -457,7 +407,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -465,4 +414,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/shalcnv.meta b/physics/shalcnv.meta index 2db08a9e1..0f91a043a 100644 --- a/physics/shalcnv.meta +++ b/physics/shalcnv.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [shal_cnv] standard_name = flag_for_simplified_arakawa_schubert_shallow_convection long_name = flag for calling shallow convection @@ -22,7 +21,6 @@ dimensions = () type = logical intent = in - optional = F [imfshalcnv] standard_name = control_for_shallow_convection_scheme long_name = flag for mass-flux shallow convection scheme @@ -30,7 +28,6 @@ dimensions = () type = integer intent = in - optional = F [imfshalcnv_sas] standard_name = identifier_for_simplified_arakawa_schubert_shallow_convection long_name = flag for SAS shallow convection scheme @@ -38,7 +35,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -47,7 +43,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -55,7 +50,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -69,7 +63,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -78,7 +71,6 @@ type = real kind = kind_phys intent = in - optional = F [hvap] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -87,7 +79,6 @@ type = real kind = kind_phys intent = in - optional = F [rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -96,7 +87,6 @@ type = real kind = kind_phys intent = in - optional = F [fv] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) @@ -105,7 +95,6 @@ type = real kind = kind_phys intent = in - optional = F [t0c] standard_name = temperature_at_zero_celsius long_name = temperature at 0 degree Celsius @@ -114,7 +103,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -123,7 +111,6 @@ type = real kind = kind_phys intent = in - optional = F [cvap] standard_name = specific_heat_of_water_vapor_at_constant_pressure long_name = specific heat of water vapor at constant pressure @@ -132,7 +119,6 @@ type = real kind = kind_phys intent = in - optional = F [cliq] standard_name = specific_heat_of_liquid_water_at_constant_pressure long_name = specific heat of liquid water at constant pressure @@ -141,7 +127,6 @@ type = real kind = kind_phys intent = in - optional = F [eps] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -150,7 +135,6 @@ type = real kind = kind_phys intent = in - optional = F [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -159,7 +143,6 @@ type = real kind = kind_phys intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -167,7 +150,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -175,7 +157,6 @@ dimensions = () type = integer intent = in - optional = F [jcap] standard_name = number_of_spectral_wave_truncation_for_simplified_arakawa_schubert_convection long_name = number of spectral wave trancation used only by sascnv and shalcnv @@ -183,7 +164,6 @@ dimensions = () type = integer intent = in - optional = F [delt] standard_name = timestep_for_physics long_name = physics timestep @@ -192,7 +172,6 @@ type = real kind = kind_phys intent = in - optional = F [delp] standard_name = air_pressure_difference_between_midlayers long_name = air pressure difference between midlayers @@ -201,7 +180,6 @@ type = real kind = kind_phys intent = in - optional = F [prslp] standard_name = air_pressure long_name = mean layer pressure @@ -210,7 +188,6 @@ type = real kind = kind_phys intent = in - optional = F [psp] standard_name = surface_air_pressure long_name = surface pressure @@ -219,7 +196,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -228,7 +204,6 @@ type = real kind = kind_phys intent = in - optional = F [qlc] standard_name = cloud_condensed_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -237,7 +212,6 @@ type = real kind = kind_phys intent = inout - optional = F [qli] standard_name = ice_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array @@ -246,7 +220,6 @@ type = real kind = kind_phys intent = inout - optional = F [q1] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -255,7 +228,6 @@ type = real kind = kind_phys intent = inout - optional = F [t1] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -264,7 +236,6 @@ type = real kind = kind_phys intent = inout - optional = F [u1] standard_name = x_wind_of_new_state long_name = zonal wind updated by physics @@ -273,7 +244,6 @@ type = real kind = kind_phys intent = inout - optional = F [v1] standard_name = y_wind_of_new_state long_name = meridional wind updated by physics @@ -282,7 +252,6 @@ type = real kind = kind_phys intent = inout - optional = F [rn] standard_name = lwe_thickness_of_shallow_convective_precipitation_amount long_name = shallow convective rainfall amount on physics timestep @@ -291,7 +260,6 @@ type = real kind = kind_phys intent = out - optional = F [kbot] standard_name = vertical_index_at_cloud_base long_name = index for cloud base @@ -299,7 +267,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [ktop] standard_name = vertical_index_at_cloud_top long_name = index for cloud top @@ -307,7 +274,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [kcnv] standard_name = flag_deep_convection long_name = deep convection: 0=no, 1=yes @@ -315,7 +281,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout - optional = F [islimsk] standard_name = sea_land_ice_mask long_name = landmask: sea/land/ice=0/1/2 @@ -323,7 +288,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [dot] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -332,7 +296,6 @@ type = real kind = kind_phys intent = in - optional = F [ncloud] standard_name = number_of_condensate_species long_name = number of cloud condensate types @@ -340,7 +303,6 @@ dimensions = () type = integer intent = in - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = pbl height @@ -349,7 +311,6 @@ type = real kind = kind_phys intent = in - optional = F [heat] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -358,7 +319,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -367,7 +327,6 @@ type = real kind = kind_phys intent = in - optional = F [ud_mf] standard_name = instantaneous_atmosphere_updraft_convective_mass_flux long_name = (updraft mass flux) * delt @@ -376,7 +335,6 @@ type = real kind = kind_phys intent = out - optional = F [dt_mf] standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux long_name = (detrainment mass flux) * delt @@ -385,7 +343,6 @@ type = real kind = kind_phys intent = out - optional = F [cnvw] standard_name = convective_cloud_water_mixing_ratio long_name = moist convective cloud water mixing ratio @@ -394,7 +351,6 @@ type = real kind = kind_phys intent = inout - optional = F [cnvc] standard_name = convective_cloud_cover long_name = convective cloud cover @@ -403,7 +359,6 @@ type = real kind = kind_phys intent = inout - optional = F [clam] standard_name = entrainment_rate_coefficient_for_shallow_convection long_name = entrainment rate coefficient for shallow convection @@ -412,7 +367,6 @@ type = real kind = kind_phys intent = in - optional = F [c0] standard_name = rain_conversion_parameter_for_shallow_convection long_name = convective rain conversion parameter for shallow convection @@ -421,7 +375,6 @@ type = real kind = kind_phys intent = in - optional = F [c1] standard_name = detrainment_conversion_parameter_for_shallow_convection long_name = convective detrainment conversion parameter for shallow convection @@ -430,7 +383,6 @@ type = real kind = kind_phys intent = in - optional = F [pgcon] standard_name = momentum_transport_reduction_factor_due_to_pressure_gradient_force_for_shallow_convection long_name = reduction factor in momentum transport due to shallow convection induced pressure gradient force @@ -439,7 +391,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -448,7 +399,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -456,4 +406,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/shinhongvdif.meta b/physics/shinhongvdif.meta index 920ddd7f1..fc0940b38 100644 --- a/physics/shinhongvdif.meta +++ b/physics/shinhongvdif.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [ux] standard_name = x_wind long_name = x component of layer wind @@ -61,7 +56,6 @@ type = real kind = kind_phys intent = in - optional = F [vx] standard_name = y_wind long_name = y component of layer wind @@ -70,7 +64,6 @@ type = real kind = kind_phys intent = in - optional = F [tx] standard_name = air_temperature long_name = layer mean air temperature @@ -79,7 +72,6 @@ type = real kind = kind_phys intent = in - optional = F [qx] standard_name = tracer_concentration long_name = model layer mean tracer concentration @@ -88,7 +80,6 @@ type = real kind = kind_phys intent = in - optional = F [p2d] standard_name = air_pressure long_name = mean layer pressure @@ -97,7 +88,6 @@ type = real kind = kind_phys intent = in - optional = F [p2di] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -106,7 +96,6 @@ type = real kind = kind_phys intent = in - optional = F [pi2d] standard_name = dimensionless_exner_function long_name = Exner function at layers @@ -115,7 +104,6 @@ type = real kind = kind_phys intent = in - optional = F [karman] standard_name = von_karman_constant long_name = von karman constant @@ -123,7 +111,6 @@ dimensions = () type = real intent = in - optional = F [utnp] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind @@ -132,7 +119,6 @@ type = real kind = kind_phys intent = inout - optional = F [vtnp] standard_name = process_split_cumulative_tendency_of_y_wind long_name = updated tendency of the y wind @@ -141,7 +127,6 @@ type = real kind = kind_phys intent = inout - optional = F [ttnp] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -150,7 +135,6 @@ type = real kind = kind_phys intent = inout - optional = F [qtnp] standard_name = process_split_cumulative_tendency_of_tracers long_name = updated tendency of the tracers due to model physics @@ -159,7 +143,6 @@ type = real kind = kind_phys intent = inout - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -167,7 +150,6 @@ dimensions = () type = integer intent = in - optional = F [ndiff] standard_name = number_of_vertical_diffusion_tracers long_name = number of tracers to diffuse vertically @@ -175,7 +157,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -183,7 +164,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -191,7 +171,6 @@ dimensions = () type = integer intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -200,7 +179,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -209,7 +187,6 @@ type = real kind = kind_phys intent = in - optional = F [psfcpa] standard_name = surface_air_pressure long_name = surface pressure @@ -218,7 +195,6 @@ type = real kind = kind_phys intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length in cm @@ -227,7 +203,6 @@ type = real kind = kind_phys intent = in - optional = F [stress] standard_name = surface_wind_stress long_name = surface wind stress @@ -236,7 +211,6 @@ type = real kind = kind_phys intent = in - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -245,7 +219,6 @@ type = real kind = kind_phys intent = out - optional = F [psim] standard_name = Monin_Obukhov_similarity_function_for_momentum long_name = Monin-Obukhov similarity function for momentum @@ -254,7 +227,6 @@ type = real kind = kind_phys intent = in - optional = F [psih] standard_name = Monin_Obukhov_similarity_function_for_heat long_name = Monin-Obukhov similarity function for heat @@ -263,7 +235,6 @@ type = real kind = kind_phys intent = in - optional = F [landmask] standard_name = sea_land_ice_mask long_name = landmask: sea/land/ice=0/1/2 @@ -271,7 +242,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [heat] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -280,7 +250,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -289,7 +258,6 @@ type = real kind = kind_phys intent = in - optional = F [wspd] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -298,7 +266,6 @@ type = real kind = kind_phys intent = in - optional = F [br] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -307,7 +274,6 @@ type = real kind = kind_phys intent = in - optional = F [g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -316,7 +282,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -325,7 +290,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -334,7 +298,6 @@ type = real kind = kind_phys intent = in - optional = F [rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -343,7 +306,6 @@ type = real kind = kind_phys intent = in - optional = F [ep1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -352,7 +314,6 @@ type = real kind = kind_phys intent = in - optional = F [ep2] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -361,7 +322,6 @@ type = real kind = kind_phys intent = in - optional = F [xlv] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -370,7 +330,6 @@ type = real kind = kind_phys intent = in - optional = F [dusfc] standard_name = instantaneous_surface_x_momentum_flux long_name = x momentum flux @@ -379,7 +338,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc] standard_name = instantaneous_surface_y_momentum_flux long_name = y momentum flux @@ -388,7 +346,6 @@ type = real kind = kind_phys intent = out - optional = F [dtsfc] standard_name = instantaneous_surface_upward_sensible_heat_flux long_name = surface upward sensible heat flux @@ -397,7 +354,6 @@ type = real kind = kind_phys intent = out - optional = F [dqsfc] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux @@ -406,7 +362,6 @@ type = real kind = kind_phys intent = out - optional = F [dt] standard_name = timestep_for_physics long_name = time step for physics @@ -415,7 +370,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl1d] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = PBL top model level index @@ -423,7 +377,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [u10] standard_name = x_wind_at_10m long_name = x component of wind at 10 m @@ -432,7 +385,6 @@ type = real kind = kind_phys intent = in - optional = F [v10] standard_name = y_wind_at_10m long_name = y component of wind at 10 m @@ -441,7 +393,6 @@ type = real kind = kind_phys intent = in - optional = F [dx] standard_name = characteristic_grid_lengthscale long_name = size of the grid cell @@ -450,7 +401,6 @@ type = real kind = kind_phys intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -479,7 +429,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -487,7 +436,6 @@ dimensions = () type = integer intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -496,7 +444,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -504,7 +451,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_process_pbl] standard_name = index_of_subgrid_scale_vertical_mixing_process_in_cumulative_change_index long_name = index of subgrid scale vertical mixing process in second dimension of array cumulative change index @@ -512,7 +458,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -520,7 +465,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -528,7 +472,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -536,7 +479,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -545,7 +487,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -553,4 +494,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/ugwpv1_gsldrag.meta b/physics/ugwpv1_gsldrag.meta index 8b48abc0b..61daefe0c 100644 --- a/physics/ugwpv1_gsldrag.meta +++ b/physics/ugwpv1_gsldrag.meta @@ -15,7 +15,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = MPI rank of master process @@ -23,7 +22,6 @@ dimensions = () type = integer intent = in - optional = F [nlunit] standard_name = iounit_of_namelist long_name = fortran unit number for opening namelist file @@ -31,7 +29,6 @@ dimensions = () type = integer intent = in - optional = F [input_nml_file] standard_name = filename_of_internal_namelist long_name = character string to store full namelist contents @@ -40,7 +37,6 @@ type = character kind = len=* intent = in - optional = F [logunit] standard_name = iounit_of_log long_name = fortran unit number for writing logfile @@ -48,7 +44,6 @@ dimensions = () type = integer intent = in - optional = F [fn_nml2] standard_name = filename_of_namelist long_name = namelist filename for ugwp @@ -57,7 +52,6 @@ type = character kind = len=* intent = in - optional = F [jdat] standard_name = date_and_time_of_forecast_in_united_states_order long_name = current forecast date and time @@ -65,7 +59,6 @@ dimensions = (8) type = integer intent = in - optional = F [lonr] standard_name = number_of_equatorial_longitude_points long_name = number of global points in x-dir (i) along the equator @@ -73,7 +66,6 @@ dimensions = () type = integer intent = in - optional = F [latr] standard_name = number_of_latitude_points long_name = number of global points in y-dir (j) along the meridian @@ -81,7 +73,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -89,7 +80,6 @@ dimensions = () type = integer intent = in - optional = F [ak] standard_name = sigma_pressure_hybrid_coordinate_a_coefficient long_name = a parameter for sigma pressure level calculations @@ -98,7 +88,6 @@ type = real kind = kind_phys intent = in - optional = F [bk] standard_name = sigma_pressure_hybrid_coordinate_b_coefficient long_name = b parameter for sigma pressure level calculations @@ -107,7 +96,6 @@ type = real kind = kind_phys intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -116,7 +104,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -125,7 +112,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rerth] standard_name = radius_of_earth long_name = radius of earth @@ -134,7 +120,6 @@ type = real kind = kind_phys intent = in - optional = F [con_p0] standard_name = standard_atmospheric_pressure long_name = standard atmospheric pressure @@ -143,7 +128,6 @@ type = real kind = kind_phys intent = in - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -152,7 +136,6 @@ type = real kind = kind_phys intent = in - optional = F [con_omega] standard_name = angular_velocity_of_earth long_name = angular velocity of earth @@ -161,7 +144,6 @@ type = real kind = kind_phys intent = in - optional = F [con_cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat !of dry air at constant pressure @@ -170,7 +152,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -179,7 +160,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -188,7 +168,6 @@ type = real kind = kind_phys intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -197,7 +176,6 @@ type = real kind = kind_phys intent = in - optional = F [do_ugwp] standard_name = flag_for_unified_gravity_wave_physics_gravity_wave_drag_scheme long_name = flag to activate CIRES UGWP @@ -205,7 +183,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v0] standard_name = flag_for_ugwp_version_0 long_name = flag to activate ver 0 CIRES UGWP @@ -213,7 +190,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v0_orog_only] standard_name = flag_for_ugwp_version_0_orographic_gwd long_name = flag to activate ver 0 CIRES UGWP - orographic GWD only @@ -221,7 +197,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_ls_bl] standard_name = flag_for_gsl_drag_suite_large_scale_orographic_and_blocking_drag long_name = flag to activate GSL drag suite - large-scale GWD and blocking @@ -229,7 +204,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_ss] standard_name = flag_for_gsl_drag_suite_small_scale_orographic_drag long_name = flag to activate GSL drag suite - small-scale GWD @@ -237,7 +211,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_tofd] standard_name = flag_for_gsl_drag_suite_turbulent_orographic_form_drag long_name = flag to activate GSL drag suite - turb orog form drag @@ -245,7 +218,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v1] standard_name = flag_for_ugwp_version_1 long_name = flag to activate ver 1 CIRES UGWP @@ -253,7 +225,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v1_orog_only] standard_name = flag_for_ugwp_version_1_orographic_gwd long_name = flag to activate ver 1 CIRES UGWP - orographic GWD only @@ -261,7 +232,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v1_w_gsldrag] standard_name = flag_for_ugwp_version_1_nonorographic_gwd long_name = flag to activate ver 1 CIRES UGWP - with OGWD of GSL @@ -269,7 +239,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -278,7 +247,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -286,7 +254,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -300,7 +267,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -308,7 +274,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -321,7 +286,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = MPI rank of master process @@ -329,7 +293,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal @@ -337,7 +300,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -345,7 +307,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -353,7 +314,6 @@ dimensions = () type = integer intent = in - optional = F [lonr] standard_name = number_of_equatorial_longitude_points long_name = number of global points in x-dir (i) along the equator @@ -361,7 +321,6 @@ dimensions = () type = integer intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -370,7 +329,6 @@ type = real kind = kind_phys intent = in - optional = F [fhzero] standard_name = period_of_diagnostics_reset long_name = hours between clearing of diagnostic buckets @@ -379,7 +337,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -387,7 +344,6 @@ dimensions = () type = integer intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -395,7 +351,6 @@ dimensions = () type = logical intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -403,7 +358,6 @@ dimensions = () type = logical intent = in - optional = F [flag_for_gwd_generic_tend] standard_name = flag_for_generic_tendency_due_to_gravity_wave_drag long_name = true if GFS_GWD_generic should calculate tendencies @@ -411,7 +365,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_ls_bl] standard_name = flag_for_gsl_drag_suite_large_scale_orographic_and_blocking_drag long_name = flag to activate GSL drag suite - large-scale GWD and blocking @@ -419,7 +372,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_ss] standard_name = flag_for_gsl_drag_suite_small_scale_orographic_drag long_name = flag to activate GSL drag suite - small-scale GWD @@ -427,7 +379,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_tofd] standard_name = flag_for_gsl_drag_suite_turbulent_orographic_form_drag long_name = flag to activate GSL drag suite - turb orog form drag @@ -435,7 +386,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v1] standard_name = flag_for_ugwp_version_1 long_name = flag to activate ver 1 CIRES UGWP @@ -443,7 +393,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v1_orog_only] standard_name = flag_for_ugwp_version_1_orographic_gwd long_name = flag to activate ver 1 CIRES UGWP - orographic GWD only @@ -451,7 +400,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v1_w_gsldrag] standard_name = flag_for_ugwp_version_1_nonorographic_gwd long_name = flag to activate ver 1 CIRES UGWP - with OGWD of GSL @@ -459,7 +407,6 @@ dimensions = () type = logical intent = in - optional = F [gwd_opt] standard_name = control_for_drag_suite_gravity_wave_drag long_name = flag to choose gwd scheme @@ -467,7 +414,6 @@ dimensions = () type = integer intent = in - optional = F [do_tofd] standard_name = flag_for_turbulent_orographic_form_drag_in_unified_gravity_wave_physics_gravitiy_wave_drag_scheme long_name = flag for turbulent orographic form drag @@ -475,7 +421,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag_ugwp] standard_name = flag_for_unified_gravity_wave_physics_diagnostics long_name = flag for CIRES UGWP Diagnostics @@ -483,7 +428,6 @@ dimensions = () type = logical intent = in - optional = F [cdmbgwd] standard_name = multiplicative_tunable_parameters_for_mountain_blocking_and_orographic_gravity_wave_drag long_name = multiplication factors for cdmb and gwd @@ -492,7 +436,6 @@ type = real kind = kind_phys intent = in - optional = F [jdat] standard_name = date_and_time_of_forecast_in_united_states_order long_name = current forecast date and time @@ -500,7 +443,6 @@ dimensions = (8) type = integer intent = in - optional = F [nmtvr] standard_name = number_of_statistical_measures_of_subgrid_orography long_name = number of topographic variables in GWD @@ -508,7 +450,6 @@ dimensions = () type = integer intent = in - optional = F [hprime] standard_name = standard_deviation_of_subgrid_orography long_name = standard deviation of subgrid height_above_mean_sea_level @@ -517,7 +458,6 @@ type = real kind = kind_phys intent = in - optional = F [oc] standard_name = convexity_of_subgrid_orography long_name = convexity of subgrid height_above_mean_sea_level @@ -526,7 +466,6 @@ type = real kind = kind_phys intent = in - optional = F [theta] standard_name = angle_from_east_of_maximum_subgrid_orographic_variations long_name = angle with_respect to east of maximum subgrid orographic variations @@ -535,7 +474,6 @@ type = real kind = kind_phys intent = in - optional = F [sigma] standard_name = slope_of_subgrid_orography long_name = slope of subgrid height_above_mean_sea_level @@ -544,7 +482,6 @@ type = real kind = kind_phys intent = in - optional = F [gamma] standard_name = anisotropy_of_subgrid_orography long_name = anisotropy of subgrid height_above_mean_sea_level @@ -553,7 +490,6 @@ type = real kind = kind_phys intent = in - optional = F [elvmax] standard_name = maximum_subgrid_orography long_name = maximum of subgrid height_above_mean_sea_level @@ -562,7 +498,6 @@ type = real kind = kind_phys intent = in - optional = F [clx] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height long_name = horizontal fraction of grid box covered by subgrid height_above_mean_sea_level higher than critical height @@ -571,7 +506,6 @@ type = real kind = kind_phys intent = in - optional = F [oa4] standard_name = asymmetry_of_subgrid_orography long_name = asymmetry of subgrid height_above_mean_sea_level @@ -580,7 +514,6 @@ type = real kind = kind_phys intent = in - optional = F [varss] standard_name = standard_deviation_of_subgrid_orography_small_scale long_name = standard deviation of subgrid height_above_mean_sea_level small scale @@ -589,7 +522,6 @@ type = real kind = kind_phys intent = in - optional = F [oc1ss] standard_name = convexity_of_subgrid_orography_small_scale long_name = convexity of subgrid height_above_mean_sea_level small scale @@ -598,7 +530,6 @@ type = real kind = kind_phys intent = in - optional = F [oa4ss] standard_name = asymmetry_of_subgrid_orography_small_scale long_name = asymmetry of subgrid height_above_mean_sea_level small scale @@ -607,7 +538,6 @@ type = real kind = kind_phys intent = in - optional = F [ol4ss] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height_small_scale long_name = horizontal fraction of grid box covered by sso higher than critical height small scale @@ -616,7 +546,6 @@ type = real kind = kind_phys intent = in - optional = F [dx] standard_name = characteristic_grid_lengthscale long_name = size of the grid cell @@ -625,7 +554,6 @@ type = real kind = kind_phys intent = in - optional = F [xlat] standard_name = latitude long_name = grid latitude @@ -634,7 +562,6 @@ type = real kind = kind_phys intent = in - optional = F [xlat_d] standard_name = latitude_in_degree long_name = latitude in degree north @@ -643,7 +570,6 @@ type = real kind = kind_phys intent = in - optional = F [sinlat] standard_name = sine_of_latitude long_name = sine of the grid latitude @@ -652,7 +578,6 @@ type = real kind = kind_phys intent = in - optional = F [coslat] standard_name = cosine_of_latitude long_name = cosine of the grid latitude @@ -661,7 +586,6 @@ type = real kind = kind_phys intent = in - optional = F [area] standard_name = cell_area long_name = area of the grid cell @@ -670,7 +594,6 @@ type = real kind = kind_phys intent = in - optional = F [rain] standard_name = lwe_thickness_of_precipitation_amount_on_dynamics_timestep long_name = total rain at this time step @@ -679,7 +602,6 @@ type = real kind = kind_phys intent = in - optional = F [br1] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -688,7 +610,6 @@ type = real kind = kind_phys intent = in - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -697,7 +618,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = vertical index at top atmospheric boundary layer @@ -705,7 +625,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -714,7 +633,6 @@ type = real kind = kind_phys intent = in - optional = F [ugrs] standard_name = x_wind long_name = zonal wind @@ -723,7 +641,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs] standard_name = y_wind long_name = meridional wind @@ -732,7 +649,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -741,7 +657,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity long_name = mid-layer specific humidity of water vapor @@ -750,7 +665,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -759,7 +673,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -768,7 +681,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers @@ -777,7 +689,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -786,7 +697,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -795,7 +705,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = air pressure difference between midlayers @@ -804,7 +713,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_amf] standard_name = absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag long_name = ngw_absolute_momentum_flux @@ -813,7 +721,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt_ogw] standard_name = tendency_of_x_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = x momentum tendency from meso scale ogw @@ -822,7 +729,6 @@ type = real kind = kind_phys intent = out - optional = F [dvdt_ogw] standard_name = tendency_of_y_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = y momentum tendency from meso scale ogw @@ -831,7 +737,6 @@ type = real kind = kind_phys intent = out - optional = F [du_ogwcol] standard_name = vertically_integrated_x_momentum_flux_due_to_mesoscale_orographic_gravity_wave_drag long_name = integrated x momentum flux from meso scale ogw @@ -840,7 +745,6 @@ type = real kind = kind_phys intent = out - optional = F [dv_ogwcol] standard_name = vertically_integrated_y_momentum_flux_due_to_mesoscale_orographic_gravity_wave_drag long_name = integrated y momentum flux from meso scale ogw @@ -849,7 +753,6 @@ type = real kind = kind_phys intent = out - optional = F [dudt_obl] standard_name = tendency_of_x_momentum_due_to_blocking_drag long_name = x momentum tendency from blocking drag @@ -858,7 +761,6 @@ type = real kind = kind_phys intent = out - optional = F [dvdt_obl] standard_name = tendency_of_y_momentum_due_to_blocking_drag long_name = y momentum tendency from blocking drag @@ -867,7 +769,6 @@ type = real kind = kind_phys intent = out - optional = F [du_oblcol] standard_name = vertically_integrated_x_momentum_flux_due_to_blocking_drag long_name = integrated x momentum flux from blocking drag @@ -876,7 +777,6 @@ type = real kind = kind_phys intent = out - optional = F [dv_oblcol] standard_name = vertically_integrated_y_momentum_flux_due_to_blocking_drag long_name = integrated y momentum flux from blocking drag @@ -885,7 +785,6 @@ type = real kind = kind_phys intent = out - optional = F [dudt_oss] standard_name = tendency_of_x_momentum_due_to_small_scale_gravity_wave_drag long_name = x momentum tendency from small scale gwd @@ -894,7 +793,6 @@ type = real kind = kind_phys intent = out - optional = F [dvdt_oss] standard_name = tendency_of_y_momentum_due_to_small_scale_gravity_wave_drag long_name = y momentum tendency from small scale gwd @@ -903,7 +801,6 @@ type = real kind = kind_phys intent = out - optional = F [du_osscol] standard_name = vertically_integrated_x_momentum_flux_due_to_small_scale_gravity_wave_drag long_name = integrated x momentum flux from small scale gwd @@ -912,7 +809,6 @@ type = real kind = kind_phys intent = out - optional = F [dv_osscol] standard_name = vertically_integrated_y_momentum_flux_due_to_small_scale_gravity_wave_drag long_name = integrated y momentum flux from small scale gwd @@ -921,7 +817,6 @@ type = real kind = kind_phys intent = out - optional = F [dudt_ofd] standard_name = tendency_of_x_momentum_due_to_form_drag long_name = x momentum tendency from form drag @@ -930,7 +825,6 @@ type = real kind = kind_phys intent = out - optional = F [dvdt_ofd] standard_name = tendency_of_y_momentum_due_to_form_drag long_name = y momentum tendency from form drag @@ -939,7 +833,6 @@ type = real kind = kind_phys intent = out - optional = F [du_ofdcol] standard_name = vertically_integrated_x_momentum_flux_due_to_form_drag long_name = integrated x momentum flux from form drag @@ -948,7 +841,6 @@ type = real kind = kind_phys intent = out - optional = F [dv_ofdcol] standard_name = vertically_integrated_y_momentum_flux_due_to_form_drag long_name = integrated y momentum flux from form drag @@ -957,7 +849,6 @@ type = real kind = kind_phys intent = out - optional = F [dudt_ngw] standard_name = tendency_of_x_wind_due_to_nonorographic_gravity_wave_drag long_name = zonal wind tendency due to non-stationary GWs @@ -966,7 +857,6 @@ type = real kind = kind_phys intent = out - optional = F [dvdt_ngw] standard_name = tendency_of_y_wind_due_to_nonorographic_gravity_wave_drag long_name = meridional wind tendency due to non-stationary GWs @@ -975,7 +865,6 @@ type = real kind = kind_phys intent = out - optional = F [dtdt_ngw] standard_name = tendency_of_air_temperature_due_to_nonorographic_gravity_wave_drag long_name = air temperature tendency due to non-stationary GWs @@ -984,7 +873,6 @@ type = real kind = kind_phys intent = out - optional = F [kdis_ngw] standard_name = atmosphere_momentum_diffusivity_due_to_nonorographic_gravity_wave_drag long_name = eddy mixing due to non-stationary GWs @@ -993,7 +881,6 @@ type = real kind = kind_phys intent = out - optional = F [dudt_gw] standard_name = tendency_of_x_wind_due_to_gravity_wave_drag long_name = zonal wind tendency due to all GWs @@ -1002,7 +889,6 @@ type = real kind = kind_phys intent = out - optional = F [dvdt_gw] standard_name = tendency_of_y_wind_due_to_gravity_wave_drag long_name = meridional wind tendency due to all GWs @@ -1011,7 +897,6 @@ type = real kind = kind_phys intent = out - optional = F [dtdt_gw] standard_name = tendency_of_air_temperature_due_to_gravity_wave_drag long_name = air temperature tendency due to all GWs @@ -1020,7 +905,6 @@ type = real kind = kind_phys intent = out - optional = F [kdis_gw] standard_name = atmosphere_momentum_diffusivity_due_to_gravity_wave_drag long_name = eddy mixing due to all GWs @@ -1029,7 +913,6 @@ type = real kind = kind_phys intent = out - optional = F [tau_ogw] standard_name = instantaneous_momentum_flux_due_to_orographic_gravity_wave_drag long_name = momentum flux or stress due to orographic gravity wave drag @@ -1038,7 +921,6 @@ type = real kind = kind_phys intent = out - optional = F [tau_ngw] standard_name = instantaneous_momentum_flux_due_to_nonstationary_gravity_wave long_name = momentum flux or stress due to nonstationary gravity waves @@ -1047,7 +929,6 @@ type = real kind = kind_phys intent = out - optional = F [tau_oss] standard_name = momentum_flux_due_to_subgrid_scale_orographic_gravity_wave_drag long_name = momentum flux or stress due to SSO including OBL-OSS-OFD @@ -1056,7 +937,6 @@ type = real kind = kind_phys intent = out - optional = F [zogw] standard_name = height_of_launch_level_of_orographic_gravity_wave long_name = height of launch level of orographic gravity waves @@ -1065,7 +945,6 @@ type = real kind = kind_phys intent = out - optional = F [zlwb] standard_name = height_of_low_level_wave_breaking long_name = height of low level wave breaking for OGWs @@ -1074,7 +953,6 @@ type = real kind = kind_phys intent = out - optional = F [zobl] standard_name = height_of_mountain_blocking long_name = height of mountain blocking drag_v1 @@ -1083,7 +961,6 @@ type = real kind = kind_phys intent = out - optional = F [zngw] standard_name = height_of_launch_level_of_nonorographic_gravity_waves long_name = height of launch level of non-stationary GWs @@ -1092,7 +969,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfcg] standard_name = instantaneous_x_stress_due_to_gravity_wave_drag long_name = zonal surface stress due to orographic gravity wave drag @@ -1101,7 +977,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfcg] standard_name = instantaneous_y_stress_due_to_gravity_wave_drag long_name = meridional surface stress due to orographic gravity wave drag @@ -1110,9 +985,7 @@ type = real kind = kind_phys intent = out - optional = F intent = out - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics @@ -1121,7 +994,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics @@ -1130,7 +1002,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = air temperature tendency due to model physics @@ -1139,7 +1010,6 @@ type = real kind = kind_phys intent = inout - optional = F [rdxzb] standard_name = level_of_dividing_streamline long_name = level of the dividing streamline @@ -1148,7 +1018,6 @@ type = real kind = kind_phys intent = out - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -1157,7 +1026,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -1165,7 +1033,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -1173,7 +1040,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -1181,7 +1047,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -1189,7 +1054,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_orographic_gwd] standard_name = index_of_orographic_gravity_wave_drag_process_in_cumulative_change_index long_name = index of orographic gravity wave drag process in second dimension of array cumulative change index @@ -1197,7 +1061,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_nonorographic_gwd] standard_name = index_of_nonorographic_gravity_wave_drag_process_in_cumulative_change_index long_name = index of nonorographic gravity wave drag process in second dimension of array cumulative change index @@ -1205,7 +1068,6 @@ dimensions = () type = integer intent = in - optional = F [lprnt] standard_name = flag_print long_name = control flag for diagnostic print out @@ -1213,7 +1075,6 @@ dimensions = () type = logical intent = in - optional = F [ipr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of printed column @@ -1221,7 +1082,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1230,7 +1090,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1238,6 +1097,5 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/ugwpv1_gsldrag_post.meta b/physics/ugwpv1_gsldrag_post.meta index 8b0716e8e..2021fdb42 100644 --- a/physics/ugwpv1_gsldrag_post.meta +++ b/physics/ugwpv1_gsldrag_post.meta @@ -14,7 +14,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -22,7 +21,6 @@ dimensions = () type = integer intent = in - optional = F [ldiag_ugwp] standard_name = flag_for_unified_gravity_wave_physics_diagnostics long_name = flag for CIRES UGWP Diagnostics @@ -30,7 +28,6 @@ dimensions = () type = logical intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -39,7 +36,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt_gw] standard_name = tendency_of_x_wind_due_to_gravity_wave_drag long_name = zonal wind tendency due to all GWs @@ -48,7 +44,6 @@ type = real kind = kind_phys intent = in - optional = F [dvdt_gw] standard_name = tendency_of_y_wind_due_to_gravity_wave_drag long_name = meridional wind tendency due to all GWs @@ -57,7 +52,6 @@ type = real kind = kind_phys intent = in - optional = F [dtdt_gw] standard_name = tendency_of_air_temperature_due_to_gravity_wave_drag long_name = air temperature tendency due to all GWs @@ -66,7 +60,6 @@ type = real kind = kind_phys intent = in - optional = F [du_ofdcol] standard_name = vertically_integrated_x_momentum_flux_due_to_form_drag long_name = integrated x momentum flux from form drag @@ -75,7 +68,6 @@ type = real kind = kind_phys intent = in - optional = F [du_oblcol] standard_name = vertically_integrated_x_momentum_flux_due_to_blocking_drag long_name = integrated x momentum flux from blocking drag @@ -84,7 +76,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_ogw] standard_name = instantaneous_momentum_flux_due_to_orographic_gravity_wave_drag long_name = momentum flux or stress due to orographic gravity wave drag @@ -93,7 +84,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_ngw] standard_name = instantaneous_momentum_flux_due_to_nonstationary_gravity_wave long_name = momentum flux or stress due to nonstationary gravity waves @@ -102,7 +92,6 @@ type = real kind = kind_phys intent = in - optional = F [zobl] standard_name = height_of_mountain_blocking long_name = height of mountain blocking drag_v1 @@ -111,7 +100,6 @@ type = real kind = kind_phys intent = in - optional = F [zlwb] standard_name = height_of_low_level_wave_breaking long_name = height of low level wave breaking for OGWs @@ -128,7 +116,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt_obl] standard_name = tendency_of_x_momentum_due_to_blocking_drag long_name = x momentum tendency from blocking drag @@ -137,7 +124,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt_ofd] standard_name = tendency_of_x_momentum_due_to_form_drag long_name = x momentum tendency from form drag @@ -146,7 +132,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt_ogw] standard_name = tendency_of_x_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = x momentum tendency from meso scale ogw @@ -155,7 +140,6 @@ type = real kind = kind_phys intent = in - optional = F [tot_zmtb] standard_name = time_integral_of_height_of_mountain_blocking long_name = time integral of height of mountain blocking drag @@ -164,7 +148,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_zlwb] standard_name = time_integral_of_height_of_low_level_wave_breaking long_name = time integral of height of drag due to low level wave breaking @@ -173,7 +156,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_zogw] standard_name = time_integral_of_height_of_launch_level_of_orographic_gravity_wave long_name = time integral of height of launch level of orographic gravity wave @@ -182,7 +164,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_tofd] standard_name = time_integral_of_momentum_flux_due_to_turbulent_orographic_form_drag long_name = time integral of momentum flux due to TOFD @@ -191,7 +172,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_mtb] standard_name = time_integral_of_momentum_flux_due_to_mountain_blocking_drag long_name = time integral of momentum flux due to mountain blocking drag @@ -200,7 +180,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_ogw] standard_name = time_integral_of_momentum_flux_due_to_orographic_gravity_wave_drag long_name = time integral of momentum flux due to orographic gravity wave drag @@ -209,7 +188,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_ngw] standard_name = time_integral_of_momentum_flux_due_to_nonstationary_gravity_wave long_name = time integral of momentum flux due to nonstationary gravity waves @@ -218,7 +196,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_mtb] standard_name = time_integral_of_change_in_x_wind_due_to_mountain_blocking_drag long_name = time integral of change in x wind due to mountain blocking drag @@ -227,7 +204,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_ogw] standard_name = time_integral_of_change_in_x_wind_due_to_orographic_gravity_wave_drag long_name = time integral of change in x wind due to orographic gw drag @@ -236,7 +212,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_tms] standard_name = time_integral_of_change_in_x_wind_due_to_turbulent_orographic_form_drag long_name = time integral of change in x wind due to TOFD @@ -245,7 +220,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_ngw] standard_name = time_integral_of_change_in_x_wind_due_to_nonstationary_gravity_wave long_name = time integral of change in x wind due to NGW @@ -254,7 +228,6 @@ type = real kind = kind_phys intent = inout - optional = F [dv3dt_ngw] standard_name = time_integral_of_change_in_y_wind_due_to_nonstationary_gravity_wave long_name = time integral of change in y wind due to NGW @@ -263,7 +236,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = air temperature tendency due to model physics @@ -272,7 +244,6 @@ type = real kind = kind_phys intent = inout - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics @@ -281,7 +252,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics @@ -290,7 +260,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -299,7 +268,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -307,4 +275,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/unified_ugwp.meta b/physics/unified_ugwp.meta index b2f35e45f..976708540 100644 --- a/physics/unified_ugwp.meta +++ b/physics/unified_ugwp.meta @@ -17,7 +17,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = MPI rank of master process @@ -25,7 +24,6 @@ dimensions = () type = integer intent = in - optional = F [nlunit] standard_name = iounit_of_namelist long_name = fortran unit number for opening namelist file @@ -33,7 +31,6 @@ dimensions = () type = integer intent = in - optional = F [input_nml_file] standard_name = filename_of_internal_namelist long_name = character string to store full namelist contents @@ -42,7 +39,6 @@ type = character kind = len=* intent = in - optional = F [logunit] standard_name = iounit_of_log long_name = fortran unit number for writing logfile @@ -50,7 +46,6 @@ dimensions = () type = integer intent = in - optional = F [fn_nml2] standard_name = filename_of_namelist long_name = namelist filename for ugwp @@ -59,7 +54,6 @@ type = character kind = len=* intent = in - optional = F [jdat] standard_name = date_and_time_of_forecast_in_united_states_order long_name = current forecast date and time @@ -67,7 +61,6 @@ dimensions = (8) type = integer intent = in - optional = F [lonr] standard_name = number_of_equatorial_longitude_points long_name = number of global points in x-dir (i) along the equator @@ -75,7 +68,6 @@ dimensions = () type = integer intent = in - optional = F [latr] standard_name = number_of_latitude_points long_name = number of global points in y-dir (j) along the meridian @@ -83,7 +75,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -91,7 +82,6 @@ dimensions = () type = integer intent = in - optional = F [ak] standard_name = sigma_pressure_hybrid_coordinate_a_coefficient long_name = a parameter for sigma pressure level calculations @@ -100,7 +90,6 @@ type = real kind = kind_phys intent = in - optional = F [bk] standard_name = sigma_pressure_hybrid_coordinate_b_coefficient long_name = b parameter for sigma pressure level calculations @@ -109,7 +98,6 @@ type = real kind = kind_phys intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -118,7 +106,6 @@ type = real kind = kind_phys intent = in - optional = F [cdmbgwd] standard_name = multiplicative_tunable_parameters_for_mountain_blocking_and_orographic_gravity_wave_drag long_name = multiplication factors for cdmb and gwd @@ -127,7 +114,6 @@ type = real kind = kind_phys intent = in - optional = F [cgwf] standard_name = tunable_parameters_for_convective_gravity_wave_drag long_name = multiplication factor for convective GWD @@ -136,7 +122,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -145,7 +130,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rerth] standard_name = radius_of_earth long_name = radius of earth @@ -154,7 +138,6 @@ type = real kind = kind_phys intent = in - optional = F [pa_rf_in] standard_name = air_pressure_at_bottom_extent_of_rayleigh_damping long_name = pressure level from which Rayleigh Damping is applied @@ -163,7 +146,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_rf_in] standard_name = timescale_for_rayleigh_damping long_name = time scale for Rayleigh damping in days @@ -172,7 +154,6 @@ type = real kind = kind_phys intent = in - optional = F [con_p0] standard_name = standard_atmospheric_pressure long_name = standard atmospheric pressure @@ -181,7 +162,6 @@ type = real kind = kind_phys intent = in - optional = F [do_ugwp] standard_name = flag_for_unified_gravity_wave_physics_gravity_wave_drag_scheme long_name = flag to activate CIRES UGWP @@ -189,7 +169,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v0] standard_name = flag_for_ugwp_version_0 long_name = flag to activate ver 0 CIRES UGWP @@ -197,7 +176,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v0_orog_only] standard_name = flag_for_ugwp_version_0_orographic_gwd long_name = flag to activate ver 0 CIRES UGWP - orographic GWD only @@ -205,7 +183,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v0_nst_only] standard_name = flag_for_ugwp_version_0_nonorographic_gwd long_name = flag to activate ver 0 CIRES UGWP - non-stationary GWD only @@ -213,7 +190,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_ls_bl] standard_name = flag_for_gsl_drag_suite_large_scale_orographic_and_blocking_drag long_name = flag to activate GSL drag suite - large-scale GWD and blocking @@ -221,7 +197,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_ss] standard_name = flag_for_gsl_drag_suite_small_scale_orographic_drag long_name = flag to activate GSL drag suite - small-scale GWD @@ -229,7 +204,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_tofd] standard_name = flag_for_gsl_drag_suite_turbulent_orographic_form_drag long_name = flag to activate GSL drag suite - turb orog form drag @@ -237,7 +211,6 @@ dimensions = () type = logical intent = in - optional = F [gwd_opt] standard_name = control_for_drag_suite_gravity_wave_drag long_name = flag to choose gwd scheme @@ -245,7 +218,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -254,7 +226,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -262,7 +233,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -275,7 +245,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v0_nst_only] standard_name = flag_for_ugwp_version_0_nonorographic_gwd long_name = flag to activate ver 0 CIRES UGWP - non-stationary GWD only @@ -283,7 +252,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -292,7 +260,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -300,7 +267,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -313,7 +279,6 @@ dimensions = () type = integer intent = in - optional = F [master] standard_name = mpi_root long_name = MPI rank of master process @@ -321,7 +286,6 @@ dimensions = () type = integer intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal @@ -329,7 +293,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -337,7 +300,6 @@ dimensions = () type = integer intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -345,7 +307,6 @@ dimensions = () type = integer intent = in - optional = F [dtp] standard_name = timestep_for_physics long_name = physics timestep @@ -354,7 +315,6 @@ type = real kind = kind_phys intent = in - optional = F [fhzero] standard_name = period_of_diagnostics_reset long_name = hours between clearing of diagnostic buckets @@ -363,7 +323,6 @@ type = real kind = kind_phys intent = in - optional = F [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -371,7 +330,6 @@ dimensions = () type = integer intent = in - optional = F [lonr] standard_name = number_of_equatorial_longitude_points long_name = number of global points in x-dir (i) along the equator @@ -379,7 +337,6 @@ dimensions = () type = integer intent = in - optional = F [oro] standard_name = height_above_mean_sea_level long_name = height_above_mean_sea_level @@ -388,7 +345,6 @@ type = real kind = kind_phys intent = in - optional = F [oro_uf] standard_name = unfiltered_height_above_mean_sea_level long_name = unfiltered height_above_mean_sea_level @@ -397,7 +353,6 @@ type = real kind = kind_phys intent = in - optional = F [hprime] standard_name = standard_deviation_of_subgrid_orography long_name = standard deviation of subgrid height_above_mean_sea_level @@ -406,7 +361,6 @@ type = real kind = kind_phys intent = in - optional = F [nmtvr] standard_name = number_of_statistical_measures_of_subgrid_orography long_name = number of topographic variables in GWD @@ -414,7 +368,6 @@ dimensions = () type = integer intent = in - optional = F [oc] standard_name = convexity_of_subgrid_orography long_name = convexity of subgrid height_above_mean_sea_level @@ -423,7 +376,6 @@ type = real kind = kind_phys intent = in - optional = F [theta] standard_name = angle_from_east_of_maximum_subgrid_orographic_variations long_name = angle with_respect to east of maximum subgrid orographic variations @@ -432,7 +384,6 @@ type = real kind = kind_phys intent = in - optional = F [sigma] standard_name = slope_of_subgrid_orography long_name = slope of subgrid height_above_mean_sea_level @@ -441,7 +392,6 @@ type = real kind = kind_phys intent = in - optional = F [gamma] standard_name = anisotropy_of_subgrid_orography long_name = anisotropy of subgrid height_above_mean_sea_level @@ -450,7 +400,6 @@ type = real kind = kind_phys intent = in - optional = F [elvmax] standard_name = maximum_subgrid_orography long_name = maximum of subgrid height_above_mean_sea_level @@ -459,7 +408,6 @@ type = real kind = kind_phys intent = inout - optional = F [clx] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height long_name = horizontal fraction of grid box covered by subgrid height_above_mean_sea_level higher than critical height @@ -468,7 +416,6 @@ type = real kind = kind_phys intent = in - optional = F [oa4] standard_name = asymmetry_of_subgrid_orography long_name = asymmetry of subgrid height_above_mean_sea_level @@ -477,7 +424,6 @@ type = real kind = kind_phys intent = in - optional = F [varss] standard_name = standard_deviation_of_subgrid_orography_small_scale long_name = standard deviation of subgrid height_above_mean_sea_level small scale @@ -486,7 +432,6 @@ type = real kind = kind_phys intent = in - optional = F [oc1ss] standard_name = convexity_of_subgrid_orography_small_scale long_name = convexity of subgrid height_above_mean_sea_level small scale @@ -495,7 +440,6 @@ type = real kind = kind_phys intent = in - optional = F [oa4ss] standard_name = asymmetry_of_subgrid_orography_small_scale long_name = asymmetry of subgrid height_above_mean_sea_level small scale @@ -504,7 +448,6 @@ type = real kind = kind_phys intent = in - optional = F [ol4ss] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height_small_scale long_name = horizontal fraction of grid box covered by subgrid height_above_mean_sea_level higher than critical height small scale @@ -513,7 +456,6 @@ type = real kind = kind_phys intent = in - optional = F [dx] standard_name = characteristic_grid_lengthscale long_name = size of the grid cell @@ -522,7 +464,6 @@ type = real kind = kind_phys intent = in - optional = F [dusfc_ls] standard_name = vertically_integrated_x_momentum_flux_due_to_mesoscale_orographic_gravity_wave_drag long_name = integrated x momentum flux from large scale gwd @@ -531,7 +472,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc_ls] standard_name = vertically_integrated_y_momentum_flux_due_to_mesoscale_orographic_gravity_wave_drag long_name = integrated y momentum flux from large scale gwd @@ -540,7 +480,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfc_bl] standard_name = vertically_integrated_x_momentum_flux_due_to_blocking_drag long_name = integrated x momentum flux from blocking drag @@ -549,7 +488,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc_bl] standard_name = vertically_integrated_y_momentum_flux_due_to_blocking_drag long_name = integrated y momentum flux from blocking drag @@ -558,7 +496,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfc_ss] standard_name = vertically_integrated_x_momentum_flux_due_to_small_scale_gravity_wave_drag long_name = integrated x momentum flux from small scale gwd @@ -567,7 +504,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc_ss] standard_name = vertically_integrated_y_momentum_flux_due_to_small_scale_gravity_wave_drag long_name = integrated y momentum flux from small scale gwd @@ -576,7 +512,6 @@ type = real kind = kind_phys intent = out - optional = F [dusfc_fd] standard_name = vertically_integrated_x_momentum_flux_due_to_form_drag long_name = integrated x momentum flux from form drag @@ -585,7 +520,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc_fd] standard_name = vertically_integrated_y_momentum_flux_due_to_form_drag long_name = integrated y momentum flux from form drag @@ -594,7 +528,6 @@ type = real kind = kind_phys intent = out - optional = F [dtaux2d_ls] standard_name = tendency_of_x_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = instantaneous change in x wind due to orographic gw drag @@ -603,7 +536,6 @@ type = real kind = kind_phys intent = out - optional = F [dtauy2d_ls] standard_name = tendency_of_y_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = instantaneous change in y wind due to orographic gw drag @@ -612,7 +544,6 @@ type = real kind = kind_phys intent = out - optional = F [dtaux2d_bl] standard_name = tendency_of_x_momentum_due_to_blocking_drag long_name = x momentum tendency from blocking drag @@ -621,7 +552,6 @@ type = real kind = kind_phys intent = out - optional = F [dtauy2d_bl] standard_name = tendency_of_y_momentum_due_to_blocking_drag long_name = y momentum tendency from blocking drag @@ -630,7 +560,6 @@ type = real kind = kind_phys intent = out - optional = F [dtaux2d_ss] standard_name = tendency_of_x_momentum_due_to_small_scale_gravity_wave_drag long_name = x momentum tendency from small scale gwd @@ -639,7 +568,6 @@ type = real kind = kind_phys intent = out - optional = F [dtauy2d_ss] standard_name = tendency_of_y_momentum_due_to_small_scale_gravity_wave_drag long_name = y momentum tendency from small scale gwd @@ -648,7 +576,6 @@ type = real kind = kind_phys intent = out - optional = F [dtaux2d_fd] standard_name = tendency_of_x_momentum_due_to_form_drag long_name = x momentum tendency from form drag @@ -657,7 +584,6 @@ type = real kind = kind_phys intent = out - optional = F [dtauy2d_fd] standard_name = tendency_of_y_momentum_due_to_form_drag long_name = y momentum tendency from form drag @@ -666,7 +592,6 @@ type = real kind = kind_phys intent = out - optional = F [br1] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -675,7 +600,6 @@ type = real kind = kind_phys intent = in - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -684,7 +608,6 @@ type = real kind = kind_phys intent = in - optional = F [slmsk] standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 @@ -693,7 +616,6 @@ type = real kind = kind_phys intent = in - optional = F [do_tofd] standard_name = flag_for_turbulent_orographic_form_drag_in_unified_gravity_wave_physics_gravitiy_wave_drag_scheme long_name = flag for turbulent orographic form drag @@ -701,7 +623,6 @@ dimensions = () type = logical intent = in - optional = F [ldiag_ugwp] standard_name = flag_for_unified_gravity_wave_physics_diagnostics long_name = flag for CIRES UGWP Diagnostics @@ -709,7 +630,6 @@ dimensions = () type = logical intent = in - optional = F [cdmbgwd] standard_name = multiplicative_tunable_parameters_for_mountain_blocking_and_orographic_gravity_wave_drag long_name = multiplication factors for cdmb and gwd @@ -718,7 +638,6 @@ type = real kind = kind_phys intent = in - optional = F [jdat] standard_name = date_and_time_of_forecast_in_united_states_order long_name = current forecast date and time @@ -726,7 +645,6 @@ dimensions = (8) type = integer intent = in - optional = F [xlat] standard_name = latitude long_name = grid latitude @@ -735,7 +653,6 @@ type = real kind = kind_phys intent = in - optional = F [xlat_d] standard_name = latitude_in_degree long_name = latitude in degree north @@ -744,7 +661,6 @@ type = real kind = kind_phys intent = in - optional = F [sinlat] standard_name = sine_of_latitude long_name = sine of the grid latitude @@ -753,7 +669,6 @@ type = real kind = kind_phys intent = in - optional = F [coslat] standard_name = cosine_of_latitude long_name = cosine of the grid latitude @@ -762,7 +677,6 @@ type = real kind = kind_phys intent = in - optional = F [area] standard_name = cell_area long_name = area of the grid cell @@ -771,7 +685,6 @@ type = real kind = kind_phys intent = in - optional = F [ugrs] standard_name = x_wind long_name = zonal wind @@ -780,7 +693,6 @@ type = real kind = kind_phys intent = in - optional = F [vgrs] standard_name = y_wind long_name = meridional wind @@ -789,7 +701,6 @@ type = real kind = kind_phys intent = in - optional = F [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -798,7 +709,6 @@ type = real kind = kind_phys intent = in - optional = F [q1] standard_name = specific_humidity long_name = mid-layer specific humidity of water vapor @@ -807,7 +717,6 @@ type = real kind = kind_phys intent = in - optional = F [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -816,7 +725,6 @@ type = real kind = kind_phys intent = in - optional = F [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -825,7 +733,6 @@ type = real kind = kind_phys intent = in - optional = F [prslk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers @@ -834,7 +741,6 @@ type = real kind = kind_phys intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -843,7 +749,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -852,7 +757,6 @@ type = real kind = kind_phys intent = in - optional = F [del] standard_name = air_pressure_difference_between_midlayers long_name = air pressure difference between midlayers @@ -861,7 +765,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = vertical index at top atmospheric boundary layer @@ -869,7 +772,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [dusfcg] standard_name = instantaneous_x_stress_due_to_gravity_wave_drag long_name = zonal surface stress due to orographic gravity wave drag @@ -878,7 +780,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfcg] standard_name = instantaneous_y_stress_due_to_gravity_wave_drag long_name = meridional surface stress due to orographic gravity wave drag @@ -887,9 +788,7 @@ type = real kind = kind_phys intent = out - optional = F intent = out - optional = F [gw_dudt] standard_name = tendency_of_x_wind_due_to_gravity_wave_drag long_name = zonal wind tendency due to UGWP @@ -898,7 +797,6 @@ type = real kind = kind_phys intent = out - optional = F [gw_dvdt] standard_name = tendency_of_y_wind_due_to_gravity_wave_drag long_name = meridional wind tendency due to UGWP @@ -907,7 +805,6 @@ type = real kind = kind_phys intent = out - optional = F [gw_dtdt] standard_name = tendency_of_air_temperature_due_to_gravity_wave_drag long_name = air temperature tendency due to UGWP @@ -916,7 +813,6 @@ type = real kind = kind_phys intent = out - optional = F [gw_kdis] standard_name = atmosphere_momentum_diffusivity_due_to_gravity_wave_drag long_name = eddy mixing due to UGWP @@ -925,7 +821,6 @@ type = real kind = kind_phys intent = out - optional = F [tau_tofd] standard_name = instantaneous_momentum_flux_due_to_turbulent_orographic_form_drag long_name = momentum flux or stress due to TOFD @@ -934,7 +829,6 @@ type = real kind = kind_phys intent = out - optional = F [tau_mtb] standard_name = instantaneous_momentum_flux_due_to_mountain_blocking_drag long_name = momentum flux or stress due to mountain blocking drag @@ -943,7 +837,6 @@ type = real kind = kind_phys intent = out - optional = F [tau_ogw] standard_name = instantaneous_momentum_flux_due_to_orographic_gravity_wave_drag long_name = momentum flux or stress due to orographic gravity wave drag @@ -952,7 +845,6 @@ type = real kind = kind_phys intent = out - optional = F [tau_ngw] standard_name = instantaneous_momentum_flux_due_to_nonstationary_gravity_wave long_name = momentum flux or stress due to nonstationary gravity waves @@ -961,7 +853,6 @@ type = real kind = kind_phys intent = out - optional = F [zmtb] standard_name = height_of_mountain_blocking long_name = height of mountain blocking drag @@ -970,7 +861,6 @@ type = real kind = kind_phys intent = out - optional = F [zlwb] standard_name = height_of_low_level_wave_breaking long_name = height of low level wave breaking @@ -979,7 +869,6 @@ type = real kind = kind_phys intent = out - optional = F [zogw] standard_name = height_of_launch_level_of_orographic_gravity_wave long_name = height of launch level of orographic gravity wave @@ -988,7 +877,6 @@ type = real kind = kind_phys intent = out - optional = F [dudt_mtb] standard_name = instantaneous_change_in_x_wind_due_to_mountain_blocking_drag long_name = instantaneous change in x wind due to mountain blocking drag @@ -997,7 +885,6 @@ type = real kind = kind_phys intent = out - optional = F [dudt_tms] standard_name = tendency_of_x_wind_due_to_turbulent_orographic_form_drag long_name = instantaneous change in x wind due to TOFD @@ -1006,7 +893,6 @@ type = real kind = kind_phys intent = out - optional = F [du3dt_mtb] standard_name = time_integral_of_change_in_x_wind_due_to_mountain_blocking_drag long_name = time integral of change in x wind due to mountain blocking drag @@ -1015,7 +901,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_ogw] standard_name = time_integral_of_change_in_x_wind_due_to_orographic_gravity_wave_drag long_name = time integral of change in x wind due to orographic gw drag @@ -1024,7 +909,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_tms] standard_name = time_integral_of_change_in_x_wind_due_to_turbulent_orographic_form_drag long_name = time integral of change in x wind due to TOFD @@ -1033,7 +917,6 @@ type = real kind = kind_phys intent = inout - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics @@ -1042,7 +925,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics @@ -1051,7 +933,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = air temperature tendency due to model physics @@ -1060,7 +941,6 @@ type = real kind = kind_phys intent = inout - optional = F [rdxzb] standard_name = level_of_dividing_streamline long_name = level of the dividing streamline @@ -1069,7 +949,6 @@ type = real kind = kind_phys intent = out - optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -1078,7 +957,6 @@ type = real kind = kind_phys intent = in - optional = F [con_omega] standard_name = angular_velocity_of_earth long_name = angular velocity of earth @@ -1087,7 +965,6 @@ type = real kind = kind_phys intent = in - optional = F [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -1096,7 +973,6 @@ type = real kind = kind_phys intent = in - optional = F [con_cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat !of dry air at constant pressure @@ -1105,7 +981,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -1114,7 +989,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -1123,7 +997,6 @@ type = real kind = kind_phys intent = in - optional = F [con_rerth] standard_name = radius_of_earth long_name = radius of earth @@ -1132,7 +1005,6 @@ type = real kind = kind_phys intent = in - optional = F [con_fvirt] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -1141,7 +1013,6 @@ type = real kind = kind_phys intent = in - optional = F [rain] standard_name = lwe_thickness_of_precipitation_amount_on_dynamics_timestep long_name = total rain at this time step @@ -1150,7 +1021,6 @@ type = real kind = kind_phys intent = in - optional = F [ntke] standard_name = index_of_turbulent_kinetic_energy_in_tracer_concentration_array long_name = tracer index for turbulent kinetic energy @@ -1158,7 +1028,6 @@ dimensions = () type = integer intent = in - optional = F [q_tke] standard_name = turbulent_kinetic_energy long_name = turbulent kinetic energy @@ -1167,7 +1036,6 @@ type = real kind = kind_phys intent = in - optional = F [dqdt_tke] standard_name = process_split_cumulative_tendency_of_turbulent_kinetic_energy long_name = turbulent kinetic energy tendency due to model physics @@ -1176,7 +1044,6 @@ type = real kind = kind_phys intent = in - optional = F [lprnt] standard_name = flag_print long_name = control flag for diagnostic print out @@ -1184,7 +1051,6 @@ dimensions = () type = logical intent = in - optional = F [ipr] standard_name = horizontal_index_of_printed_column long_name = horizontal index of printed column @@ -1192,7 +1058,6 @@ dimensions = () type = integer intent = in - optional = F [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -1200,7 +1065,6 @@ dimensions = () type = logical intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -1209,7 +1073,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -1217,7 +1080,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -1225,7 +1087,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -1233,7 +1094,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -1241,7 +1101,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_orographic_gwd] standard_name = index_of_orographic_gravity_wave_drag_process_in_cumulative_change_index long_name = index of orographic gravity wave drag process in second dimension of array cumulative change index @@ -1249,7 +1108,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_nonorographic_gwd] standard_name = index_of_nonorographic_gravity_wave_drag_process_in_cumulative_change_index long_name = index of nonorographic gravity wave drag process in second dimension of array cumulative change index @@ -1257,7 +1115,6 @@ dimensions = () type = integer intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -1265,7 +1122,6 @@ dimensions = () type = logical intent = in - optional = F [flag_for_gwd_generic_tend] standard_name = flag_for_generic_tendency_due_to_gravity_wave_drag long_name = true if GFS_GWD_generic should calculate tendencies @@ -1273,7 +1129,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v0] standard_name = flag_for_ugwp_version_0 long_name = flag to activate ver 0 CIRES UGWP @@ -1281,7 +1136,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v0_orog_only] standard_name = flag_for_ugwp_version_0_orographic_gwd long_name = flag to activate ver 0 CIRES UGWP - orographic GWD only @@ -1289,7 +1143,6 @@ dimensions = () type = logical intent = in - optional = F [do_ugwp_v0_nst_only] standard_name = flag_for_ugwp_version_0_nonorographic_gwd long_name = flag to activate ver 0 CIRES UGWP - non-stationary GWD only @@ -1297,7 +1150,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_ls_bl] standard_name = flag_for_gsl_drag_suite_large_scale_orographic_and_blocking_drag long_name = flag to activate GSL drag suite - large-scale GWD and blocking @@ -1305,7 +1157,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_ss] standard_name = flag_for_gsl_drag_suite_small_scale_orographic_drag long_name = flag to activate GSL drag suite - small-scale GWD @@ -1313,7 +1164,6 @@ dimensions = () type = logical intent = in - optional = F [do_gsl_drag_tofd] standard_name = flag_for_gsl_drag_suite_turbulent_orographic_form_drag long_name = flag to activate GSL drag suite - turb orog form drag @@ -1321,7 +1171,6 @@ dimensions = () type = logical intent = in - optional = F [gwd_opt] standard_name = control_for_drag_suite_gravity_wave_drag long_name = flag to choose gwd scheme @@ -1329,7 +1178,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -1338,7 +1186,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -1346,4 +1193,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/unified_ugwp_post.meta b/physics/unified_ugwp_post.meta index a340c8c1d..e2723821b 100644 --- a/physics/unified_ugwp_post.meta +++ b/physics/unified_ugwp_post.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -23,7 +22,6 @@ type = real kind = kind_phys intent = in - optional = F [im] standard_name = horizontal_loop_extent long_name = horizontal loop extent @@ -31,7 +29,6 @@ dimensions = () type = integer intent = in - optional = F [levs] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -39,7 +36,6 @@ dimensions = () type = integer intent = in - optional = F [gw_dtdt] standard_name = tendency_of_air_temperature_due_to_gravity_wave_drag long_name = air temperature tendency due to UGWP @@ -48,7 +44,6 @@ type = real kind = kind_phys intent = in - optional = F [gw_dudt] standard_name = tendency_of_x_wind_due_to_gravity_wave_drag long_name = zonal wind tendency due to UGWP @@ -57,7 +52,6 @@ type = real kind = kind_phys intent = in - optional = F [gw_dvdt] standard_name = tendency_of_y_wind_due_to_gravity_wave_drag long_name = meridional wind tendency due to UGWP @@ -66,7 +60,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_tofd] standard_name = instantaneous_momentum_flux_due_to_turbulent_orographic_form_drag long_name = momentum flux or stress due to TOFD @@ -75,7 +68,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_mtb] standard_name = instantaneous_momentum_flux_due_to_mountain_blocking_drag long_name = momentum flux or stress due to mountain blocking drag @@ -84,7 +76,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_ogw] standard_name = instantaneous_momentum_flux_due_to_orographic_gravity_wave_drag long_name = momentum flux or stress due to orographic gravity wave drag @@ -93,7 +84,6 @@ type = real kind = kind_phys intent = in - optional = F [tau_ngw] standard_name = instantaneous_momentum_flux_due_to_nonstationary_gravity_wave long_name = momentum flux or stress due to nonstationary gravity waves @@ -102,7 +92,6 @@ type = real kind = kind_phys intent = in - optional = F [zmtb] standard_name = height_of_mountain_blocking long_name = height of mountain blocking drag @@ -111,7 +100,6 @@ type = real kind = kind_phys intent = in - optional = F [zlwb] standard_name = height_of_low_level_wave_breaking long_name = height of low level wave breaking @@ -120,7 +108,6 @@ type = real kind = kind_phys intent = in - optional = F [zogw] standard_name = height_of_launch_level_of_orographic_gravity_wave long_name = height of launch level of orographic gravity wave @@ -129,7 +116,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt_mtb] standard_name = instantaneous_change_in_x_wind_due_to_mountain_blocking_drag long_name = instantaneous change in x wind due to mountain blocking drag @@ -138,7 +124,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt_ogw] standard_name = tendency_of_x_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = instantaneous change in x wind due to orographic gw drag @@ -147,7 +132,6 @@ type = real kind = kind_phys intent = in - optional = F [dudt_tms] standard_name = tendency_of_x_wind_due_to_turbulent_orographic_form_drag long_name = instantaneous change in x wind due to TOFD @@ -156,7 +140,6 @@ type = real kind = kind_phys intent = in - optional = F [tot_zmtb] standard_name = time_integral_of_height_of_mountain_blocking long_name = time integral of height of mountain blocking drag @@ -165,7 +148,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_zlwb] standard_name = time_integral_of_height_of_low_level_wave_breaking long_name = time integral of height of drag due to low level wave breaking @@ -174,7 +156,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_zogw] standard_name = time_integral_of_height_of_launch_level_of_orographic_gravity_wave long_name = time integral of height of launch level of orographic gravity wave @@ -183,7 +164,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_tofd] standard_name = time_integral_of_momentum_flux_due_to_turbulent_orographic_form_drag long_name = time integral of momentum flux due to TOFD @@ -192,7 +172,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_mtb] standard_name = time_integral_of_momentum_flux_due_to_mountain_blocking_drag long_name = time integral of momentum flux due to mountain blocking drag @@ -201,7 +180,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_ogw] standard_name = time_integral_of_momentum_flux_due_to_orographic_gravity_wave_drag long_name = time integral of momentum flux due to orographic gravity wave drag @@ -210,7 +188,6 @@ type = real kind = kind_phys intent = inout - optional = F [tot_ngw] standard_name = time_integral_of_momentum_flux_due_to_nonstationary_gravity_wave long_name = time integral of momentum flux due to nonstationary gravity waves @@ -219,7 +196,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_mtb] standard_name = time_integral_of_change_in_x_wind_due_to_mountain_blocking_drag long_name = time integral of change in x wind due to mountain blocking drag @@ -228,7 +204,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_ogw] standard_name = time_integral_of_change_in_x_wind_due_to_orographic_gravity_wave_drag long_name = time integral of change in x wind due to orographic gw drag @@ -237,7 +212,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_tms] standard_name = time_integral_of_change_in_x_wind_due_to_turbulent_orographic_form_drag long_name = time integral of change in x wind due to TOFD @@ -246,7 +220,6 @@ type = real kind = kind_phys intent = inout - optional = F [du3dt_ngw] standard_name = time_integral_of_change_in_x_wind_due_to_nonstationary_gravity_wave long_name = time integral of change in x wind due to NGW @@ -255,7 +228,6 @@ type = real kind = kind_phys intent = inout - optional = F [dv3dt_ngw] standard_name = time_integral_of_change_in_y_wind_due_to_nonstationary_gravity_wave long_name = time integral of change in y wind due to NGW @@ -264,7 +236,6 @@ type = real kind = kind_phys intent = inout - optional = F [dtdt] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = air temperature tendency due to model physics @@ -273,7 +244,6 @@ type = real kind = kind_phys intent = inout - optional = F [dudt] standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics @@ -282,7 +252,6 @@ type = real kind = kind_phys intent = inout - optional = F [dvdt] standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics @@ -291,7 +260,6 @@ type = real kind = kind_phys intent = inout - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -300,7 +268,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -308,4 +275,3 @@ dimensions = () type = integer intent = out - optional = F diff --git a/physics/ysuvdif.meta b/physics/ysuvdif.meta index 405b6a1e7..52de4d78e 100644 --- a/physics/ysuvdif.meta +++ b/physics/ysuvdif.meta @@ -14,7 +14,6 @@ dimensions = () type = logical intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -23,7 +22,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -31,7 +29,6 @@ dimensions = () type = integer intent = out - optional = F ######################################################################## [ccpp-arg-table] @@ -44,7 +41,6 @@ dimensions = () type = integer intent = in - optional = F [km] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -52,7 +48,6 @@ dimensions = () type = integer intent = in - optional = F [ux] standard_name = x_wind long_name = x component of layer wind @@ -61,7 +56,6 @@ type = real kind = kind_phys intent = in - optional = F [vx] standard_name = y_wind long_name = y component of layer wind @@ -70,7 +64,6 @@ type = real kind = kind_phys intent = in - optional = F [tx] standard_name = air_temperature long_name = layer mean air temperature @@ -79,7 +72,6 @@ type = real kind = kind_phys intent = in - optional = F [qx] standard_name = tracer_concentration long_name = model layer mean tracer concentration @@ -88,7 +80,6 @@ type = real kind = kind_phys intent = in - optional = F [p2d] standard_name = air_pressure long_name = mean layer pressure @@ -97,7 +88,6 @@ type = real kind = kind_phys intent = in - optional = F [p2di] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -106,7 +96,6 @@ type = real kind = kind_phys intent = in - optional = F [pi2d] standard_name = dimensionless_exner_function long_name = Exner function at layers @@ -115,7 +104,6 @@ type = real kind = kind_phys intent = in - optional = F [karman] standard_name = von_karman_constant long_name = von karman constant @@ -123,7 +111,6 @@ dimensions = () type = real intent = in - optional = F [utnp] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind @@ -132,7 +119,6 @@ type = real kind = kind_phys intent = inout - optional = F [vtnp] standard_name = process_split_cumulative_tendency_of_y_wind long_name = updated tendency of the y wind @@ -141,7 +127,6 @@ type = real kind = kind_phys intent = inout - optional = F [ttnp] standard_name = process_split_cumulative_tendency_of_air_temperature long_name = updated tendency of the temperature @@ -150,7 +135,6 @@ type = real kind = kind_phys intent = inout - optional = F [qtnp] standard_name = process_split_cumulative_tendency_of_tracers long_name = updated tendency of the tracers due to model physics @@ -159,7 +143,6 @@ type = real kind = kind_phys intent = inout - optional = F [swh] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate @@ -168,7 +151,6 @@ type = real kind = kind_phys intent = in - optional = F [hlw] standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky longwave heating rate @@ -177,7 +159,6 @@ type = real kind = kind_phys intent = in - optional = F [xmu] standard_name = zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes long_name = zenith angle temporal adjustment factor for shortwave @@ -186,7 +167,6 @@ type = real kind = kind_phys intent = in - optional = F [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -194,7 +174,6 @@ dimensions = () type = integer intent = in - optional = F [ndiff] standard_name = number_of_vertical_diffusion_tracers long_name = number of tracers to diffuse vertically @@ -202,7 +181,6 @@ dimensions = () type = integer intent = in - optional = F [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -210,7 +188,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -218,7 +195,6 @@ dimensions = () type = integer intent = in - optional = F [phii] standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces @@ -227,7 +203,6 @@ type = real kind = kind_phys intent = in - optional = F [phil] standard_name = geopotential long_name = geopotential at model layer centers @@ -236,7 +211,6 @@ type = real kind = kind_phys intent = in - optional = F [psfcpa] standard_name = surface_air_pressure long_name = surface pressure @@ -245,7 +219,6 @@ type = real kind = kind_phys intent = in - optional = F [zorl] standard_name = surface_roughness_length long_name = surface roughness length in cm @@ -254,7 +227,6 @@ type = real kind = kind_phys intent = in - optional = F [stress] standard_name = surface_wind_stress long_name = surface wind stress @@ -263,7 +235,6 @@ type = real kind = kind_phys intent = in - optional = F [hpbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -272,7 +243,6 @@ type = real kind = kind_phys intent = out - optional = F [psim] standard_name = Monin_Obukhov_similarity_function_for_momentum long_name = Monin-Obukhov similarity function for momentum @@ -281,7 +251,6 @@ type = real kind = kind_phys intent = in - optional = F [psih] standard_name = Monin_Obukhov_similarity_function_for_heat long_name = Monin-Obukhov similarity function for heat @@ -290,7 +259,6 @@ type = real kind = kind_phys intent = in - optional = F [landmask] standard_name = sea_land_ice_mask long_name = landmask: sea/land/ice=0/1/2 @@ -298,7 +266,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in - optional = F [heat] standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation @@ -307,7 +274,6 @@ type = real kind = kind_phys intent = in - optional = F [evap] standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux @@ -316,7 +282,6 @@ type = real kind = kind_phys intent = in - optional = F [wspd] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -325,7 +290,6 @@ type = real kind = kind_phys intent = in - optional = F [br] standard_name = bulk_richardson_number_at_lowest_model_level long_name = bulk Richardson number at the surface @@ -334,7 +298,6 @@ type = real kind = kind_phys intent = in - optional = F [g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -343,7 +306,6 @@ type = real kind = kind_phys intent = in - optional = F [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -352,7 +314,6 @@ type = real kind = kind_phys intent = in - optional = F [cp] standard_name = specific_heat_of_dry_air_at_constant_pressure long_name = specific heat of dry air at constant pressure @@ -361,7 +322,6 @@ type = real kind = kind_phys intent = in - optional = F [rv] standard_name = gas_constant_water_vapor long_name = ideal gas constant for water vapor @@ -370,7 +330,6 @@ type = real kind = kind_phys intent = in - optional = F [ep1] standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) @@ -379,7 +338,6 @@ type = real kind = kind_phys intent = in - optional = F [ep2] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv @@ -388,7 +346,6 @@ type = real kind = kind_phys intent = in - optional = F [xlv] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -397,7 +354,6 @@ type = real kind = kind_phys intent = in - optional = F [dusfc] standard_name = instantaneous_surface_x_momentum_flux long_name = x momentum flux @@ -406,7 +362,6 @@ type = real kind = kind_phys intent = out - optional = F [dvsfc] standard_name = instantaneous_surface_y_momentum_flux long_name = y momentum flux @@ -415,7 +370,6 @@ type = real kind = kind_phys intent = out - optional = F [dtsfc] standard_name = instantaneous_surface_upward_sensible_heat_flux long_name = surface upward sensible heat flux @@ -424,7 +378,6 @@ type = real kind = kind_phys intent = out - optional = F [dqsfc] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux @@ -433,7 +386,6 @@ type = real kind = kind_phys intent = out - optional = F [dt] standard_name = timestep_for_physics long_name = time step for physics @@ -442,7 +394,6 @@ type = real kind = kind_phys intent = in - optional = F [kpbl1d] standard_name = vertical_index_at_top_of_atmosphere_boundary_layer long_name = PBL top model level index @@ -450,7 +401,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = out - optional = F [u10] standard_name = x_wind_at_10m long_name = x component of wind at 10 m @@ -459,7 +409,6 @@ type = real kind = kind_phys intent = in - optional = F [v10] standard_name = y_wind_at_10m long_name = y component of wind at 10 m @@ -468,7 +417,6 @@ type = real kind = kind_phys intent = in - optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -504,7 +452,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -512,7 +459,6 @@ dimensions = () type = integer intent = in - optional = F [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -521,7 +467,6 @@ type = real kind = kind_phys intent = in - optional = F [dtidx] standard_name = cumulative_change_of_state_variables_outer_index long_name = index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index @@ -529,7 +474,6 @@ dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in - optional = F [index_of_temperature] standard_name = index_of_temperature_in_cumulative_change_index long_name = index of temperature in first dimension of array cumulative change index @@ -537,7 +481,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_x_wind] standard_name = index_of_x_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -545,7 +488,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_y_wind] standard_name = index_of_y_wind_in_cumulative_change_index long_name = index of x-wind in first dimension of array cumulative change index @@ -553,7 +495,6 @@ dimensions = () type = integer intent = in - optional = F [index_of_process_pbl] standard_name = index_of_subgrid_scale_vertical_mixing_process_in_cumulative_change_index long_name = index of subgrid scale vertical mixing process in second dimension of array cumulative change index @@ -561,7 +502,6 @@ dimensions = () type = integer intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -570,7 +510,6 @@ type = character kind = len=* intent = out - optional = F [errflg] standard_name = ccpp_error_flag long_name = error flag for error handling in CCPP @@ -578,4 +517,3 @@ dimensions = () type = integer intent = out - optional = F From 75647972e042b1f0dc39fd862e483cadc61df4f5 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 25 Oct 2021 07:36:25 -0600 Subject: [PATCH 77/98] Remove optional computation of cloud effective radii from Thompson wrapper physics/mp_thompson.F90 (was disabled anyway, since done in radiation interstitials) --- physics/mp_thompson.F90 | 322 +++++++++++----------------------------- 1 file changed, 89 insertions(+), 233 deletions(-) diff --git a/physics/mp_thompson.F90 b/physics/mp_thompson.F90 index c31d90b09..e7ecd6861 100644 --- a/physics/mp_thompson.F90 +++ b/physics/mp_thompson.F90 @@ -36,7 +36,6 @@ subroutine mp_thompson_init(ncol, nlev, con_g, con_rd, con_eps, & spechum, qc, qr, qi, qs, qg, ni, nr, & is_aerosol_aware, nc, nwfa2d, nifa2d, & nwfa, nifa, tgrs, prsl, phil, area, & - re_cloud, re_ice, re_snow, & mpicomm, mpirank, mpiroot, & threads, ext_diag, diag3d, & errmsg, errflg) @@ -62,20 +61,16 @@ subroutine mp_thompson_init(ncol, nlev, con_g, con_rd, con_eps, & real(kind_phys), intent(inout) :: nr(:,:) ! Aerosols logical, intent(in ) :: is_aerosol_aware - real(kind_phys), optional, intent(inout) :: nc(:,:) - real(kind_phys), optional, intent(inout) :: nwfa(:,:) - real(kind_phys), optional, intent(inout) :: nifa(:,:) - real(kind_phys), optional, intent(inout) :: nwfa2d(:) - real(kind_phys), optional, intent(inout) :: nifa2d(:) + real(kind_phys), intent(inout) :: nc(:,:) + real(kind_phys), intent(inout) :: nwfa(:,:) + real(kind_phys), intent(inout) :: nifa(:,:) + real(kind_phys), intent(inout) :: nwfa2d(:) + real(kind_phys), intent(inout) :: nifa2d(:) ! State variables real(kind_phys), intent(in ) :: tgrs(:,:) real(kind_phys), intent(in ) :: prsl(:,:) real(kind_phys), intent(in ) :: phil(:,:) real(kind_phys), intent(in ) :: area(:) - ! Cloud effective radii - real(kind_phys), optional, intent( out) :: re_cloud(:,:) - real(kind_phys), optional, intent( out) :: re_ice(:,:) - real(kind_phys), optional, intent( out) :: re_snow(:,:) ! MPI information integer, intent(in ) :: mpicomm integer, intent(in ) :: mpirank @@ -274,34 +269,6 @@ subroutine mp_thompson_init(ncol, nlev, con_g, con_rd, con_eps, & end if - ! Calculate initial cloud effective radii if requested - if (present(re_cloud) .and. present(re_ice) .and. present(re_snow)) then - ! Effective radii [m] are now intent(out), bounds applied in calc_effectRad - do i = 1, ncol - call calc_effectRad (tgrs(i,:), prsl(i,:), qv(i,:), qc(i,:), & - nc_local(i,:), qi(i,:), ni(i,:), qs(i,:), & - re_cloud(i,:), re_ice(i,:), re_snow(i,:), 1, nlev) - do k = 1, nlev - re_cloud(i,k) = MAX(re_qc_min, MIN(re_cloud(i,k), re_qc_max)) - re_ice(i,k) = MAX(re_qi_min, MIN(re_ice(i,k), re_qi_max)) - re_snow(i,k) = MAX(re_qs_min, MIN(re_snow(i,k), re_qs_max)) - end do - end do - !! Convert to micron: required for bit-for-bit identical restarts; - !! otherwise entering mp_thompson_init and converting mu to m and - !! back (without updating re_*) introduces b4b differences. - !! If this code is used, change units in metadata from m to um! - !re_cloud = 1.0E6*re_cloud - !re_ice = 1.0E6*re_ice - !re_snow = 1.0E6*re_snow - else if (present(re_cloud) .or. present(re_ice) .or. present(re_snow)) then - write(errmsg,fmt='(*(a))') 'Logic error in mp_thompson_init:', & - ' all or none of the following optional', & - ' arguments are required: re_cloud, re_ice, re_snow' - errflg = 1 - return - end if - if (convert_dry_rho) then !qc = qc/(1.0_kind_phys+qv) !qr = qr/(1.0_kind_phys+qv) @@ -338,7 +305,6 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & dtp, first_time_step, istep, nsteps, & prcp, rain, graupel, ice, snow, sr, & refl_10cm, reset_dBZ, do_radar_ref, & - re_cloud, re_ice, re_snow, & mpicomm, mpirank, mpiroot, blkno, & ext_diag, diag3d, reset_diag3d, & errmsg, errflg) @@ -379,6 +345,7 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & real(kind_phys), intent(in ) :: dtp logical, intent(in ) :: first_time_step integer, intent(in ) :: istep, nsteps + real, intent(in ) :: dt_inner ! Precip/rain/snow/graupel fall amounts and fraction of frozen precip real(kind_phys), intent(inout) :: prcp(:) real(kind_phys), intent(inout) :: rain(:) @@ -387,13 +354,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & real(kind_phys), intent(inout) :: snow(:) real(kind_phys), intent( out) :: sr(:) ! Radar reflectivity - real(kind_phys), intent( out) :: refl_10cm(:,:) - logical, optional, intent(in ) :: do_radar_ref - real, intent(in ) :: dt_inner - ! Cloud effective radii - real(kind_phys), optional, intent( out) :: re_cloud(:,:) - real(kind_phys), optional, intent( out) :: re_ice(:,:) - real(kind_phys), optional, intent( out) :: re_snow(:,:) + real(kind_phys), intent(inout) :: refl_10cm(:,:) + logical, intent(in ) :: do_radar_ref ! MPI and block information integer, intent(in) :: blkno integer, intent(in) :: mpicomm @@ -431,17 +393,16 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & ! Radar reflectivity logical :: diagflag ! must be true if do_radar_ref is true, not used otherwise integer :: do_radar_ref_mp ! integer instead of logical do_radar_ref - ! Effective cloud radii - logical :: do_effective_radii - integer :: has_reqc - integer :: has_reqi - integer :: has_reqs - ! DH* 2020-06-05 hardcode these values for not using random perturbations, + ! Effective cloud radii - turned off in CCPP (taken care off in radiation) + logical, parameter :: do_effective_radii = .false. + integer, parameter :: has_reqc = 0 + integer, parameter :: has_reqi = 0 + integer, parameter :: has_reqs = 0 + ! Random perturbations are turned off in CCPP for now, ! hasn't been tested yet with this version of module_mp_thompson.F90 integer, parameter :: rand_perturb_on = 0 integer, parameter :: kme_stoch = 1 !real(kind_phys) :: rand_pert(1:ncol,1:kme_stoch) - ! *DH 2020-06-05 ! Dimensions used in mp_gt_driver integer :: ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & @@ -580,28 +541,6 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & do_radar_ref_mp = 0 end if - if (present(re_cloud) .and. present(re_ice) .and. present(re_snow)) then - do_effective_radii = .true. - has_reqc = 1 - has_reqi = 1 - has_reqs = 1 - ! Initialize to zero, intent(out) variables - re_cloud = 0 - re_ice = 0 - re_snow = 0 - else if (.not.present(re_cloud) .and. .not.present(re_ice) .and. .not.present(re_snow)) then - do_effective_radii = .false. - has_reqc = 0 - has_reqi = 0 - has_reqs = 0 - else - write(errmsg,fmt='(*(a))') 'Logic error in mp_thompson_run:', & - ' all or none of the following optional', & - ' arguments are required: re_cloud, re_ice, re_snow' - errflg = 1 - return - end if - ! Set internal dimensions ids = 1 ims = 1 @@ -671,165 +610,82 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & !> - Call mp_gt_driver() with or without aerosols if (is_aerosol_aware) then - if (do_effective_radii) then - call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & - nc=nc, nwfa=nwfa, nifa=nifa, nwfa2d=nwfa2d, nifa2d=nifa2d, & - tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtstep, dt_inner=dt_inner, & - rainnc=rain_mp, rainncv=delta_rain_mp, & - snownc=snow_mp, snowncv=delta_snow_mp, & - icenc=ice_mp, icencv=delta_ice_mp, & - graupelnc=graupel_mp, graupelncv=delta_graupel_mp, sr=sr, & - refl_10cm=refl_10cm, & - diagflag=diagflag, do_radar_ref=do_radar_ref_mp, & - re_cloud=re_cloud, re_ice=re_ice, re_snow=re_snow, & - has_reqc=has_reqc, has_reqi=has_reqi, has_reqs=has_reqs, & - rand_perturb_on=rand_perturb_on, kme_stoch=kme_stoch, & - ! DH* 2020-06-05 not passing this optional argument, see - ! comment in module_mp_thompson.F90 / mp_gt_driver - !rand_pert=rand_pert, & - ids=ids, ide=ide, jds=jds, jde=jde, kds=kds, kde=kde, & - ims=ims, ime=ime, jms=jms, jme=jme, kms=kms, kme=kme, & - its=its, ite=ite, jts=jts, jte=jte, kts=kts, kte=kte, & - reset_dBZ=reset_dBZ, istep=istep, nsteps=nsteps, & - first_time_step=first_time_step, errmsg=errmsg, errflg=errflg, & - ! Extended diagnostics - ext_diag=ext_diag, & - ! vts1=vts1, txri=txri, txrc=txrc, & - prw_vcdc=prw_vcdc, & - prw_vcde=prw_vcde, tpri_inu=tpri_inu, tpri_ide_d=tpri_ide_d, & - tpri_ide_s=tpri_ide_s, tprs_ide=tprs_ide, & - tprs_sde_d=tprs_sde_d, & - tprs_sde_s=tprs_sde_s, tprg_gde_d=tprg_gde_d, & - tprg_gde_s=tprg_gde_s, tpri_iha=tpri_iha, & - tpri_wfz=tpri_wfz, tpri_rfz=tpri_rfz, tprg_rfz=tprg_rfz, & - tprs_scw=tprs_scw, tprg_scw=tprg_scw, tprg_rcs=tprg_rcs, & - tprs_rcs=tprs_rcs, & - tprr_rci=tprr_rci, tprg_rcg=tprg_rcg, tprw_vcd_c=tprw_vcd_c, & - tprw_vcd_e=tprw_vcd_e, tprr_sml=tprr_sml, tprr_gml=tprr_gml, & - tprr_rcg=tprr_rcg, tprr_rcs=tprr_rcs, & - tprv_rev=tprv_rev, tten3=tten3, & - qvten3=qvten3, qrten3=qrten3, qsten3=qsten3, qgten3=qgten3, & - qiten3=qiten3, niten3=niten3, nrten3=nrten3, ncten3=ncten3, & - qcten3=qcten3) - else - call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & - nc=nc, nwfa=nwfa, nifa=nifa, nwfa2d=nwfa2d, nifa2d=nifa2d, & - tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtstep, dt_inner=dt_inner, & - rainnc=rain_mp, rainncv=delta_rain_mp, & - snownc=snow_mp, snowncv=delta_snow_mp, & - icenc=ice_mp, icencv=delta_ice_mp, & - graupelnc=graupel_mp, graupelncv=delta_graupel_mp, sr=sr, & - refl_10cm=refl_10cm, & - diagflag=diagflag, do_radar_ref=do_radar_ref_mp, & - has_reqc=has_reqc, has_reqi=has_reqi, has_reqs=has_reqs, & - rand_perturb_on=rand_perturb_on, kme_stoch=kme_stoch, & - ! DH* 2020-06-05 not passing this optional argument, see - ! comment in module_mp_thompson.F90 / mp_gt_driver - !rand_pert=rand_pert, & - ids=ids, ide=ide, jds=jds, jde=jde, kds=kds, kde=kde, & - ims=ims, ime=ime, jms=jms, jme=jme, kms=kms, kme=kme, & - its=its, ite=ite, jts=jts, jte=jte, kts=kts, kte=kte, & - reset_dBZ=reset_dBZ, istep=istep, nsteps=nsteps, & - first_time_step=first_time_step, errmsg=errmsg, errflg=errflg, & - ! Extended diagnostics - ext_diag=ext_diag, & - ! vts1=vts1, txri=txri, txrc=txrc, & - prw_vcdc=prw_vcdc, & - prw_vcde=prw_vcde, tpri_inu=tpri_inu, tpri_ide_d=tpri_ide_d, & - tpri_ide_s=tpri_ide_s, tprs_ide=tprs_ide, & - tprs_sde_d=tprs_sde_d, & - tprs_sde_s=tprs_sde_s, tprg_gde_d=tprg_gde_d, & - tprg_gde_s=tprg_gde_s, tpri_iha=tpri_iha, & - tpri_wfz=tpri_wfz, tpri_rfz=tpri_rfz, tprg_rfz=tprg_rfz, & - tprs_scw=tprs_scw, tprg_scw=tprg_scw, tprg_rcs=tprg_rcs, & - tprs_rcs=tprs_rcs, & - tprr_rci=tprr_rci, tprg_rcg=tprg_rcg, tprw_vcd_c=tprw_vcd_c, & - tprw_vcd_e=tprw_vcd_e, tprr_sml=tprr_sml, tprr_gml=tprr_gml, & - tprr_rcg=tprr_rcg, tprr_rcs=tprr_rcs, & - tprv_rev=tprv_rev, tten3=tten3, & - qvten3=qvten3, qrten3=qrten3, qsten3=qsten3, qgten3=qgten3, & - qiten3=qiten3, niten3=niten3, nrten3=nrten3, ncten3=ncten3, & - qcten3=qcten3) - end if + call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & + nc=nc, nwfa=nwfa, nifa=nifa, nwfa2d=nwfa2d, nifa2d=nifa2d, & + tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtstep, dt_inner=dt_inner, & + rainnc=rain_mp, rainncv=delta_rain_mp, & + snownc=snow_mp, snowncv=delta_snow_mp, & + icenc=ice_mp, icencv=delta_ice_mp, & + graupelnc=graupel_mp, graupelncv=delta_graupel_mp, sr=sr, & + refl_10cm=refl_10cm, & + diagflag=diagflag, do_radar_ref=do_radar_ref_mp, & + has_reqc=has_reqc, has_reqi=has_reqi, has_reqs=has_reqs, & + rand_perturb_on=rand_perturb_on, kme_stoch=kme_stoch, & + ! DH* 2020-06-05 not passing this optional argument, see + ! comment in module_mp_thompson.F90 / mp_gt_driver + !rand_pert=rand_pert, & + ids=ids, ide=ide, jds=jds, jde=jde, kds=kds, kde=kde, & + ims=ims, ime=ime, jms=jms, jme=jme, kms=kms, kme=kme, & + its=its, ite=ite, jts=jts, jte=jte, kts=kts, kte=kte, & + reset_dBZ=reset_dBZ, istep=istep, nsteps=nsteps, & + first_time_step=first_time_step, errmsg=errmsg, errflg=errflg, & + ! Extended diagnostics + ext_diag=ext_diag, & + ! vts1=vts1, txri=txri, txrc=txrc, & + prw_vcdc=prw_vcdc, & + prw_vcde=prw_vcde, tpri_inu=tpri_inu, tpri_ide_d=tpri_ide_d, & + tpri_ide_s=tpri_ide_s, tprs_ide=tprs_ide, & + tprs_sde_d=tprs_sde_d, & + tprs_sde_s=tprs_sde_s, tprg_gde_d=tprg_gde_d, & + tprg_gde_s=tprg_gde_s, tpri_iha=tpri_iha, & + tpri_wfz=tpri_wfz, tpri_rfz=tpri_rfz, tprg_rfz=tprg_rfz, & + tprs_scw=tprs_scw, tprg_scw=tprg_scw, tprg_rcs=tprg_rcs, & + tprs_rcs=tprs_rcs, & + tprr_rci=tprr_rci, tprg_rcg=tprg_rcg, tprw_vcd_c=tprw_vcd_c, & + tprw_vcd_e=tprw_vcd_e, tprr_sml=tprr_sml, tprr_gml=tprr_gml, & + tprr_rcg=tprr_rcg, tprr_rcs=tprr_rcs, & + tprv_rev=tprv_rev, tten3=tten3, & + qvten3=qvten3, qrten3=qrten3, qsten3=qsten3, qgten3=qgten3, & + qiten3=qiten3, niten3=niten3, nrten3=nrten3, ncten3=ncten3, & + qcten3=qcten3) else - if (do_effective_radii) then - call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & - tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtstep, dt_inner=dt_inner, & - rainnc=rain_mp, rainncv=delta_rain_mp, & - snownc=snow_mp, snowncv=delta_snow_mp, & - icenc=ice_mp, icencv=delta_ice_mp, & - graupelnc=graupel_mp, graupelncv=delta_graupel_mp, sr=sr, & - refl_10cm=refl_10cm, & - diagflag=diagflag, do_radar_ref=do_radar_ref_mp, & - re_cloud=re_cloud, re_ice=re_ice, re_snow=re_snow, & - has_reqc=has_reqc, has_reqi=has_reqi, has_reqs=has_reqs, & - rand_perturb_on=rand_perturb_on, kme_stoch=kme_stoch, & - ! DH* 2020-06-05 not passing this optional argument, see - ! comment in module_mp_thompson.F90 / mp_gt_driver - !rand_pert=rand_pert, & - ids=ids, ide=ide, jds=jds, jde=jde, kds=kds, kde=kde, & - ims=ims, ime=ime, jms=jms, jme=jme, kms=kms, kme=kme, & - its=its, ite=ite, jts=jts, jte=jte, kts=kts, kte=kte, & - reset_dBZ=reset_dBZ, istep=istep, nsteps=nsteps, & - first_time_step=first_time_step, errmsg=errmsg, errflg=errflg, & - ! Extended diagnostics - ext_diag=ext_diag, & - ! vts1=vts1, txri=txri, txrc=txrc, & - prw_vcdc=prw_vcdc, & - prw_vcde=prw_vcde, tpri_inu=tpri_inu, tpri_ide_d=tpri_ide_d, & - tpri_ide_s=tpri_ide_s, tprs_ide=tprs_ide, & - tprs_sde_d=tprs_sde_d, & - tprs_sde_s=tprs_sde_s, tprg_gde_d=tprg_gde_d, & - tprg_gde_s=tprg_gde_s, tpri_iha=tpri_iha, & - tpri_wfz=tpri_wfz, tpri_rfz=tpri_rfz, tprg_rfz=tprg_rfz, & - tprs_scw=tprs_scw, tprg_scw=tprg_scw, tprg_rcs=tprg_rcs, & - tprs_rcs=tprs_rcs, & - tprr_rci=tprr_rci, tprg_rcg=tprg_rcg, tprw_vcd_c=tprw_vcd_c, & - tprw_vcd_e=tprw_vcd_e, tprr_sml=tprr_sml, tprr_gml=tprr_gml, & - tprr_rcg=tprr_rcg, tprr_rcs=tprr_rcs, & - tprv_rev=tprv_rev, tten3=tten3, & - qvten3=qvten3, qrten3=qrten3, qsten3=qsten3, qgten3=qgten3, & - qiten3=qiten3, niten3=niten3, nrten3=nrten3, ncten3=ncten3, & - qcten3=qcten3) - else - call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & - tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtstep, dt_inner=dt_inner, & - rainnc=rain_mp, rainncv=delta_rain_mp, & - snownc=snow_mp, snowncv=delta_snow_mp, & - icenc=ice_mp, icencv=delta_ice_mp, & - graupelnc=graupel_mp, graupelncv=delta_graupel_mp, sr=sr, & - refl_10cm=refl_10cm, & - diagflag=diagflag, do_radar_ref=do_radar_ref_mp, & - has_reqc=has_reqc, has_reqi=has_reqi, has_reqs=has_reqs, & - rand_perturb_on=rand_perturb_on, kme_stoch=kme_stoch, & - ! DH* 2020-06-05 not passing this optional argument, see - ! comment in module_mp_thompson.F90 / mp_gt_driver - !rand_pert=rand_pert, & - ids=ids, ide=ide, jds=jds, jde=jde, kds=kds, kde=kde, & - ims=ims, ime=ime, jms=jms, jme=jme, kms=kms, kme=kme, & - its=its, ite=ite, jts=jts, jte=jte, kts=kts, kte=kte, & - reset_dBZ=reset_dBZ, istep=istep, nsteps=nsteps, & - first_time_step=first_time_step, errmsg=errmsg, errflg=errflg, & - ! Extended diagnostics - ext_diag=ext_diag, & - ! vts1=vts1, txri=txri, txrc=txrc, & - prw_vcdc=prw_vcdc, & - prw_vcde=prw_vcde, tpri_inu=tpri_inu, tpri_ide_d=tpri_ide_d, & - tpri_ide_s=tpri_ide_s, tprs_ide=tprs_ide, & - tprs_sde_d=tprs_sde_d, & - tprs_sde_s=tprs_sde_s, tprg_gde_d=tprg_gde_d, & - tprg_gde_s=tprg_gde_s, tpri_iha=tpri_iha, & - tpri_wfz=tpri_wfz, tpri_rfz=tpri_rfz, tprg_rfz=tprg_rfz, & - tprs_scw=tprs_scw, tprg_scw=tprg_scw, tprg_rcs=tprg_rcs, & - tprs_rcs=tprs_rcs, & - tprr_rci=tprr_rci, tprg_rcg=tprg_rcg, tprw_vcd_c=tprw_vcd_c, & - tprw_vcd_e=tprw_vcd_e, tprr_sml=tprr_sml, tprr_gml=tprr_gml, & - tprr_rcg=tprr_rcg, tprr_rcs=tprr_rcs, & - tprv_rev=tprv_rev, tten3=tten3, & - qvten3=qvten3, qrten3=qrten3, qsten3=qsten3, qgten3=qgten3, & - qiten3=qiten3, niten3=niten3, nrten3=nrten3, ncten3=ncten3, & - qcten3=qcten3) - end if + call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & + tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtstep, dt_inner=dt_inner, & + rainnc=rain_mp, rainncv=delta_rain_mp, & + snownc=snow_mp, snowncv=delta_snow_mp, & + icenc=ice_mp, icencv=delta_ice_mp, & + graupelnc=graupel_mp, graupelncv=delta_graupel_mp, sr=sr, & + refl_10cm=refl_10cm, & + diagflag=diagflag, do_radar_ref=do_radar_ref_mp, & + has_reqc=has_reqc, has_reqi=has_reqi, has_reqs=has_reqs, & + rand_perturb_on=rand_perturb_on, kme_stoch=kme_stoch, & + ! DH* 2020-06-05 not passing this optional argument, see + ! comment in module_mp_thompson.F90 / mp_gt_driver + !rand_pert=rand_pert, & + ids=ids, ide=ide, jds=jds, jde=jde, kds=kds, kde=kde, & + ims=ims, ime=ime, jms=jms, jme=jme, kms=kms, kme=kme, & + its=its, ite=ite, jts=jts, jte=jte, kts=kts, kte=kte, & + reset_dBZ=reset_dBZ, istep=istep, nsteps=nsteps, & + first_time_step=first_time_step, errmsg=errmsg, errflg=errflg, & + ! Extended diagnostics + ext_diag=ext_diag, & + ! vts1=vts1, txri=txri, txrc=txrc, & + prw_vcdc=prw_vcdc, & + prw_vcde=prw_vcde, tpri_inu=tpri_inu, tpri_ide_d=tpri_ide_d, & + tpri_ide_s=tpri_ide_s, tprs_ide=tprs_ide, & + tprs_sde_d=tprs_sde_d, & + tprs_sde_s=tprs_sde_s, tprg_gde_d=tprg_gde_d, & + tprg_gde_s=tprg_gde_s, tpri_iha=tpri_iha, & + tpri_wfz=tpri_wfz, tpri_rfz=tpri_rfz, tprg_rfz=tprg_rfz, & + tprs_scw=tprs_scw, tprg_scw=tprg_scw, tprg_rcs=tprg_rcs, & + tprs_rcs=tprs_rcs, & + tprr_rci=tprr_rci, tprg_rcg=tprg_rcg, tprw_vcd_c=tprw_vcd_c, & + tprw_vcd_e=tprw_vcd_e, tprr_sml=tprr_sml, tprr_gml=tprr_gml, & + tprr_rcg=tprr_rcg, tprr_rcs=tprr_rcs, & + tprv_rev=tprv_rev, tten3=tten3, & + qvten3=qvten3, qrten3=qrten3, qsten3=qsten3, qgten3=qgten3, & + qiten3=qiten3, niten3=niten3, nrten3=nrten3, ncten3=ncten3, & + qcten3=qcten3) end if if (errflg/=0) return From fd5d7524e3fe7406e3743e9241f32924c364e31c Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 25 Oct 2021 07:36:52 -0600 Subject: [PATCH 78/98] Update .gitmodules and submodule pointer for rte-rrtmgp for code review and testing --- .gitmodules | 8 +++++--- physics/rte-rrtmgp | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 5bcc65869..ac5e41195 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,6 @@ [submodule "physics/rte-rrtmgp"] - path = physics/rte-rrtmgp - url = https://github.com/earth-system-radiation/rte-rrtmgp - branch = dtc/ccpp + path = physics/rte-rrtmgp + #url = https://github.com/earth-system-radiation/rte-rrtmgp + #branch = dtc/ccpp + url = https://github.com/climbfuji/rte-rrtmgp + branch = remove_invalid_optional_intent_ddt_metadata diff --git a/physics/rte-rrtmgp b/physics/rte-rrtmgp index 9588c7bd8..0b0212804 160000 --- a/physics/rte-rrtmgp +++ b/physics/rte-rrtmgp @@ -1 +1 @@ -Subproject commit 9588c7bd89e4f51a924f766e313bc42830fb4479 +Subproject commit 0b021280403b69ab9aa2afe6acaf6865cef8061c From 211b196b8f3ac0ccc80e0d49afb87481b893185b Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 25 Oct 2021 08:12:27 -0600 Subject: [PATCH 79/98] Remove optional attributes that were introduced by merging with NCAR main --- physics/GFS_radiation_surface.meta | 1 - physics/GFS_rrtmgp_pre.meta | 1 - physics/module_MYNNPBL_wrapper.meta | 1 - 3 files changed, 3 deletions(-) diff --git a/physics/GFS_radiation_surface.meta b/physics/GFS_radiation_surface.meta index 580a9923f..268edbb54 100644 --- a/physics/GFS_radiation_surface.meta +++ b/physics/GFS_radiation_surface.meta @@ -293,7 +293,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = inout - optional = F [alvsf] standard_name = vis_albedo_strong_cosz long_name = mean vis albedo with strong cosz dependency diff --git a/physics/GFS_rrtmgp_pre.meta b/physics/GFS_rrtmgp_pre.meta index f4600cb16..bd578e2ad 100644 --- a/physics/GFS_rrtmgp_pre.meta +++ b/physics/GFS_rrtmgp_pre.meta @@ -15,7 +15,6 @@ dimensions = () type = integer intent = in - optional = F [active_gases] standard_name = active_gases_used_by_RRTMGP long_name = active gases used by RRTMGP diff --git a/physics/module_MYNNPBL_wrapper.meta b/physics/module_MYNNPBL_wrapper.meta index 2f97cdd3a..aeecae190 100644 --- a/physics/module_MYNNPBL_wrapper.meta +++ b/physics/module_MYNNPBL_wrapper.meta @@ -1279,7 +1279,6 @@ type = real kind = kind_phys intent = in - optional = F [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP From 3d0c7e841396dd4f877702916ca32357a021bd83 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 25 Oct 2021 12:12:15 -0600 Subject: [PATCH 80/98] Resolve merge conflicts --- physics/GFS_rrtmgp_lw_post.meta | 7 ---- physics/GFS_rrtmgp_sw_post.meta | 7 ---- physics/dcyc2.meta | 7 ---- physics/mp_thompson.meta | 62 --------------------------------- 4 files changed, 83 deletions(-) diff --git a/physics/GFS_rrtmgp_lw_post.meta b/physics/GFS_rrtmgp_lw_post.meta index eddf84a5d..ebcf8350c 100644 --- a/physics/GFS_rrtmgp_lw_post.meta +++ b/physics/GFS_rrtmgp_lw_post.meta @@ -214,13 +214,6 @@ dimensions = (horizontal_loop_extent) type = topflw_type intent = out -[flxprf_lw] - standard_name = RRTMGP_lw_fluxes - long_name = lw fluxes total sky / csk and up / down at levels - units = W m-2 - dimensions = (horizontal_loop_extent,vertical_interface_dimension) - type = proflw_type - intent = inout [htrlwc] standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_timestep long_name = longwave clear sky heating rate diff --git a/physics/GFS_rrtmgp_sw_post.meta b/physics/GFS_rrtmgp_sw_post.meta index 7d895a341..d3d026989 100644 --- a/physics/GFS_rrtmgp_sw_post.meta +++ b/physics/GFS_rrtmgp_sw_post.meta @@ -333,13 +333,6 @@ type = real kind = kind_phys intent = inout -[flxprf_sw] - standard_name = RRTMGP_sw_fluxes - long_name = sw fluxes total sky / csk and up / down at levels - units = W m-2 - dimensions = (horizontal_loop_extent,adjusted_vertical_level_dimension_plus_one) - type = profsw_type - intent = inout [scmpsw] standard_name = components_of_surface_downward_shortwave_fluxes long_name = derived type for special components of surface downward shortwave fluxes diff --git a/physics/dcyc2.meta b/physics/dcyc2.meta index 24f6d67ad..1d6821d0a 100644 --- a/physics/dcyc2.meta +++ b/physics/dcyc2.meta @@ -346,13 +346,6 @@ dimensions = (horizontal_loop_extent) type = logical intent = in -[use_LW_jacobian] - standard_name = flag_to_calc_RRTMGP_LW_jacobian - long_name = logical flag to control RRTMGP LW calculation - units = flag - dimensions = () - type = logical - intent = in [damp_LW_fluxadj] standard_name = flag_to_damp_RRTMGP_LW_jacobian_flux_adjustment long_name = logical flag to control RRTMGP LW calculation diff --git a/physics/mp_thompson.meta b/physics/mp_thompson.meta index 54e747cf2..d375c9c9b 100644 --- a/physics/mp_thompson.meta +++ b/physics/mp_thompson.meta @@ -216,37 +216,6 @@ type = real kind = kind_phys intent = in -[do_effective_radii] - standard_name = flag_for_cloud_effective_radii - long_name = flag for cloud effective radii calculations in GFDL microphysics - units = flag - dimensions = () - type = logical - intent = in -[re_cloud] - standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle - long_name = eff. radius of cloud liquid water particle in micrometer - units = m - dimensions = (horizontal_dimension,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout -[re_ice] - standard_name = effective_radius_of_stratiform_cloud_ice_particle - long_name = eff. radius of cloud ice water particle in micrometer - units = m - dimensions = (horizontal_dimension,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout -[re_snow] - standard_name = effective_radius_of_stratiform_cloud_snow_particle - long_name = effective radius of cloud snow particle in micrometer - units = m - dimensions = (horizontal_dimension,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout [mpicomm] standard_name = mpi_communicator long_name = MPI communicator @@ -605,37 +574,6 @@ dimensions = () type = logical intent = in -[do_effective_radii] - standard_name = flag_for_cloud_effective_radii - long_name = flag for cloud effective radii calculations in GFDL microphysics - units = flag - dimensions = () - type = logical - intent = in -[re_cloud] - standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle - long_name = eff. radius of cloud liquid water particle in micrometer (meter here) - units = m - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout -[re_ice] - standard_name = effective_radius_of_stratiform_cloud_ice_particle - long_name = eff. radius of cloud ice water particle in micrometer (meter here) - units = m - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout -[re_snow] - standard_name = effective_radius_of_stratiform_cloud_snow_particle - long_name = effective radius of cloud snow particle in micrometer (meter here) - units = m - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout [mpicomm] standard_name = mpi_communicator long_name = MPI communicator From 35fc189308eb6f6047a535f0c25872d6ba312d6e Mon Sep 17 00:00:00 2001 From: uturuncoglu Date: Thu, 28 Oct 2021 16:11:04 -0600 Subject: [PATCH 81/98] fix spacing issue --- physics/sflx.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/sflx.f b/physics/sflx.f index 0e317af09..56bfc04c9 100644 --- a/physics/sflx.f +++ b/physics/sflx.f @@ -3994,7 +3994,7 @@ subroutine frh2o & do while ( (nlog < 10) .and. (kcount == 0) ) nlog = nlog + 1 - df = log( (psis*gs2/lsubf) * ( (1.0 + ck*swl)**2.0 ) & + df = log( (psis*gs2/lsubf) * ( (1.0 + ck*swl)**2.0 ) & & * (smcmax/(smc-swl))**bx ) - log(-(tkelv-tfreez)/tkelv) denom = 2.0*ck/(1.0 + ck*swl) + bx/(smc - swl) From cc49c8f1f10d32d9c40b6b1a0523c0596a680a6e Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 3 Nov 2021 16:23:39 -0600 Subject: [PATCH 82/98] Revert change to .gitmodules and update submodule pointer for ccpp-physics --- .gitmodules | 6 ++---- physics/rte-rrtmgp | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.gitmodules b/.gitmodules index ac5e41195..75e5ea836 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,4 @@ [submodule "physics/rte-rrtmgp"] path = physics/rte-rrtmgp - #url = https://github.com/earth-system-radiation/rte-rrtmgp - #branch = dtc/ccpp - url = https://github.com/climbfuji/rte-rrtmgp - branch = remove_invalid_optional_intent_ddt_metadata + url = https://github.com/earth-system-radiation/rte-rrtmgp + branch = dtc/ccpp diff --git a/physics/rte-rrtmgp b/physics/rte-rrtmgp index 0b0212804..9c51cb7c3 160000 --- a/physics/rte-rrtmgp +++ b/physics/rte-rrtmgp @@ -1 +1 @@ -Subproject commit 0b021280403b69ab9aa2afe6acaf6865cef8061c +Subproject commit 9c51cb7c3e227c9e84c2bff29ce4f438c7a54ae6 From 0014964f9da9fbde196c7988857a92c38283a8f2 Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Fri, 5 Nov 2021 17:19:36 +0000 Subject: [PATCH 83/98] Remove remaining optional arguments from metadata. --- physics/satmedmfvdifq.meta | 3 --- 1 file changed, 3 deletions(-) diff --git a/physics/satmedmfvdifq.meta b/physics/satmedmfvdifq.meta index 20d9f37f8..153a81bd4 100644 --- a/physics/satmedmfvdifq.meta +++ b/physics/satmedmfvdifq.meta @@ -76,7 +76,6 @@ dimensions = () type = integer intent = in - optional = F [ntrw] standard_name = index_for_rain_water_vertical_diffusion_tracer long_name = tracer index for rain water in the vertically diffused tracer array @@ -84,7 +83,6 @@ dimensions = () type = integer intent = in - optional = F [ntiw] standard_name = index_for_ice_cloud_condensate_vertical_diffusion_tracer long_name = tracer index for ice water in the vertically diffused tracer array @@ -575,7 +573,6 @@ dimensions = () type = integer intent = in - optional = F [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) From 1455ddd3a1aa00770e58c7b605ac45aaa2c5eb8c Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Fri, 5 Nov 2021 20:04:48 +0000 Subject: [PATCH 84/98] Adding spaces to improve code readability as suggested by S. Moorthi. --- physics/samfdeepcnv.f | 58 ++++++++++++++++++++--------------------- physics/samfshalcnv.f | 12 ++++----- physics/satmedmfvdifq.F | 30 ++++++++++----------- 3 files changed, 50 insertions(+), 50 deletions(-) diff --git a/physics/samfdeepcnv.f b/physics/samfdeepcnv.f index f021ebed4..8d98914ce 100644 --- a/physics/samfdeepcnv.f +++ b/physics/samfdeepcnv.f @@ -1210,12 +1210,12 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & dz = zi(i,k) - zi(i,k-1) tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz factor = 1. + tem - ecko(i,k,kk) = ((1.-tem)*ecko(i,k-1,kk)+tem* - & (ctro(i,k,kk)+ctro(i,k-1,kk)))/factor - chem_c(i,k,n)=fscav(n)*ecko(i,k,kk) - tem=chem_c(i,k,n)/(1.+c0t(i,k)*dz) - chem_pw(i,k,n)=c0t(i,k)*dz*tem*eta(i,k-1) - ecko(i,k,kk)=tem+ecko(i,k,kk)-chem_c(i,k,n) + ecko(i,k,kk) = ((1. - tem) * ecko(i,k-1,kk) + tem * + & (ctro(i,k,kk) + ctro(i,k-1,kk))) / factor + chem_c(i,k,n) = fscav(n) * ecko(i,k,kk) + tem = chem_c(i,k,n) / (1. + c0t(i,k) * dz) + chem_pw(i,k,n) = c0t(i,k) * dz * tem * eta(i,k-1) + ecko(i,k,kk) = tem + ecko(i,k,kk) - chem_c(i,k,n) endif endif enddo @@ -1792,8 +1792,8 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & do i = 1, im if (cnvflg(i)) then if(k > kb(i) .and. k <= ktcon(i)) then - shear= sqrt((uo(i,k)-uo(i,k-1)) ** 2 - & + (vo(i,k)-vo(i,k-1)) ** 2) + shear = sqrt((uo(i,k)-uo(i,k-1)) ** 2 + & + (vo(i,k)-vo(i,k-1)) ** 2) vshear(i) = vshear(i) + shear endif endif @@ -1992,18 +1992,18 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & do i = 1, im if (cnvflg(i) .and. k < jmin(i)) then gamma = el2orc * qeso(i,k) / to(i,k)**2 - dhh=hcdo(i,k) - dt=to(i,k) - dg=gamma - dh=heso(i,k) - dz=-1.*(zo(i,k+1)-zo(i,k)) + dhh = hcdo(i,k) + dt = to(i,k) + dg = gamma + dh = heso(i,k) + dz = -1.*(zo(i,k+1)-zo(i,k)) ! aa1(i)=aa1(i)+edto(i)*dz*etad(i,k) - aa1(i)=aa1(i)+edto(i)*dz - & *(grav/(cp*dt))*((dhh-dh)/(1.+dg)) - & *(1.+fv*cp*dg*dt/hvap) - val=0. + aa1(i) = aa1(i)+edto(i)*dz + & *(grav/(cp*dt))*((dhh-dh)/(1.+dg)) + & *(1.+fv*cp*dg*dt/hvap) + val = 0. ! aa1(i)=aa1(i)+edto(i)*dz*etad(i,k) - aa1(i)=aa1(i)+edto(i)*dz + aa1(i) = aa1(i)+edto(i)*dz & *grav*fv*max(val,(qeso(i,k)-qo(i,k))) endif enddo @@ -2638,19 +2638,19 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & do i = 1, im if (asqecflg(i) .and. k < jmin(i)) then gamma = el2orc * qeso(i,k) / to(i,k)**2 - dhh=hcdo(i,k) - dt= to(i,k) - dg= gamma - dh= heso(i,k) - dz=-1.*(zo(i,k+1)-zo(i,k)) + dhh = hcdo(i,k) + dt = to(i,k) + dg = gamma + dh = heso(i,k) + dz = -1.*(zo(i,k+1)-zo(i,k)) ! xaa0(i)=xaa0(i)+edtx(i)*dz*etad(i,k) - xaa0(i)=xaa0(i)+edtx(i)*dz - & *(grav/(cp*dt))*((dhh-dh)/(1.+dg)) - & *(1.+fv*cp*dg*dt/hvap) - val=0. + xaa0(i) = xaa0(i)+edtx(i)*dz + & *(grav/(cp*dt))*((dhh-dh)/(1.+dg)) + & *(1.+fv*cp*dg*dt/hvap) + val = 0. ! xaa0(i)=xaa0(i)+edtx(i)*dz*etad(i,k) - xaa0(i)=xaa0(i)+edtx(i)*dz - & *grav*fv*max(val,(qeso(i,k)-qo(i,k))) + xaa0(i) = xaa0(i)+edtx(i)*dz + & *grav*fv*max(val,(qeso(i,k)-qo(i,k))) endif enddo enddo diff --git a/physics/samfshalcnv.f b/physics/samfshalcnv.f index ae9b349bc..0a18262a8 100644 --- a/physics/samfshalcnv.f +++ b/physics/samfshalcnv.f @@ -1014,12 +1014,12 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & dz = zi(i,k) - zi(i,k-1) tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz factor = 1. + tem - ecko(i,k,kk) = ((1.-tem)*ecko(i,k-1,kk)+tem* - & (ctro(i,k,kk)+ctro(i,k-1,kk)))/factor - chem_c(i,k,n)=escav*fscav(n)*ecko(i,k,kk) - tem=chem_c(i,k,n)/(1.+c0t(i,k)*dz) - chem_pw(i,k,n)=c0t(i,k)*dz*tem*eta(i,k-1) - ecko(i,k,kk)=tem+ecko(i,k,kk)-chem_c(i,k,n) + ecko(i,k,kk) = ((1. - tem) * ecko(i,k-1,kk) + tem * + & (ctro(i,k,kk) + ctro(i,k-1,kk))) / factor + chem_c(i,k,n) = escav * fscav(n) * ecko(i,k,kk) + tem = chem_c(i,k,n) / (1. + c0t(i,k) * dz) + chem_pw(i,k,n) = c0t(i,k) * dz * tem * eta(i,k-1) + ecko(i,k,kk) = tem + ecko(i,k,kk) - chem_c(i,k,n) endif endif enddo diff --git a/physics/satmedmfvdifq.F b/physics/satmedmfvdifq.F index f2b5c5daa..6e0c1bd80 100644 --- a/physics/satmedmfvdifq.F +++ b/physics/satmedmfvdifq.F @@ -260,15 +260,15 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & parameter(ce0=0.4,cs0=0.2) parameter(rchck=1.5,ndt=20) - gravi=1.0/grav - g=grav - gocp=g/cp + gravi = 1.0 / grav + g = grav + gocp = g / cp ! cont=cp/g ! conq=hvap/g ! conw=1.0/g ! for del in pa !! parameter(cont=1000.*cp/g,conq=1000.*hvap/g,conw=1000./g) !kpa - elocp=hvap/cp - el2orc=hvap*hvap/(rv*cp) + elocp = hvap / cp + el2orc = hvap * hvap / (rv * cp) ! !************************************************************************ ! Initialize CCPP error handling variables @@ -461,11 +461,11 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & cfly(i,k) = 0. clwt = 1.0e-6 * (plyr(i,k)*0.001) if (qlx(i,k) > clwt) then - onemrh= max(1.e-10, 1.0-rhly(i,k)) - tem1 = min(max((onemrh*qstl(i,k))**0.49,0.0001),1.0) - tem1 = cql / tem1 - value = max(min( tem1*qlx(i,k), 50.0), 0.0) - tem2 = sqrt(sqrt(rhly(i,k))) + onemrh = max(1.e-10, 1.0-rhly(i,k)) + tem1 = min(max((onemrh*qstl(i,k))**0.49,0.0001),1.0) + tem1 = cql / tem1 + value = max(min( tem1*qlx(i,k), 50.0), 0.0) + tem2 = sqrt(sqrt(rhly(i,k))) cfly(i,k) = min(max(tem2*(1.0-exp(-value)), 0.0), 1.0) endif enddo @@ -2046,7 +2046,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & enddo ! if(ldiag3d .and. .not. gen_tend) then - idtend=dtidx(index_of_temperature,index_of_process_pbl) + idtend = dtidx(index_of_temperature,index_of_process_pbl) if(idtend>=1) then do k = 1,km do i = 1,im @@ -2056,7 +2056,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & enddo endif ! Send tendencies just for QV; other tracers are below. - idtend=dtidx(100+ntqv,index_of_process_pbl) + idtend = dtidx(100+ntqv,index_of_process_pbl) if(idtend>=1) then do k = 1,km do i = 1,im @@ -2108,7 +2108,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & enddo enddo if(ldiag3d .and. .not. gen_tend) then - idtend=dtidx(index_of_temperature,index_of_process_pbl) + idtend = dtidx(index_of_temperature,index_of_process_pbl) if(idtend>=1) then do k = 1,km1 do i = 1,im @@ -2200,7 +2200,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & enddo ! if(ldiag3d .and. .not. gen_tend) then - idtend=dtidx(index_of_x_wind,index_of_process_pbl) + idtend = dtidx(index_of_x_wind,index_of_process_pbl) if(idtend>=1) then do k = 1,km do i = 1,im @@ -2210,7 +2210,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw,ntiw,ntke, & enddo endif - idtend=dtidx(index_of_y_wind,index_of_process_pbl) + idtend = dtidx(index_of_y_wind,index_of_process_pbl) if(idtend>=1) then do k = 1,km do i = 1,im From 757f8d4920bdf5cac62eeec22fc15de659ef9c3e Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 5 Nov 2021 15:36:04 -0600 Subject: [PATCH 85/98] Remove hard-codedd compiler flags for several files frorm CMakeLists.txt --- CMakeLists.txt | 42 ------------------------------------------ 1 file changed, 42 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5252802ed..6033b3a43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,25 +143,6 @@ set(SCHEMES_OPENMP_OFF ${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rrtmgp/mo_ #------------------------------------------------------------------------------ if (${CMAKE_Fortran_COMPILER_ID} STREQUAL "GNU") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-none") - - SET_SOURCE_FILES_PROPERTIES(${LOCAL_CURRENT_SOURCE_DIR}/physics/module_bfmicrophysics.f - ${LOCAL_CURRENT_SOURCE_DIR}/physics/sflx.f - ${LOCAL_CURRENT_SOURCE_DIR}/physics/sfc_diff.f - ${LOCAL_CURRENT_SOURCE_DIR}/physics/sfc_diag.f - ${LOCAL_CURRENT_SOURCE_DIR}/physics/module_nst_model.f90 - ${LOCAL_CURRENT_SOURCE_DIR}/physics/calpreciptype.f90 - ${LOCAL_CURRENT_SOURCE_DIR}/physics/mersenne_twister.f - ${LOCAL_CURRENT_SOURCE_DIR}/physics/module_nst_water_prop.f90 - ${LOCAL_CURRENT_SOURCE_DIR}/physics/aer_cloud.F - ${LOCAL_CURRENT_SOURCE_DIR}/physics/wv_saturation.F - ${LOCAL_CURRENT_SOURCE_DIR}/physics/cldwat2m_micro.F - ${LOCAL_CURRENT_SOURCE_DIR}/physics/surface_perturbation.F90 - ${LOCAL_CURRENT_SOURCE_DIR}/physics/module_mp_thompson_make_number_concentrations.F90 - ${LOCAL_CURRENT_SOURCE_DIR}/physics/module_SF_JSFC.F90 - ${LOCAL_CURRENT_SOURCE_DIR}/physics/module_BL_MYJPBL.F90 - PROPERTIES COMPILE_FLAGS "-fdefault-real-8 -fdefault-double-8 ${OpenMP_Fortran_FLAGS}") - if (PROJECT STREQUAL "CCPP-FV3") # Set 32-bit floating point precision flags for certain files # that are executed in the dynamics (fast physics part) @@ -274,29 +255,6 @@ elseif (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel") SET_PROPERTY(SOURCE ${SCHEMES2} ${CAPS} APPEND_STRING PROPERTY COMPILE_FLAGS " ${CMAKE_Fortran_FLAGS_DEFAULT_PREC} ${OpenMP_Fortran_FLAGS} ") - else (PROJECT STREQUAL "CCPP-FV3") - SET_SOURCE_FILES_PROPERTIES(${LOCAL_CURRENT_SOURCE_DIR}/physics/module_bfmicrophysics.f - ${LOCAL_CURRENT_SOURCE_DIR}/physics/sflx.f - ${LOCAL_CURRENT_SOURCE_DIR}/physics/sfc_diff.f - ${LOCAL_CURRENT_SOURCE_DIR}/physics/sfc_diag.f - PROPERTIES COMPILE_FLAGS "-r8 ${OpenMP_Fortran_FLAGS} ") - SET_SOURCE_FILES_PROPERTIES(${LOCAL_CURRENT_SOURCE_DIR}/physics/module_nst_model.f90 - ${LOCAL_CURRENT_SOURCE_DIR}/physics/calpreciptype.f90 - PROPERTIES COMPILE_FLAGS "-r8 -free ${OpenMP_Fortran_FLAGS} ") - SET_SOURCE_FILES_PROPERTIES(${LOCAL_CURRENT_SOURCE_DIR}/physics/mersenne_twister.f - PROPERTIES COMPILE_FLAGS "-r8 -ftz ${OpenMP_Fortran_FLAGS} ") - SET_SOURCE_FILES_PROPERTIES(${LOCAL_CURRENT_SOURCE_DIR}/physics/module_nst_water_prop.f90 - PROPERTIES COMPILE_FLAGS "-extend-source 132 -r8 -free ${OpenMP_Fortran_FLAGS} ") - SET_SOURCE_FILES_PROPERTIES(${LOCAL_CURRENT_SOURCE_DIR}/physics/aer_cloud.F - ${LOCAL_CURRENT_SOURCE_DIR}/physics/wv_saturation.F - ${LOCAL_CURRENT_SOURCE_DIR}/physics/cldwat2m_micro.F - ${LOCAL_CURRENT_SOURCE_DIR}/physics/surface_perturbation.F90 - PROPERTIES COMPILE_FLAGS "-r8 ${OpenMP_Fortran_FLAGS} ") - SET_SOURCE_FILES_PROPERTIES(${LOCAL_CURRENT_SOURCE_DIR}/physics/module_mp_thompson_make_number_concentrations.F90 - PROPERTIES COMPILE_FLAGS "-r8 ${OpenMP_Fortran_FLAGS} ") - SET_SOURCE_FILES_PROPERTIES(${LOCAL_CURRENT_SOURCE_DIR}/physics/module_SF_JSFC.F90 - ${LOCAL_CURRENT_SOURCE_DIR}/physics/module_BL_MYJPBL.F90 - PROPERTIES COMPILE_FLAGS "-r8 ${OpenMP_Fortran_FLAGS} ") endif (PROJECT STREQUAL "CCPP-FV3") else() From 58f1e65515ef86c3fa7186d9c90d9bd613a51a0b Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 5 Nov 2021 15:24:27 -0600 Subject: [PATCH 86/98] Remove extra logic that reduces optimization for radiation_aerosols.f from AVX2 to AVX-I --- CMakeLists.txt | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6033b3a43..4d5c8eae4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -195,24 +195,6 @@ elseif (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel") list(APPEND SCHEMES_SFX_OPT ${LOCAL_CURRENT_SOURCE_DIR}/physics/module_sf_mynn.F90) endif() - if (${LOCAL_CURRENT_SOURCE_DIR}/physics/radiation_aerosols.f IN_LIST SCHEMES) - # Replace -xHost or -xCORE-AVX2 with -xCORE-AVX-I for certain files - set(CMAKE_Fortran_FLAGS_LOPT1 ${CMAKE_Fortran_FLAGS_OPT}) - string(REPLACE "-xHOST" "-xCORE-AVX-I" - CMAKE_Fortran_FLAGS_LOPT1 - "${CMAKE_Fortran_FLAGS_LOPT1}") - string(REPLACE "-xCORE-AVX2" "-xCORE-AVX-I" - CMAKE_Fortran_FLAGS_LOPT1 - "${CMAKE_Fortran_FLAGS_LOPT1}") - string(REPLACE "-axSSE4.2,CORE-AVX2" "-axSSE4.2,CORE-AVX-I" - CMAKE_Fortran_FLAGS_LOPT1 - "${CMAKE_Fortran_FLAGS_LOPT1}") - SET_SOURCE_FILES_PROPERTIES(${LOCAL_CURRENT_SOURCE_DIR}/physics/radiation_aerosols.f - PROPERTIES COMPILE_FLAGS "${CMAKE_Fortran_FLAGS_LOPT1}") - # Add all of the above files to the list of schemes with special compiler flags - list(APPEND SCHEMES_SFX_OPT ${LOCAL_CURRENT_SOURCE_DIR}/physics/radiation_aerosols.f) - endif() - # Remove files with special compiler flags from list of files with standard compiler flags if (SCHEMES_SFX_OPT) list(REMOVE_ITEM SCHEMES ${SCHEMES_SFX_OPT}) @@ -260,7 +242,7 @@ elseif (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel") else() message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER}) message ("Fortran compiler: " ${CMAKE_Fortran_COMPILER_ID}) - message (FATAL_ERROR "This program has only been compiled with gfortran, pgf90 and ifort. If another compiler is needed, the appropriate flags must be added in ${GFS_PHYS_SRC}/CMakeLists.txt") + message (FATAL_ERROR "This program has only been compiled with gfortran and ifort. If another compiler is needed, the appropriate flags must be added in ${GFS_PHYS_SRC}/CMakeLists.txt") endif() #------------------------------------------------------------------------------ From 6bc90ec037c5f707b71482b5bb9fbddcaef4630e Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Mon, 8 Nov 2021 18:40:47 +0000 Subject: [PATCH 87/98] Precompute a few quantities in SAMF deep & shallow convective schemes to increase runtime performance as suggested by S. Moorthi. --- physics/samfdeepcnv.f | 82 +++++++++++++++++++++---------------------- physics/samfshalcnv.f | 49 +++++++++++++------------- 2 files changed, 64 insertions(+), 67 deletions(-) diff --git a/physics/samfdeepcnv.f b/physics/samfdeepcnv.f index 8d98914ce..b246c0ab1 100644 --- a/physics/samfdeepcnv.f +++ b/physics/samfdeepcnv.f @@ -2050,14 +2050,11 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & do i = 1, im if(cnvflg(i)) then dp = 1000. * del(i,1) - dellah(i,1) = edto(i) * etad(i,1) * (hcdo(i,1) - & - heo(i,1)) * grav / dp - dellaq(i,1) = edto(i) * etad(i,1) * qrcdo(i,1) - & * grav / dp - dellau(i,1) = edto(i) * etad(i,1) * (ucdo(i,1) - & - uo(i,1)) * grav / dp - dellav(i,1) = edto(i) * etad(i,1) * (vcdo(i,1) - & - vo(i,1)) * grav / dp + tem = edto(i) * etad(i,1) * grav / dp + dellah(i,1) = tem * (hcdo(i,1) - heo(i,1)) + dellaq(i,1) = tem * qrcdo(i,1) + dellau(i,1) = tem * (ucdo(i,1) - uo(i,1)) + dellav(i,1) = tem * (vcdo(i,1) - vo(i,1)) endif enddo if (.not.hwrf_samfdeep) then @@ -2099,6 +2096,8 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & ptem = xlamde ptem1 = xlamdd endif + + factor = grav / dp cj dellah(i,k) = dellah(i,k) + & ((aup*eta(i,k)-adw*edto(i)*etad(i,k))*dv1h @@ -2106,27 +2105,27 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & & - (aup*tem*eta(i,k-1)+adw*edto(i)*ptem*etad(i,k))*dv2h*dz & + aup*tem1*eta(i,k-1)*.5*(hcko(i,k)+hcko(i,k-1))*dz & + adw*edto(i)*ptem1*etad(i,k)*.5*(hcdo(i,k)+hcdo(i,k-1))*dz - & ) *grav/dp + & ) * factor cj dellaq(i,k) = dellaq(i,k) + & (- (aup*tem*eta(i,k-1)+adw*edto(i)*ptem*etad(i,k))*dv2q*dz & + aup*tem1*eta(i,k-1)*.5*(qrcko(i,k)+qcko(i,k-1))*dz & + adw*edto(i)*ptem1*etad(i,k)*.5*(qrcdo(i,k)+qcdo(i,k-1))*dz - & ) *grav/dp + & ) * factor cj tem1=eta(i,k)*(uo(i,k)-ucko(i,k)) tem2=eta(i,k-1)*(uo(i,k-1)-ucko(i,k-1)) ptem1=etad(i,k)*(uo(i,k)-ucdo(i,k)) ptem2=etad(i,k-1)*(uo(i,k-1)-ucdo(i,k-1)) dellau(i,k) = dellau(i,k) + - & (aup*(tem1-tem2)-adw*edto(i)*(ptem1-ptem2))*grav/dp + & (aup*(tem1-tem2)-adw*edto(i)*(ptem1-ptem2))*factor cj tem1=eta(i,k)*(vo(i,k)-vcko(i,k)) tem2=eta(i,k-1)*(vo(i,k-1)-vcko(i,k-1)) ptem1=etad(i,k)*(vo(i,k)-vcdo(i,k)) ptem2=etad(i,k-1)*(vo(i,k-1)-vcdo(i,k-1)) dellav(i,k) = dellav(i,k) + - & (aup*(tem1-tem2)-adw*edto(i)*(ptem1-ptem2))*grav/dp + & (aup*(tem1-tem2)-adw*edto(i)*(ptem1-ptem2))*factor cj endif enddo @@ -2161,20 +2160,15 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & if(cnvflg(i)) then indx = ktcon(i) dp = 1000. * del(i,indx) - dv1h = heo(i,indx-1) - dellah(i,indx) = eta(i,indx-1) * - & (hcko(i,indx-1) - dv1h) * grav / dp - dellaq(i,indx) = eta(i,indx-1) * - & qcko(i,indx-1) * grav / dp - dellau(i,indx) = eta(i,indx-1) * - & (ucko(i,indx-1) - uo(i,indx-1)) * grav / dp - dellav(i,indx) = eta(i,indx-1) * - & (vcko(i,indx-1) - vo(i,indx-1)) * grav / dp + tem = eta(i,indx-1) * grav / dp + dellah(i,indx) = tem * (hcko(i,indx-1) - heo(i,indx-1)) + dellaq(i,indx) = tem * qcko(i,indx-1) + dellau(i,indx) = tem * (ucko(i,indx-1) - uo(i,indx-1)) + dellav(i,indx) = tem * (vcko(i,indx-1) - vo(i,indx-1)) c c cloud water c - dellal(i,indx) = eta(i,indx-1) * - & qlko_ktcon(i) * grav / dp + dellal(i,indx) = tem * qlko_ktcon(i) endif enddo if (.not.hwrf_samfdeep) then @@ -2952,20 +2946,22 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & do i = 1, im if (cnvflg(i) .and. k <= kmax(i)) then if(k <= ktcon(i)) then + tem2 = xmb(i) * dt2 dellat = (dellah(i,k) - hvap * dellaq(i,k)) / cp - t1(i,k) = t1(i,k) + dellat * xmb(i) * dt2 - q1(i,k) = q1(i,k) + dellaq(i,k) * xmb(i) * dt2 -! tem = 1./rcs(i) -! u1(i,k) = u1(i,k) + dellau(i,k) * xmb(i) * dt2 * tem -! v1(i,k) = v1(i,k) + dellav(i,k) * xmb(i) * dt2 * tem - u1(i,k) = u1(i,k) + dellau(i,k) * xmb(i) * dt2 - v1(i,k) = v1(i,k) + dellav(i,k) * xmb(i) * dt2 + t1(i,k) = t1(i,k) + tem2 * dellat + q1(i,k) = q1(i,k) + tem2 * dellaq(i,k) +! tem = tem2 / rcs(i) +! u1(i,k) = u1(i,k) + dellau(i,k) * tem +! v1(i,k) = v1(i,k) + dellav(i,k) * tem + u1(i,k) = u1(i,k) + tem2 * dellau(i,k) + v1(i,k) = v1(i,k) + tem2 * dellav(i,k) dp = 1000. * del(i,k) - delhbar(i) = delhbar(i) + dellah(i,k)*xmb(i)*dp/grav - delqbar(i) = delqbar(i) + dellaq(i,k)*xmb(i)*dp/grav - deltbar(i) = deltbar(i) + dellat*xmb(i)*dp/grav - delubar(i) = delubar(i) + dellau(i,k)*xmb(i)*dp/grav - delvbar(i) = delvbar(i) + dellav(i,k)*xmb(i)*dp/grav + tem = xmb(i) * dp / grav + delhbar(i) = delhbar(i) + tem * dellah(i,k) + delqbar(i) = delqbar(i) + tem * dellaq(i,k) + deltbar(i) = deltbar(i) + tem * dellat + delubar(i) = delubar(i) + tem * dellau(i,k) + delvbar(i) = delvbar(i) + tem * dellav(i,k) endif endif enddo @@ -3187,26 +3183,28 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & qcond(i) = evef * (q1(i,k) - qeso(i,k)) & / (1. + el2orc * qeso(i,k) / t1(i,k)**2) dp = 1000. * del(i,k) + tem = grav / dp + tem1 = dp / grav if(rn(i) > 0. .and. qcond(i) < 0.) then qevap(i) = -qcond(i) * (1.-exp(-.32*sqrt(dt2*rn(i)))) - qevap(i) = min(qevap(i), rn(i)*1000.*grav/dp) - delq2(i) = delqev(i) + .001 * qevap(i) * dp / grav + qevap(i) = min(qevap(i), rn(i)*1000.*tem) + delq2(i) = delqev(i) + .001 * qevap(i) * tem1 endif if(rn(i) > 0. .and. qcond(i) < 0. .and. & delq2(i) > rntot(i)) then - qevap(i) = 1000.* grav * (rntot(i) - delqev(i)) / dp + qevap(i) = 1000.* tem * (rntot(i) - delqev(i)) flg(i) = .false. endif if(rn(i) > 0. .and. qevap(i) > 0.) then q1(i,k) = q1(i,k) + qevap(i) t1(i,k) = t1(i,k) - elocp * qevap(i) - rn(i) = rn(i) - .001 * qevap(i) * dp / grav + rn(i) = rn(i) - .001 * qevap(i) * tem1 deltv(i) = - elocp*qevap(i)/dt2 delq(i) = + qevap(i)/dt2 - delqev(i) = delqev(i) + .001*dp*qevap(i)/grav + delqev(i) = delqev(i) + .001 * qevap(i) * tem1 endif - delqbar(i) = delqbar(i) + delq(i)*dp/grav - deltbar(i) = deltbar(i) + deltv(i)*dp/grav + delqbar(i) = delqbar(i) + delq(i) * tem1 + deltbar(i) = deltbar(i) + deltv(i) * tem1 endif endif enddo diff --git a/physics/samfshalcnv.f b/physics/samfshalcnv.f index 0a18262a8..846fb30c1 100644 --- a/physics/samfshalcnv.f +++ b/physics/samfshalcnv.f @@ -1569,25 +1569,27 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & c tem = 0.5 * (xlamue(i,k)+xlamue(i,k-1)) tem1 = xlamud(i) + + factor = grav / dp cj dellah(i,k) = dellah(i,k) + & ( eta(i,k)*dv1h - eta(i,k-1)*dv3h & - tem*eta(i,k-1)*dv2h*dz & + tem1*eta(i,k-1)*.5*(hcko(i,k)+hcko(i,k-1))*dz - & ) *grav/dp + & ) * factor cj dellaq(i,k) = dellaq(i,k) + & ( - tem*eta(i,k-1)*dv2q*dz & + tem1*eta(i,k-1)*.5*(qrcko(i,k)+qcko(i,k-1))*dz - & ) *grav/dp + & ) * factor cj tem1=eta(i,k)*(uo(i,k)-ucko(i,k)) tem2=eta(i,k-1)*(uo(i,k-1)-ucko(i,k-1)) - dellau(i,k) = dellau(i,k) + (tem1-tem2) * grav/dp + dellau(i,k) = dellau(i,k) + (tem1-tem2) * factor cj tem1=eta(i,k)*(vo(i,k)-vcko(i,k)) tem2=eta(i,k-1)*(vo(i,k-1)-vcko(i,k-1)) - dellav(i,k) = dellav(i,k) + (tem1-tem2) * grav/dp + dellav(i,k) = dellav(i,k) + (tem1-tem2) * factor cj endif endif @@ -1618,20 +1620,15 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & if(cnvflg(i)) then indx = ktcon(i) dp = 1000. * del(i,indx) - dv1h = heo(i,indx-1) - dellah(i,indx) = eta(i,indx-1) * - & (hcko(i,indx-1) - dv1h) * grav / dp - dellaq(i,indx) = eta(i,indx-1) * - & qcko(i,indx-1) * grav / dp - dellau(i,indx) = eta(i,indx-1) * - & (ucko(i,indx-1) - uo(i,indx-1)) * grav / dp - dellav(i,indx) = eta(i,indx-1) * - & (vcko(i,indx-1) - vo(i,indx-1)) * grav / dp + tem = eta(i,indx-1) * grav / dp + dellah(i,indx) = tem * (hcko(i,indx-1) - heo(i,indx-1)) + dellaq(i,indx) = tem * qcko(i,indx-1) + dellau(i,indx) = tem * (ucko(i,indx-1) - uo(i,indx-1)) + dellav(i,indx) = tem * (vcko(i,indx-1) - vo(i,indx-1)) c c cloud water c - dellal(i,indx) = eta(i,indx-1) * - & qlko_ktcon(i) * grav / dp + dellal(i,indx) = tem * qlko_ktcon(i) endif enddo if (.not.hwrf_samfshal) then @@ -1906,11 +1903,12 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & u1(i,k) = u1(i,k) + dellau(i,k) * xmb(i) * dt2 v1(i,k) = v1(i,k) + dellav(i,k) * xmb(i) * dt2 dp = 1000. * del(i,k) - delhbar(i) = delhbar(i) + dellah(i,k)*xmb(i)*dp/grav - delqbar(i) = delqbar(i) + dellaq(i,k)*xmb(i)*dp/grav - deltbar(i) = deltbar(i) + dellat*xmb(i)*dp/grav - delubar(i) = delubar(i) + dellau(i,k)*xmb(i)*dp/grav - delvbar(i) = delvbar(i) + dellav(i,k)*xmb(i)*dp/grav + tem = xmb(i) * dp / grav + delhbar(i) = delhbar(i) + tem * dellah(i,k) + delqbar(i) = delqbar(i) + tem * dellaq(i,k) + deltbar(i) = deltbar(i) + tem * dellat + delubar(i) = delubar(i) + tem * dellau(i,k) + delvbar(i) = delvbar(i) + tem * dellav(i,k) endif endif enddo @@ -2138,10 +2136,11 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & qcond(i) = evef * (q1(i,k) - qeso(i,k)) & / (1. + el2orc * qeso(i,k) / t1(i,k)**2) dp = 1000. * del(i,k) + factor = dp / grav if(rn(i) > 0. .and. qcond(i) < 0.) then qevap(i) = -qcond(i) * (1.-exp(-.32*sqrt(dt2*rn(i)))) qevap(i) = min(qevap(i), rn(i)*1000.*grav/dp) - delq2(i) = delqev(i) + .001 * qevap(i) * dp / grav + delq2(i) = delqev(i) + .001 * qevap(i) * factor endif if(rn(i) > 0. .and. qcond(i) < 0. .and. & delq2(i) > rntot(i)) then @@ -2149,7 +2148,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & flg(i) = .false. endif if(rn(i) > 0. .and. qevap(i) > 0.) then - tem = .001 * dp / grav + tem = .001 * factor tem1 = qevap(i) * tem if(tem1 > rn(i)) then qevap(i) = rn(i) / tem @@ -2161,10 +2160,10 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & t1(i,k) = t1(i,k) - elocp * qevap(i) deltv(i) = - elocp*qevap(i)/dt2 delq(i) = + qevap(i)/dt2 - delqev(i) = delqev(i) + .001*dp*qevap(i)/grav + delqev(i) = delqev(i) + tem * qevap(i) endif - delqbar(i) = delqbar(i) + delq(i)*dp/grav - deltbar(i) = deltbar(i) + deltv(i)*dp/grav + delqbar(i) = delqbar(i) + delq(i) * factor + deltbar(i) = deltbar(i) + deltv(i) * factor endif endif enddo From 3c00f02c5d928d00fb64d1f77c41fb1949f66b66 Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Mon, 8 Nov 2021 19:26:21 +0000 Subject: [PATCH 88/98] Remove multiplication by -1. --- physics/samfdeepcnv.f | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/samfdeepcnv.f b/physics/samfdeepcnv.f index b246c0ab1..2f34041c2 100644 --- a/physics/samfdeepcnv.f +++ b/physics/samfdeepcnv.f @@ -1996,7 +1996,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & dt = to(i,k) dg = gamma dh = heso(i,k) - dz = -1.*(zo(i,k+1)-zo(i,k)) + dz = zo(i,k) - zo(i,k+1) ! aa1(i)=aa1(i)+edto(i)*dz*etad(i,k) aa1(i) = aa1(i)+edto(i)*dz & *(grav/(cp*dt))*((dhh-dh)/(1.+dg)) @@ -2636,7 +2636,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & dt = to(i,k) dg = gamma dh = heso(i,k) - dz = -1.*(zo(i,k+1)-zo(i,k)) + dz = zo(i,k) - zo(i,k+1) ! xaa0(i)=xaa0(i)+edtx(i)*dz*etad(i,k) xaa0(i) = xaa0(i)+edtx(i)*dz & *(grav/(cp*dt))*((dhh-dh)/(1.+dg)) From f9dc89a49815b1d65d43625b99c5efa51381b2f0 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Thu, 4 Nov 2021 11:24:17 -0600 Subject: [PATCH 89/98] Update top-level README.md --- README.md | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 9000afccc..b4aaef36f 100644 --- a/README.md +++ b/README.md @@ -5,16 +5,24 @@ The Common Community Physics Package (CCPP) is designed to facilitate the implem Please see more information about the CCPP at the locations below. - [CCPP website hosted by the Developmental Testbed Center (DTC)](https://dtcenter.org/ccpp) -- [CCPP public release information](https://dtcenter.org/community-code/common-community-physics-package-ccpp/ccpp-scm-version-4-0) -- [CCPP Technical Documentation](https://ccpp-techdoc.readthedocs.io/en/latest/) -- [CCPP Scientific Documentation](https://dtcenter.org/GMTB/v4.0/sci_doc/) -- [CCPP Physics GutHub wiki](https://github.com/NCAR/ccpp-physics/wiki) +- [CCPP public release information](https://dtcenter.org/community-code/common-community-physics-package-ccpp/download) +- [CCPP Technical Documentation](https://ccpp-techdoc.readthedocs.io/en/latest) +- [CCPP Scientific Documentation](https://dtcenter.ucar.edu/GMTB/v5.0.0/sci_doc) +- [CCPP Physics GitHub wiki](https://github.com/NCAR/ccpp-physics/wiki) - [CCPP Framework GitHub wiki](https://github.com/NCAR/ccpp-framework/wiki) -For the use of CCPP with its Single Column Model, see the [Single Column Model User's Guide](https://dtcenter.org/GMTB/v4.0/scm-ccpp-guide-v4.0.pdf). +For the use of CCPP with its Single Column Model, see the [Single Column Model User's Guide](http://dtcenter.org/sites/default/files/paragraph/scm-ccpp-guide-v5.0.0.pdf). -For the use of CCPP with NOAA's Unified Forecast System (UFS), see the [UFS Medium-Range Application User's Guide](https://ufs-mrweather-app.readthedocs.io/en/latest/) and the [UFS Weather Model User's Guide](https://ufs-weather-model.readthedocs.io/en/latest/). +For the use of CCPP with NOAA's Unified Forecast System (UFS), see the [UFS Medium-Range Application User's Guide](https://ufs-mrweather-app.readthedocs.io/en/latest), the [UFS Short-Range Application User's Guide](https://ufs-srweather-app.readthedocs.io/en/latest) and the [UFS Weather Model User's Guide](https://ufs-weather-model.readthedocs.io/en/latest). + +Questions can be directed to the [CCPP User Support Forum](https://dtcenter.org/forum/ccpp-user-support) or posted in the [CCPP Physics GitHub discussions](https://github.com/NCAR/ccpp-physics/discussions) or [CCPP Framework GitHub discussions](https://github.com/NCAR/ccpp-framework/discussions). When using the CCPP with NOAA's UFS, questions can be posted in the [UFS Weather Model](https://forums.ufscommunity.org/forum/ufs-weather-model) section of the [UFS Forum](https://forums.ufscommunity.org). + +## Corresponding CCPP Standard Names dictionary + +This revision of the CCPP physics library is compliant with [version 0.1.1 of the CCPP Standard Names dictionary](https://github.com/ESCOMP/CCPPStandardNames/releases/tag/v0.1.1). + +## Licensing The Apache license will be in effect unless superseded by an existing license in specific files. -Questions can be directed to the [CCPP Help Desk](mailto:gmtb-help@ucar.edu). When using the CCPP with NOAA's UFS, questions can be posted in the [UFS Weather Model](https://forums.ufscommunity.org/forum/ufs-weather-model) section of the [UFS Forum](https://forums.ufscommunity.org/) +### Last updated by Dom Heinzeller, 11/04/2021 \ No newline at end of file From c2ed86108dc40c4e7caf7d1211c630874eea803f Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 5 Nov 2021 15:28:56 -0600 Subject: [PATCH 90/98] Add Man and Linlin to CODEOWNERS --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index d7c3658fd..bd4193c5a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -3,7 +3,7 @@ # These owners will be the default owners for everything in the repo. #* @defunkt -* @climbfuji @llpcarson @grantfirl +* @climbfuji @llpcarson @grantfirl @mzhangw @panll # Order is important. The last matching pattern has the most precedence. # So if a pull request only touches javascript files, only these owners From cbd17ca00fdfaede4fb4a24c79f9fc5c668677ad Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Thu, 4 Nov 2021 11:24:17 -0600 Subject: [PATCH 91/98] Update top-level README.md From 9e784fd219a60457130995a8e94fbe582b10153f Mon Sep 17 00:00:00 2001 From: "anning.cheng" Date: Tue, 9 Nov 2021 09:47:34 -0500 Subject: [PATCH 92/98] decreases memory usage by 6 times for MERRA2 --- physics/GFS_phys_time_vary.fv3.F90 | 18 +-- physics/GFS_phys_time_vary.fv3.meta | 15 ++ physics/aerclm_def.F | 4 +- physics/aerinterp.F90 | 241 ++++++++++++++++++++++++---- 4 files changed, 241 insertions(+), 37 deletions(-) diff --git a/physics/GFS_phys_time_vary.fv3.F90 b/physics/GFS_phys_time_vary.fv3.F90 index a8ecc1a5e..d6155e6b1 100644 --- a/physics/GFS_phys_time_vary.fv3.F90 +++ b/physics/GFS_phys_time_vary.fv3.F90 @@ -21,7 +21,7 @@ module GFS_phys_time_vary use h2o_def, only : levh2o, h2o_coeff, h2o_lat, h2o_pres, h2o_time, h2oplin use h2ointerp, only : read_h2odata, setindxh2o, h2ointerpol - use aerclm_def, only : aerin, aer_pres, ntrcaer, ntrcaerm + use aerclm_def, only : aerin, aer_pres, ntrcaer, ntrcaerm, iamin, iamax, jamin, jamax use aerinterp, only : read_aerdata, setindxaer, aerinterpol, read_aerdataf use iccn_def, only : ciplin, ccnin, ci_pres @@ -68,7 +68,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, ozpl, jindx1_h, jindx2_h, ddy_h, h2opl, & + jindx1_o3, jindx2_o3, ddy_o3, ozpl, 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, & @@ -88,6 +88,7 @@ subroutine GFS_phys_time_vary_init ( integer, intent(in) :: me, master, ntoz, iccn, iflip, im, nx, ny logical, intent(in) :: h2o_phys, iaerclm, flag_restart integer, intent(in) :: idate(:) + real(kind_phys), intent(in) :: fhour real(kind_phys), intent(in) :: xlat_d(:), xlon_d(:) integer, intent(inout) :: jindx1_o3(:), jindx2_o3(:), jindx1_h(:), jindx2_h(:) @@ -173,7 +174,7 @@ subroutine GFS_phys_time_vary_init ( integer, intent(out) :: errflg ! Local variables - integer :: i, j, ix, vegtyp, iamin, iamax, jamin, jamax + integer :: i, j, ix, vegtyp real(kind_phys) :: rsnow !--- Noah MP @@ -387,8 +388,7 @@ subroutine GFS_phys_time_vary_init ( if (errflg/=0) return if (iaerclm) then - call read_aerdataf (iamin, iamax, jamin, jamax, me, master, iflip, & - idate, errmsg, errflg) + call read_aerdataf (me, master, iflip, idate, fhour, errmsg, errflg) if (errflg/=0) return end if @@ -715,7 +715,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, nscyc, ntoz, h2o_phys, iaerclm, iccn, clstp, & - jindx1_o3, jindx2_o3, ddy_o3, ozpl, jindx1_h, jindx2_h, ddy_h, h2opl, & + 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, & imap, jmap, prsl, seed0, rann, nthrds, nx, ny, nsst, tile_num, nlunit, lsoil, lsoil_lsm,& @@ -730,7 +730,7 @@ subroutine GFS_phys_time_vary_timestep_init ( ! Interface variables integer, intent(in) :: me, master, cnx, cny, isc, jsc, nrcm, im, levs, kdt, & - nsswr, imfdeepcnv, iccn, nscyc, ntoz + nsswr, imfdeepcnv, iccn, nscyc, ntoz, iflip integer, intent(in) :: idate(:) real(kind_phys), intent(in) :: fhswr, fhour logical, intent(in) :: lsswr, cal_pre, random_clds, h2o_phys, iaerclm @@ -797,7 +797,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) & +!$OMP shared(ddy_j2tau,tau_amf,iflip) & !$OMP private(iseed,iskip,i,j,k) !$OMP sections @@ -889,7 +889,7 @@ subroutine GFS_phys_time_vary_timestep_init ( ! aerinterpol is using threading inside, don't ! move into OpenMP parallel section above call aerinterpol (me, master, nthrds, im, idate, & - fhour, jindx1_aer, jindx2_aer, & + fhour, iflip, jindx1_aer, jindx2_aer, & ddy_aer, iindx1_aer, & iindx2_aer, ddx_aer, & levs, prsl, aer_nm) diff --git a/physics/GFS_phys_time_vary.fv3.meta b/physics/GFS_phys_time_vary.fv3.meta index 6c7f086dd..90f061dd1 100644 --- a/physics/GFS_phys_time_vary.fv3.meta +++ b/physics/GFS_phys_time_vary.fv3.meta @@ -162,6 +162,14 @@ type = real kind = kind_phys intent = in +[fhour] + standard_name = forecast_time + long_name = current forecast time + units = h + dimensions = () + type = real + kind = kind_phys + intent = in [jindx1_aer] standard_name = lower_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the y direction @@ -1151,6 +1159,13 @@ type = real kind = kind_phys intent = inout +[iflip] + standard_name = control_for_vertical_index_direction + long_name = iflip - is not the same as flipv + units = flag + dimensions = () + type = integer + intent = in [jindx1_aer] standard_name = lower_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the y direction diff --git a/physics/aerclm_def.F b/physics/aerclm_def.F index e66825278..b6760f30c 100644 --- a/physics/aerclm_def.F +++ b/physics/aerclm_def.F @@ -2,8 +2,10 @@ module aerclm_def use machine , only : kind_phys, kind_io4 implicit none - integer, parameter :: levsaer=72, ntrcaerm=15, timeaer=12 + integer, parameter :: levsaer=72, ntrcaerm=15, timeaer=2 integer :: latsaer, lonsaer, ntrcaer, levsw + integer :: n1sv, n2sv + integer :: iamin, iamax, jamin, jamax character*10 :: specname(ntrcaerm) real (kind=kind_phys):: aer_time(13) diff --git a/physics/aerinterp.F90 b/physics/aerinterp.F90 index 4b3232ab1..a99fae7b0 100644 --- a/physics/aerinterp.F90 +++ b/physics/aerinterp.F90 @@ -11,7 +11,7 @@ module aerinterp private - public :: read_aerdata, setindxaer, aerinterpol, read_aerdataf + public :: read_aerdata, setindxaer, aerinterpol,read_aerdataf contains @@ -45,7 +45,7 @@ SUBROUTINE read_aerdata (me, master, iflip, idate, errmsg, errflg) !! =================================================================== !! check if all necessary files exist !! =================================================================== - do imon = 1, timeaer + do imon = 1, 12 write(mn,'(i2.2)') imon fname=trim("aeroclim.m"//mn//".nc") inquire (file = fname, exist = file_exist) @@ -97,23 +97,27 @@ SUBROUTINE read_aerdata (me, master, iflip, idate, errmsg, errflg) END SUBROUTINE read_aerdata ! !********************************************************************** - SUBROUTINE read_aerdataf (iamin, iamax, jamin, jamax, & - me, master, iflip, idate, errmsg, errflg) + SUBROUTINE read_aerdataf ( me, master, iflip, idate, FHOUR, errmsg, errflg) use machine, only: kind_phys, kind_io4, kind_io8 use aerclm_def use netcdf !--- in/out integer, intent(in) :: me, master, iflip, idate(4) - integer, intent(in) :: iamin, iamax, jamin, jamax character(len=*), intent(inout) :: errmsg integer, intent(inout) :: errflg - + real(kind=kind_phys), intent(in) :: fhour !--- locals integer :: ncid, varid - integer :: i, j, k, n, ii, imon, klev + integer :: i, j, k, n, ii, imon, klev, n1, n2 character :: fname*50, mn*2, vname*10 logical :: file_exist + integer IDAT(8),JDAT(8) + real(kind=kind_phys) RINC(5), rjday + integer jdow, jdoy, jday + real(4) rinc4(5) + integer w3kindreal,w3kindint + integer, allocatable :: invardims(:) real(kind=kind_io4),allocatable,dimension(:,:,:) :: buff real(kind=kind_io4),allocatable,dimension(:,:,:,:):: buffx @@ -128,12 +132,104 @@ SUBROUTINE read_aerdataf (iamin, iamax, jamin, jamax, & allocate (buff(lonsaer, latsaer, levsw)) allocate (pres_tmp(lonsaer, levsw)) allocate (buffx(lonsaer, latsaer, levsw, 1)) - +!! found interpolation months + IDAT = 0 + IDAT(1) = IDATE(4) + IDAT(2) = IDATE(2) + IDAT(3) = IDATE(3) + IDAT(5) = IDATE(1) + RINC = 0. + RINC(2) = FHOUR + call w3kind(w3kindreal,w3kindint) + if(w3kindreal == 4) then + rinc4 = rinc + CALL W3MOVDAT(RINC4,IDAT,JDAT) + else + CALL W3MOVDAT(RINC,IDAT,JDAT) + endif +! + jdow = 0 + jdoy = 0 + jday = 0 + call w3doxdat(jdat,jdow,jdoy,jday) + rjday = jdoy + jdat(5) / 24. + IF (RJDAY < aer_time(1)) RJDAY = RJDAY+365. +! + n2 = 13 + do j=2, 12 + if (rjday < aer_time(j)) then + n2 = j + exit + endif + enddo + n1 = n2 - 1 + if (n2 > 12) n2 = n2 -12 + write(*,*)"AAA0",n1, n2, iamin, iamax, jamin, jamax !! =================================================================== !! loop thru m01 - m12 for aer/pres array !! =================================================================== - do imon = 1, timeaer - write(mn,'(i2.2)') imon + write(mn,'(i2.2)') n1 + fname=trim("aeroclim.m"//mn//".nc") + call nf_open(fname , nf90_NOWRITE, ncid) + +! ====> construct 3-d pressure array (Pa) + call nf_inq_varid(ncid, "DELP", varid) + call nf_get_var(ncid, varid, buff) + + do j = jamin, jamax + do i = iamin, iamax +! constract pres_tmp (top-down), note input is top-down + pres_tmp(i,1) = 0. + do k=2, levsw + pres_tmp(i,k) = pres_tmp(i,k-1)+buff(i,j,k) + enddo !k-loop + enddo !i-loop (lon) + +! extract pres_tmp to fill aer_pres (in Pa) + do k = 1, levsaer + if ( iflip == 0 ) then ! data from toa to sfc + klev = k + else ! data from sfc to top + klev = ( levsw - k ) + 1 + endif + do i = iamin, iamax + aer_pres(i,j,k,1) = 1.d0*pres_tmp(i,klev) + enddo !i-loop (lon) + enddo !k-loop (lev) + enddo !j-loop (lat) + +! ====> construct 4-d aerosol array (kg/kg) +! merra2 data is top down +! for GFS, iflip 0: toa to sfc; 1: sfc to toa + DO ii = 1, ntrcaerm + vname=trim(specname(ii)) + call nf_inq_varid(ncid, vname, varid) + write(*,*)"AAA2",vname + call nf_get_var(ncid, varid, buffx) + + do j = jamin, jamax + do k = 1, levsaer +! input is from toa to sfc + if ( iflip == 0 ) then ! data from toa to sfc + klev = k + else ! data from sfc to top + klev = ( levsw - k ) + 1 + endif + do i = iamin, iamax + aerin(i,j,k,ii,1) = 1.d0*buffx(i,j,klev,1) + if(aerin(i,j,k,ii,1) < 0 .or. aerin(i,j,k,ii,1) > 1.) then + aerin(i,j,k,ii,1) = 1.e-15 + endif + enddo !i-loop (lon) + enddo !k-loop (lev) + enddo !j-loop (lat) + + ENDDO ! ii-loop (ntracaerm) + +! close the file + call nf_close(ncid) +!! =================================================================== + write(mn,'(i2.2)') n2 fname=trim("aeroclim.m"//mn//".nc") call nf_open(fname , nf90_NOWRITE, ncid) @@ -158,7 +254,7 @@ SUBROUTINE read_aerdataf (iamin, iamax, jamin, jamax, & klev = ( levsw - k ) + 1 endif do i = iamin, iamax - aer_pres(i,j,k,imon) = 1.d0*pres_tmp(i,klev) + aer_pres(i,j,k,2) = 1.d0*pres_tmp(i,klev) enddo !i-loop (lon) enddo !k-loop (lev) enddo !j-loop (lat) @@ -180,9 +276,9 @@ SUBROUTINE read_aerdataf (iamin, iamax, jamin, jamax, & klev = ( levsw - k ) + 1 endif do i = iamin, iamax - aerin(i,j,k,ii,imon) = 1.d0*buffx(i,j,klev,1) - if(aerin(i,j,k,ii,imon) < 0. .or. aerin(i,j,k,ii,imon) > 1.) then - aerin(i,j,k,ii,imon) = 1.e-15 + aerin(i,j,k,ii,2) = 1.d0*buffx(i,j,klev,1) + if(aerin(i,j,k,ii,2) < 0 .or. aerin(i,j,k,ii,2) > 1.) then + aerin(i,j,k,ii,2) = 1.e-15 endif enddo !i-loop (lon) enddo !k-loop (lev) @@ -192,7 +288,8 @@ SUBROUTINE read_aerdataf (iamin, iamax, jamin, jamax, & ! close the file call nf_close(ncid) - enddo !imon-loop + n1sv=n1 + n2sv=n2 !--- deallocate (buff, pres_tmp) deallocate (buffx) @@ -256,15 +353,20 @@ END SUBROUTINE setindxaer !********************************************************************** !********************************************************************** ! - SUBROUTINE aerinterpol(me,master,nthrds,npts,IDATE,FHOUR,jindx1,jindx2, & + SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, & ddy,iindx1,iindx2,ddx,lev,prsl,aerout) ! - USE MACHINE, ONLY : kind_phys + use machine, only: kind_phys, kind_io4, kind_io8 use aerclm_def + use netcdf + implicit none - integer i1,i2, iday,j,j1,j2,l,npts,nc,n1,n2,lev,k,i,ii + 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), dimension(npts) :: temij,temiy,temjx,ddxy + character :: fname*50, mn*2, vname*10 + ! integer JINDX1(npts), JINDX2(npts), iINDX1(npts), iINDX2(npts) @@ -279,6 +381,11 @@ SUBROUTINE aerinterpol(me,master,nthrds,npts,IDATE,FHOUR,jindx1,jindx2, & integer jdow, jdoy, jday real(4) rinc4(5) integer w3kindreal,w3kindint + integer ncid, varid + real(kind=kind_io4),allocatable,dimension(:,:,:) :: buff + real(kind=kind_io4),allocatable,dimension(:,:,:,:):: buffx + real(kind=kind_io4),allocatable,dimension(:,:) :: pres_tmp + ! IDAT = 0 IDAT(1) = IDATE(4) @@ -310,6 +417,86 @@ SUBROUTINE aerinterpol(me,master,nthrds,npts,IDATE,FHOUR,jindx1,jindx2, & endif enddo n1 = n2 - 1 +! need to read a new month + if (n1>n1sv) then + DO ii = 1, ntrcaerm + do j = jamin, jamax + do k = 1, levsaer + do i = iamin, iamax + aerin(i,j,k,ii,1) = aerin(i,j,k,ii,2) + enddo !i-loop (lon) + enddo !k-loop (lev) + enddo !j-loop (lat) + ENDDO ! ii-loop (ntracaerm) +!! =================================================================== + allocate (buff(lonsaer, latsaer, levsw)) + allocate (pres_tmp(lonsaer, levsw)) + allocate (buffx(lonsaer, latsaer, levsw, 1)) + + write(mn,'(i2.2)') n2 + fname=trim("aeroclim.m"//mn//".nc") + call nf_open(fname , nf90_NOWRITE, ncid) + +! ====> construct 3-d pressure array (Pa) + call nf_inq_varid(ncid, "DELP", varid) + call nf_get_var(ncid, varid, buff) + + do j = jamin, jamax + do i = iamin, iamax +! constract pres_tmp (top-down), note input is top-down + pres_tmp(i,1) = 0. + do k=2, levsw + pres_tmp(i,k) = pres_tmp(i,k-1)+buff(i,j,k) + enddo !k-loop + enddo !i-loop (lon) + +! extract pres_tmp to fill aer_pres (in Pa) + do k = 1, levsaer + if ( iflip == 0 ) then ! data from toa to sfc + klev = k + else ! data from sfc to top + klev = ( levsw - k ) + 1 + endif + do i = iamin, iamax + aer_pres(i,j,k,2) = 1.d0*pres_tmp(i,klev) + enddo !i-loop (lon) + enddo !k-loop (lev) + enddo !j-loop (lat) + +! ====> construct 4-d aerosol array (kg/kg) +! merra2 data is top down +! for GFS, iflip 0: toa to sfc; 1: sfc to toa + DO ii = 1, ntrcaerm + vname=trim(specname(ii)) + call nf_inq_varid(ncid, vname, varid) + call nf_get_var(ncid, varid, buffx) + + do j = jamin, jamax + do k = 1, levsaer +! input is from toa to sfc + if ( iflip == 0 ) then ! data from toa to sfc + klev = k + else ! data from sfc to top + klev = ( levsw - k ) + 1 + endif + do i = iamin, iamax + aerin(i,j,k,ii,2) = 1.d0*buffx(i,j,klev,1) + if(aerin(i,j,k,ii,2) < 0 .or. aerin(i,j,k,ii,2) > 1.) then + aerin(i,j,k,ii,2) = 1.e-15 + endif + enddo !i-loop (lon) + enddo !k-loop (lev) + enddo !j-loop (lat) + + ENDDO ! ii-loop (ntracaerm) + +! close the file + call nf_close(ncid) + deallocate (buff, pres_tmp) + deallocate (buffx) + n1sv=n1 + n2sv=n2 + end if ! tx1 = (aer_time(n2) - rjday) / (aer_time(n2) - aer_time(n1)) tx2 = 1.0 - tx1 @@ -328,7 +515,7 @@ SUBROUTINE aerinterpol(me,master,nthrds,npts,IDATE,FHOUR,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,n1,n2,lev,nthrds) & +!$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) @@ -343,17 +530,17 @@ SUBROUTINE aerinterpol(me,master,nthrds,npts,IDATE,FHOUR,jindx1,jindx2, & I2 = IINDX2(J) DO ii=1,ntrcaer aerpm(j,L,ii) = & - tx1*(TEMIJ(j)*aerin(I1,J1,L,ii,n1)+DDXY(j)*aerin(I2,J2,L,ii,n1) & - +TEMIY(j)*aerin(I1,J2,L,ii,n1)+temjx(j)*aerin(I2,J1,L,ii,n1))& - +tx2*(TEMIJ(j)*aerin(I1,J1,L,ii,n2)+DDXY(j)*aerin(I2,J2,L,ii,n2) & - +TEMIY(j)*aerin(I1,J2,L,ii,n2)+temjx(j)*aerin(I2,J1,L,ii,n2)) + tx1*(TEMIJ(j)*aerin(I1,J1,L,ii,1)+DDXY(j)*aerin(I2,J2,L,ii,1) & + +TEMIY(j)*aerin(I1,J2,L,ii,1)+temjx(j)*aerin(I2,J1,L,ii,1))& + +tx2*(TEMIJ(j)*aerin(I1,J1,L,ii,2)+DDXY(j)*aerin(I2,J2,L,ii,2) & + +TEMIY(j)*aerin(I1,J2,L,ii,2)+temjx(j)*aerin(I2,J1,L,ii,2)) ENDDO aerpres(j,L) = & - tx1*(TEMIJ(j)*aer_pres(I1,J1,L,n1)+DDXY(j)*aer_pres(I2,J2,L,n1) & - +TEMIY(j)*aer_pres(I1,J2,L,n1)+temjx(j)*aer_pres(I2,J1,L,n1))& - +tx2*(TEMIJ(j)*aer_pres(I1,J1,L,n2)+DDXY(j)*aer_pres(I2,J2,L,n2) & - +TEMIY(j)*aer_pres(I1,J2,L,n2)+temjx(j)*aer_pres(I2,J1,L,n2)) + tx1*(TEMIJ(j)*aer_pres(I1,J1,L,1)+DDXY(j)*aer_pres(I2,J2,L,1) & + +TEMIY(j)*aer_pres(I1,J2,L,1)+temjx(j)*aer_pres(I2,J1,L,1))& + +tx2*(TEMIJ(j)*aer_pres(I1,J1,L,2)+DDXY(j)*aer_pres(I2,J2,L,2) & + +TEMIY(j)*aer_pres(I1,J2,L,2)+temjx(j)*aer_pres(I2,J1,L,2)) ENDDO ENDDO #ifndef __GFORTRAN__ From b3f627d5f5fdc65c7e342bd32815234b3bcb0294 Mon Sep 17 00:00:00 2001 From: "anning.cheng" Date: Wed, 10 Nov 2021 10:29:05 -0500 Subject: [PATCH 93/98] delete some debug stuff --- physics/aerinterp.F90 | 2 -- 1 file changed, 2 deletions(-) diff --git a/physics/aerinterp.F90 b/physics/aerinterp.F90 index a99fae7b0..3aeb73eb7 100644 --- a/physics/aerinterp.F90 +++ b/physics/aerinterp.F90 @@ -164,7 +164,6 @@ SUBROUTINE read_aerdataf ( me, master, iflip, idate, FHOUR, errmsg, errflg) enddo n1 = n2 - 1 if (n2 > 12) n2 = n2 -12 - write(*,*)"AAA0",n1, n2, iamin, iamax, jamin, jamax !! =================================================================== !! loop thru m01 - m12 for aer/pres array !! =================================================================== @@ -204,7 +203,6 @@ SUBROUTINE read_aerdataf ( me, master, iflip, idate, FHOUR, errmsg, errflg) DO ii = 1, ntrcaerm vname=trim(specname(ii)) call nf_inq_varid(ncid, vname, varid) - write(*,*)"AAA2",vname call nf_get_var(ncid, varid, buffx) do j = jamin, jamax From 8674543e2cbdd1bfbaad4d756b12b3077231fbfd Mon Sep 17 00:00:00 2001 From: "anning.cheng" Date: Wed, 10 Nov 2021 10:33:10 -0500 Subject: [PATCH 94/98] handle a case with n2=13 --- physics/aerinterp.F90 | 1 + 1 file changed, 1 insertion(+) diff --git a/physics/aerinterp.F90 b/physics/aerinterp.F90 index 3aeb73eb7..e3adac99b 100644 --- a/physics/aerinterp.F90 +++ b/physics/aerinterp.F90 @@ -415,6 +415,7 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, endif enddo n1 = n2 - 1 + if (n2 > 12) n2 = n2 -12 ! need to read a new month if (n1>n1sv) then DO ii = 1, ntrcaerm From 102264d54f17a412eff13cd37b52fb2bf72d5a00 Mon Sep 17 00:00:00 2001 From: "anning.cheng" Date: Wed, 10 Nov 2021 10:48:25 -0500 Subject: [PATCH 95/98] add a output information for reading a new month merra2 --- physics/aerinterp.F90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/physics/aerinterp.F90 b/physics/aerinterp.F90 index e3adac99b..162051421 100644 --- a/physics/aerinterp.F90 +++ b/physics/aerinterp.F90 @@ -417,7 +417,8 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, n1 = n2 - 1 if (n2 > 12) n2 = n2 -12 ! need to read a new month - if (n1>n1sv) then + if (n1.ne.n1sv) then + if (me == master) write(*,*)"read in a new month MERRA2", n2 DO ii = 1, ntrcaerm do j = jamin, jamax do k = 1, levsaer From 1ec58381a419f8d028667f9f0dda1e3ab67df647 Mon Sep 17 00:00:00 2001 From: "anning.cheng" Date: Tue, 16 Nov 2021 13:55:00 -0500 Subject: [PATCH 96/98] put a few lines of code in read_netfaer --- physics/aerinterp.F90 | 291 +++++++++++++----------------------------- 1 file changed, 86 insertions(+), 205 deletions(-) diff --git a/physics/aerinterp.F90 b/physics/aerinterp.F90 index 162051421..89c993a45 100644 --- a/physics/aerinterp.F90 +++ b/physics/aerinterp.F90 @@ -9,7 +9,7 @@ module aerinterp implicit none - private + private read_netfaer public :: read_aerdata, setindxaer, aerinterpol,read_aerdataf @@ -100,7 +100,6 @@ END SUBROUTINE read_aerdata SUBROUTINE read_aerdataf ( me, master, iflip, idate, FHOUR, errmsg, errflg) use machine, only: kind_phys, kind_io4, kind_io8 use aerclm_def - use netcdf !--- in/out integer, intent(in) :: me, master, iflip, idate(4) @@ -108,9 +107,7 @@ SUBROUTINE read_aerdataf ( me, master, iflip, idate, FHOUR, errmsg, errflg) integer, intent(inout) :: errflg real(kind=kind_phys), intent(in) :: fhour !--- locals - integer :: ncid, varid integer :: i, j, k, n, ii, imon, klev, n1, n2 - character :: fname*50, mn*2, vname*10 logical :: file_exist integer IDAT(8),JDAT(8) real(kind=kind_phys) RINC(5), rjday @@ -119,9 +116,6 @@ SUBROUTINE read_aerdataf ( me, master, iflip, idate, FHOUR, errmsg, errflg) integer w3kindreal,w3kindint integer, allocatable :: invardims(:) - real(kind=kind_io4),allocatable,dimension(:,:,:) :: buff - real(kind=kind_io4),allocatable,dimension(:,:,:,:):: buffx - real(kind=kind_io4),allocatable,dimension(:,:) :: pres_tmp ! if (.not. allocated(aerin)) then allocate(aerin(iamin:iamax,jamin:jamax,levsaer,ntrcaerm,timeaer)) @@ -129,9 +123,6 @@ SUBROUTINE read_aerdataf ( me, master, iflip, idate, FHOUR, errmsg, errflg) endif ! allocate local working arrays - allocate (buff(lonsaer, latsaer, levsw)) - allocate (pres_tmp(lonsaer, levsw)) - allocate (buffx(lonsaer, latsaer, levsw, 1)) !! found interpolation months IDAT = 0 IDAT(1) = IDATE(4) @@ -165,132 +156,12 @@ SUBROUTINE read_aerdataf ( me, master, iflip, idate, FHOUR, errmsg, errflg) n1 = n2 - 1 if (n2 > 12) n2 = n2 -12 !! =================================================================== -!! loop thru m01 - m12 for aer/pres array -!! =================================================================== - write(mn,'(i2.2)') n1 - fname=trim("aeroclim.m"//mn//".nc") - call nf_open(fname , nf90_NOWRITE, ncid) - -! ====> construct 3-d pressure array (Pa) - call nf_inq_varid(ncid, "DELP", varid) - call nf_get_var(ncid, varid, buff) - - do j = jamin, jamax - do i = iamin, iamax -! constract pres_tmp (top-down), note input is top-down - pres_tmp(i,1) = 0. - do k=2, levsw - pres_tmp(i,k) = pres_tmp(i,k-1)+buff(i,j,k) - enddo !k-loop - enddo !i-loop (lon) - -! extract pres_tmp to fill aer_pres (in Pa) - do k = 1, levsaer - if ( iflip == 0 ) then ! data from toa to sfc - klev = k - else ! data from sfc to top - klev = ( levsw - k ) + 1 - endif - do i = iamin, iamax - aer_pres(i,j,k,1) = 1.d0*pres_tmp(i,klev) - enddo !i-loop (lon) - enddo !k-loop (lev) - enddo !j-loop (lat) - -! ====> construct 4-d aerosol array (kg/kg) -! merra2 data is top down -! for GFS, iflip 0: toa to sfc; 1: sfc to toa - DO ii = 1, ntrcaerm - vname=trim(specname(ii)) - call nf_inq_varid(ncid, vname, varid) - call nf_get_var(ncid, varid, buffx) - - do j = jamin, jamax - do k = 1, levsaer -! input is from toa to sfc - if ( iflip == 0 ) then ! data from toa to sfc - klev = k - else ! data from sfc to top - klev = ( levsw - k ) + 1 - endif - do i = iamin, iamax - aerin(i,j,k,ii,1) = 1.d0*buffx(i,j,klev,1) - if(aerin(i,j,k,ii,1) < 0 .or. aerin(i,j,k,ii,1) > 1.) then - aerin(i,j,k,ii,1) = 1.e-15 - endif - enddo !i-loop (lon) - enddo !k-loop (lev) - enddo !j-loop (lat) - - ENDDO ! ii-loop (ntracaerm) - -! close the file - call nf_close(ncid) + call read_netfaer(n1, iflip, 1) + call read_netfaer(n2, iflip, 2) !! =================================================================== - write(mn,'(i2.2)') n2 - fname=trim("aeroclim.m"//mn//".nc") - call nf_open(fname , nf90_NOWRITE, ncid) - -! ====> construct 3-d pressure array (Pa) - call nf_inq_varid(ncid, "DELP", varid) - call nf_get_var(ncid, varid, buff) - - do j = jamin, jamax - do i = iamin, iamax -! constract pres_tmp (top-down), note input is top-down - pres_tmp(i,1) = 0. - do k=2, levsw - pres_tmp(i,k) = pres_tmp(i,k-1)+buff(i,j,k) - enddo !k-loop - enddo !i-loop (lon) - -! extract pres_tmp to fill aer_pres (in Pa) - do k = 1, levsaer - if ( iflip == 0 ) then ! data from toa to sfc - klev = k - else ! data from sfc to top - klev = ( levsw - k ) + 1 - endif - do i = iamin, iamax - aer_pres(i,j,k,2) = 1.d0*pres_tmp(i,klev) - enddo !i-loop (lon) - enddo !k-loop (lev) - enddo !j-loop (lat) - -! ====> construct 4-d aerosol array (kg/kg) -! merra2 data is top down -! for GFS, iflip 0: toa to sfc; 1: sfc to toa - DO ii = 1, ntrcaerm - vname=trim(specname(ii)) - call nf_inq_varid(ncid, vname, varid) - call nf_get_var(ncid, varid, buffx) - - do j = jamin, jamax - do k = 1, levsaer -! input is from toa to sfc - if ( iflip == 0 ) then ! data from toa to sfc - klev = k - else ! data from sfc to top - klev = ( levsw - k ) + 1 - endif - do i = iamin, iamax - aerin(i,j,k,ii,2) = 1.d0*buffx(i,j,klev,1) - if(aerin(i,j,k,ii,2) < 0 .or. aerin(i,j,k,ii,2) > 1.) then - aerin(i,j,k,ii,2) = 1.e-15 - endif - enddo !i-loop (lon) - enddo !k-loop (lev) - enddo !j-loop (lat) - - ENDDO ! ii-loop (ntracaerm) - -! close the file - call nf_close(ncid) - n1sv=n1 - n2sv=n2 + n1sv=n1 + n2sv=n2 !--- - deallocate (buff, pres_tmp) - deallocate (buffx) END SUBROUTINE read_aerdataf ! SUBROUTINE setindxaer(npts,dlat,jindx1,jindx2,ddy,dlon, & @@ -356,14 +227,12 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, ! use machine, only: kind_phys, kind_io4, kind_io8 use aerclm_def - use netcdf implicit none 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), dimension(npts) :: temij,temiy,temjx,ddxy - character :: fname*50, mn*2, vname*10 ! @@ -379,10 +248,6 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, integer jdow, jdoy, jday real(4) rinc4(5) integer w3kindreal,w3kindint - integer ncid, varid - real(kind=kind_io4),allocatable,dimension(:,:,:) :: buff - real(kind=kind_io4),allocatable,dimension(:,:,:,:):: buffx - real(kind=kind_io4),allocatable,dimension(:,:) :: pres_tmp ! IDAT = 0 @@ -429,71 +294,7 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, enddo !j-loop (lat) ENDDO ! ii-loop (ntracaerm) !! =================================================================== - allocate (buff(lonsaer, latsaer, levsw)) - allocate (pres_tmp(lonsaer, levsw)) - allocate (buffx(lonsaer, latsaer, levsw, 1)) - - write(mn,'(i2.2)') n2 - fname=trim("aeroclim.m"//mn//".nc") - call nf_open(fname , nf90_NOWRITE, ncid) - -! ====> construct 3-d pressure array (Pa) - call nf_inq_varid(ncid, "DELP", varid) - call nf_get_var(ncid, varid, buff) - - do j = jamin, jamax - do i = iamin, iamax -! constract pres_tmp (top-down), note input is top-down - pres_tmp(i,1) = 0. - do k=2, levsw - pres_tmp(i,k) = pres_tmp(i,k-1)+buff(i,j,k) - enddo !k-loop - enddo !i-loop (lon) - -! extract pres_tmp to fill aer_pres (in Pa) - do k = 1, levsaer - if ( iflip == 0 ) then ! data from toa to sfc - klev = k - else ! data from sfc to top - klev = ( levsw - k ) + 1 - endif - do i = iamin, iamax - aer_pres(i,j,k,2) = 1.d0*pres_tmp(i,klev) - enddo !i-loop (lon) - enddo !k-loop (lev) - enddo !j-loop (lat) - -! ====> construct 4-d aerosol array (kg/kg) -! merra2 data is top down -! for GFS, iflip 0: toa to sfc; 1: sfc to toa - DO ii = 1, ntrcaerm - vname=trim(specname(ii)) - call nf_inq_varid(ncid, vname, varid) - call nf_get_var(ncid, varid, buffx) - - do j = jamin, jamax - do k = 1, levsaer -! input is from toa to sfc - if ( iflip == 0 ) then ! data from toa to sfc - klev = k - else ! data from sfc to top - klev = ( levsw - k ) + 1 - endif - do i = iamin, iamax - aerin(i,j,k,ii,2) = 1.d0*buffx(i,j,klev,1) - if(aerin(i,j,k,ii,2) < 0 .or. aerin(i,j,k,ii,2) > 1.) then - aerin(i,j,k,ii,2) = 1.e-15 - endif - enddo !i-loop (lon) - enddo !k-loop (lev) - enddo !j-loop (lat) - - ENDDO ! ii-loop (ntracaerm) - -! close the file - call nf_close(ncid) - deallocate (buff, pres_tmp) - deallocate (buffx) + call read_netfaer(n2, iflip, 2) n1sv=n1 n2sv=n2 end if @@ -585,5 +386,85 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, RETURN END SUBROUTINE aerinterpol + subroutine read_netfaer(nf, iflip,nt) + use machine, only: kind_phys, kind_io4, kind_io8 + use aerclm_def + use netcdf + integer, intent(in) :: iflip, nf, nt + integer :: ncid, varid, i,j,k,ii,klev + character :: fname*50, mn*2, vname*10 + real(kind=kind_io4),allocatable,dimension(:,:,:) :: buff + real(kind=kind_io4),allocatable,dimension(:,:,:,:):: buffx + real(kind=kind_io4),allocatable,dimension(:,:) :: pres_tmp + +!! =================================================================== + allocate (buff(lonsaer, latsaer, levsw)) + allocate (pres_tmp(lonsaer, levsw)) + allocate (buffx(lonsaer, latsaer, levsw, 1)) + + write(mn,'(i2.2)') nf + fname=trim("aeroclim.m"//mn//".nc") + call nf_open(fname , nf90_NOWRITE, ncid) + +! ====> construct 3-d pressure array (Pa) + call nf_inq_varid(ncid, "DELP", varid) + call nf_get_var(ncid, varid, buff) + + do j = jamin, jamax + do i = iamin, iamax +! constract pres_tmp (top-down), note input is top-down + pres_tmp(i,1) = 0. + do k=2, levsw + pres_tmp(i,k) = pres_tmp(i,k-1)+buff(i,j,k) + enddo !k-loop + enddo !i-loop (lon) + +! extract pres_tmp to fill aer_pres (in Pa) + do k = 1, levsaer + if ( iflip == 0 ) then ! data from toa to sfc + klev = k + else ! data from sfc to top + klev = ( levsw - k ) + 1 + endif + do i = iamin, iamax + aer_pres(i,j,k,nt) = 1.d0*pres_tmp(i,klev) + enddo !i-loop (lon) + enddo !k-loop (lev) + enddo !j-loop (lat) + +! ====> construct 4-d aerosol array (kg/kg) +! merra2 data is top down +! for GFS, iflip 0: toa to sfc; 1: sfc to toa + DO ii = 1, ntrcaerm + vname=trim(specname(ii)) + call nf_inq_varid(ncid, vname, varid) + call nf_get_var(ncid, varid, buffx) + + do j = jamin, jamax + do k = 1, levsaer +! input is from toa to sfc + if ( iflip == 0 ) then ! data from toa to sfc + klev = k + else ! data from sfc to top + klev = ( levsw - k ) + 1 + endif + do i = iamin, iamax + aerin(i,j,k,ii,nt) = 1.d0*buffx(i,j,klev,1) + if(aerin(i,j,k,ii,nt) < 0 .or. aerin(i,j,k,ii,nt) > 1.) then + aerin(i,j,k,ii,nt) = 1.e-15 + endif + enddo !i-loop (lon) + enddo !k-loop (lev) + enddo !j-loop (lat) + + ENDDO ! ii-loop (ntracaerm) + +! close the file + call nf_close(ncid) + deallocate (buff, pres_tmp) + deallocate (buffx) + return + END SUBROUTINE read_netfaer + end module aerinterp From 850971ef433a5eb50dbc97e0ab02f9dfc4d966dc Mon Sep 17 00:00:00 2001 From: "anning.cheng" Date: Tue, 16 Nov 2021 15:40:04 -0500 Subject: [PATCH 97/98] adding a debug option for reading a new month data --- physics/aerinterp.F90 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/physics/aerinterp.F90 b/physics/aerinterp.F90 index 89c993a45..30ff97dff 100644 --- a/physics/aerinterp.F90 +++ b/physics/aerinterp.F90 @@ -283,7 +283,9 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, if (n2 > 12) n2 = n2 -12 ! need to read a new month if (n1.ne.n1sv) then +#ifdef DEBUG if (me == master) write(*,*)"read in a new month MERRA2", n2 +#endif DO ii = 1, ntrcaerm do j = jamin, jamax do k = 1, levsaer From 4742485d4e279c7d97f00f557ec0ba03552e5cd0 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 19 Nov 2021 15:04:38 -0700 Subject: [PATCH 98/98] Fix compilation error with gfortran in physics/radiation_clouds.f --- physics/radiation_clouds.f | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/radiation_clouds.f b/physics/radiation_clouds.f index 13f0ae76b..39296aec0 100644 --- a/physics/radiation_clouds.f +++ b/physics/radiation_clouds.f @@ -4570,8 +4570,8 @@ SUBROUTINE cal_cldfra3(CLDFRA, qv, qc, qi, qs, dz, & endif if (cldfra(k).gt.0.0 .and. p(k).lt.7000.0) CLDFRA(K) = 0.0 if (debug_flag .and. ndebug.lt.25) then - write(6,'(a,x,i3,x,f8.2,f7.1,f7.2,f6.1,x,f5.3,f12.7,f12.7, - & f12.7)') ' DEBUG-GT: ', k, p(k)*0.01, dz(k), t(k)-273.15, & + write(6,'(a,x,i3,x,f8.2,f7.1,f7.2,f6.1,x,f5.3,f12.7,f12.7,f12.7)')& + & ' DEBUG-GT: ', k, p(k)*0.01, dz(k), t(k)-273.15, & & rh(k)*100., cldfra(k), qc(k)*1.E3, qi(k)*1.E3, qs(k)*1.E3 if (k.eq.kte) ndebug = ndebug + 1 endif