diff --git a/CMakeLists.txt b/CMakeLists.txt index 061ba840d..143883b5e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,6 +58,19 @@ foreach(typedef_module ${TYPEDEFS}) endforeach() #------------------------------------------------------------------------------ +# Set the sources: kinds file +# DJS2024: This file is autogenerated by the framework (Capgen) +if(CAPGEN) + set(KINDS $ENV{CCPP_KINDS}) + if(KINDS) + message(STATUS "Got CCPP KINDS from environment variable") + else(KINDS) + include(${CMAKE_CURRENT_BINARY_DIR}/CCPP_KINDS.cmake) + message(STATUS "Got CCPP KINDS from cmakefile include file") + endif(KINDS) + list(REMOVE_DUPLICATES KINDS) +endif() + # Set the sources: physics schemes set(SCHEMES $ENV{CCPP_SCHEMES}) if(SCHEMES) @@ -171,7 +184,12 @@ endif() #------------------------------------------------------------------------------ -add_library(ccpp_physics STATIC ${SCHEMES} ${SCHEMES_OPENMP_OFF} ${SCHEMES_DYNAMICS} ${CAPS}) +if(CAPGEN) + add_library(ccpp_physics STATIC ${KINDS} ${SCHEMES} ${SCHEMES_OPENMP_OFF} ${SCHEMES_DYNAMICS} ${CAPS}) +else() + add_library(ccpp_physics STATIC ${SCHEMES} ${SCHEMES_OPENMP_OFF} ${SCHEMES_DYNAMICS} ${CAPS}) +endif() + # Generate list of Fortran modules from defined sources foreach(source_f90 ${CAPS}) get_filename_component(tmp_source_f90 ${source_f90} NAME) diff --git a/physics/CONV/C3/cu_c3_driver.meta b/physics/CONV/C3/cu_c3_driver.meta index af411cb6b..0c98be7b4 100644 --- a/physics/CONV/C3/cu_c3_driver.meta +++ b/physics/CONV/C3/cu_c3_driver.meta @@ -36,20 +36,6 @@ dimensions = () type = integer intent = in -[mpirank] - standard_name = mpi_rank - long_name = current MPI-rank - units = index - dimensions = () - type = integer - intent = in -[mpiroot] - standard_name = mpi_root - long_name = master MPI-rank - units = index - dimensions = () - type = integer - intent = in [progsigma] standard_name = do_prognostic_updraft_area_fraction long_name = flag for prognostic sigma in cumuls scheme @@ -64,6 +50,20 @@ dimensions = () type = integer intent = in +[mpirank] + standard_name = mpi_rank + long_name = current MPI-rank + units = index + dimensions = () + type = integer + intent = in +[mpiroot] + standard_name = mpi_root + long_name = master MPI-rank + units = index + dimensions = () + type = integer + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -189,6 +189,14 @@ type = real kind = kind_phys intent = in +[r_d] + 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 [xlv] standard_name = latent_heat_of_vaporization_of_water_at_0C long_name = latent heat of evaporation/sublimation @@ -205,14 +213,6 @@ type = real kind = kind_phys intent = in -[r_d] - 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 [forcet] standard_name = tendency_of_air_temperature_due_to_nonphysics long_name = temperature tendency due to dynamics only @@ -231,6 +231,30 @@ kind = kind_phys intent = in optional = True +[phil] + standard_name = geopotential + long_name = layer geopotential + units = m2 s-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[delp] + standard_name = air_pressure_difference_between_midlayers + long_name = pres(k) - pres(k+1) + units = Pa + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[raincv] + standard_name = lwe_thickness_of_deep_convective_precipitation_amount + long_name = deep convective rainfall amount on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = out [tmf] standard_name = tendency_of_vertically_diffused_tracer_concentration long_name = updated tendency of the tracers due to vertical diffusion in PBL scheme @@ -257,15 +281,6 @@ kind = kind_phys intent = in optional = True -[sigmaout] - standard_name = updraft_area_fraction_updated_by_physics - long_name = convective updraft area fraction updated by physics - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = out - optional = True [betascu] standard_name = tuning_param_for_shallow_cu long_name = tuning param for shallow cu in case prognostic closure is used @@ -289,30 +304,6 @@ dimensions = () type = real intent = in -[phil] - standard_name = geopotential - long_name = layer geopotential - units = m2 s-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in -[delp] - standard_name = air_pressure_difference_between_midlayers - long_name = pres(k) - pres(k+1) - units = Pa - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in -[raincv] - standard_name = lwe_thickness_of_deep_convective_precipitation_amount - long_name = deep convective rainfall amount on physics timestep - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = out [qv_spechum] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -462,6 +453,23 @@ type = real kind = kind_phys intent = inout +[ca_deep] + standard_name = cellular_automata_area_fraction_for_deep_convection_from_coupled_process + long_name = fraction of cellular automata for deep convection + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in + optional = True +[rainevap] + standard_name = physics_field_for_coupling + long_name = physics_field_for_coupling + units = m2 s-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = out [pbl] standard_name = atmosphere_boundary_layer_thickness long_name = PBL thickness @@ -555,16 +563,16 @@ dimensions = () type = integer intent = in -[ntcw] - standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array - long_name = tracer index for cloud condensate (or liquid water) +[ntiw] + standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array + long_name = tracer index for ice water units = index dimensions = () type = integer intent = in -[ntiw] - standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array - long_name = tracer index for ice water +[ntcw] + standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array + long_name = tracer index for cloud condensate (or liquid water) units = index dimensions = () type = integer @@ -604,29 +612,6 @@ dimensions = () type = integer intent = in -[dfi_radar_max_intervals] - standard_name = maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals - long_name = maximum allowed number of time ranges with radar-derived microphysics temperature tendencies or radar-derived convection suppression - units = count - dimensions = () - type = integer - intent = in -[ldiag3d] - standard_name = flag_for_diagnostics_3D - long_name = flag for 3d diagnostic fields - units = flag - dimensions = () - type = logical - intent = in -[qci_conv] - standard_name = convective_cloud_condesate_after_rainout - long_name = convective cloud condesate after rainout - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True [fhour] standard_name = forecast_time long_name = current forecast time @@ -635,13 +620,6 @@ type = real kind = kind_phys intent = in -[do_cap_suppress] - standard_name = flag_for_radar_derived_convection_suppression - long_name = flag for radar-derived convection suppression - units = flag - dimensions = () - type = logical - intent = in [fh_dfi_radar] standard_name = forecast_lead_times_bounding_radar_derived_temperature_or_convection_suppression_intervals long_name = forecast lead times bounding radar derived temperature or convection suppression intervals @@ -673,23 +651,45 @@ kind = kind_phys intent = in optional = True -[ca_deep] - standard_name = cellular_automata_area_fraction_for_deep_convection_from_coupled_process - long_name = fraction of cellular automata for deep convection - units = frac - dimensions = (horizontal_loop_extent) +[dfi_radar_max_intervals] + standard_name = maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals + long_name = maximum allowed number of time ranges with radar-derived microphysics temperature tendencies or radar-derived convection suppression + units = count + dimensions = () + type = integer + intent = in +[ldiag3d] + standard_name = flag_for_diagnostics_3D + long_name = flag for 3d diagnostic fields + units = flag + dimensions = () + type = logical + intent = in +[qci_conv] + standard_name = convective_cloud_condesate_after_rainout + long_name = convective cloud condesate after rainout + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = in + intent = inout optional = True -[rainevap] - standard_name = physics_field_for_coupling - long_name = physics_field_for_coupling - units = m2 s-2 - dimensions = (horizontal_loop_extent) +[do_cap_suppress] + standard_name = flag_for_radar_derived_convection_suppression + long_name = flag for radar-derived convection suppression + units = flag + dimensions = () + type = logical + intent = in +[sigmaout] + standard_name = updraft_area_fraction_updated_by_physics + long_name = convective updraft area fraction updated by physics + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = out + optional = True [maxupmf] standard_name = maximum_convective_updraft_mass_flux long_name = maximum convective updraft mass flux within a column diff --git a/physics/CONV/Grell_Freitas/cu_gf_driver.meta b/physics/CONV/Grell_Freitas/cu_gf_driver.meta index 4a645b4ab..f032408d4 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_driver.meta +++ b/physics/CONV/Grell_Freitas/cu_gf_driver.meta @@ -445,16 +445,16 @@ dimensions = () type = integer intent = in -[ntcw] - standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array - long_name = tracer index for cloud condensate (or liquid water) +[ntiw] + standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array + long_name = tracer index for ice water units = index dimensions = () type = integer intent = in -[ntiw] - standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array - long_name = tracer index for ice water +[ntcw] + standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array + long_name = tracer index for cloud condensate (or liquid water) units = index dimensions = () type = integer @@ -494,29 +494,6 @@ dimensions = () type = integer intent = in -[dfi_radar_max_intervals] - standard_name = maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals - long_name = maximum allowed number of time ranges with radar-derived microphysics temperature tendencies or radar-derived convection suppression - units = count - dimensions = () - type = integer - intent = in -[ldiag3d] - standard_name = flag_for_diagnostics_3D - long_name = flag for 3d diagnostic fields - units = flag - dimensions = () - type = logical - intent = in -[qci_conv] - standard_name = convective_cloud_condesate_after_rainout - long_name = convective cloud condesate after rainout - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True [fhour] standard_name = forecast_time long_name = current forecast time @@ -525,13 +502,6 @@ type = real kind = kind_phys intent = in -[do_cap_suppress] - standard_name = flag_for_radar_derived_convection_suppression - long_name = flag for radar-derived convection suppression - units = flag - dimensions = () - type = logical - intent = in [fh_dfi_radar] standard_name = forecast_lead_times_bounding_radar_derived_temperature_or_convection_suppression_intervals long_name = forecast lead times bounding radar derived temperature or convection suppression intervals @@ -563,6 +533,36 @@ kind = kind_phys intent = in optional = True +[dfi_radar_max_intervals] + standard_name = maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals + long_name = maximum allowed number of time ranges with radar-derived microphysics temperature tendencies or radar-derived convection suppression + units = count + dimensions = () + type = integer + intent = in +[ldiag3d] + standard_name = flag_for_diagnostics_3D + long_name = flag for 3d diagnostic fields + units = flag + dimensions = () + type = logical + intent = in +[qci_conv] + standard_name = convective_cloud_condesate_after_rainout + long_name = convective cloud condesate after rainout + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[do_cap_suppress] + standard_name = flag_for_radar_derived_convection_suppression + long_name = flag for radar-derived convection suppression + units = flag + dimensions = () + type = logical + intent = in [maxupmf] standard_name = maximum_convective_updraft_mass_flux long_name = maximum convective updraft mass flux within a column @@ -616,6 +616,13 @@ dimensions = () type = integer intent = in +[spp_cu_deep] + standard_name = control_for_deep_convection_spp_perturbations + long_name = control for deep convection spp perturbations + units = count + dimensions = () + type = integer + intent = in [spp_wts_cu_deep] standard_name = spp_weights_for_cu_deep_scheme long_name = spp weights for cu deep scheme @@ -625,13 +632,6 @@ kind = kind_phys intent = in optional = True -[spp_cu_deep] - standard_name = control_for_deep_convection_spp_perturbations - long_name = control for deep convection spp perturbations - units = count - dimensions = () - type = integer - intent = in [nchem] standard_name = number_of_chemical_species_vertically_mixed long_name = number of chemical species vertically mixed @@ -656,13 +656,6 @@ type = real kind = kind_phys intent = in -[do_smoke_transport] - standard_name = do_smoke_conv_transport - long_name = flag for rrfs smoke convective transport - units = flag - dimensions = () - type = logical - intent = in [wetdpc_deep] standard_name = conv_wet_deposition_smoke_dust long_name = convective wet removal of smoke and dust @@ -672,6 +665,13 @@ kind = kind_phys intent = inout optional = True +[do_smoke_transport] + standard_name = do_smoke_conv_transport + long_name = flag for rrfs smoke convective transport + units = flag + dimensions = () + type = logical + intent = in [kdt] standard_name = index_of_timestep long_name = current forecast iteration diff --git a/physics/CONV/Grell_Freitas/cu_gf_driver_post.meta b/physics/CONV/Grell_Freitas/cu_gf_driver_post.meta index 302fec1d7..e03c41ebb 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_driver_post.meta +++ b/physics/CONV/Grell_Freitas/cu_gf_driver_post.meta @@ -117,14 +117,6 @@ dimensions = () type = integer intent = in -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out [chem3d] standard_name = chem3d_mynn_pbl_transport long_name = mynn pbl transport of smoke and dust @@ -142,6 +134,14 @@ type = real kind = kind_phys intent = inout +[errmsg] + standard_name = ccpp_error_message + long_name = error message for error handling in CCPP + units = none + dimensions = () + type = character + kind = len=* + intent = out [errflg] standard_name = ccpp_error_code long_name = error code for error handling in CCPP diff --git a/physics/CONV/SAMF/samfdeepcnv.f b/physics/CONV/SAMF/samfdeepcnv.f index 58f152c29..45432c1ac 100644 --- a/physics/CONV/SAMF/samfdeepcnv.f +++ b/physics/CONV/SAMF/samfdeepcnv.f @@ -11,6 +11,9 @@ module samfdeepcnv contains +!! \section arg_table_samfdeepcnv_init Argument Table +!! \htmlinclude samfdeepcnv_init.html +!! subroutine samfdeepcnv_init(imfdeepcnv,imfdeepcnv_samf, & & errmsg, errflg) diff --git a/physics/CONV/SAMF/samfdeepcnv.meta b/physics/CONV/SAMF/samfdeepcnv.meta index 054ee9cce..6fb84eba5 100644 --- a/physics/CONV/SAMF/samfdeepcnv.meta +++ b/physics/CONV/SAMF/samfdeepcnv.meta @@ -437,70 +437,6 @@ type = real kind = kind_phys intent = inout -[sigmain] - standard_name = prognostic_updraft_area_fraction_in_convection - long_name = convective updraft area fraction - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in - optional = True -[sigmaout] - standard_name = updraft_area_fraction_updated_by_physics - long_name = convective updraft area fraction updated by physics - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = out - optional = True -[betascu] - standard_name = tuning_param_for_shallow_cu - long_name = tuning param for shallow cu in case prognostic closure is used - units = none - dimensions = () - type = real - kind = kind_phys - intent = in -[betamcu] - standard_name = tuning_param_for_midlevel_cu - long_name = tuning param for midlevel cu in case prognostic closure is used - units = none - dimensions = () - type = real - kind = kind_phys - intent = in -[betadcu] - standard_name = tuning_param_for_deep_cu - long_name = tuning param for deep cu in case prognostic closure is used - units = none - dimensions = () - type = real - intent = in -[maxMF] - standard_name = maximum_mass_flux - long_name = maximum mass flux within a column - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = True -[do_mynnedmf] - standard_name = flag_for_mellor_yamada_nakanishi_niino_pbl_scheme - long_name = flag to activate MYNN-EDMF - units = flag - dimensions = () - type = logical - intent = in -[sigmab_coldstart] - standard_name = flag_to_cold_start_for_sigmab_init - long_name = flag to cold start for sigmab initialization - units = flag - dimensions = () - type = logical - intent = in [qlcn] standard_name = mass_fraction_of_convective_cloud_liquid_water long_name = mass fraction of convective cloud liquid water @@ -722,6 +658,70 @@ type = real kind = kind_phys intent = out +[sigmain] + standard_name = prognostic_updraft_area_fraction_in_convection + long_name = convective updraft area fraction + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + optional = True +[sigmaout] + standard_name = updraft_area_fraction_updated_by_physics + long_name = convective updraft area fraction updated by physics + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + optional = True +[betadcu] + standard_name = tuning_param_for_deep_cu + long_name = tuning param for deep cu in case prognostic closure is used + units = none + dimensions = () + type = real + intent = in +[betamcu] + standard_name = tuning_param_for_midlevel_cu + long_name = tuning param for midlevel cu in case prognostic closure is used + units = none + dimensions = () + type = real + kind = kind_phys + intent = in +[betascu] + standard_name = tuning_param_for_shallow_cu + long_name = tuning param for shallow cu in case prognostic closure is used + units = none + dimensions = () + type = real + kind = kind_phys + intent = in +[maxMF] + standard_name = maximum_mass_flux + long_name = maximum mass flux within a column + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in + optional = True +[do_mynnedmf] + standard_name = flag_for_mellor_yamada_nakanishi_niino_pbl_scheme + long_name = flag to activate MYNN-EDMF + units = flag + dimensions = () + type = logical + intent = in +[sigmab_coldstart] + standard_name = flag_to_cold_start_for_sigmab_init + long_name = flag to cold start for sigmab initialization + units = flag + dimensions = () + type = logical + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/CONV/SAMF/samfshalcnv.f b/physics/CONV/SAMF/samfshalcnv.f index b013046f5..4cfda9ed1 100644 --- a/physics/CONV/SAMF/samfshalcnv.f +++ b/physics/CONV/SAMF/samfshalcnv.f @@ -9,6 +9,9 @@ module samfshalcnv contains +!! \section arg_table_samfshalcnv_init Argument Table +!! \htmlinclude samfshalcnv_init.html +!! subroutine samfshalcnv_init(imfshalcnv, imfshalcnv_samf, & & errmsg, errflg) diff --git a/physics/CONV/SAMF/samfshalcnv.meta b/physics/CONV/SAMF/samfshalcnv.meta index 4dfa8ac20..3548ebb54 100644 --- a/physics/CONV/SAMF/samfshalcnv.meta +++ b/physics/CONV/SAMF/samfshalcnv.meta @@ -55,37 +55,6 @@ dimensions = () type = integer intent = in -[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 -[restart] - standard_name = flag_for_restart - long_name = flag for restart (warmstart) or coldstart - units = flag - dimensions = () - type = logical - intent = in -[tmf] - standard_name = tendency_of_vertically_diffused_tracer_concentration - long_name = updated tendency of the tracers due to vertical diffusion in PBL scheme - units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_vertical_diffusion_tracers) - type = real - kind = kind_phys - intent = in -[qmicro] - standard_name = instantaneous_tendency_of_specific_humidity_due_to_microphysics - long_name = moisture tendency due to microphysics - units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in - optional = True [itc] standard_name = index_of_first_chemical_tracer_for_convection long_name = index of first chemical tracer transported/scavenged by convection @@ -218,6 +187,44 @@ type = real kind = kind_phys intent = in +[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 +[restart] + standard_name = flag_for_restart + long_name = flag for restart (warmstart) or coldstart + units = flag + dimensions = () + type = logical + intent = in +[tmf] + standard_name = tendency_of_vertically_diffused_tracer_concentration + long_name = updated tendency of the tracers due to vertical diffusion in PBL scheme + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_vertical_diffusion_tracers) + type = real + kind = kind_phys + intent = in +[qmicro] + standard_name = instantaneous_tendency_of_specific_humidity_due_to_microphysics + long_name = moisture tendency due to microphysics + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + optional = True +[progsigma] + standard_name = do_prognostic_updraft_area_fraction + long_name = flag for prognostic sigma in cumulus scheme + units = flag + dimensions = () + type = logical + intent = in [prslp] standard_name = air_pressure long_name = mean layer pressure @@ -462,13 +469,6 @@ dimensions = () type = logical intent = in -[progsigma] - standard_name = do_prognostic_updraft_area_fraction - long_name = flag for prognostic sigma in cumulus scheme - units = flag - dimensions = () - type = logical - intent = in [sigmain] standard_name = prognostic_updraft_area_fraction_in_convection long_name = convective updraft area fraction @@ -487,9 +487,9 @@ kind = kind_phys intent = out optional = True -[betascu] - standard_name = tuning_param_for_shallow_cu - long_name = tuning param for shallow cu in case prognostic closure is used +[betadcu] + standard_name = tuning_param_for_deep_cu + long_name = tuning param for deep cu in case prognostic closure is used units = none dimensions = () type = real @@ -503,12 +503,13 @@ type = real kind = kind_phys intent = in -[betadcu] - standard_name = tuning_param_for_deep_cu - long_name = tuning param for deep cu in case prognostic closure is used +[betascu] + standard_name = tuning_param_for_shallow_cu + long_name = tuning param for shallow cu in case prognostic closure is used units = none dimensions = () type = real + kind = kind_phys intent = in [errmsg] standard_name = ccpp_error_message diff --git a/physics/GWD/cires_ugwp.F90 b/physics/GWD/cires_ugwp.F90 index beb7dbbc7..010279d3a 100644 --- a/physics/GWD/cires_ugwp.F90 +++ b/physics/GWD/cires_ugwp.F90 @@ -229,7 +229,7 @@ subroutine cires_ugwp_run(do_ugwp, me, master, im, levs, ntrac, dtp, kdt, lonr real(kind=kind_phys), intent(out), dimension(:) :: tau_mtb, tau_ogw, tau_tofd, tau_ngw real(kind=kind_phys), intent(out), dimension(:, :):: gw_dudt, gw_dvdt, gw_dtdt, gw_kdis real(kind=kind_phys), intent(out), dimension(:, :):: dudt_mtb, dudt_tms - real(kind=kind_phys), intent(out), dimension(:, :), optional :: dudt_ogw + real(kind=kind_phys), intent(out), dimension(:, :):: dudt_ogw real(kind=kind_phys), intent(out), dimension(:), optional :: dusfc_ms, dvsfc_ms, dusfc_bl, dvsfc_bl real(kind=kind_phys), intent(out), dimension(:, :), optional :: dtauy2d_ms real(kind=kind_phys), intent(out), dimension(:, :), optional :: dtaux2d_bl, dtauy2d_bl diff --git a/physics/GWD/cires_ugwp.meta b/physics/GWD/cires_ugwp.meta index b0b1a8615..4509985a5 100644 --- a/physics/GWD/cires_ugwp.meta +++ b/physics/GWD/cires_ugwp.meta @@ -640,7 +640,6 @@ type = real kind = kind_phys intent = out - optional = True [dtauy2d_ms] 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 diff --git a/physics/GWD/cires_ugwp_post.F90 b/physics/GWD/cires_ugwp_post.F90 index 2ae20ac84..f77bf5810 100644 --- a/physics/GWD/cires_ugwp_post.F90 +++ b/physics/GWD/cires_ugwp_post.F90 @@ -35,7 +35,7 @@ subroutine cires_ugwp_post_run (ldiag_ugwp, dtf, im, levs, & real(kind=kind_phys), intent(inout), dimension(:) :: tot_mtb, tot_ogw, tot_tofd, tot_ngw real(kind=kind_phys), intent(inout), dimension(:) :: tot_zmtb, tot_zlwb, tot_zogw real(kind=kind_phys), intent(in), dimension(:,:) :: gw_dtdt, gw_dudt, gw_dvdt, dudt_mtb, dudt_tms - real(kind=kind_phys), intent(in), dimension(:,:), optional :: dudt_ogw + real(kind=kind_phys), intent(in), dimension(:,:) :: dudt_ogw real(kind=kind_phys), intent(inout), dimension(:,:), optional :: du3dt_mtb, du3dt_ogw, du3dt_tms, du3dt_ngw, dv3dt_ngw real(kind=kind_phys), intent(inout), dimension(:,:) :: dtdt, dudt, dvdt diff --git a/physics/GWD/cires_ugwp_post.meta b/physics/GWD/cires_ugwp_post.meta index 209209e25..5d2a6a3d1 100644 --- a/physics/GWD/cires_ugwp_post.meta +++ b/physics/GWD/cires_ugwp_post.meta @@ -132,7 +132,6 @@ type = real kind = kind_phys intent = in - optional = True [dudt_tms] standard_name = tendency_of_x_wind_due_to_turbulent_orographic_form_drag long_name = instantaneous change in x wind due to TOFD diff --git a/physics/GWD/drag_suite.F90 b/physics/GWD/drag_suite.F90 index e78f2924a..32739a9ff 100644 --- a/physics/GWD/drag_suite.F90 +++ b/physics/GWD/drag_suite.F90 @@ -377,7 +377,7 @@ subroutine drag_suite_run( & !Output: real(kind=kind_phys), intent(inout) :: & - & dusfc(:), dvsfc(:) + & dusfc(:), dvsfc(:), dtaux2d_ms(:,:) !Output (optional): real(kind=kind_phys), intent(inout), optional :: & & dusfc_ms(:),dvsfc_ms(:), & @@ -385,7 +385,7 @@ subroutine drag_suite_run( & & dusfc_ss(:),dvsfc_ss(:), & & dusfc_fd(:),dvsfc_fd(:) real(kind=kind_phys), intent(inout), optional :: & - & dtaux2d_ms(:,:),dtauy2d_ms(:,:), & + & dtauy2d_ms(:,:), & & dtaux2d_bl(:,:),dtauy2d_bl(:,:), & & dtaux2d_ss(:,:),dtauy2d_ss(:,:), & & dtaux2d_fd(:,:),dtauy2d_fd(:,:) diff --git a/physics/GWD/drag_suite.meta b/physics/GWD/drag_suite.meta index 5413a5482..6c99dd15d 100644 --- a/physics/GWD/drag_suite.meta +++ b/physics/GWD/drag_suite.meta @@ -282,7 +282,6 @@ type = real kind = kind_phys intent = inout - optional = True [dtauy2d_ms] standard_name = tendency_of_y_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = y wind tendency from mesoscale gwd diff --git a/physics/GWD/gwdps.f b/physics/GWD/gwdps.f index ca2efeef4..8cf57a6bc 100644 --- a/physics/GWD/gwdps.f +++ b/physics/GWD/gwdps.f @@ -314,8 +314,8 @@ subroutine gwdps_run( & real(kind=kind_phys), intent(in) :: & & THETA(:), SIGMA(:), GAMMA(:) real(kind=kind_phys), intent(inout) :: DUSFC(:), DVSFC(:), & - & RDXZB(:) - real(kind=kind_phys), intent(inout), optional :: dtaux2d_ms(:,:), & + & RDXZB(:), dtaux2d_ms(:,:) + real(kind=kind_phys), intent(inout), optional :: & & dtauy2d_ms(:,:), dtaux2d_bl(:,:), & & dtauy2d_bl(:,:) real(kind=kind_phys), intent(inout), optional :: dusfc_ms(:), & diff --git a/physics/GWD/gwdps.meta b/physics/GWD/gwdps.meta index 58c18d367..620d0606c 100644 --- a/physics/GWD/gwdps.meta +++ b/physics/GWD/gwdps.meta @@ -235,7 +235,6 @@ type = real kind = kind_phys intent = inout - optional = True [dtauy2d_ms] 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 diff --git a/physics/GWD/ugwpv1_gsldrag.F90 b/physics/GWD/ugwpv1_gsldrag.F90 index 5dd76b8d1..f18408541 100644 --- a/physics/GWD/ugwpv1_gsldrag.F90 +++ b/physics/GWD/ugwpv1_gsldrag.F90 @@ -419,11 +419,11 @@ subroutine ugwpv1_gsldrag_run(me, master, im, levs, ak, bk, ntrac, lonr, dtp, real(kind=kind_phys), intent(out), dimension(:) :: tau_ogw, tau_ngw, tau_oss real(kind=kind_phys), intent(out) , dimension(:,:), optional :: & - dudt_ogw, dvdt_ogw, dudt_obl, dvdt_obl, & + dvdt_ogw, dudt_obl, dvdt_obl, & dudt_oss, dvdt_oss, dudt_ofd, dvdt_ofd real(kind=kind_phys), intent(out) , dimension(:,:), optional :: dudt_ngw, dvdt_ngw, kdis_ngw, dtdt_ngw - real(kind=kind_phys), intent(out) , dimension(:,:) :: dudt_gw, dvdt_gw, dtdt_gw, kdis_gw + real(kind=kind_phys), intent(out) , dimension(:,:) :: dudt_gw, dvdt_gw, dtdt_gw, kdis_gw, dudt_ogw real(kind=kind_phys), intent(out) , dimension(:) :: zogw, zlwb, zobl, zngw ! diff --git a/physics/GWD/ugwpv1_gsldrag.meta b/physics/GWD/ugwpv1_gsldrag.meta index 6d9f5426b..16c73586d 100644 --- a/physics/GWD/ugwpv1_gsldrag.meta +++ b/physics/GWD/ugwpv1_gsldrag.meta @@ -786,7 +786,6 @@ type = real kind = kind_phys intent = out - optional = True [dvdt_ogw] standard_name = tendency_of_y_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = y wind tendency from meso scale ogw diff --git a/physics/GWD/ugwpv1_gsldrag_post.F90 b/physics/GWD/ugwpv1_gsldrag_post.F90 index c57ce55f5..bf5103145 100644 --- a/physics/GWD/ugwpv1_gsldrag_post.F90 +++ b/physics/GWD/ugwpv1_gsldrag_post.F90 @@ -40,8 +40,8 @@ subroutine ugwpv1_gsldrag_post_run ( im, levs, ldiag_ugwp, & real(kind=kind_phys), intent(inout), dimension(:) :: tot_mtb, tot_ogw, tot_tofd, tot_ngw real(kind=kind_phys), intent(inout), dimension(:) :: tot_zmtb, tot_zlwb, tot_zogw - real(kind=kind_phys), intent(in), dimension(:,:) :: dtdt_gw, dudt_gw, dvdt_gw - real(kind=kind_phys), intent(in), dimension(:,:), optional :: dudt_obl, dvdt_obl, dudt_ogw + real(kind=kind_phys), intent(in), dimension(:,:) :: dtdt_gw, dudt_gw, dvdt_gw, dudt_ogw + real(kind=kind_phys), intent(in), dimension(:,:), optional :: dudt_obl, dvdt_obl real(kind=kind_phys), intent(in), dimension(:,:), optional :: dvdt_ogw, dudt_ofd, dvdt_ofd real(kind=kind_phys), intent(in), dimension(:,:), optional :: dudt_oss, dvdt_oss real(kind=kind_phys), intent(inout), dimension(:,:), optional :: du3dt_mtb, du3dt_ogw, du3dt_tms diff --git a/physics/GWD/ugwpv1_gsldrag_post.meta b/physics/GWD/ugwpv1_gsldrag_post.meta index b97db21c0..41ef2c15c 100644 --- a/physics/GWD/ugwpv1_gsldrag_post.meta +++ b/physics/GWD/ugwpv1_gsldrag_post.meta @@ -144,7 +144,6 @@ type = real kind = kind_phys intent = in - optional = True [dvdt_ogw] standard_name = tendency_of_y_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = y wind tendency from meso scale ogw diff --git a/physics/GWD/unified_ugwp.F90 b/physics/GWD/unified_ugwp.F90 index adedeeb15..5baae0259 100644 --- a/physics/GWD/unified_ugwp.F90 +++ b/physics/GWD/unified_ugwp.F90 @@ -299,9 +299,10 @@ subroutine unified_ugwp_run(me, master, im, levs, ak,bk, ntrac, dtp, fhzero, kdt & dusfc_ms(:),dvsfc_ms(:), & & dusfc_bl(:),dvsfc_bl(:), & & dusfc_ss(:),dvsfc_ss(:), & - & dusfc_fd(:),dvsfc_fd(:) + & dusfc_fd(:),dvsfc_fd(:), & + & dtaux2d_ms(:,:) real(kind=kind_phys), intent(out), optional :: & - & dtaux2d_ms(:,:),dtauy2d_ms(:,:), & + & dtauy2d_ms(:,:), & & dtaux2d_bl(:,:),dtauy2d_bl(:,:), & & dtaux2d_ss(:,:),dtauy2d_ss(:,:), & & dtaux2d_fd(:,:),dtauy2d_fd(:,:), & diff --git a/physics/GWD/unified_ugwp.meta b/physics/GWD/unified_ugwp.meta index 91f63f03e..d2f5a73e5 100644 --- a/physics/GWD/unified_ugwp.meta +++ b/physics/GWD/unified_ugwp.meta @@ -564,7 +564,6 @@ type = real kind = kind_phys intent = out - optional = True [dtauy2d_ms] 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 diff --git a/physics/GWD/unified_ugwp_post.F90 b/physics/GWD/unified_ugwp_post.F90 index 47ad40ba9..83802d0ee 100644 --- a/physics/GWD/unified_ugwp_post.F90 +++ b/physics/GWD/unified_ugwp_post.F90 @@ -42,8 +42,8 @@ subroutine unified_ugwp_post_run (ldiag3d, ldiag_ugwp, & real(kind=kind_phys), intent(inout), dimension(:) :: tot_mtb, tot_ogw, tot_tofd, tot_ngw real(kind=kind_phys), intent(inout), dimension(:) :: tot_zmtb, tot_zlwb, tot_zogw real(kind=kind_phys), intent(in), dimension(:,:) :: gw_dtdt, gw_dudt, gw_dvdt, dudt_mtb - real(kind=kind_phys), intent(in), dimension(:,:), optional :: dudt_ogw, dvdt_ogw - real(kind=kind_phys), intent(in), dimension(:,:) :: dudt_tms + real(kind=kind_phys), intent(in), dimension(:,:), optional :: dvdt_ogw + real(kind=kind_phys), intent(in), dimension(:,:) :: dudt_tms, dudt_ogw real(kind=kind_phys), intent(inout), dimension(:,:), optional :: du3dt_mtb, du3dt_ogw, du3dt_tms, du3dt_ngw, dv3dt_ngw real(kind=kind_phys), intent(inout), dimension(:,:), optional :: ldu3dt_ogw, ldu3dt_obl, ldu3dt_oss, ldu3dt_ofd real(kind=kind_phys), intent(in), dimension(:,:), optional :: dudt_ngw, dvdt_ngw, dtdt_ngw diff --git a/physics/GWD/unified_ugwp_post.meta b/physics/GWD/unified_ugwp_post.meta index d129b046f..64ecb85da 100644 --- a/physics/GWD/unified_ugwp_post.meta +++ b/physics/GWD/unified_ugwp_post.meta @@ -139,7 +139,6 @@ type = real kind = kind_phys intent = in - optional = True [dvdt_ogw] standard_name = tendency_of_y_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = y momentum tendency from meso scale ogw diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_post.meta index 30bc93ccd..6390c4221 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_post.meta @@ -50,6 +50,13 @@ dimensions = () type = logical intent = in +[cscnv] + standard_name = flag_for_Chikira_Sugiyama_deep_convection + long_name = flag for Chikira-Sugiyama convection + units = flag + dimensions = () + type = logical + intent = in [frain] standard_name = dynamics_to_physics_timestep_ratio long_name = ratio of dynamics timestep to physics timestep @@ -155,73 +162,6 @@ type = real kind = kind_phys intent = in -[dtend] - standard_name = cumulative_change_of_state_variables - long_name = diagnostic tendencies for state variables - units = mixed - dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) - type = real - kind = kind_phys - intent = inout - optional = True -[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 - units = index - dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[ntqv] - standard_name = index_of_specific_humidity_in_tracer_concentration_array - long_name = tracer index for water vapor (specific humidity) - units = index - dimensions = () - type = integer - intent = in -[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 -[save_q] - standard_name = tracer_concentration_save - long_name = tracer concentration before entering a physics scheme - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) - type = real - kind = kind_phys - intent = in [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -301,6 +241,73 @@ kind = kind_phys intent = inout optional = True +[dtend] + standard_name = cumulative_change_of_state_variables + long_name = diagnostic tendencies for state variables + units = mixed + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) + type = real + kind = kind_phys + intent = inout + optional = True +[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 + units = index + dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) + type = integer + intent = in +[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 + units = index + dimensions = () + type = integer + intent = in +[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 + units = index + dimensions = () + type = integer + intent = in +[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 + units = index + dimensions = () + type = integer + intent = in +[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 + units = index + dimensions = () + type = integer + intent = in +[ntqv] + standard_name = index_of_specific_humidity_in_tracer_concentration_array + long_name = tracer index for water vapor (specific humidity) + units = index + dimensions = () + type = integer + intent = in +[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 +[save_q] + standard_name = tracer_concentration_save + long_name = tracer concentration before entering a physics scheme + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) + type = real + kind = kind_phys + intent = in [cnvw] standard_name = convective_cloud_water_mixing_ratio long_name = moist convective cloud water mixing ratio @@ -342,34 +349,6 @@ dimensions = () type = logical intent = in -[cscnv] - standard_name = flag_for_Chikira_Sugiyama_deep_convection - long_name = flag for Chikira-Sugiyama convection - units = flag - dimensions = () - type = logical - intent = in -[satmedmf] - standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL - long_name = flag for scale-aware TKE moist EDMF PBL scheme - units = flag - dimensions = () - type = logical - intent = in -[trans_trac] - standard_name = flag_for_convective_transport_of_tracers - long_name = flag for convective transport of tracers - units = flag - dimensions = () - type = logical - intent = in -[ntsigma] - standard_name = index_of_updraft_area_fraction_in_tracer_concentration_array - long_name = tracer index of updraft_area_fraction - units = index - dimensions = () - type = integer - intent = in [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -447,16 +426,16 @@ dimensions = () type = integer intent = in -[ntgv] - standard_name = index_of_graupel_volume_in_tracer_concentration_array - long_name = tracer index for graupel particle volume +[nthv] + standard_name = index_of_hail_volume_in_tracer_concentration_array + long_name = tracer index for hail particle volume units = index dimensions = () type = integer intent = in -[nthv] - standard_name = index_of_hail_volume_in_tracer_concentration_array - long_name = tracer index for hail particle volume +[ntgv] + standard_name = index_of_graupel_volume_in_tracer_concentration_array + long_name = tracer index for graupel particle volume units = index dimensions = () type = integer @@ -482,6 +461,20 @@ dimensions = () type = integer intent = in +[ntsigma] + standard_name = index_of_updraft_area_fraction_in_tracer_concentration_array + long_name = tracer index of updraft_area_fraction + units = index + dimensions = () + type = integer + intent = in +[ntrac] + standard_name = number_of_tracers + long_name = number of tracers + units = count + dimensions = () + type = integer + intent = in [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -490,12 +483,19 @@ type = real kind = kind_phys intent = in -[ntrac] - standard_name = number_of_tracers - long_name = number of tracers - units = count +[satmedmf] + standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL + long_name = flag for scale-aware TKE moist EDMF PBL scheme + units = flag dimensions = () - type = integer + type = logical + intent = in +[trans_trac] + standard_name = flag_for_convective_transport_of_tracers + long_name = flag for convective transport of tracers + units = flag + dimensions = () + type = logical intent = in [errmsg] standard_name = ccpp_error_message diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_pre.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_pre.meta index b8be36596..1e979b86f 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_pre.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_pre.meta @@ -127,54 +127,13 @@ type = real kind = kind_phys intent = inout -[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 - units = index - dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[cscnv] - standard_name = flag_for_Chikira_Sugiyama_deep_convection - long_name = flag for Chikira-Sugiyama convection - units = flag - dimensions = () - type = logical - intent = in -[satmedmf] - standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL - long_name = flag for scale-aware TKE moist EDMF PBL scheme - units = flag - dimensions = () - type = logical - intent = in -[trans_trac] - standard_name = flag_for_convective_transport_of_tracers - long_name = flag for convective transport of tracers - units = flag - dimensions = () - type = logical - intent = in -[ras] - standard_name = flag_for_relaxed_arakawa_schubert_deep_convection - long_name = flag for ras convection scheme - units = flag - dimensions = () - type = logical - intent = in -[ntsigma] - standard_name = index_of_updraft_area_fraction_in_tracer_concentration_array - long_name = tracer index of updraft_area_fraction - units = index - dimensions = () - type = integer +[clw] + standard_name = convective_transportable_tracers + long_name = array to contain cloud water and other convective trans. tracers + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers_for_convective_transport) + type = real + kind = kind_phys intent = in [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array @@ -253,16 +212,16 @@ dimensions = () type = integer intent = in -[ntgv] - standard_name = index_of_graupel_volume_in_tracer_concentration_array - long_name = tracer index for graupel particle volume +[nthv] + standard_name = index_of_hail_volume_in_tracer_concentration_array + long_name = tracer index for hail particle volume units = index dimensions = () type = integer intent = in -[nthv] - standard_name = index_of_hail_volume_in_tracer_concentration_array - long_name = tracer index for hail particle volume +[ntgv] + standard_name = index_of_graupel_volume_in_tracer_concentration_array + long_name = tracer index for graupel particle volume units = index dimensions = () type = integer @@ -288,13 +247,40 @@ dimensions = () type = integer intent = in -[clw] - standard_name = convective_transportable_tracers - long_name = array to contain cloud water and other convective trans. tracers - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers_for_convective_transport) - type = real - kind = kind_phys +[ntsigma] + standard_name = index_of_updraft_area_fraction_in_tracer_concentration_array + long_name = tracer index of updraft_area_fraction + units = index + dimensions = () + type = integer + intent = in +[cscnv] + standard_name = flag_for_Chikira_Sugiyama_deep_convection + long_name = flag for Chikira-Sugiyama convection + units = flag + dimensions = () + type = logical + intent = in +[satmedmf] + standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL + long_name = flag for scale-aware TKE moist EDMF PBL scheme + units = flag + dimensions = () + type = logical + intent = in +[trans_trac] + standard_name = flag_for_convective_transport_of_tracers + long_name = flag for convective transport of tracers + units = flag + dimensions = () + type = logical + intent = in +[ras] + standard_name = flag_for_relaxed_arakawa_schubert_deep_convection + long_name = flag for ras convection scheme + units = flag + dimensions = () + type = logical intent = in [ntrac] standard_name = number_of_tracers @@ -303,6 +289,20 @@ dimensions = () type = integer intent = in +[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 + units = index + dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) + type = integer + intent = in +[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 + units = index + dimensions = () + type = integer + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_post.meta index a11b8641d..5f288540a 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_post.meta @@ -86,6 +86,13 @@ type = real kind = kind_phys intent = inout +[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 + units = flag + dimensions = () + type = logical + intent = in [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -130,13 +137,6 @@ dimensions = () type = integer intent = in -[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 - units = flag - dimensions = () - type = logical - intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.meta index 8321c7d32..c0ea890f9 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.meta @@ -142,30 +142,6 @@ dimensions = () type = logical intent = in -[dudt] - standard_name = process_split_cumulative_tendency_of_x_wind - long_name = zonal wind tendency due to model physics - units = m s-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in -[dvdt] - standard_name = process_split_cumulative_tendency_of_y_wind - long_name = meridional wind tendency due to model physics - units = m s-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in -[dtdt] - standard_name = process_split_cumulative_tendency_of_air_temperature - long_name = updated tendency of the temperature - units = K s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -210,6 +186,30 @@ dimensions = () type = integer intent = in +[dudt] + standard_name = process_split_cumulative_tendency_of_x_wind + long_name = zonal wind tendency due to model physics + units = m s-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[dvdt] + standard_name = process_split_cumulative_tendency_of_y_wind + long_name = meridional wind tendency due to model physics + units = m s-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[dtdt] + standard_name = process_split_cumulative_tendency_of_air_temperature + long_name = updated tendency of the temperature + units = K s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 index 129b3203e..eaff2bd5c 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 @@ -23,8 +23,8 @@ subroutine GFS_MP_generic_post_run( rain0, ice0, snow0, graupel0, del, rain, domr_diag, domzr_diag, domip_diag, doms_diag, tprcp, srflag, sr, cnvprcp,& totprcp, totice, totsnw, totgrp, cnvprcpb, totprcpb, toticeb, totsnwb, totgrpb, rain_cpl, rainc_cpl, snow_cpl, & pwat, frzr, frzrb, frozr, frozrb, tsnowp, tsnowpb, rhonewsn1, exticeden, & - drain_cpl, dsnow_cpl, lsm, lsm_ruc, lsm_noahmp, raincprv, rainncprv, iceprv, snowprv, & - graupelprv, draincprv, drainncprv, diceprv, dsnowprv, dgraupelprv, dtp, & + drain_cpl, dsnow_cpl, lsm, ilsm_ruc, ilsm_noahmp, raincprv, rainncprv, iceprv, snowprv, & + graupelprv, draincprv, drainncprv, diceprv, dsnowprv, dgraupelprv, dtp, dfi_radar_max_intervals, & dtend, dtidx, index_of_temperature, index_of_process_mp,ldiag3d, qdiag3d,dqdt_qmicro, lssav, num_dfi_radar, & fh_dfi_radar,index_of_process_dfi_radar, ix_dfi_radar, dfi_radar_tten, radar_tten_limits, fhour, prevsq, & iopt_lake, iopt_lake_clm, lkm, use_lake_model, errmsg, errflg) @@ -40,11 +40,12 @@ subroutine GFS_MP_generic_post_run( integer, intent(in) :: index_of_temperature,index_of_process_mp,use_lake_model(:) integer, intent(in) :: imfshalcnv,imfshalcnv_gf,imfdeepcnv,imfdeepcnv_gf,imfdeepcnv_samf integer, dimension (:), intent(in) :: htop - real(kind=kind_phys), intent(in) :: fh_dfi_radar(:), fhour, con_t0c + integer, intent(in) :: dfi_radar_max_intervals + real(kind=kind_phys), intent(in) :: fhour, con_t0c + real(kind=kind_phys), intent(in) :: fh_dfi_radar(:) real(kind=kind_phys), intent(in) :: radar_tten_limits(:) integer, intent(in) :: ix_dfi_radar(:) real(kind=kind_phys), dimension(:,:), intent(inout) :: gt0,refl_10cm - real(kind=kind_phys), intent(in) :: dtf, frain, con_g, rainmin, rhowater real(kind=kind_phys), dimension(:), intent(in) :: rain1, xlat, xlon, tsfc real(kind=kind_phys), dimension(:), intent(inout) :: ice, snow, graupel, rainc @@ -60,7 +61,7 @@ subroutine GFS_MP_generic_post_run( real(kind=kind_phys), dimension(:), intent(inout) :: rain, domr_diag, domzr_diag, domip_diag, doms_diag, tprcp, & srflag, cnvprcp, totprcp, totice, totsnw, totgrp, cnvprcpb, & totprcpb, toticeb, totsnwb, totgrpb, pwat - real(kind=kind_phys), dimension(:), intent(inout), optional :: rain_cpl, rainc_cpl, snow_cpl + real(kind=kind_phys), dimension(:), intent(inout) :: rain_cpl, rainc_cpl, snow_cpl real(kind=kind_phys), dimension(:,:,:), intent(inout), optional :: dtend integer, dimension(:,:), intent(in) :: dtidx @@ -69,7 +70,7 @@ subroutine GFS_MP_generic_post_run( real(kind=kind_phys), dimension(:), intent(inout), optional :: drain_cpl, dsnow_cpl ! Rainfall variables previous time step - integer, intent(in) :: lsm, lsm_ruc, lsm_noahmp + integer, intent(in) :: lsm, ilsm_ruc, ilsm_noahmp real(kind=kind_phys), dimension(:), intent(inout), optional :: raincprv real(kind=kind_phys), dimension(:), intent(inout), optional :: rainncprv real(kind=kind_phys), dimension(:), intent(inout), optional :: iceprv @@ -266,7 +267,7 @@ subroutine GFS_MP_generic_post_run( ice = frain*rain1*sr ! time-step ice end if - if (lsm==lsm_ruc .or. lsm==lsm_noahmp) then + if (lsm==ilsm_ruc .or. lsm==ilsm_noahmp) then raincprv(:) = rainc(:) rainncprv(:) = frain * rain1(:) iceprv(:) = ice(:) @@ -275,7 +276,7 @@ subroutine GFS_MP_generic_post_run( !for NoahMP, calculate precipitation rates from liquid water equivalent thickness for use in next time step !Note (GJF): Precipitation LWE thicknesses are multiplied by the frain factor, and are thus on the dynamics time step, but the conversion as written ! (with dtp in the denominator) assumes the rate is calculated on the physics time step. This only works as expected when dtf=dtp (i.e. when frain=1). - if (lsm == lsm_noahmp) then + if (lsm == ilsm_noahmp) then tem = one / (dtp*con_p001) !GJF: This conversion was taken from GFS_physics_driver.F90, but should denominator also have the frain factor? draincprv(:) = tem * raincprv(:) drainncprv(:) = tem * rainncprv(:) @@ -395,7 +396,7 @@ subroutine GFS_MP_generic_post_run( ! determine convective rain/snow by surface temperature ! determine large-scale rain/snow by rain/snow coming out directly from MP - if (lsm /= lsm_ruc) then + if (lsm /= ilsm_ruc) then do i = 1, im !tprcp(i) = max(0.0, rain(i) )! clu: rain -> tprcp ! DH now lines 245-250 srflag(i) = zero ! clu: default srflag as 'rain' (i.e. 0) @@ -420,7 +421,7 @@ subroutine GFS_MP_generic_post_run( do i=1,im srflag(i) = sr(i) enddo - endif ! lsm==lsm_ruc + endif ! lsm==ilsm_ruc elseif( .not. cal_pre) then if (imp_physics == imp_physics_mg) then ! MG microphysics do i=1,im diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.meta index c188cc555..d9f31d755 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.meta @@ -29,14 +29,6 @@ dimensions = () type = integer intent = in -[rainmin] - standard_name = lwe_thickness_of_minimum_rain_amount - long_name = minimum rain amount - units = m - dimensions = () - type = real - kind = kind_phys - intent = in [nrcm] standard_name = number_of_random_numbers long_name = second dimension of random number stream for RAS @@ -86,6 +78,13 @@ dimensions = () type = integer intent = in +[imp_physics_nssl] + standard_name = identifier_for_nssl_microphysics_scheme + long_name = choice of NSSL 2-moment microphysics scheme + units = flag + dimensions = () + type = integer + intent = in [imp_physics_mg] standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme @@ -100,13 +99,6 @@ dimensions = () type = integer intent = in -[imp_physics_nssl] - standard_name = identifier_for_nssl_microphysics_scheme - long_name = choice of NSSL 2-moment microphysics scheme - units = flag - dimensions = () - type = integer - intent = in [cal_pre] standard_name = flag_for_dominant_precipitation_type_partition long_name = flag controls precip type algorithm @@ -158,6 +150,14 @@ type = real kind = kind_phys intent = in +[rainmin] + standard_name = lwe_thickness_of_minimum_rain_amount + long_name = minimum rain amount + units = m + dimensions = () + type = real + kind = kind_phys + intent = in [dtf] standard_name = timestep_for_dynamics long_name = dynamics timestep @@ -221,7 +221,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = in + intent = inout [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -254,6 +254,22 @@ type = real kind = kind_phys intent = in +[tsfc] + standard_name = surface_skin_temperature + long_name = surface skin temperature + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[ice] + standard_name = lwe_thickness_of_ice_amount_on_dynamics_timestep + long_name = ice fall at this time step + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout [phil] standard_name = geopotential long_name = layer geopotential @@ -320,22 +336,6 @@ type = real kind = kind_phys intent = in -[tsfc] - standard_name = surface_skin_temperature - long_name = surface skin temperature - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[ice] - standard_name = lwe_thickness_of_ice_amount_on_dynamics_timestep - long_name = ice fall at this time step - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout [snow] standard_name = lwe_thickness_of_snow_amount_on_dynamics_timestep long_name = snow fall at this time step @@ -352,69 +352,6 @@ type = real kind = kind_phys intent = inout -[frzr] - standard_name = cumulative_lwe_thickness_of_surface_freezing_rain_amount - long_name = accumulated surface freezing rain - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout -[frzrb] - standard_name = cumulative_lwe_thickness_of_surface_freezing_rain_amount_in_bucket - long_name = accumulated surface freezing rain in bucket - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout -[frozr] - standard_name = cumulative_lwe_thickness_of_surface_graupel_amount - long_name = accumulated surface graupel - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout -[frozrb] - standard_name = cumulative_lwe_thickness_of_surface_graupel_amount_in_bucket - long_name = accumulated surface graupel in bucket - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout -[tsnowp] - standard_name = cumulative_lwe_thickness_of_surface_snow_amount - long_name = accumulated surface snow - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout -[tsnowpb] - standard_name = cumulative_lwe_thickness_of_surface_snow_amount_in_bucket - long_name = accumulated surface snow in bucket - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout -[rhonewsn1] - standard_name = surface_frozen_precipitation_density - long_name = density of precipitation ice - units = kg m-3 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout -[exticeden] - standard_name = do_external_surface_frozen_precipitation_density - long_name = flag for calculating frozen precip ice density outside of the LSM - units = flag - dimensions = () - type = logical - intent = in [save_t] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme @@ -654,6 +591,69 @@ type = real kind = kind_phys intent = inout +[frzr] + standard_name = cumulative_lwe_thickness_of_surface_freezing_rain_amount + long_name = accumulated surface freezing rain + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[frzrb] + standard_name = cumulative_lwe_thickness_of_surface_freezing_rain_amount_in_bucket + long_name = accumulated surface freezing rain in bucket + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[frozr] + standard_name = cumulative_lwe_thickness_of_surface_graupel_amount + long_name = accumulated surface graupel + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[frozrb] + standard_name = cumulative_lwe_thickness_of_surface_graupel_amount_in_bucket + long_name = accumulated surface graupel in bucket + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tsnowp] + standard_name = cumulative_lwe_thickness_of_surface_snow_amount + long_name = accumulated surface snow + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tsnowpb] + standard_name = cumulative_lwe_thickness_of_surface_snow_amount_in_bucket + long_name = accumulated surface snow in bucket + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[rhonewsn1] + standard_name = surface_frozen_precipitation_density + long_name = density of precipitation ice + units = kg m-3 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[exticeden] + standard_name = do_external_surface_frozen_precipitation_density + long_name = flag for calculating frozen precip ice density outside of the LSM + units = flag + dimensions = () + type = logical + intent = in [drain_cpl] standard_name = tendency_of_lwe_thickness_of_rain_amount_on_dynamics_timestep_for_coupling long_name = change in rain_cpl (coupling_type) @@ -679,14 +679,14 @@ dimensions = () type = integer intent = in -[lsm_ruc] +[ilsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model units = flag dimensions = () type = integer intent = in -[lsm_noahmp] +[ilsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model units = flag @@ -791,60 +791,13 @@ type = real kind = kind_phys intent = in -[num_dfi_radar] - standard_name = number_of_radar_derived_temperature_or_convection_suppression_intervals - long_name = number of time ranges with radar-derived microphysics temperature tendencies or radar-derived convection suppression +[dfi_radar_max_intervals] + standard_name = maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals + long_name = maximum allowed number of time ranges with radar-derived microphysics temperature tendencies or radar-derived convection suppression units = count dimensions = () type = integer intent = in -[fh_dfi_radar] - standard_name = forecast_lead_times_bounding_radar_derived_temperature_or_convection_suppression_intervals - long_name = forecast lead times bounding radar derived temperature or convection suppression intervals - units = h - dimensions = (maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals_plus_one) - type = real - kind = kind_phys - intent = in -[ix_dfi_radar] - standard_name = indices_with_radar_derived_temperature_or_convection_suppression_data - long_name = indices with radar derived temperature or convection suppression data - units = index - dimensions = (maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals) - type = integer - intent = in -[dfi_radar_tten] - standard_name = radar_derived_microphysics_temperature_tendency - long_name = radar-derived microphysics temperature tendency - units = K s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_radar_derived_temperature_or_convection_suppression_intervals) - type = real - kind = kind_phys - intent = in - optional = True -[fhour] - standard_name = forecast_time - long_name = current forecast time - units = h - dimensions = () - type = real - kind = kind_phys - intent = in -[radar_tten_limits] - standard_name = allowed_bounds_of_radar_prescribed_tendencies - long_name = allowed bounds of prescribed microphysics temperature tendencies - units = K s-1 - dimensions = (2) - type = real - kind = kind_phys - intent = in -[index_of_process_dfi_radar] - standard_name = index_of_radar_derived_microphysics_temperature_forcing_in_cumulative_change_index - long_name = index of radar-derived microphysics temperature forcing in second dimension of array cumulative change index - units = index - dimensions = () - type = integer - intent = in [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -898,15 +851,6 @@ kind = kind_phys intent = inout optional = True -[prevsq] - standard_name = specific_humidity_on_previous_timestep - long_name = specific_humidity_on_previous_timestep - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics @@ -914,13 +858,69 @@ dimensions = () type = logical intent = in -[lkm] - standard_name = control_for_lake_model_execution_method - long_name = control for lake model execution: 0=no lake, 1=lake, 2=lake+nsst - units = flag +[num_dfi_radar] + standard_name = number_of_radar_derived_temperature_or_convection_suppression_intervals + long_name = number of time ranges with radar-derived microphysics temperature tendencies or radar-derived convection suppression + units = count + dimensions = () + type = integer + intent = in +[fh_dfi_radar] + standard_name = forecast_lead_times_bounding_radar_derived_temperature_or_convection_suppression_intervals + long_name = forecast lead times bounding radar derived temperature or convection suppression intervals + units = h + dimensions = (maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals_plus_one) + type = real + kind = kind_phys + intent = in +[index_of_process_dfi_radar] + standard_name = index_of_radar_derived_microphysics_temperature_forcing_in_cumulative_change_index + long_name = index of radar-derived microphysics temperature forcing in second dimension of array cumulative change index + units = index dimensions = () type = integer intent = in +[ix_dfi_radar] + standard_name = indices_with_radar_derived_temperature_or_convection_suppression_data + long_name = indices with radar derived temperature or convection suppression data + units = index + dimensions = (maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals) + type = integer + intent = in +[dfi_radar_tten] + standard_name = radar_derived_microphysics_temperature_tendency + long_name = radar-derived microphysics temperature tendency + units = K s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_radar_derived_temperature_or_convection_suppression_intervals) + type = real + kind = kind_phys + intent = in + optional = True +[radar_tten_limits] + standard_name = allowed_bounds_of_radar_prescribed_tendencies + long_name = allowed bounds of prescribed microphysics temperature tendencies + units = K s-1 + dimensions = (2) + 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 +[prevsq] + standard_name = specific_humidity_on_previous_timestep + long_name = specific_humidity_on_previous_timestep + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True [iopt_lake] standard_name = control_for_lake_model_selection long_name = control for lake model selection @@ -935,6 +935,13 @@ dimensions = () type = integer intent = in +[lkm] + standard_name = control_for_lake_model_execution_method + long_name = control for lake model execution: 0=no lake, 1=lake, 2=lake+nsst + units = flag + dimensions = () + type = integer + intent = in [use_lake_model] standard_name = flag_for_using_lake_model long_name = flag indicating lake points using a lake model diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.meta index 057d061a4..7193e547f 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.meta @@ -288,6 +288,13 @@ dimensions = () type = integer intent = in +[nssl_ccn_on] + standard_name = nssl_ccn_on + long_name = CCN activation flag in NSSL micro + units = flag + dimensions = () + type = logical + intent = in [ltaerosol] standard_name = flag_for_aerosol_physics long_name = flag for aerosol physics @@ -302,13 +309,6 @@ dimensions = () type = logical intent = in -[nssl_ccn_on] - standard_name = nssl_ccn_on - long_name = CCN activation flag in NSSL micro - units = flag - dimensions = () - type = logical - intent = in [nssl_hail_on] standard_name = nssl_hail_on long_name = hail activation flag in NSSL micro @@ -439,50 +439,6 @@ type = real kind = kind_phys intent = in -[dtend] - standard_name = cumulative_change_of_state_variables - long_name = diagnostic tendencies for state variables - units = mixed - dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) - type = real - kind = kind_phys - intent = inout - optional = True -[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 - units = index - dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in [dqsfc1] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux valid for current call @@ -582,6 +538,50 @@ kind = kind_phys intent = inout optional = True +[dtend] + standard_name = cumulative_change_of_state_variables + long_name = diagnostic tendencies for state variables + units = mixed + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) + type = real + kind = kind_phys + intent = inout + optional = True +[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 + units = index + dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) + type = integer + intent = in +[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 + units = index + dimensions = () + type = integer + intent = in +[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 + units = index + dimensions = () + type = integer + intent = in +[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 + units = index + dimensions = () + type = integer + intent = in +[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 + units = index + dimensions = () + type = integer + intent = in [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 @@ -822,18 +822,18 @@ dimensions = () type = logical intent = in -[dqsfc_med] - standard_name = surface_upward_latent_heat_flux_over_ocean_from_mediator - long_name = sfc latent heat flux input over ocean for coupling +[dtsfc_med] + standard_name = surface_upward_sensible_heat_flux_over_ocean_from_mediator + long_name = sfc sensible heat flux input over ocean for coupling units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys intent = in optional = True -[dtsfc_med] - standard_name = surface_upward_sensible_heat_flux_over_ocean_from_mediator - long_name = sfc sensible heat flux input over ocean for coupling +[dqsfc_med] + standard_name = surface_upward_latent_heat_flux_over_ocean_from_mediator + long_name = sfc latent heat flux input over ocean for coupling units = W m-2 dimensions = (horizontal_loop_extent) type = real diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_post.meta index f90fccf01..b97d5ee9c 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_post.meta @@ -122,57 +122,6 @@ type = real kind = kind_phys intent = in -[dtend] - standard_name = cumulative_change_of_state_variables - long_name = diagnostic tendencies for state variables - units = mixed - dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) - type = real - kind = kind_phys - intent = inout - optional = True -[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 - units = index - dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[ntqv] - standard_name = index_of_specific_humidity_in_tracer_concentration_array - long_name = tracer index for water vapor (specific humidity) - units = index - dimensions = () - type = integer - intent = in [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -282,69 +231,64 @@ kind = kind_phys intent = inout optional = True -[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 - units = flag - dimensions = () - type = logical - intent = in -[imfshalcnv] - standard_name = control_for_shallow_convection_scheme - long_name = flag for mass-flux shallow convection scheme - units = flag - dimensions = () +[dtend] + standard_name = cumulative_change_of_state_variables + long_name = diagnostic tendencies for state variables + units = mixed + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) + type = real + kind = kind_phys + intent = inout + optional = True +[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 + units = index + dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in -[imfshalcnv_sas] - standard_name = identifier_for_simplified_arakawa_schubert_shallow_convection - long_name = flag for SAS shallow convection scheme - units = flag +[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 + units = index dimensions = () type = integer intent = in -[imfshalcnv_samf] - standard_name = identifier_for_scale_aware_mass_flux_shallow_convection - long_name = flag for SAMF shallow convection scheme - units = flag +[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 + units = index dimensions = () type = integer intent = in -[cscnv] - standard_name = flag_for_Chikira_Sugiyama_deep_convection - long_name = flag for Chikira-Sugiyama convection - units = flag +[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 + units = index dimensions = () - type = logical + type = integer intent = in -[satmedmf] - standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL - long_name = flag for scale-aware TKE moist EDMF PBL scheme - units = flag +[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 + units = index dimensions = () - type = logical + type = integer intent = in -[trans_trac] - standard_name = flag_for_convective_transport_of_tracers - long_name = flag for convective transport of tracers - units = flag +[ntqv] + standard_name = index_of_specific_humidity_in_tracer_concentration_array + long_name = tracer index for water vapor (specific humidity) + units = index dimensions = () - type = logical + type = integer intent = in -[ras] - standard_name = flag_for_relaxed_arakawa_schubert_deep_convection - long_name = flag for ras convection scheme +[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 units = flag dimensions = () type = logical intent = in -[ntsigma] - standard_name = index_of_updraft_area_fraction_in_tracer_concentration_array - long_name = tracer index of updraft_area_fraction - units = index - dimensions = () - type = integer - intent = in [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -408,6 +352,34 @@ dimensions = () type = integer intent = in +[ntsigma] + standard_name = index_of_updraft_area_fraction_in_tracer_concentration_array + long_name = tracer index of updraft_area_fraction + units = index + dimensions = () + type = integer + intent = in +[imfshalcnv] + standard_name = control_for_shallow_convection_scheme + long_name = flag for mass-flux shallow convection scheme + units = flag + dimensions = () + type = integer + intent = in +[imfshalcnv_sas] + standard_name = identifier_for_simplified_arakawa_schubert_shallow_convection + long_name = flag for SAS shallow convection scheme + units = flag + dimensions = () + type = integer + intent = in +[imfshalcnv_samf] + standard_name = identifier_for_scale_aware_mass_flux_shallow_convection + long_name = flag for SAMF shallow convection scheme + units = flag + dimensions = () + type = integer + intent = in [ntrac] standard_name = number_of_tracers long_name = number of tracers @@ -415,6 +387,34 @@ dimensions = () type = integer intent = in +[cscnv] + standard_name = flag_for_Chikira_Sugiyama_deep_convection + long_name = flag for Chikira-Sugiyama convection + units = flag + dimensions = () + type = logical + intent = in +[satmedmf] + standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL + long_name = flag for scale-aware TKE moist EDMF PBL scheme + units = flag + dimensions = () + type = logical + intent = in +[trans_trac] + standard_name = flag_for_convective_transport_of_tracers + long_name = flag for convective transport of tracers + units = flag + dimensions = () + type = logical + intent = in +[ras] + standard_name = flag_for_relaxed_arakawa_schubert_deep_convection + long_name = flag for ras convection scheme + units = flag + dimensions = () + type = logical + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_pre.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_pre.meta index fbd9e47d8..0386b4558 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_pre.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_pre.meta @@ -98,7 +98,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) type = real kind = kind_phys - intent = in + intent = inout [ntqv] standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) @@ -134,41 +134,6 @@ dimensions = () type = integer intent = in -[cscnv] - standard_name = flag_for_Chikira_Sugiyama_deep_convection - long_name = flag for Chikira-Sugiyama convection - units = flag - dimensions = () - type = logical - intent = in -[satmedmf] - standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL - long_name = flag for scale-aware TKE moist EDMF PBL scheme - units = flag - dimensions = () - type = logical - intent = in -[trans_trac] - standard_name = flag_for_convective_transport_of_tracers - long_name = flag for convective transport of tracers - units = flag - dimensions = () - type = logical - intent = in -[ras] - standard_name = flag_for_relaxed_arakawa_schubert_deep_convection - long_name = flag for ras convection scheme - units = flag - dimensions = () - type = logical - intent = in -[ntsigma] - standard_name = index_of_updraft_area_fraction_in_tracer_concentration_array - long_name = tracer index of updraft_area_fraction - units = index - dimensions = () - type = integer - intent = in [ntcw] standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) @@ -232,13 +197,42 @@ dimensions = () type = integer intent = in -[clw] - standard_name = convective_transportable_tracers - long_name = array to contain cloud water and other convective trans. tracers - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers_for_convective_transport) - type = real - kind = kind_phys + +[ntsigma] + standard_name = index_of_updraft_area_fraction_in_tracer_concentration_array + long_name = tracer index of updraft_area_fraction + units = index + dimensions = () + type = integer + intent = in + intent = in +[cscnv] + standard_name = flag_for_Chikira_Sugiyama_deep_convection + long_name = flag for Chikira-Sugiyama convection + units = flag + dimensions = () + type = logical + intent = in +[satmedmf] + standard_name = flag_for_scale_aware_TKE_moist_EDMF_PBL + long_name = flag for scale-aware TKE moist EDMF PBL scheme + units = flag + dimensions = () + type = logical + intent = in +[trans_trac] + standard_name = flag_for_convective_transport_of_tracers + long_name = flag for convective transport of tracers + units = flag + dimensions = () + type = logical + intent = in +[ras] + standard_name = flag_for_relaxed_arakawa_schubert_deep_convection + long_name = flag for ras convection scheme + units = flag + dimensions = () + type = logical intent = in [ntrac] standard_name = number_of_tracers @@ -247,6 +241,14 @@ dimensions = () type = integer intent = in +[clw] + standard_name = convective_transportable_tracers + long_name = array to contain cloud water and other convective trans. tracers + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers_for_convective_transport) + type = real + kind = kind_phys + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.meta index daf1bddee..adf76e649 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.meta @@ -114,7 +114,7 @@ standard_name = total_cloud_fraction long_name = layer total cloud fraction units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta index 0d12b2bbb..d2cc0e6a2 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta @@ -2,6 +2,7 @@ name = GFS_diagtoscreen type = scheme dependencies = ../../hooks/machine.F + dependencies = ../../../../../scm/src/GFS_typedefs.F90,../../../../../scm/src/CCPP_typedefs.F90 ######################################################################## [ccpp-arg-table] diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 index 0c90478be..3d0f2ffeb 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 @@ -84,7 +84,7 @@ subroutine GFS_phys_time_vary_init ( 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, & - isot, ivegsrc, nlunit, sncovr, sncovr_ice, lsm, lsm_noahmp, lsm_ruc, min_seaice, & + isot, ivegsrc, nlunit, sncovr, sncovr_ice, lsm, ilsm_noahmp, ilsm_ruc, min_seaice, & fice, landfrac, vtype, weasd, lsoil, zs, dzs, lsnow_lsm_lbound, lsnow_lsm_ubound, & tvxy, tgxy, tahxy, canicexy, canliqxy, eahxy, cmxy, chxy, fwetxy, sneqvoxy, alboldxy,& qsnowxy, wslakexy, albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, albdvis_ice, & @@ -125,7 +125,7 @@ subroutine GFS_phys_time_vary_init ( integer, intent(in) :: isot, ivegsrc, nlunit real(kind_phys), intent(inout) :: sncovr(:), sncovr_ice(:) - integer, intent(in) :: lsm, lsm_noahmp, lsm_ruc, vtype(:) + integer, intent(in) :: lsm, ilsm_noahmp, ilsm_ruc, vtype(:) real(kind_phys), intent(in) :: min_seaice, fice(:) real(kind_phys), intent(in) :: landfrac(:) real(kind_phys), intent(inout) :: weasd(:) @@ -340,7 +340,7 @@ subroutine GFS_phys_time_vary_init ( endif !--- For RUC LSM: create sncovr_ice from sncovr - if (lsm == lsm_ruc) then + if (lsm == ilsm_ruc) then if (all(sncovr_ice < zero)) then if (me == master ) write(*,'(a)') 'GFS_phys_time_vary_init: fill sncovr_ice with sncovr for RUC LSM' sncovr_ice(:) = sncovr(:) @@ -359,7 +359,7 @@ subroutine GFS_phys_time_vary_init ( !--- For Noah MP or RUC LSMs: initialize four components of albedo for !--- land and ice - not for restart runs lsm_init: if (lsm_cold_start) then - if (lsm == lsm_noahmp .or. lsm == lsm_ruc) then + if (lsm == ilsm_noahmp .or. lsm == ilsm_ruc) then if (me == master ) write(*,'(a)') 'GFS_phys_time_vary_init: initialize albedo for land and ice' do ix=1,im albdvis_lnd(ix) = 0.2_kind_phys @@ -369,7 +369,7 @@ subroutine GFS_phys_time_vary_init ( emiss_lnd(ix) = 0.95_kind_phys enddo endif - if (lsm == lsm_ruc) then + if (lsm == ilsm_ruc) then do ix=1,im albdvis_ice(ix) = 0.6_kind_phys albdnir_ice(ix) = 0.6_kind_phys @@ -379,7 +379,7 @@ subroutine GFS_phys_time_vary_init ( enddo endif - noahmp_init: if (lsm == lsm_noahmp) then + noahmp_init: if (lsm == ilsm_noahmp) then allocate(dzsno (lsnow_lsm_lbound:lsnow_lsm_ubound)) allocate(dzsnso(lsnow_lsm_lbound:lsoil) ) dzsno(:) = missing_value diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.meta index d0c5e80ec..ef40442db 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.meta @@ -396,14 +396,14 @@ dimensions = () type = integer intent = in -[lsm_noahmp] +[ilsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model units = flag dimensions = () type = integer intent = in -[lsm_ruc] +[ilsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model units = flag diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 index 35b46618c..1874da118 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 @@ -63,7 +63,7 @@ subroutine GFS_phys_time_vary_init ( 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, & - isot, ivegsrc, nlunit, sncovr, sncovr_ice, lsm, lsm_noahmp, lsm_ruc, min_seaice, & + isot, ivegsrc, nlunit, sncovr, sncovr_ice, lsm, ilsm_noahmp, ilsm_ruc, min_seaice, & fice, landfrac, vtype, weasd, lsoil, zs, dzs, lsnow_lsm_lbound, lsnow_lsm_ubound, & tvxy, tgxy, tahxy, canicexy, canliqxy, eahxy, cmxy, chxy, fwetxy, sneqvoxy, alboldxy,& qsnowxy, wslakexy, albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, albdvis_ice, & @@ -102,7 +102,7 @@ subroutine GFS_phys_time_vary_init ( integer, intent(in) :: isot, ivegsrc, nlunit real(kind_phys), intent(inout) :: sncovr(:), sncovr_ice(:) - integer, intent(in) :: lsm, lsm_noahmp, lsm_ruc, vtype(:) + integer, intent(in) :: lsm, ilsm_noahmp, ilsm_ruc, vtype(:) real(kind_phys), intent(in) :: min_seaice, fice(:) real(kind_phys), intent(in) :: landfrac(:) real(kind_phys), intent(inout) :: weasd(:) @@ -234,7 +234,7 @@ subroutine GFS_phys_time_vary_init ( call set_soilveg(me, isot, ivegsrc, nlunit, errmsg, errflg) !> - read in NoahMP table (needed for NoahMP init) - if(lsm == lsm_noahmp) then + if(lsm == ilsm_noahmp) then call read_mp_table_parameters(errmsg, errflg) endif @@ -304,7 +304,7 @@ subroutine GFS_phys_time_vary_init ( endif !--- For RUC LSM: create sncovr_ice from sncovr - if (lsm == lsm_ruc) then + if (lsm == ilsm_ruc) then if (all(sncovr_ice < zero)) then if (me == master ) write(*,'(a)') 'GFS_phys_time_vary_init: fill sncovr_ice with sncovr for RUC LSM' sncovr_ice(:) = sncovr(:) @@ -321,7 +321,7 @@ subroutine GFS_phys_time_vary_init ( !--- For Noah MP or RUC LSMs: initialize four components of albedo for !--- land and ice - not for restart runs lsm_init: if (lsm_cold_start) then - if (lsm == lsm_noahmp .or. lsm == lsm_ruc) then + if (lsm == ilsm_noahmp .or. lsm == ilsm_ruc) then if (me == master ) write(*,'(a)') 'GFS_phys_time_vary_init: initialize albedo for land and ice' do ix=1,im albdvis_lnd(ix) = 0.2_kind_phys @@ -331,7 +331,7 @@ subroutine GFS_phys_time_vary_init ( emiss_lnd(ix) = 0.95_kind_phys enddo endif - if (lsm == lsm_ruc) then + if (lsm == ilsm_ruc) then do ix=1,im albdvis_ice(ix) = 0.6_kind_phys albdnir_ice(ix) = 0.6_kind_phys @@ -341,7 +341,7 @@ subroutine GFS_phys_time_vary_init ( enddo endif - noahmp_init: if (lsm == lsm_noahmp) then + noahmp_init: if (lsm == ilsm_noahmp) then allocate(dzsno (lsnow_lsm_lbound:lsnow_lsm_ubound)) allocate(dzsnso(lsnow_lsm_lbound:lsoil) ) dzsno(:) = missing_value diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.meta index 5dae234ea..9b956c990 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.meta @@ -395,14 +395,14 @@ dimensions = () type = integer intent = in -[lsm_noahmp] +[ilsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model units = flag dimensions = () type = integer intent = in -[lsm_ruc] +[ilsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model units = flag @@ -602,6 +602,90 @@ kind = kind_phys intent = inout optional = True +[albdvis_lnd] + standard_name = surface_albedo_direct_visible_over_land + long_name = direct surface albedo visible band over land + units = frac + dimensions = (horizontal_dimension) + type = real + kind = kind_phys + intent = inout +[albdnir_lnd] + standard_name = surface_albedo_direct_NIR_over_land + long_name = direct surface albedo NIR band over land + units = frac + dimensions = (horizontal_dimension) + type = real + kind = kind_phys + intent = inout +[albivis_lnd] + standard_name = surface_albedo_diffuse_visible_over_land + long_name = diffuse surface albedo visible band over land + units = frac + dimensions = (horizontal_dimension) + type = real + kind = kind_phys + intent = inout +[albinir_lnd] + standard_name = surface_albedo_diffuse_NIR_over_land + long_name = diffuse surface albedo NIR band over land + units = frac + dimensions = (horizontal_dimension) + type = real + kind = kind_phys + intent = inout +[albdvis_ice] + standard_name = surface_albedo_direct_visible_over_ice + long_name = direct surface albedo visible band over ice + units = frac + dimensions = (horizontal_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[albdnir_ice] + standard_name = surface_albedo_direct_NIR_over_ice + long_name = direct surface albedo NIR band over ice + units = frac + dimensions = (horizontal_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[albivis_ice] + standard_name = surface_albedo_diffuse_visible_over_ice + long_name = diffuse surface albedo visible band over ice + units = frac + dimensions = (horizontal_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[albinir_ice] + standard_name = surface_albedo_diffuse_NIR_over_ice + long_name = diffuse surface albedo NIR band over ice + units = frac + dimensions = (horizontal_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[emiss_lnd] + standard_name = surface_longwave_emissivity_over_land + long_name = surface lw emissivity in fraction over land + units = frac + dimensions = (horizontal_dimension) + type = real + kind = kind_phys + intent = inout +[emiss_ice] + standard_name = surface_longwave_emissivity_over_ice + long_name = surface lw emissivity in fraction over ice + units = frac + dimensions = (horizontal_dimension) + type = real + kind = kind_phys + intent = inout [taussxy] standard_name = dimensionless_age_of_surface_snow long_name = non-dimensional snow age @@ -737,90 +821,6 @@ kind = kind_phys intent = inout optional = True -[albdvis_lnd] - standard_name = surface_albedo_direct_visible_over_land - long_name = direct surface albedo visible band over land - units = frac - dimensions = (horizontal_dimension) - type = real - kind = kind_phys - intent = inout -[albdnir_lnd] - standard_name = surface_albedo_direct_NIR_over_land - long_name = direct surface albedo NIR band over land - units = frac - dimensions = (horizontal_dimension) - type = real - kind = kind_phys - intent = inout -[albivis_lnd] - standard_name = surface_albedo_diffuse_visible_over_land - long_name = diffuse surface albedo visible band over land - units = frac - dimensions = (horizontal_dimension) - type = real - kind = kind_phys - intent = inout -[albinir_lnd] - standard_name = surface_albedo_diffuse_NIR_over_land - long_name = diffuse surface albedo NIR band over land - units = frac - dimensions = (horizontal_dimension) - type = real - kind = kind_phys - intent = inout -[albdvis_ice] - standard_name = surface_albedo_direct_visible_over_ice - long_name = direct surface albedo visible band over ice - units = frac - dimensions = (horizontal_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[albdnir_ice] - standard_name = surface_albedo_direct_NIR_over_ice - long_name = direct surface albedo NIR band over ice - units = frac - dimensions = (horizontal_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[albivis_ice] - standard_name = surface_albedo_diffuse_visible_over_ice - long_name = diffuse surface albedo visible band over ice - units = frac - dimensions = (horizontal_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[albinir_ice] - standard_name = surface_albedo_diffuse_NIR_over_ice - long_name = diffuse surface albedo NIR band over ice - units = frac - dimensions = (horizontal_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[emiss_lnd] - standard_name = surface_longwave_emissivity_over_land - long_name = surface lw emissivity in fraction over land - units = frac - dimensions = (horizontal_dimension) - type = real - kind = kind_phys - intent = inout -[emiss_ice] - standard_name = surface_longwave_emissivity_over_ice - long_name = surface lw emissivity in fraction over ice - units = frac - dimensions = (horizontal_dimension) - type = real - kind = kind_phys - intent = inout [snowxy] standard_name = number_of_snow_layers long_name = number of snow layers @@ -1195,6 +1195,20 @@ dimensions = () type = logical intent = in +[ozphys] + standard_name = dataset_for_ozone_physics + long_name = dataset for NRL ozone physics + units = mixed + dimensions = () + type = ty_ozphys + intent = in +[h2ophys] + standard_name = dataset_for_h2o_photochemistry_physics + long_name = dataset for NRL h2o photochemistry physics + units = mixed + dimensions = () + type = ty_h2ophys + intent = in [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -1514,20 +1528,6 @@ type = real kind = kind_phys intent = inout -[ozphys] - standard_name = dataset_for_ozone_physics - long_name = dataset for NRL ozone physics - units = mixed - dimensions = () - type = ty_ozphys - intent = in -[h2ophys] - standard_name = dataset_for_h2o_photochemistry_physics - long_name = dataset for NRL h2o photochemistry physics - units = mixed - dimensions = () - type = ty_h2ophys - intent = in [nthrds] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available for physics schemes diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.meta index c42da0166..b9b5677a0 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.meta @@ -21,22 +21,6 @@ dimensions = () type = integer intent = in -[dtend] - standard_name = cumulative_change_of_state_variables - long_name = diagnostic tendencies for state variables - units = mixed - dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) - type = real - kind = kind_phys - intent = inout - optional = True -[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 - units = index - dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) - type = integer - intent = in [ntoz] standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio @@ -65,18 +49,11 @@ dimensions = () type = integer intent = in -[ip_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 - units = index - dimensions = () - type = integer - intent = in -[ip_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 +[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 units = index - dimensions = () + dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) type = integer intent = in [is_photochem] @@ -88,11 +65,25 @@ intent = in [ldiag3d] standard_name = flag_for_diagnostics_3D - long_name = flag for 3d diagnostic fields + long_name = flag for calculating 3-D diagnostic fields units = flag dimensions = () type = logical intent = in +[ip_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 + units = index + dimensions = () + type = integer + intent = in +[ip_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 + units = index + dimensions = () + type = integer + intent = in [ip_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 @@ -157,6 +148,15 @@ kind = kind_phys intent = in optional = True +[dtend] + standard_name = cumulative_change_of_state_variables + long_name = diagnostic tendencies for state variables + units = mixed + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) + type = real + kind = kind_phys + intent = inout + optional = True [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 index 5e8c5bc9d..012c66046 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 @@ -47,8 +47,8 @@ end subroutine GFS_radiation_surface_init !! \htmlinclude GFS_radiation_surface_run.html !! subroutine GFS_radiation_surface_run ( & - ialb, im, nf_albd, frac_grid, lslwr, lsswr, lsm, lsm_noahmp, & - lsm_ruc, xlat, xlon, slmsk, lndp_type, n_var_lndp, sfc_alb_pert,& + ialb, im, nf_albd, frac_grid, lslwr, lsswr, lsm, ilsm_noahmp, & + ilsm_ruc, xlat, xlon, slmsk, lndp_type, n_var_lndp, sfc_alb_pert,& 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_lake_model, & @@ -66,7 +66,7 @@ subroutine GFS_radiation_surface_run ( & integer, intent(in) :: im, nf_albd, ialb logical, intent(in) :: frac_grid, lslwr, lsswr, use_cice_alb, cplice - integer, intent(in) :: lsm, lsm_noahmp, lsm_ruc, lndp_type, n_var_lndp + integer, intent(in) :: lsm, ilsm_noahmp, ilsm_ruc, lndp_type, n_var_lndp real(kind=kind_phys), intent(in) :: min_seaice, min_lakeice, con_ttp integer, dimension(:), intent(in) :: use_lake_model @@ -153,7 +153,7 @@ 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, & + call setemis (lsm, ilsm_noahmp, ilsm_ruc, frac_grid, cplice,& use_lake_model, lakefrac, xlon, xlat, slmsk, & ! frac_grid, min_seaice, xlon, xlat, slmsk, & snodl, snodi, sncovr, sncovr_ice, zorl, tsfg, & @@ -176,7 +176,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, snodi, sncovr, sncovr_ice, & + call setalb (slmsk, lsm, ilsm_noahmp, ilsm_ruc, use_cice_alb, snodi, sncovr, sncovr_ice,& snoalb, zorl, coszen, tsfg, tsfa, hprime, frac_grid, lakefrac, & alvsf, alnsf, alvwf, alnwf, facsf, facwf, fice, tisfc, & albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.meta index 94043898d..a6540ccf4 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.meta @@ -67,13 +67,6 @@ [ccpp-arg-table] name = GFS_radiation_surface_run type = scheme -[im] - standard_name = horizontal_loop_extent - long_name = horizontal loop extent - units = count - dimensions = () - type = integer - intent = in [ialb] standard_name = control_for_surface_albedo long_name = flag for using climatology alb, based on sfc type @@ -81,6 +74,13 @@ dimensions = () type = integer intent = in +[im] + standard_name = horizontal_loop_extent + long_name = horizontal loop extent + units = count + dimensions = () + type = integer + intent = in [nf_albd] standard_name = number_of_components_for_surface_albedo long_name = number of IR/VIS/UV compinents for surface albedo @@ -116,14 +116,14 @@ dimensions = () type = integer intent = in -[lsm_noahmp] +[ilsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model units = flag dimensions = () type = integer intent = in -[lsm_ruc] +[ilsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model units = flag @@ -327,7 +327,7 @@ units = flag dimensions = (horizontal_loop_extent) type = integer - intent = inout + intent = in [alvsf] standard_name = vis_albedo_strong_cosz long_name = mean vis albedo with strong cosz dependency @@ -383,7 +383,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = in + intent = inout [semis_ice] standard_name = surface_longwave_emissivity_over_ice long_name = surface lw emissivity in fraction over ice @@ -391,7 +391,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = in + intent = inout [semis_wat] standard_name = surface_longwave_emissivity_over_water long_name = surface lw emissivity in fraction over water diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_post.F90 index 76ee18ec2..ba936e2dd 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_post.F90 @@ -37,26 +37,26 @@ subroutine GFS_rrtmg_post_run (im, km, kmp1, lm, ltp, kt, kb, kd, nspc1, & logical, intent(in) :: lsswr, lslwr, lssav real(kind=kind_phys), intent(in) :: raddt, fhlwr, fhswr - real(kind=kind_phys), dimension(im), intent(in) :: coszen, coszdg + real(kind=kind_phys), dimension(:), intent(in) :: coszen, coszdg - real(kind=kind_phys), dimension(im,kmp1), intent(in) :: prsi - real(kind=kind_phys), dimension(im,km), intent(in) :: tgrs + real(kind=kind_phys), dimension(:,:), intent(in) :: prsi + real(kind=kind_phys), dimension(:,:), intent(in) :: tgrs - real(kind=kind_phys), dimension(im,NSPC1), intent(in) :: aerodp - real(kind=kind_phys), dimension(im,5), intent(in) :: cldsa - integer, dimension(im,3), intent(in) :: mbota, mtopa - real(kind=kind_phys), dimension(im,lm+LTP), intent(in) :: clouds1 - real(kind=kind_phys), dimension(im,lm+LTP), intent(in) :: cldtausw - real(kind=kind_phys), dimension(im,lm+LTP), intent(in) :: cldtaulw - real(kind=kind_phys), dimension(im), intent(inout) :: total_albedo + real(kind=kind_phys), dimension(:,:), intent(in) :: aerodp + real(kind=kind_phys), dimension(:,:), intent(in) :: cldsa + integer, dimension(:,:), intent(in) :: mbota, mtopa + real(kind=kind_phys), dimension(:,:), intent(in) :: clouds1 + real(kind=kind_phys), dimension(:,:), intent(in) :: cldtausw + real(kind=kind_phys), dimension(:,:), intent(in) :: cldtaulw + real(kind=kind_phys), dimension(:), intent(inout) :: total_albedo - type(sfcflw_type), dimension(im), intent(in) :: sfcflw - type(sfcfsw_type), dimension(im), intent(in) :: sfcfsw - type(cmpfsw_type), dimension(im), intent(in) :: scmpsw - type(topflw_type), dimension(im), intent(in) :: topflw - type(topfsw_type), dimension(im), intent(in) :: topfsw + type(sfcflw_type), dimension(:), intent(in) :: sfcflw + type(sfcfsw_type), dimension(:), intent(in) :: sfcfsw + type(cmpfsw_type), dimension(:), intent(in) :: scmpsw + type(topflw_type), dimension(:), intent(in) :: topflw + type(topfsw_type), dimension(:), intent(in) :: topfsw - real(kind=kind_phys), dimension(im,nfxr), intent(inout) :: fluxr + real(kind=kind_phys), dimension(:,:), intent(inout) :: fluxr character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.meta index a0981c833..a076457d9 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.meta @@ -49,6 +49,13 @@ dimensions = () type = integer intent = in +[n_var_lndp] + standard_name = number_of_perturbed_land_surface_variables + long_name = number of land surface variables perturbed + units = count + dimensions = () + type = integer + intent = in [lextop] standard_name = do_extra_top_layer_for_radiation long_name = use an extra top layer for radiation @@ -70,13 +77,6 @@ dimensions = () type = integer intent = in -[n_var_lndp] - standard_name = number_of_perturbed_land_surface_variables - long_name = number of land surface variables perturbed - units = count - dimensions = () - type = integer - intent = in [imfdeepcnv] standard_name = control_for_deep_convection_scheme long_name = flag for mass-flux deep convection scheme @@ -189,6 +189,20 @@ dimensions = () type = integer intent = in +[ntccn] + standard_name = index_of_cloud_condensation_nuclei_number_concentration_in_tracer_concentration_array + long_name = tracer index for cloud condensation nuclei number concentration + units = index + dimensions = () + type = integer + intent = in +[top_at_1] + standard_name = flag_for_vertical_ordering_in_radiation + long_name = flag for vertical ordering in radiation + units = flag + dimensions = () + type = logical + intent = in [ntrw] standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water @@ -217,13 +231,6 @@ dimensions = () type = integer intent = in -[ntccn] - standard_name = index_of_cloud_condensation_nuclei_number_concentration_in_tracer_concentration_array - long_name = tracer index for cloud condensation nuclei number concentration - units = index - dimensions = () - type = integer - intent = in [ntwa] standard_name = index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array long_name = tracer index for water friendly aerosol @@ -259,41 +266,6 @@ dimensions = () type = integer intent = in -[ozphys] - standard_name = dataset_for_ozone_physics - long_name = dataset for NRL ozone physics - units = mixed - dimensions = () - type = ty_ozphys - intent = in -[iaermdl] - standard_name = control_for_aerosol_radiation_scheme - long_name = control of aerosol scheme in radiation - units = 1 - dimensions = () - type = integer - intent = in -[iaerflg] - standard_name = control_for_aerosol_effects_in_radiation - long_name = control of aerosol effects in radiation - units = 1 - dimensions = () - type = integer - intent = in -[nssl_ccn_on] - standard_name = nssl_ccn_on - long_name = CCN activation flag in NSSL micro - units = flag - dimensions = () - type = logical - intent = in -[nssl_invertccn] - standard_name = nssl_invertccn - long_name = flag to invert CCN in NSSL micro - units = flag - dimensions = () - type = logical - intent = in [ntclamt] standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer @@ -462,6 +434,20 @@ dimensions = () type = integer intent = in +[nssl_ccn_on] + standard_name = nssl_ccn_on + long_name = CCN activation flag in NSSL micro + units = flag + dimensions = () + type = logical + intent = in +[nssl_invertccn] + standard_name = nssl_invertccn + long_name = flag to invert CCN in NSSL micro + units = flag + dimensions = () + type = logical + intent = in [imp_physics_thompson] standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme @@ -560,13 +546,6 @@ dimensions = () type = integer intent = in -[dcorr_con] - standard_name = decorrelation_length_used_by_overlap_method - long_name = decorrelation length (default) used by cloud overlap method (iovr) - units = km - dimensions = () - type = real - intent = in [idcor] standard_name = flag_for_decorrelation_length_method long_name = flag for decorrelation length method used in cloud overlap method (iovr) @@ -595,6 +574,13 @@ dimensions = () type = integer intent = in +[dcorr_con] + standard_name = decorrelation_length_used_by_overlap_method + long_name = decorrelation length (default) used by cloud overlap method (iovr) + units = km + dimensions = () + type = real + intent = in [julian] standard_name = forecast_julian_day long_name = julian day @@ -682,6 +668,13 @@ dimensions = () type = logical intent = in +[lcnorm] + standard_name = flag_for_in_cloud_condensate + long_name = flag for cloud condensate normalized by cloud cover + units = flag + dimensions = () + type = logical + intent = in [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 @@ -696,13 +689,6 @@ dimensions = () type = logical intent = in -[lcnorm] - standard_name = flag_for_in_cloud_condensate - long_name = flag for cloud condensate normalized by cloud cover - units = flag - dimensions = () - type = logical - intent = in [fhswr] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -743,46 +729,6 @@ type = real kind = kind_phys intent = in -[con_pi] - standard_name = pi - long_name = ratio of a circle's circumference to its diameter - units = none - dimensions = () - type = real - kind = kind_phys - intent = in -[con_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 -[con_g] - standard_name = gravitational_acceleration - long_name = gravitational acceleration - units = m s-2 - dimensions = () - type = real - kind = kind_phys - intent = in -[con_ttp] - standard_name = triple_point_temperature_of_water - long_name = triple point temperature of water - units = K - dimensions = () - type = real - kind = kind_phys - intent = in -[con_thgni] - standard_name = temperature_ice_nucleation_starts - long_name = temperature the H.G.Nuc. ice starts - units = K - dimensions = () - type = real - kind = kind_phys - intent = in [epsm1] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one long_name = (rd/rv) - 1 @@ -815,6 +761,14 @@ type = real kind = kind_phys intent = in +[con_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 [xlat_d] standard_name = latitude_in_degree long_name = latitude in degree north @@ -1003,6 +957,60 @@ dimensions = () type = integer intent = in +[iaermdl] + standard_name = control_for_aerosol_radiation_scheme + long_name = control of aerosol scheme in radiation + units = 1 + dimensions = () + type = integer + intent = in +[iaerflg] + standard_name = control_for_aerosol_effects_in_radiation + long_name = control of aerosol effects in radiation + units = 1 + dimensions = () + type = integer + intent = in +[con_pi] + standard_name = pi + long_name = ratio of a circle's circumference to its diameter + units = none + dimensions = () + type = real + kind = kind_phys + intent = in +[con_g] + standard_name = gravitational_acceleration + long_name = gravitational acceleration + units = m s-2 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_ttp] + standard_name = triple_point_temperature_of_water + long_name = triple point temperature of water + units = K + dimensions = () + type = real + kind = kind_phys + intent = in +[con_thgni] + standard_name = temperature_ice_nucleation_starts + long_name = temperature the H.G.Nuc. ice starts + units = K + dimensions = () + type = real + kind = kind_phys + intent = in +[si] + standard_name = sigma_pressure_hybrid_vertical_coordinate + long_name = vertical sigma coordinate for radiation initialization + units = none + dimensions = (vertical_interface_dimension) + type = real + kind = kind_phys + intent = in [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 @@ -1475,28 +1483,6 @@ kind = kind_phys intent = out optional = True -[top_at_1] - standard_name = flag_for_vertical_ordering_in_radiation - long_name = flag for vertical ordering in radiation - units = flag - dimensions = () - type = logical - intent = in -[si] - standard_name = sigma_pressure_hybrid_vertical_coordinate - long_name = vertical sigma coordinate for radiation initialization - units = none - dimensions = (vertical_interface_dimension) - type = real - kind = kind_phys - intent = in -[ico2] - standard_name = control_for_co2 - long_name = prescribed global mean value (old opernl) - units = flag - dimensions = () - type = integer - intent = in [rrfs_sd] standard_name = do_smoke_coupling long_name = flag controlling rrfs_sd collection (default off) @@ -1535,6 +1521,20 @@ dimensions = () type = integer intent = in +[ico2] + standard_name = control_for_co2 + long_name = prescribed global mean value (old opernl) + units = flag + dimensions = () + type = integer + intent = in +[ozphys] + standard_name = dataset_for_ozone_physics + long_name = dataset for NRL ozone physics + units = mixed + dimensions = () + type = ty_ozphys + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.meta index 9329db016..ad909a8d2 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.meta @@ -49,22 +49,6 @@ type = character kind = len=26 intent = in -[con_solr_2008] - standard_name = solar_constant_2008 - long_name = solar constant Tim 2008 - units = W m-2 - dimensions = () - type = real - kind = kind_phys - intent = in -[con_solr_2002] - standard_name = solar_constant_2002 - long_name= solar constant Liu 2002 - units = W m-2 - dimensions = () - type = real - kind = kind_phys - intent = in [ico2] standard_name = control_for_co2 long_name = prescribed global mean value (old opernl) @@ -114,27 +98,6 @@ dimensions = () type = integer intent = in -[iovr_exp] - standard_name = flag_for_exponential_cloud_overlap_method - long_name = choice of exponential cloud overlap method - units = flag - dimensions = () - type = integer - intent = in -[iovr_exprand] - standard_name = flag_for_exponential_random_cloud_overlap_method - long_name = choice of exponential-random cloud overlap method - units = flag - dimensions = () - type = integer - intent = in -[iovr_max] - standard_name = flag_for_maximum_cloud_overlap_method - long_name = choice of maximum cloud overlap method - units = flag - dimensions = () - type = integer - intent = in [iovr_rand] standard_name = flag_for_random_cloud_overlap_method long_name = choice of random cloud overlap method @@ -149,6 +112,13 @@ dimensions = () type = integer intent = in +[iovr_max] + standard_name = flag_for_maximum_cloud_overlap_method + long_name = choice of maximum cloud overlap method + units = flag + dimensions = () + type = integer + intent = in [iovr_dcorr] standard_name = flag_for_decorrelation_length_cloud_overlap_method long_name = choice of decorrelation-length cloud overlap method @@ -156,24 +126,17 @@ dimensions = () type = integer intent = in -[isubcsw] - standard_name = flag_for_sw_clouds_grid_approximation - long_name = flag for sw clouds sub-grid approximation - units = flag - dimensions = () - type = integer - intent = in -[isubclw] - standard_name = flag_for_lw_clouds_sub_grid_approximation - long_name = flag for lw clouds sub-grid approximation - units = flag +[iovr_exp] + standard_name = flag_for_exponential_cloud_overlap_method + long_name = choice of exponential cloud overlap method + units = flag dimensions = () type = integer intent = in -[iswmode] - standard_name = control_for_sw_scattering_choice - long_name = control of rrtmg shortwave scattering choice - units = 1 +[iovr_exprand] + standard_name = flag_for_exponential_random_cloud_overlap_method + long_name = choice of exponential-random cloud overlap method + units = flag dimensions = () type = integer intent = in @@ -240,6 +203,27 @@ dimensions = () type = integer intent = in +[lalw1bd] + standard_name = do_longwave_aerosol_band_properties + long_name = control of band or multiband longwave aerosol properties + units = 1 + dimensions = () + type = logical + intent = in +[iaermdl] + standard_name = control_for_aerosol_radiation_scheme + long_name = control of aerosol scheme in radiation + units = 1 + dimensions = () + type = integer + intent = out +[iaerflg] + standard_name = control_for_aerosol_effects_in_radiation + long_name = control of aerosol effects in radiation + units = 1 + dimensions = () + type = integer + intent = out [aeros_file] standard_name = aerosol_data_file long_name = aerosol data file @@ -248,43 +232,6 @@ type = character kind = len=26 intent = in -[co2usr_file] - standard_name = co2_user_data_table_file - long_name = co2 user defined data table file - units = none - dimensions = () - type = character - kind = len=26 - intent = in -[co2cyc_file] - standard_name = co2_clim_monthly_cycle_data_table_file - long_name = co2 climotological monthly cycle data table file - units = none - dimensions = () - type = character - kind = len=26 - intent = in -[rad_hr_units] - standard_name = control_for_radiation_heating_rate_units - long_name = control of heating rate units - units = 1 - dimensions = () - type = integer - intent = in -[inc_minor_gas] - standard_name = flag_to_include_minor_gases_in_rrtmg - long_name = flag to include minor trace gases in rrtmg - units = flag - dimensions = () - type = logical - intent = in -[icliq_lw] - standard_name = flag_for_optical_property_for_liquid_clouds_for_longwave_radiation - long_name = lw optical property for liquid clouds - units = flag - dimensions = () - type = integer - intent = in [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -293,6 +240,14 @@ type = real kind = kind_phys intent = in +[con_t0c] + standard_name = temperature_at_zero_celsius + long_name = temperature at 0 degree Celsius + units = K + dimensions = () + type = real + kind = kind_phys + intent = in [con_c] standard_name = speed_of_light_in_vacuum long_name = speed of light in vacuum @@ -301,6 +256,14 @@ type = real kind = kind_phys intent = in +[con_boltz] + standard_name = boltzmann_constant + long_name = Boltzmann constant + units = J K-1 + dimensions = () + type = real + kind = kind_phys + intent = in [con_plnk] standard_name = planck_constant long_name = Planck constant @@ -309,18 +272,26 @@ type = real kind = kind_phys intent = in -[con_boltz] - standard_name = boltzmann_constant - long_name = Boltzmann constant - units = J K-1 +[con_solr_2008] + standard_name = solar_constant_2008 + long_name = solar constant Tim 2008 + units = W m-2 dimensions = () type = real kind = kind_phys intent = in -[con_t0c] - standard_name = temperature_at_zero_celsius - long_name = temperature at 0 degree Celsius - units = K +[con_solr_2002] + standard_name = solar_constant_2002 + long_name= solar constant Liu 2002 + units = W m-2 + dimensions = () + type = real + kind = kind_phys + intent = in +[con_g] + standard_name = gravitational_acceleration + long_name = gravitational acceleration + units = m s-2 dimensions = () type = real kind = kind_phys @@ -333,34 +304,63 @@ type = real kind = kind_phys intent = in -[con_g] - standard_name = gravitational_acceleration - long_name = gravitational acceleration - units = m s-2 - dimensions = () - type = real - kind = kind_phys +[co2usr_file] + standard_name = co2_user_data_table_file + long_name = co2 user defined data table file + units = none + dimensions = () + type = character + kind = len=26 intent = in -[lalw1bd] - standard_name = do_longwave_aerosol_band_properties - long_name = control of band or multiband longwave aerosol properties +[co2cyc_file] + standard_name = co2_clim_monthly_cycle_data_table_file + long_name = co2 climotological monthly cycle data table file + units = none + dimensions = () + type = character + kind = len=26 + intent = in +[rad_hr_units] + standard_name = control_for_radiation_heating_rate_units + long_name = control of heating rate units units = 1 + dimensions = () + type = integer + intent = in +[inc_minor_gas] + standard_name = flag_to_include_minor_gases_in_rrtmg + long_name = flag to include minor trace gases in rrtmg + units = flag dimensions = () type = logical intent = in -[ltp] - standard_name = extra_top_layer - long_name = extra top layer for radiation - units = count +[icliq_lw] + standard_name = flag_for_optical_property_for_liquid_clouds_for_longwave_radiation + long_name = lw optical property for liquid clouds + units = flag dimensions = () type = integer intent = in -[lextop] - standard_name = do_extra_top_layer_for_radiation - long_name = use an extra top layer for radiation +[isubcsw] + standard_name = flag_for_sw_clouds_grid_approximation + long_name = flag for sw clouds sub-grid approximation units = flag dimensions = () - type = logical + type = integer + intent = in +[isubclw] + standard_name = flag_for_lw_clouds_sub_grid_approximation + long_name = flag for lw clouds sub-grid approximation + units = flag + dimensions = () + type = integer + intent = in +[iswmode] + standard_name = control_for_sw_scattering_choice + long_name = control of rrtmg shortwave scattering choice + units = 1 + dimensions = () + type = integer intent = in [ipsd0] standard_name = initial_seed_for_mcica @@ -369,20 +369,20 @@ dimensions = () type = integer intent = inout -[iaermdl] - standard_name = control_for_aerosol_radiation_scheme - long_name = control of aerosol scheme in radiation - units = 1 +[ltp] + standard_name = extra_top_layer + long_name = extra top layer for radiation + units = count dimensions = () type = integer - intent = out -[iaerflg] - standard_name = control_for_aerosol_effects_in_radiation - long_name = control of aerosol effects in radiation - units = 1 + intent = in +[lextop] + standard_name = do_extra_top_layer_for_radiation + long_name = use an extra top layer for radiation + units = flag dimensions = () - type = integer - intent = out + type = logical + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -476,6 +476,46 @@ type = character kind = len=26 intent = in +[slag] + standard_name = equation_of_time + long_name = equation of time (radian) + units = radian + dimensions = () + type = real + kind = kind_phys + intent = out +[sdec] + standard_name = sine_of_solar_declination_angle + long_name = sin of the solar declination angle + units = none + dimensions = () + type = real + kind = kind_phys + intent = out +[cdec] + standard_name = cosine_of_solar_declination_angle + long_name = cos of the solar declination angle + units = none + dimensions = () + type = real + kind = kind_phys + intent = out +[solcon] + standard_name = solar_constant + long_name = solar constant (sun-earth distant adjusted) + units = W m-2 + dimensions = () + type = real + kind = kind_phys + intent = out +[con_pi] + standard_name = pi + long_name = ratio of a circle's circumference to its diameter + units = none + dimensions = () + type = real + kind = kind_phys + intent = in [co2dat_file] standard_name = co2_monthly_obs_data_table_file long_name = co2 monthly observation data table @@ -520,46 +560,6 @@ dimensions = () type = ty_ozphys intent = inout -[con_pi] - standard_name = pi - long_name = ratio of a circle's circumference to its diameter - units = none - dimensions = () - type = real - kind = kind_phys - intent = in -[slag] - standard_name = equation_of_time - long_name = equation of time (radian) - units = radian - dimensions = () - type = real - kind = kind_phys - intent = out -[sdec] - standard_name = sine_of_solar_declination_angle - long_name = sin of the solar declination angle - units = none - dimensions = () - type = real - kind = kind_phys - intent = out -[cdec] - standard_name = cosine_of_solar_declination_angle - long_name = cos of the solar declination angle - units = none - dimensions = () - type = real - kind = kind_phys - intent = out -[solcon] - standard_name = solar_constant - long_name = solar constant (sun-earth distant adjusted) - units = W m-2 - dimensions = () - type = real - kind = kind_phys - intent = out [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 index 1022acac9..f47f55ebd 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 @@ -842,7 +842,7 @@ subroutine cmp_reff_Thompson(nLev, nCol, i_cldliq, i_cldice, i_cldsnow, i_cldice real(kind_phys) :: rho, orho real(kind_phys),dimension(nCol,nLev) :: qv_mp, qc_mp, qi_mp, qs_mp, ni_mp, nc_mp, & nwfa, re_cloud, re_ice, re_snow - integer :: ilsmask + integer :: ilsmask ! Prepare cloud mixing-ratios and number concentrations for calc_effectRa do iLay = 1, nLev diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.meta index 84c0432f0..5c73eebd0 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.meta @@ -38,13 +38,6 @@ dimensions = () type = integer intent = in -[icloud] - standard_name = control_for_cloud_area_fraction_option - long_name = cloud effect to the optical depth and cloud fraction in radiation - units = flag - dimensions = () - type = integer - intent = in [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) @@ -108,27 +101,6 @@ dimensions = () type = integer intent = in -[doSWrad] - standard_name = flag_for_calling_shortwave_radiation - long_name = logical flags for sw radiation calls - units = flag - dimensions = () - type = logical - intent = in -[doLWrad] - standard_name = flag_for_calling_longwave_radiation - long_name = logical flags for lw radiation calls - units = flag - dimensions = () - type = logical - intent = in -[effr_in] - 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 [kdt] standard_name = index_of_timestep long_name = current forecast iteration @@ -136,44 +108,44 @@ dimensions = () type = integer intent = in -[imp_physics] - standard_name = control_for_microphysics_scheme - long_name = choice of microphysics scheme +[imfdeepcnv] + standard_name = control_for_deep_convection_scheme + long_name = flag for mass-flux deep convection scheme units = flag dimensions = () type = integer intent = in -[imp_physics_thompson] - standard_name = identifier_for_thompson_microphysics_scheme - long_name = choice of Thompson microphysics scheme +[imfdeepcnv_gf] + standard_name = identifier_for_grell_freitas_deep_convection + long_name = flag for Grell-Freitas deep convection scheme units = flag dimensions = () type = integer intent = in -[imp_physics_gfdl] - standard_name = identifier_for_gfdl_microphysics_scheme - long_name = choice of GFDL microphysics scheme +[imfdeepcnv_samf] + standard_name = identifer_for_scale_aware_mass_flux_deep_convection + long_name = flag for SAMF deep convection scheme units = flag dimensions = () type = integer intent = in -[do_mynnedmf] - standard_name = flag_for_mellor_yamada_nakanishi_niino_pbl_scheme - long_name = flag to activate MYNN-EDMF +[doSWrad] + standard_name = flag_for_calling_shortwave_radiation + long_name = logical flags for sw radiation calls units = flag dimensions = () type = logical intent = in -[uni_cld] - standard_name = flag_for_shoc_cloud_area_fraction_for_radiation - long_name = flag for uni_cld +[doLWrad] + standard_name = flag_for_calling_longwave_radiation + long_name = logical flags for lw radiation calls units = flag dimensions = () type = logical intent = in -[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 +[effr_in] + standard_name = flag_for_cloud_effective_radii + long_name = flag for cloud effective radii calculations in GFDL microphysics units = flag dimensions = () type = logical @@ -199,23 +171,30 @@ dimensions = () type = logical intent = in -[imfdeepcnv] - standard_name = control_for_deep_convection_scheme - long_name = flag for mass-flux deep convection scheme +[icloud] + standard_name = control_for_cloud_area_fraction_option + long_name = cloud effect to the optical depth and cloud fraction in radiation units = flag dimensions = () type = integer intent = in -[imfdeepcnv_gf] - standard_name = identifier_for_grell_freitas_deep_convection - long_name = flag for Grell-Freitas deep convection scheme +[imp_physics] + standard_name = control_for_microphysics_scheme + long_name = choice of microphysics scheme units = flag dimensions = () type = integer intent = in -[imfdeepcnv_samf] - standard_name = identifer_for_scale_aware_mass_flux_deep_convection - long_name = flag for SAMF deep convection scheme +[imp_physics_thompson] + standard_name = identifier_for_thompson_microphysics_scheme + long_name = choice of Thompson microphysics scheme + units = flag + dimensions = () + type = integer + intent = in +[imp_physics_gfdl] + standard_name = identifier_for_gfdl_microphysics_scheme + long_name = choice of GFDL microphysics scheme units = flag dimensions = () type = integer @@ -227,37 +206,26 @@ dimensions = () type = logical intent = in -[lsmask] - standard_name = area_type - long_name = landmask: sea/land/ice=0/1/2 +[do_mynnedmf] + standard_name = flag_for_mellor_yamada_nakanishi_niino_pbl_scheme + long_name = flag to activate MYNN-EDMF units = flag - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[xlat] - standard_name = latitude - long_name = latitude - units = radian - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys + dimensions = () + type = logical intent = in -[xlon] - standard_name = longitude - long_name = longitude - units = radian - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys +[uni_cld] + standard_name = flag_for_shoc_cloud_area_fraction_for_radiation + long_name = flag for uni_cld + units = flag + dimensions = () + type = logical intent = in -[dx] - standard_name = characteristic_grid_lengthscale - long_name = relative dx for the grid cell - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys +[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 + units = flag + dimensions = () + type = logical intent = in [p_lev] standard_name = air_pressure_at_interface_for_RRTMGP @@ -277,15 +245,6 @@ kind = kind_phys intent = in optional = True -[tv_lay] - standard_name = virtual_temperature - long_name = layer virtual temperature - units = K - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in - optional = True [t_lay] standard_name = air_temperature_at_layer_for_RRTMGP long_name = air temperature at vertical layer for radiation calculation @@ -322,6 +281,47 @@ kind = kind_phys intent = in optional = True +[lsmask] + standard_name = area_type + long_name = landmask: sea/land/ice=0/1/2 + units = flag + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[xlon] + standard_name = longitude + long_name = longitude + units = radian + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[xlat] + standard_name = latitude + long_name = latitude + units = radian + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[dx] + standard_name = characteristic_grid_lengthscale + long_name = relative dx for the grid cell + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[tv_lay] + standard_name = virtual_temperature + long_name = layer virtual temperature + units = K + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + optional = True [effrin_cldliq] standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle long_name = eff. radius of cloud liquid water particle in micrometer @@ -437,6 +437,15 @@ kind = kind_phys intent = in optional = True +[cld_pbl_frac] + standard_name = subgrid_scale_cloud_area_fraction_in_atmosphere_layer + long_name = subgrid cloud fraction from PBL scheme + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + optional = True [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -494,7 +503,7 @@ standard_name = total_cloud_fraction long_name = layer total cloud fraction units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -502,7 +511,7 @@ standard_name = cloud_liquid_water_path long_name = layer cloud liquid water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -510,7 +519,7 @@ standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -518,7 +527,7 @@ standard_name = cloud_ice_water_path long_name = layer cloud ice water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -526,7 +535,7 @@ standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -534,7 +543,7 @@ standard_name = cloud_snow_water_path long_name = layer cloud snow water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -542,7 +551,7 @@ standard_name = mean_effective_radius_for_snow_flake long_name = mean effective radius for snow cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -550,7 +559,7 @@ standard_name = cloud_rain_water_path long_name = layer cloud rain water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -558,7 +567,7 @@ standard_name = mean_effective_radius_for_rain_drop long_name = mean effective radius for rain cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -580,19 +589,19 @@ kind = kind_phys intent = inout optional = True -[cld_cnv_iwp] - standard_name = convective_cloud_ice_water_path - long_name = layer convective cloud ice water path - units = g m-2 +[cld_cnv_reliq] + standard_name = mean_effective_radius_for_liquid_convective_cloud + long_name = mean effective radius for liquid convective cloud + units = um dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout optional = True -[cld_cnv_reliq] - standard_name = mean_effective_radius_for_liquid_convective_cloud - long_name = mean effective radius for liquid convective cloud - units = um +[cld_cnv_iwp] + standard_name = convective_cloud_ice_water_path + long_name = layer convective cloud ice water path + units = g m-2 dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys @@ -607,15 +616,6 @@ kind = kind_phys intent = inout optional = True -[cld_pbl_frac] - standard_name = subgrid_scale_cloud_area_fraction_in_atmosphere_layer - long_name = subgrid cloud fraction from PBL scheme - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in - optional = True [cld_pbl_lwp] standard_name = MYNN_SGS_cloud_liquid_water_path long_name = layer convective cloud liquid water path @@ -625,19 +625,19 @@ kind = kind_phys intent = inout optional = True -[cld_pbl_iwp] - standard_name = MYNN_SGS_cloud_ice_water_path - long_name = layer convective cloud ice water path - units = g m-2 +[cld_pbl_reliq] + standard_name = mean_effective_radius_for_liquid_MYNN_SGS_cloud + long_name = mean effective radius for liquid MYNN_SGS cloud + units = um dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout optional = True -[cld_pbl_reliq] - standard_name = mean_effective_radius_for_liquid_MYNN_SGS_cloud - long_name = mean effective radius for liquid MYNN_SGS cloud - units = um +[cld_pbl_iwp] + standard_name = MYNN_SGS_cloud_ice_water_path + long_name = layer convective cloud ice water path + units = g m-2 dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.meta index 3455087b5..d266a82be 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.meta @@ -123,13 +123,6 @@ dimensions = () type = integer intent = in -[iovr_convcld] - standard_name = flag_for_convective_cloud_overlap_method_for_radiation - long_name = flag for convective cloud overlap method - units = flag - dimensions = () - type = integer - intent = in [iovr_dcorr] standard_name = flag_for_decorrelation_length_cloud_overlap_method long_name = choice of decorrelation-length cloud overlap method @@ -176,7 +169,7 @@ standard_name = total_cloud_fraction long_name = layer total cloud fraction units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -189,6 +182,13 @@ kind = kind_phys intent = in optional = True +[iovr_convcld] + standard_name = flag_for_convective_cloud_overlap_method_for_radiation + long_name = flag for convective cloud overlap method + units = flag + dimensions = () + type = integer + intent = in [top_at_1] standard_name = flag_for_vertical_ordering_in_radiation long_name = flag for vertical ordering in radiation @@ -234,18 +234,18 @@ kind = kind_phys intent = out optional = True -[precip_overlap_param] - standard_name = precip_overlap_param - long_name = precipitation overlap parameter +[cnv_cloud_overlap_param] + standard_name = convective_cloud_overlap_param + long_name = convective cloud overlap parameter units = km dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = out optional = True -[cnv_cloud_overlap_param] - standard_name = convective_cloud_overlap_param - long_name = convective cloud overlap parameter +[precip_overlap_param] + standard_name = precip_overlap_param + long_name = precipitation overlap parameter units = km dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.meta index 5d67afcd8..fc897689d 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.meta @@ -23,6 +23,13 @@ dimensions = () type = integer intent = in +[nday] + standard_name = daytime_points_dimension + long_name = daytime points dimension + units = count + dimensions = () + type = integer + intent = in [iSFC] standard_name = vertical_index_for_surface_in_RRTMGP long_name = index for surface layer in RRTMGP @@ -37,13 +44,6 @@ dimensions = () type = integer intent = in -[nday] - standard_name = daytime_points_dimension - long_name = daytime points dimension - units = count - dimensions = () - type = integer - intent = in [idxday] standard_name = daytime_points long_name = daytime points @@ -51,30 +51,30 @@ dimensions = (horizontal_loop_extent) type = integer intent = in -[doSWrad] - standard_name = flag_for_calling_shortwave_radiation - long_name = logical flags for sw radiation calls +[doLWrad] + standard_name = flag_for_calling_longwave_radiation + long_name = logical flags for lw radiation calls units = flag dimensions = () type = logical intent = in -[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 +[doSWrad] + standard_name = flag_for_calling_shortwave_radiation + long_name = logical flags for sw radiation calls units = flag dimensions = () type = logical intent = in -[doLWrad] - standard_name = flag_for_calling_longwave_radiation - long_name = logical flags for lw radiation calls +[do_lw_clrsky_hr] + standard_name = flag_for_tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep_assuming_clear_sky + long_name = flag to output lw heating rate units = flag dimensions = () type = logical intent = in -[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 +[do_sw_clrsky_hr] + standard_name = flag_for_tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep_assuming_clear_sky + long_name = flag to output sw heating rate units = flag dimensions = () type = logical @@ -102,22 +102,6 @@ type = real kind = kind_phys intent = in -[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 - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[coszdg] - standard_name = cosine_of_solar_zenith_angle_on_radiation_timestep - long_name = daytime mean cosz over rad call period - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in [sfc_alb_nir_dir] standard_name = surface_albedo_due_to_near_IR_direct long_name = surface albedo due to near IR direct beam @@ -150,6 +134,15 @@ type = real kind = kind_phys intent = in +[p_lev] + standard_name = air_pressure_at_interface_for_RRTMGP + long_name = air pressure level + units = Pa + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + intent = in + optional = True [tsfa] standard_name = surface_air_temperature_for_radiation long_name = lowest model layer air temperature for radiation @@ -158,10 +151,26 @@ type = real kind = kind_phys intent = in -[p_lev] - standard_name = air_pressure_at_interface_for_RRTMGP - long_name = air pressure level - units = Pa +[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 + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[coszdg] + standard_name = cosine_of_solar_zenith_angle_on_radiation_timestep + long_name = daytime mean cosz over rad call period + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[fluxlwDOWN_clrsky] + standard_name = RRTMGP_lw_flux_profile_downward_clrsky + long_name = RRTMGP downward longwave clr-sky flux profile + units = W m-2 dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys @@ -194,9 +203,9 @@ kind = kind_phys intent = in optional = True -[fluxlwDOWN_clrsky] - standard_name = RRTMGP_lw_flux_profile_downward_clrsky - long_name = RRTMGP downward longwave clr-sky flux profile +[fluxswDOWN_clrsky] + standard_name = RRTMGP_sw_flux_profile_downward_clrsky + long_name = RRTMGP downward shortwave clr-sky flux profile units = W m-2 dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real @@ -230,15 +239,6 @@ kind = kind_phys intent = in optional = True -[fluxswDOWN_clrsky] - standard_name = RRTMGP_sw_flux_profile_downward_clrsky - long_name = RRTMGP downward shortwave clr-sky flux profile - units = W m-2 - dimensions = (horizontal_loop_extent,vertical_interface_dimension) - type = real - kind = kind_phys - intent = in - optional = True [raddt] standard_name = time_step_for_radiation long_name = radiation time step @@ -281,7 +281,7 @@ standard_name = total_cloud_fraction long_name = layer total cloud fraction units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -289,7 +289,7 @@ standard_name = cloud_optical_depth_layers_at_10mu_band long_name = approx 10mu band layer cloud optical depth units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -297,7 +297,7 @@ standard_name = cloud_optical_depth_layers_at_0p55mu_band long_name = approx .55mu band layer cloud optical depth units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -485,7 +485,7 @@ standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_timestep long_name = longwave clear sky heating rate units = K s-1 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.meta index 7af8e04d5..91cdbae73 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.meta @@ -74,6 +74,13 @@ dimensions = () type = integer intent = in +[i_o3] + 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 [doSWrad] standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls @@ -88,13 +95,6 @@ dimensions = () type = logical intent = in -[i_o3] - 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 [fhswr] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -127,59 +127,35 @@ type = real kind = kind_phys intent = in -[coslat] - standard_name = cosine_of_latitude - long_name = cosine of latitude - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[sinlat] - standard_name = sine_of_latitude - long_name = sine of latitude - units = none - dimensions = (horizontal_loop_extent) +[prsl] + standard_name = air_pressure + long_name = mean layer pressure + units = Pa + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = in -[solhr] - standard_name = forecast_utc_hour - long_name = time in hours after 00z at the current timestep - units = h - dimensions = () +[tgrs] + standard_name = air_temperature + long_name = model layer mean temperature + units = K + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = in -[prsi] - standard_name = air_pressure_at_interface - long_name = air pressure at model layer interfaces - units = Pa - dimensions = (horizontal_loop_extent,vertical_interface_dimension) - type = real - kind = kind_phys - intent = in [prslk] standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers units = none dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real - kind = kind_phys - intent = in -[prsl] - standard_name = air_pressure - long_name = mean layer pressure - units = Pa - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real kind = kind_phys intent = in -[tgrs] - standard_name = air_temperature - long_name = model layer mean temperature - units = K - dimensions = (horizontal_loop_extent,vertical_layer_dimension) +[prsi] + standard_name = air_pressure_at_interface + long_name = air pressure at model layer interfaces + units = Pa + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys intent = in @@ -189,7 +165,7 @@ units = kg kg-1 dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) type = real - kind = kind_phys + kind = kind_phys intent = in [tsfc] standard_name = surface_skin_temperature @@ -199,6 +175,22 @@ type = real kind = kind_phys intent = in +[coslat] + standard_name = cosine_of_latitude + long_name = cosine of latitude + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[sinlat] + standard_name = sine_of_latitude + long_name = sine of latitude + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration @@ -247,21 +239,14 @@ type = real kind = kind_phys intent = in -[con_pi] - standard_name = pi - long_name = ratio of a circle's circumference to its diameter - units = none +[solhr] + standard_name = forecast_utc_hour + long_name = time in hours after 00z at the current timestep + units = h dimensions = () type = real kind = kind_phys intent = in -[ico2] - standard_name = control_for_co2 - long_name = prescribed global mean value (old opernl) - units = flag - dimensions = () - type = integer - intent = in [raddt] standard_name = time_step_for_radiation long_name = radiation time step @@ -279,15 +264,6 @@ kind = kind_phys intent = inout optional = True -[p_lev] - standard_name = air_pressure_at_interface_for_RRTMGP - long_name = air pressure at vertical interface for radiation calculation - units = Pa - dimensions = (horizontal_loop_extent,vertical_interface_dimension) - type = real - kind = kind_phys - intent = inout - optional = True [t_lay] standard_name = air_temperature_at_layer_for_RRTMGP long_name = air temperature at vertical layer for radiation calculation @@ -297,6 +273,15 @@ kind = kind_phys intent = inout optional = True +[p_lev] + standard_name = air_pressure_at_interface_for_RRTMGP + long_name = air pressure at vertical interface for radiation calculation + units = Pa + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + intent = inout + optional = True [t_lev] standard_name = air_temperature_at_interface_for_RRTMGP long_name = air temperature at vertical interface for radiation calculation @@ -306,59 +291,56 @@ kind = kind_phys intent = inout optional = True -[deltaZ] - standard_name = layer_thickness - long_name = layer_thickness - units = m +[vmr_o2] + standard_name = volume_mixing_ratio_for_o2 + long_name = molar mixing ratio of o2 in with respect to dry air + units = 1 dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout optional = True -[deltaZc] - standard_name = layer_thickness_from_layer_center - long_name = layer_thickness - units = m +[vmr_h2o] + standard_name = volume_mixing_ratio_for_h2o + long_name = molar mixing ratio of h2o in with respect to dry air + units = 1 dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout optional = True -[deltaP] - standard_name = layer_thickness_in_Pa - long_name = layer_thickness_in_Pa - units = Pa +[vmr_o3] + standard_name = volume_mixing_ratio_for_o3 + long_name = molar mixing ratio of o3 in with respect to dry air + units = 1 dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout optional = True -[top_at_1] - standard_name = flag_for_vertical_ordering_in_radiation - long_name = flag for vertical ordering in radiation - units = flag - dimensions = () - type = logical - intent = inout -[iSFC] - standard_name = vertical_index_for_surface_in_RRTMGP - long_name = index for surface layer in RRTMGP - units = flag - dimensions = () - type = integer +[vmr_ch4] + standard_name = volume_mixing_ratio_for_ch4 + long_name = molar mixing ratio of ch4 in with respect to dry air + units = 1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys intent = inout -[iTOA] - standard_name = vertical_index_for_TOA_in_RRTMGP - long_name = index for TOA layer in RRTMGP - units = flag - dimensions = () - type = integer + optional = True +[vmr_n2o] + standard_name = volume_mixing_ratio_for_n2o + long_name = molar mixing ratio of n2o in with respect to dry air + units = 1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys intent = inout -[tsfc_radtime] - standard_name = surface_skin_temperature_on_radiation_timestep - long_name = surface skin temperature on radiation timestep - units = K - dimensions = (horizontal_loop_extent) + optional = True +[vmr_co2] + standard_name = volume_mixing_ratio_for_co2 + long_name = molar mixing ratio of co2 in with respect to dry air + units = 1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout @@ -379,24 +361,6 @@ type = real kind = kind_phys intent = inout -[tv_lay] - standard_name = virtual_temperature - long_name = layer virtual temperature - units = K - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[relhum] - standard_name = relative_humidity - long_name = layer relative humidity - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True [qs_lay] standard_name = saturation_vapor_pressure long_name = saturation vapor pressure @@ -415,55 +379,46 @@ kind = kind_phys intent = inout optional = True -[vmr_o2] - standard_name = volume_mixing_ratio_for_o2 - long_name = molar mixing ratio of o2 in with respect to dry air - units = 1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[vmr_h2o] - standard_name = volume_mixing_ratio_for_h2o - long_name = molar mixing ratio of h2o in with respect to dry air - units = 1 +[tv_lay] + standard_name = virtual_temperature + long_name = layer virtual temperature + units = K dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout optional = True -[vmr_o3] - standard_name = volume_mixing_ratio_for_o3 - long_name = molar mixing ratio of o3 in with respect to dry air - units = 1 +[relhum] + standard_name = relative_humidity + long_name = layer relative humidity + units = frac dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout optional = True -[vmr_ch4] - standard_name = volume_mixing_ratio_for_ch4 - long_name = molar mixing ratio of ch4 in with respect to dry air - units = 1 +[deltaZ] + standard_name = layer_thickness + long_name = layer_thickness + units = m dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout optional = True -[vmr_n2o] - standard_name = volume_mixing_ratio_for_n2o - long_name = molar mixing ratio of n2o in with respect to dry air - units = 1 +[deltaZc] + standard_name = layer_thickness_from_layer_center + long_name = layer_thickness + units = m dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout optional = True -[vmr_co2] - standard_name = volume_mixing_ratio_for_co2 - long_name = molar mixing ratio of co2 in with respect to dry air - units = 1 +[deltaP] + standard_name = layer_thickness_in_Pa + long_name = layer_thickness_in_Pa + units = Pa dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys @@ -475,17 +430,18 @@ units = none dimensions = (number_of_active_gases_used_by_RRTMGP) type = character - kind = len=* + kind = len=128 intent = in optional = True -[coszdg] - standard_name = cosine_of_solar_zenith_angle_on_radiation_timestep - long_name = daytime mean cosz over rad call period - units = none +[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 = inout + optional = True [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 @@ -494,6 +450,49 @@ type = real kind = kind_phys intent = inout +[coszdg] + standard_name = cosine_of_solar_zenith_angle_on_radiation_timestep + long_name = daytime mean cosz over rad call period + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[top_at_1] + standard_name = flag_for_vertical_ordering_in_radiation + long_name = flag for vertical ordering in radiation + units = flag + dimensions = () + type = logical + intent = inout +[iSFC] + standard_name = vertical_index_for_surface_in_RRTMGP + long_name = index for surface layer in RRTMGP + units = flag + dimensions = () + type = integer + intent = inout +[iTOA] + standard_name = vertical_index_for_TOA_in_RRTMGP + long_name = index for TOA layer in RRTMGP + units = flag + dimensions = () + type = integer + intent = inout +[nday] + standard_name = daytime_points_dimension + long_name = daytime points dimension + units = count + dimensions = () + type = integer + intent = out +[idxday] + standard_name = daytime_points + long_name = daytime points + units = index + dimensions = (horizontal_loop_extent) + type = integer + intent = inout [semis] standard_name = surface_longwave_emissivity long_name = surface lw emissivity in fraction @@ -511,20 +510,13 @@ kind = kind_phys intent = inout optional = True -[nday] - standard_name = daytime_points_dimension - long_name = daytime points dimension - units = count +[ico2] + standard_name = control_for_co2 + long_name = prescribed global mean value (old opernl) + units = flag dimensions = () type = integer - intent = inout -[idxday] - standard_name = daytime_points - long_name = daytime points - units = index - dimensions = (horizontal_loop_extent) - type = integer - intent = inout + intent = in [ozphys] standard_name = dataset_for_ozone_physics long_name = dataset for NRL ozone physics @@ -532,6 +524,14 @@ dimensions = () type = ty_ozphys intent = in +[con_pi] + standard_name = pi + long_name = ratio of a circle's circumference to its diameter + units = none + dimensions = () + type = real + kind = kind_phys + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.meta index bbd698d66..4ae3ff050 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.meta @@ -103,30 +103,6 @@ dimensions = () type = integer intent = in -[solar_file] - standard_name = solar_constant_file - long_name = external solar constant data table file - units = none - dimensions = () - type = character - kind = len=26 - intent = in -[con_solr_2008] - standard_name = solar_constant_2008 - long_name = solar constant Tim 2008 - units = W m-2 - dimensions = () - type = real - kind = kind_phys - intent = in -[con_solr_2002] - standard_name = solar_constant_2002 - long_name= solar constant Liu 2002 - units = W m-2 - dimensions = () - type = real - kind = kind_phys - intent = in [ico2] standard_name = control_for_co2 long_name = prescribed global mean value (old opernl) @@ -205,6 +181,20 @@ type = character kind = len=26 intent = in +[iaermdl] + standard_name = control_for_aerosol_radiation_scheme + long_name = control of aerosol scheme in radiation + units = 1 + dimensions = () + type = integer + intent = out +[iaerflg] + standard_name = control_for_aerosol_effects_in_radiation + long_name = control of aerosol effects in radiation + units = 1 + dimensions = () + type = integer + intent = out [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -213,6 +203,14 @@ type = real kind = kind_phys intent = in +[con_t0c] + standard_name = temperature_at_zero_celsius + long_name = temperature at 0 degree Celsius + units = K + dimensions = () + type = real + kind = kind_phys + intent = in [con_c] standard_name = speed_of_light_in_vacuum long_name = speed of light in vacuum @@ -221,6 +219,14 @@ type = real kind = kind_phys intent = in +[con_boltz] + standard_name = boltzmann_constant + long_name = Boltzmann constant + units = J K-1 + dimensions = () + type = real + kind = kind_phys + intent = in [con_plnk] standard_name = planck_constant long_name = Planck constant @@ -229,18 +235,26 @@ type = real kind = kind_phys intent = in -[con_boltz] - standard_name = boltzmann_constant - long_name = Boltzmann constant - units = J K-1 +[solar_file] + standard_name = solar_constant_file + long_name = external solar constant data table file + units = none + dimensions = () + type = character + kind = len=26 + intent = in +[con_solr_2008] + standard_name = solar_constant_2008 + long_name = solar constant Tim 2008 + units = W m-2 dimensions = () type = real kind = kind_phys intent = in -[con_t0c] - standard_name = temperature_at_zero_celsius - long_name = temperature at 0 degree Celsius - units = K +[con_solr_2002] + standard_name = solar_constant_2002 + long_name= solar constant Liu 2002 + units = W m-2 dimensions = () type = real kind = kind_phys @@ -268,20 +282,6 @@ dimensions = () type = integer intent = inout -[iaermdl] - standard_name = control_for_aerosol_radiation_scheme - long_name = control of aerosol scheme in radiation - units = 1 - dimensions = () - type = integer - intent = out -[iaerflg] - standard_name = control_for_aerosol_effects_in_radiation - long_name = control of aerosol effects in radiation - units = 1 - dimensions = () - type = integer - intent = out [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -346,6 +346,13 @@ dimensions = () type = integer intent = in +[iaermdl] + standard_name = control_for_aerosol_radiation_scheme + long_name = control of aerosol scheme in radiation + units = 1 + dimensions = () + type = integer + intent = in [aeros_file] standard_name = aerosol_data_file long_name = aerosol data file @@ -354,6 +361,53 @@ type = character kind = len=26 intent = in +[isol] + standard_name = control_for_solar_constant + long_name = use prescribed solar constant + units = flag + dimensions = () + type = integer + intent = in +[slag] + standard_name = equation_of_time + long_name = equation of time (radian) + units = radian + dimensions = () + type = real + kind = kind_phys + intent = out +[sdec] + standard_name = sine_of_solar_declination_angle + long_name = sin of the solar declination angle + units = none + dimensions = () + type = real + kind = kind_phys + intent = out +[cdec] + standard_name = cosine_of_solar_declination_angle + long_name = cos of the solar declination angle + units = none + dimensions = () + type = real + kind = kind_phys + intent = out +[solcon] + standard_name = solar_constant + long_name = solar constant (sun-earth distant adjusted) + units = W m-2 + dimensions = () + type = real + kind = kind_phys + intent = out +[con_pi] + standard_name = pi + long_name = ratio of a circle's circumference to its diameter + units = none + dimensions = () + type = real + kind = kind_phys + intent = in [co2dat_file] standard_name = co2_monthly_obs_data_table_file long_name = co2 monthly observation data table @@ -398,60 +452,6 @@ dimensions = () type = ty_ozphys intent = inout -[iaermdl] - standard_name = control_for_aerosol_radiation_scheme - long_name = control of aerosol scheme in radiation - units = 1 - dimensions = () - type = integer - intent = in -[isol] - standard_name = control_for_solar_constant - long_name = use prescribed solar constant - units = flag - dimensions = () - type = integer - intent = in -[con_pi] - standard_name = pi - long_name = ratio of a circle's circumference to its diameter - units = none - dimensions = () - type = real - kind = kind_phys - intent = in -[slag] - standard_name = equation_of_time - long_name = equation of time (radian) - units = radian - dimensions = () - type = real - kind = kind_phys - intent = out -[sdec] - standard_name = sine_of_solar_declination_angle - long_name = sin of the solar declination angle - units = none - dimensions = () - type = real - kind = kind_phys - intent = out -[cdec] - standard_name = cosine_of_solar_declination_angle - long_name = cos of the solar declination angle - units = none - dimensions = () - type = real - kind = kind_phys - intent = out -[solcon] - standard_name = solar_constant - long_name = solar constant (sun-earth distant adjusted) - units = W m-2 - dimensions = () - type = real - kind = kind_phys - intent = out [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.meta index 904030522..9faea1032 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.meta @@ -6,6 +6,22 @@ [ccpp-arg-table] name = GFS_stochastics_init type = scheme +[si] + standard_name = sigma_pressure_hybrid_vertical_coordinate + long_name = vertical sigma coordinate for radiation initialization + units = none + dimensions = (vertical_interface_dimension) + type = real + kind = kind_phys + intent = in +[vfact_ca] + standard_name = cellular_automata_vertical_weight + long_name = vertical weight for ca + units = frac + dimensions = (vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout [km] standard_name = vertical_dimension_for_radiation long_name = number of vertical levels for radiation calculations @@ -27,22 +43,6 @@ dimensions = () type = logical intent = in -[si] - standard_name = sigma_pressure_hybrid_vertical_coordinate - long_name = vertical sigma coordinate for radiation initialization - units = none - dimensions = (vertical_interface_dimension) - type = real - kind = kind_phys - intent = in -[vfact_ca] - standard_name = cellular_automata_vertical_weight - long_name = vertical weight for ca - units = frac - dimensions = (vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.F90 index 923cee897..42cfd5ac9 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.F90 @@ -33,7 +33,7 @@ subroutine GFS_suite_interstitial_2_run (im, levs, lssav, ldiag3d, lsidea, flag_ real(kind=kind_phys), intent(in ), dimension(:), optional :: ulwsfc_cice real(kind=kind_phys), intent(in ), dimension(:) :: cice real(kind=kind_phys), intent(in ), dimension(:,:) :: htrsw, htrlw, tgrs, prsl, qgrs_water_vapor, qgrs_cloud_water, prslk - real(kind=kind_phys), intent(in ), dimension(:,:), optional :: htrlwu + real(kind=kind_phys), intent(inout), dimension(:,:), optional :: htrlwu real(kind=kind_phys), intent(in ), dimension(:,:) :: prsi real(kind=kind_phys), intent(in ), dimension(:,:,:) :: lwhd integer, intent(inout), dimension(:) :: kinver @@ -234,4 +234,5 @@ subroutine GFS_suite_interstitial_2_run (im, levs, lssav, ldiag3d, lsidea, flag_ end subroutine GFS_suite_interstitial_2_run - end module GFS_suite_interstitial_2 \ No newline at end of file + end module GFS_suite_interstitial_2 + diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.meta index a1f1660ad..ee34bb177 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.meta @@ -277,22 +277,6 @@ type = real kind = kind_phys intent = inout -[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 -[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 - units = K s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in - optional = True [adjsfculw] standard_name = surface_upwelling_longwave_flux long_name = surface upwelling longwave flux at current time @@ -474,6 +458,22 @@ type = real kind = kind_phys 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 +[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 + units = K s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.F90 index bc99e7fff..f07a8348c 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.F90 @@ -44,7 +44,7 @@ subroutine GFS_suite_interstitial_3_run (otsptflag, & integer, intent(in) :: ntinc, ntlnc logical, intent(in) :: ldiag3d, qdiag3d integer, dimension(:,:), intent(in) :: dtidx - real, dimension(:,:), intent(out) :: save_lnc, save_inc + real(kind=kind_phys), dimension(:,:), intent(out) :: save_lnc, save_inc real(kind=kind_phys), intent(in ) :: rhcbot, rhcmax, rhcpbl, rhctop real(kind=kind_phys), intent(in ), dimension(:) :: work1, work2 diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.meta index d1e9d4d50..e60e8ebfb 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.meta @@ -43,6 +43,13 @@ dimensions = () type = logical intent = in +[imfshalcnv] + standard_name = control_for_shallow_convection_scheme + long_name = flag for mass-flux shallow convection scheme + units = flag + dimensions = () + type = integer + intent = in [imfdeepcnv] standard_name = control_for_deep_convection_scheme long_name = flag for mass-flux deep convection scheme @@ -50,6 +57,13 @@ dimensions = () type = integer intent = in +[imfshalcnv_samf] + standard_name = identifier_for_scale_aware_mass_flux_shallow_convection + long_name = flag for SAMF shallow convection scheme + units = flag + dimensions = () + type = integer + intent = in [imfdeepcnv_samf] standard_name = identifer_for_scale_aware_mass_flux_deep_convection long_name = flag for SAMF deep convection scheme @@ -64,20 +78,6 @@ dimensions = () type = integer intent = in -[imfshalcnv] - standard_name = control_for_shallow_convection_scheme - long_name = flag for mass-flux shallow convection scheme - units = flag - dimensions = () - type = integer - intent = in -[imfshalcnv_samf] - standard_name = identifier_for_scale_aware_mass_flux_shallow_convection - long_name = flag for SAMF shallow convection scheme - units = flag - dimensions = () - type = integer - intent = in [imfshalcnv_c3] standard_name = identifier_for_c3_shallow_convection long_name = flag for C3 shallow convection scheme @@ -261,7 +261,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = out + intent = inout optional = True [imp_physics] standard_name = control_for_microphysics_scheme @@ -305,6 +305,20 @@ dimensions = () type = integer intent = in +[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 + units = index + dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) + type = integer + intent = in +[ntlnc] + standard_name = index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array + long_name = tracer index for liquid number concentration + units = index + dimensions = () + type = integer + intent = in [imp_physics_wsm6] standard_name = identifier_for_wsm6_microphysics_scheme long_name = choice of WSM6 microphysics scheme @@ -319,13 +333,6 @@ dimensions = () type = integer intent = in -[imp_physics_nssl] - standard_name = identifier_for_nssl_microphysics_scheme - long_name = choice of NSSL 2-moment microphysics scheme - units = flag - dimensions = () - type = integer - intent = in [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces @@ -334,6 +341,20 @@ type = real kind = kind_phys intent = in +[ntinc] + standard_name = index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array + long_name = tracer index for ice number concentration + units = index + dimensions = () + type = integer + intent = in +[imp_physics_nssl] + standard_name = identifier_for_nssl_microphysics_scheme + long_name = choice of NSSL 2-moment microphysics scheme + units = flag + dimensions = () + type = integer + intent = in [prsl] standard_name = air_pressure long_name = mean layer pressure @@ -433,6 +454,43 @@ dimensions = () type = integer intent = in +[save_lnc] + standard_name = liquid_cloud_number_concentration_save + long_name = liquid cloud number concentration before entering a physics scheme + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[save_inc] + standard_name = ice_cloud_number_concentration_save + long_name = ice cloud number concentration before entering a physics scheme + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[ldiag3d] + standard_name = flag_for_diagnostics_3D + long_name = flag for 3d diagnostic fields + units = flag + dimensions = () + type = logical + intent = in +[qdiag3d] + standard_name = flag_for_tracer_diagnostics_3D + long_name = flag for 3d tracer diagnostic fields + units = flag + dimensions = () + type = logical + intent = in +[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 + units = index + dimensions = () + type = integer + intent = in [clw] standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers @@ -473,64 +531,6 @@ type = real kind = kind_phys intent = inout -[ldiag3d] - standard_name = flag_for_diagnostics_3D - long_name = flag for 3d diagnostic fields - units = flag - dimensions = () - type = logical - intent = in -[qdiag3d] - standard_name = flag_for_tracer_diagnostics_3D - long_name = flag for 3d tracer diagnostic fields - units = flag - dimensions = () - type = logical - intent = in -[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 - units = index - dimensions = () - type = integer - intent = in -[save_lnc] - standard_name = liquid_cloud_number_concentration_save - long_name = liquid cloud number concentration before entering a physics scheme - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout -[save_inc] - standard_name = ice_cloud_number_concentration_save - long_name = ice cloud number concentration before entering a physics scheme - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout -[ntlnc] - standard_name = index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array - long_name = tracer index for liquid number concentration - units = index - dimensions = () - type = integer - intent = in -[ntinc] - standard_name = index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array - long_name = tracer index for ice number concentration - units = index - dimensions = () - type = integer - intent = in -[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 - units = index - dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) - type = integer - intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_4.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_4.meta index c6a330ccb..d843a8cb4 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_4.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_4.meta @@ -122,13 +122,6 @@ dimensions = () type = integer intent = in -[nn] - standard_name = number_of_tracers_for_convective_transport - long_name = number of tracers for convective transport - units = count - dimensions = () - type = integer - intent = in [ntccn] standard_name = index_of_cloud_condensation_nuclei_number_concentration_in_tracer_concentration_array long_name = tracer index for cloud condensation nuclei number concentration @@ -136,6 +129,13 @@ dimensions = () type = integer intent = in +[nn] + standard_name = number_of_tracers_for_convective_transport + long_name = number of tracers for convective transport + units = count + dimensions = () + type = integer + intent = in [imp_physics] standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme @@ -157,44 +157,44 @@ dimensions = () type = integer intent = in -[imp_physics_zhao_carr] - standard_name = identifier_for_zhao_carr_microphysics_scheme - long_name = choice of Zhao-Carr microphysics scheme +[imp_physics_nssl] + standard_name = identifier_for_nssl_microphysics_scheme + long_name = choice of NSSL 2-moment microphysics scheme units = flag dimensions = () type = integer intent = in -[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 +[nssl_invertccn] + standard_name = nssl_invertccn + long_name = flag to invert CCN in NSSL micro units = flag dimensions = () - type = integer + type = logical intent = in -[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 +[nssl_ccn_on] + standard_name = nssl_ccn_on + long_name = CCN activation flag in NSSL micro units = flag dimensions = () type = logical intent = in -[imp_physics_nssl] - standard_name = identifier_for_nssl_microphysics_scheme - long_name = choice of NSSL 2-moment microphysics scheme +[imp_physics_zhao_carr] + standard_name = identifier_for_zhao_carr_microphysics_scheme + long_name = choice of Zhao-Carr microphysics scheme units = flag dimensions = () type = integer intent = in -[nssl_ccn_on] - standard_name = nssl_ccn_on - long_name = CCN activation flag in NSSL micro +[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 units = flag dimensions = () - type = logical + type = integer intent = in -[nssl_invertccn] - standard_name = nssl_invertccn - long_name = flag to invert CCN in NSSL micro +[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 units = flag dimensions = () type = logical @@ -223,22 +223,6 @@ type = real kind = kind_phys intent = in -[save_lnc] - standard_name = liquid_cloud_number_concentration_save - long_name = liquid cloud number concentration before entering a physics scheme - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in -[save_inc] - standard_name = ice_cloud_number_concentration_save - long_name = ice cloud number concentration before entering a physics scheme - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in [con_pi] standard_name = pi long_name = ratio of a circle's circumference to its diameter @@ -247,6 +231,29 @@ type = real kind = kind_phys intent = in +[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 + units = index + dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) + type = integer + intent = in +[dtend] + standard_name = cumulative_change_of_state_variables + long_name = diagnostic tendencies for state variables + units = mixed + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) + type = real + kind = kind_phys + intent = inout + optional = True +[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 + units = index + dimensions = () + type = integer + intent = in [gq0] standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics @@ -319,36 +326,6 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = inout -[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 - units = index - dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) - type = integer - intent = in -[dtend] - standard_name = cumulative_change_of_state_variables - long_name = diagnostic tendencies for state variables - units = mixed - dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) - type = real - kind = kind_phys - intent = inout - optional = True -[ntk] - standard_name = index_for_turbulent_kinetic_energy_convective_transport_tracer - long_name = index for turbulent kinetic energy in the convectively transported tracer array - units = index - dimensions = () - type = integer - intent = in -[ntke] - standard_name = index_of_turbulent_kinetic_energy_in_tracer_concentration_array - long_name = tracer index for turbulent kinetic energy - units = index - dimensions = () - type = integer intent = in [ldiag3d] standard_name = flag_for_diagnostics_3D @@ -364,9 +341,32 @@ dimensions = () type = logical intent = in -[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 +[save_lnc] + standard_name = liquid_cloud_number_concentration_save + long_name = liquid cloud number concentration before entering a physics scheme + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[save_inc] + standard_name = ice_cloud_number_concentration_save + long_name = ice cloud number concentration before entering a physics scheme + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[ntk] + standard_name = index_for_turbulent_kinetic_energy_convective_transport_tracer + long_name = index for turbulent kinetic energy in the convectively transported tracer array + units = index + dimensions = () + type = integer + intent = in +[ntke] + standard_name = index_of_turbulent_kinetic_energy_in_tracer_concentration_array + long_name = tracer index for turbulent kinetic energy units = index dimensions = () type = integer diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_5.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_5.meta index 511137901..ae8bbd76b 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_5.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_5.meta @@ -65,7 +65,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers_for_convective_transport) type = real kind = kind_phys - intent = inout + intent = out [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.F90 index d74924d95..dc92a5d78 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.F90 @@ -1,32 +1,355 @@ -!> \file GFS_suite_interstitial_phys_reset.f90 +!> \file GFS_suite_interstitial_phys_reset.F90 +!! +!! ########################################################################################## +!! !! Contains code to reset physics-related interstitial variables in the GFS physics suite. - - module GFS_suite_interstitial_phys_reset - - contains - +!! +!! ########################################################################################## +module GFS_suite_interstitial_phys_reset + use machine, only: kind_phys + implicit none +contains !> \section arg_table_GFS_suite_interstitial_phys_reset_run Argument Table !! \htmlinclude GFS_suite_interstitial_phys_reset_run.html !! - subroutine GFS_suite_interstitial_phys_reset_run (Interstitial, Model, errmsg, errflg) + subroutine GFS_suite_interstitial_phys_reset_run(im, clear_val, huge, levs, kdt, & + ldiag_ugwp, do_ugwp_v0, do_ugwp_v0_nst_only, do_ugwp_v1, gwd_opt, imp_physics, & + imp_physics_gfdl, imp_physics_thompson, imp_physics_nssl, imp_physics_mg, lsm, & + ilsm_noahmp, dtp, avg_max_length, nsfullradar_diag, & + adjsfculw_land, adjsfculw_ice, adjsfculw_water, adjnirbmd, adjnirbmu, adjnirdfd, & + adjnirdfu, adjvisbmd, adjvisbmu, adjvisdfu, adjvisdfd, bexp1d, cd, cd_ice, cd_land, & + cd_water, cdq, cdq_ice, cdq_land, cdq_water, chh_ice, chh_land, chh_water, cld1d, & + cldf, clw, clx, cmm_ice, cmm_land, cmm_water, cnvc, cnvw, ctei_r, ctei_rml, cumabs, & + dd_mf, del, del_gz, dlength, dqdt, dqsfc1, drain, dt_mf, dtdt, dtsfc1, dtzm, dudt, & + dusfcg, dusfc1, dvdftra, dvdt, dvsfcg, dvsfc1, elvmax, ep1d, ep1d_ice, ep1d_land, & + ep1d_water, evap_ice, evap_land, evap_water, pah, ecan, etran, edir, & + ffhh_ice, ffhh_land, ffhh_water, fh2, fh2_ice, fh2_land, fh2_water, flag_cice, & + flag_guess, flag_iter, flag_lakefreeze, ffmm_ice, ffmm_land, ffmm_water, fm10, & + fm10_ice, fm10_land, fm10_water, frland, fscav, fswtr, gabsbdlw, gabsbdlw_ice, & + gabsbdlw_land, gabsbdlw_water, gamma, gamq, gamt, gflx, gflx_ice, gflx_land, & + gflx_water, gwdcu, gwdcv, zvfun, hffac, hflxq, hflx_ice, hflx_land, hflx_water, & + dry, icy, lake, ocean, islmsk, islmsk_cice, wet, kbot, kcnv, kinver, kpbl, ktop, & + oa4, oc, prcpmp, prnum, qss_ice, qss_land, qss_water, raincd, raincs, rainmcadj, & + rainp, rb, rb_ice, rb_land, rb_water, rhc, runoff, save_q, save_t, save_tcp, & + save_u, save_v, sigma, sigmaf, sigmafrac, sigmatot, snowc, snohf, snowmt, & + stress, stress_ice, stress_land, stress_water, theta, tprcp_ice, tprcp_land, & + tprcp_water, tseal, tsfc_water, tsurf_ice, tsurf_land, tsurf_water, & + uustar_ice, uustar_land, uustar_water, vdftra, vegf1d, lndp_vgf, wcbmax, wind, & + work1, work2, work3, xcosz, xlai1d, xmu, z01d, zt1d, ztmax_ice, ztmax_land, & + ztmax_water, tau_mtb, tau_ogw, tau_tofd, tau_ngw, tau_oss, dudt_mtb, dudt_tms, & + zmtb, zlwb, zogw, zngw, dudt_ngw, dvdt_ngw, dtdt_ngw, kdis_ngw, varss, ocss, oa4ss, & + clxss, graupelmp, icemp, rainmp, snowmp, ncgl, ncpr, ncps, qgl, qrn, qsnw, qlcn, & + qicn, w_upi, cf_upi, cnv_mfd, cnv_dqldt, clcn, cnv_fice, cnv_ndrop, cnv_nice, & + t2mmp, q2mp, max_hourly_reset, ext_diag_thompson_reset, fullradar_diag, & + errmsg, errflg) + + ! Inputs + real (kind_phys), intent(in ) :: clear_val, huge, avg_max_length, nsfullradar_diag, & + dtp + integer, intent(in ) :: levs, kdt, gwd_opt, imp_physics, imp_physics_gfdl, & + imp_physics_thompson, imp_physics_nssl, imp_physics_mg, lsm, ilsm_noahmp, im + logical, intent(in ) :: ldiag_ugwp, do_ugwp_v0, do_ugwp_v0_nst_only, & + do_ugwp_v1 + ! Outputs + real(kind_phys), intent(inout) :: adjsfculw_land(:), adjsfculw_ice(:), & + adjsfculw_water(:), adjnirbmd(:), adjnirbmu(:), adjnirdfd(:), adjnirdfu(:), & + adjvisbmd(:), adjvisbmu(:), adjvisdfu(:), adjvisdfd(:), bexp1d(:), cd(:), & + cd_ice(:), cd_land(:), cd_water(:), cdq(:), cdq_ice(:), cdq_land(:), cdq_water(:),& + chh_ice(:), chh_land(:), chh_water(:), cldf(:), cld1d(:), clw(:,:,:), & + clx(:,:), cmm_ice(:), cmm_land(:), cmm_water(:), cnvc(:,:), cnvw(:,:), ctei_r(:), & + ctei_rml(:), cumabs(:), dd_mf(:,:), del(:,:), del_gz(:,:), dlength(:), & + dqdt(:,:,:), dqsfc1(:), drain(:), dtdt(:,:), dtsfc1(:), dtzm(:), dt_mf(:,:), & + dudt(:,:), dusfcg(:), dusfc1(:), dvdftra(:,:,:), dvdt(:,:), dvsfcg(:), dvsfc1(:), & + elvmax(:), ep1d(:), ep1d_ice(:), ep1d_land(:), ep1d_water(:), evap_ice(:), & + evap_land(:), evap_water(:), pah(:), ecan(:), etran(:), edir(:), & + ffhh_ice(:), ffhh_land(:), ffhh_water(:), fh2(:), fh2_ice(:), fh2_land(:), & + fh2_water(:), ffmm_ice(:), ffmm_land(:), ffmm_water(:), fm10(:), fm10_ice(:), & + fm10_land(:), fm10_water(:), frland(:), fscav(:), fswtr(:), gabsbdlw(:), & + gabsbdlw_ice(:), gabsbdlw_land(:), gabsbdlw_water(:), gamma(:), gamq(:), gamt(:), & + gflx(:), gflx_ice(:), gflx_land(:), gflx_water(:), gwdcu(:,:), gwdcv(:,:), & + zvfun(:), hffac(:), hflxq(:), hflx_ice(:), hflx_land(:), hflx_water(:), oa4(:,:), & + oc(:), prcpmp(:), prnum(:,:), qss_ice(:), qss_land(:), qss_water(:), raincd(:), & + raincs(:), rainmcadj(:), rainp(:,:), rb(:), rb_ice(:), rb_land(:), rb_water(:), & + rhc(:,:), runoff(:), save_q(:,:,:), save_t(:,:), save_tcp(:,:), save_u(:,:), & + save_v(:,:), sigma(:), sigmaf(:), sigmafrac(:,:), sigmatot(:,:), & + snowc(:), snohf(:), snowmt(:), stress(:), stress_ice(:), stress_land(:), & + stress_water(:), theta(:), tprcp_ice(:), tprcp_land(:), tprcp_water(:), & + tseal(:), tsfc_water(:), tsurf_ice(:), tsurf_land(:), tsurf_water(:), & + uustar_ice(:), uustar_land(:), uustar_water(:), vdftra(:,:,:), & + vegf1d(:), lndp_vgf, wcbmax(:), wind(:), work1(:), work2(:), work3(:), xcosz(:), & + xlai1d(:), xmu(:), z01d(:), zt1d(:), ztmax_ice(:), ztmax_land(:), ztmax_water(:), & + tau_oss(:), tau_tofd(:), tau_mtb(:), tau_ogw(:), tau_ngw(:), zngw(:), zmtb(:), & + zlwb(:), zogw(:), dudt_mtb(:,:), dudt_tms(:,:) + real(kind_phys), intent(inout), optional :: clcn(:,:), cnv_dqldt(:,:), cnv_fice(:,:), & + cnv_mfd(:,:), cnv_ndrop(:,:), cnv_nice(:,:), graupelmp(:), icemp(:), ncgl(:,:), & + ncpr(:,:), ncps(:,:), q2mp(:), qgl(:,:), qicn(:,:), qlcn(:,:), qrn(:,:), & + qsnw(:,:), rainmp(:), snowmp(:), t2mmp(:), w_upi(:,:), dudt_ngw(:,:), & + dvdt_ngw(:,:), dtdt_ngw(:,:) ,kdis_ngw(:,:), varss(:), ocss(:), oa4ss(:,:), & + clxss(:,:), cf_upi(:,:) + logical, intent(inout) :: flag_cice(:), flag_guess(:), flag_iter(:),flag_lakefreeze(:),& + dry(:), icy(:), lake(:), ocean(:), wet(:), fullradar_diag, max_hourly_reset, & + ext_diag_thompson_reset + integer, intent(inout) :: islmsk(:), islmsk_cice(:), kbot(:), kcnv(:), kinver(:), & + kpbl(:), ktop(:) + ! + character(len=*), intent( out) :: errmsg + integer, intent( out) :: errflg - use machine, only: kind_phys - use GFS_typedefs, only: GFS_control_type - use CCPP_typedefs, only: GFS_interstitial_type + errmsg = '' + errflg = 0 - implicit none + adjsfculw_land = clear_val + adjsfculw_ice = clear_val + adjsfculw_water = clear_val + adjnirbmd = clear_val + adjnirbmu = clear_val + adjnirdfd = clear_val + adjnirdfu = clear_val + adjvisbmd = clear_val + adjvisbmu = clear_val + adjvisdfu = clear_val + adjvisdfd = clear_val + bexp1d = clear_val + cd = clear_val + cd_ice = huge + cd_land = huge + cd_water = huge + cdq = clear_val + cdq_ice = huge + cdq_land = huge + cdq_water = huge + chh_ice = huge + chh_land = huge + chh_water = huge + cld1d = clear_val + cldf = clear_val + clw = clear_val + clw(:,:,2) = -999.9 + clx = clear_val + cmm_ice = huge + cmm_land = huge + cmm_water = huge + cnvc = clear_val + cnvw = clear_val + ctei_r = clear_val + ctei_rml = clear_val + cumabs = clear_val + dd_mf = clear_val + del = clear_val + del_gz = clear_val + dlength = clear_val + dqdt = clear_val + dqsfc1 = clear_val + drain = clear_val + dt_mf = clear_val + dtdt = clear_val + dtsfc1 = clear_val + dtzm = clear_val + dudt = clear_val + dusfcg = clear_val + dusfc1 = clear_val + dvdftra = clear_val + dvdt = clear_val + dvsfcg = clear_val + dvsfc1 = clear_val + elvmax = clear_val + ep1d = clear_val + ep1d_ice = huge + ep1d_land = huge + ep1d_water = huge + evap_ice = huge + evap_land = huge + evap_water = huge + pah = clear_val + ecan = clear_val + etran = clear_val + edir = clear_val + ffhh_ice = huge + ffhh_land = huge + ffhh_water = huge + fh2 = clear_val + fh2_ice = huge + fh2_land = huge + fh2_water = huge + flag_cice = .false. + flag_guess = .false. + flag_iter = .true. + flag_lakefreeze = .false. + ffmm_ice = huge + ffmm_land = huge + ffmm_water = huge + fm10 = clear_val + fm10_ice = huge + fm10_land = huge + fm10_water = huge + frland = clear_val + fscav = clear_val + fswtr = clear_val + gabsbdlw = clear_val + gabsbdlw_ice = clear_val + gabsbdlw_land = clear_val + gabsbdlw_water = clear_val + gamma = clear_val + gamq = clear_val + gamt = clear_val + gflx = clear_val + gflx_ice = clear_val + gflx_land = clear_val + gflx_water = clear_val + gwdcu = clear_val + gwdcv = clear_val + zvfun = clear_val + hffac = clear_val + hflxq = clear_val + hflx_ice = huge + hflx_land = huge + hflx_water = huge + dry = .false. + icy = .false. + lake = .false. + ocean = .false. + islmsk = 0 + islmsk_cice = 0 + wet = .false. + kbot = levs + kcnv = 0 + kinver = levs + kpbl = 0 + ktop = 1 + oa4 = clear_val + oc = clear_val + prcpmp = clear_val + prnum = clear_val + qss_ice = huge + qss_land = huge + qss_water = huge + raincd = clear_val + raincs = clear_val + rainmcadj = clear_val + rainp = clear_val + rb = clear_val + rb_ice = huge + rb_land = huge + rb_water = huge + rhc = clear_val + runoff = clear_val + save_q = clear_val + save_t = clear_val + save_tcp = clear_val + save_u = clear_val + save_v = clear_val + sigma = clear_val + sigmaf = clear_val + sigmafrac = clear_val + sigmatot = clear_val + snowc = clear_val + snohf = clear_val + snowmt = clear_val + stress = clear_val + stress_ice = huge + stress_land = huge + stress_water = huge + theta = clear_val + tprcp_ice = huge + tprcp_land = huge + tprcp_water = huge + tseal = clear_val + tsfc_water = huge + tsurf_ice = huge + tsurf_land = huge + tsurf_water = huge + uustar_ice = huge + uustar_land = huge + uustar_water = huge + vdftra = clear_val + vegf1d = clear_val + lndp_vgf = clear_val + wcbmax = clear_val + wind = huge + work1 = clear_val + work2 = clear_val + work3 = clear_val + xcosz = clear_val + xlai1d = clear_val + xmu = clear_val + z01d = clear_val + zt1d = clear_val + ztmax_ice = clear_val + ztmax_land = clear_val + ztmax_water = clear_val + + ! UGWP common + tau_mtb = clear_val + tau_ogw = clear_val + tau_tofd = clear_val + tau_ngw = clear_val + tau_oss = clear_val + dudt_mtb = clear_val + dudt_tms = clear_val + zmtb = clear_val + zlwb = clear_val + zogw = clear_val + zngw = clear_val - ! interface variables - type(GFS_interstitial_type), intent(inout) :: Interstitial - type(GFS_control_type), intent(in ) :: Model - character(len=*), intent( out) :: errmsg - integer, intent( out) :: errflg + ! CIRES UGWP v1 + if (ldiag_ugwp .or. do_ugwp_v0 .or. do_ugwp_v0_nst_only .or. do_ugwp_v1) then + dudt_ngw = clear_val + dvdt_ngw = clear_val + dtdt_ngw = clear_val + kdis_ngw = clear_val + end if - errmsg = '' - errflg = 0 + !-- GSL drag suite + if (gwd_opt==3 .or. gwd_opt==33 .or. gwd_opt==2 .or. gwd_opt==22) then + varss = clear_val + ocss = clear_val + oa4ss = clear_val + clxss = clear_val + end if - call Interstitial%phys_reset(Model) + ! Reset fields that are conditional on physics choices + if (imp_physics == imp_physics_gfdl .or. & + imp_physics == imp_physics_thompson .or. & + imp_physics == imp_physics_nssl ) then + graupelmp = clear_val + icemp = clear_val + rainmp = clear_val + snowmp = clear_val + else if (imp_physics == imp_physics_mg) then + ncgl = clear_val + ncpr = clear_val + ncps = clear_val + qgl = clear_val + qrn = clear_val + qsnw = clear_val + qlcn = clear_val + qicn = clear_val + w_upi = clear_val + cf_upi = clear_val + cnv_mfd = clear_val + cnv_dqldt = clear_val + clcn = clear_val + cnv_fice = clear_val + cnv_ndrop = clear_val + cnv_nice = clear_val + end if + if (lsm == ilsm_noahmp) then + t2mmp = clear_val + q2mp = clear_val + end if - end subroutine GFS_suite_interstitial_phys_reset_run + ! Set flag for resetting maximum hourly output fields + max_hourly_reset = mod(kdt-1, nint(avg_max_length/dtp)) == 0 + ! Use same logic in UFS to reset Thompson extended diagnostics + ext_diag_thompson_reset = max_hourly_reset - end module GFS_suite_interstitial_phys_reset \ No newline at end of file + ! Frequency flag for computing the full radar reflectivity (water coated ice) + if (nsfullradar_diag<0) then + fullradar_diag = .true. + else + fullradar_diag = (kdt == 1 .or. mod(kdt, nint(nsfullradar_diag/dtp)) == 0) + end if + + end subroutine GFS_suite_interstitial_phys_reset_run + +end module GFS_suite_interstitial_phys_reset diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.meta index 947a1950f..43a5a064a 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.meta @@ -8,20 +8,1938 @@ [ccpp-arg-table] name = GFS_suite_interstitial_phys_reset_run type = scheme -[Interstitial] - standard_name = GFS_interstitial_type_instance - long_name = derived type GFS_interstitial_type in FV3 - units = DDT +[im] + standard_name = horizontal_loop_extent + long_name = horizontal loop extent + units = count dimensions = () - type = GFS_interstitial_type - intent = inout -[Model] - standard_name = GFS_control_type_instance - long_name = Fortran DDT containing FV3-GFS model control parameters - units = DDT + type = integer + intent = in +[clear_val] + standard_name = constant_zero + long_name = constant for zero + units = none + dimensions = () + type = real + kind = kind_phys + intent = in +[huge] + standard_name = netcdf_float_fillvalue + long_name = definition of NetCDF float FillValue + units = none + dimensions = () + type = real + kind = kind_phys + intent = in +[levs] + standard_name = vertical_layer_dimension + long_name = number of vertical levels + units = count + dimensions = () + type = integer + intent = in +[kdt] + standard_name = index_of_timestep + long_name = current forecast iteration + units = index + dimensions = () + type = integer + intent = in +[ldiag_ugwp] + standard_name = flag_for_unified_gravity_wave_physics_diagnostics + long_name = flag for CIRES UGWP Diagnostics + units = flag + dimensions = () + type = logical + intent = in +[do_ugwp_v0] + standard_name = flag_for_ugwp_version_0 + long_name = flag to activate ver 0 CIRES UGWP + units = flag + dimensions = () + type = logical + intent = in +[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 + units = flag + dimensions = () + type = logical + intent = in +[do_ugwp_v1] + standard_name = flag_for_ugwp_version_1 + long_name = flag to activate ver 1 CIRES UGWP + units = flag + dimensions = () + type = logical + intent = in +[gwd_opt] + standard_name = control_for_drag_suite_gravity_wave_drag + long_name = flag to choose gwd scheme + units = flag + dimensions = () + type = integer + intent = in +[imp_physics] + standard_name = control_for_microphysics_scheme + long_name = choice of microphysics scheme + units = flag + dimensions = () + type = integer + intent = in +[imp_physics_gfdl] + standard_name = identifier_for_gfdl_microphysics_scheme + long_name = choice of GFDL microphysics scheme + units = flag + dimensions = () + type = integer + intent = in +[imp_physics_thompson] + standard_name = identifier_for_thompson_microphysics_scheme + long_name = choice of Thompson microphysics scheme + units = flag + dimensions = () + type = integer + intent = in +[imp_physics_nssl] + standard_name = identifier_for_nssl_microphysics_scheme + long_name = choice of NSSL 2-moment microphysics scheme + units = flag + dimensions = () + type = integer + intent = in +[imp_physics_mg] + standard_name = identifier_for_morrison_gettelman_microphysics_scheme + long_name = choice of Morrison-Gettelman microphysics scheme + units = flag + dimensions = () + type = integer + intent = in +[lsm] + standard_name = control_for_land_surface_scheme + long_name = flag for land surface model + units = flag dimensions = () - type = GFS_control_type + type = integer + intent = in +[ilsm_noahmp] + standard_name = identifier_for_noahmp_land_surface_scheme + long_name = flag for NOAH MP land surface model + units = flag + dimensions = () + type = integer + intent = in +[dtp] + standard_name = timestep_for_physics + long_name = physics timestep + units = s + dimensions = () + type = real + kind = kind_phys intent = in +[avg_max_length] + standard_name = period_of_maximum_diagnostics_reset + long_name = reset time interval for maximum hourly fields + units = s + dimensions = () + type = real + kind = kind_phys + intent = in +[nsfullradar_diag] + standard_name = interval_for_resetting_thompson_radar_diagnostics + long_name = seconds between resetting radar reflectivity calculation + units = s + dimensions = () + type = real + kind = kind_phys + intent = in +[adjsfculw_land] + standard_name = surface_upwelling_longwave_flux_over_land + long_name = surface upwelling longwave flux at current time over land + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[adjsfculw_ice] + standard_name = surface_upwelling_longwave_flux_over_ice + long_name = surface upwelling longwave flux at current time over ice + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[adjsfculw_water] + standard_name = surface_upwelling_longwave_flux_over_water + long_name = surface upwelling longwave flux at current time over water + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[adjnirbmd] + standard_name = surface_downwelling_direct_near_infrared_shortwave_flux + long_name = surface downwelling beam near-infrared shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[adjnirbmu] + standard_name = surface_upwelling_direct_near_infrared_shortwave_flux + long_name = surface upwelling beam near-infrared shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[adjnirdfd] + standard_name = surface_downwelling_diffuse_near_infrared_shortwave_flux + long_name = surface downwelling diffuse near-infrared shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[adjnirdfu] + standard_name = surface_upwelling_diffuse_near_infrared_shortwave_flux + long_name = surface upwelling diffuse near-infrared shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[adjvisbmd] + standard_name = surface_downwelling_direct_ultraviolet_and_visible_shortwave_flux + long_name = surface downwelling beam ultraviolet plus visible shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[adjvisbmu] + standard_name = surface_upwelling_direct_ultraviolet_and_visible_shortwave_flux + long_name = surface upwelling beam ultraviolet plus visible shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[adjvisdfu] + standard_name = surface_upwelling_diffuse_ultraviolet_and_visible_shortwave_flux + long_name = surface upwelling diffuse ultraviolet plus visible shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[adjvisdfd] + standard_name = surface_downwelling_diffuse_ultraviolet_and_visible_shortwave_flux + long_name = surface downwelling diffuse ultraviolet plus visible shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[bexp1d] + standard_name = perturbation_of_soil_type_b_parameter + long_name = perturbation of soil type "b" parameter + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[cd] + standard_name = surface_drag_coefficient_for_momentum_in_air + long_name = surface exchange coeff for momentum + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[cd_ice] + standard_name = surface_drag_coefficient_for_momentum_in_air_over_ice + long_name = surface exchange coeff for momentum over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[cd_land] + 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 = inout +[cd_water] + standard_name = surface_drag_coefficient_for_momentum_in_air_over_water + long_name = surface exchange coeff for momentum over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[cdq] + standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air + long_name = surface exchange coeff heat & moisture + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[cdq_ice] + standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ice + long_name = surface exchange coeff heat & moisture over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[cdq_land] + 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 = inout +[cdq_water] + 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 = inout +[chh_ice] + standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_ice + long_name = thermal exchange coefficient over ice + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[chh_land] + 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 +[chh_water] + standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_water + long_name = thermal exchange coefficient over water + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[clcn] + standard_name = convective_cloud_volume_fraction + long_name = convective cloud volume fraction + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cldf] + standard_name = cloud_area_fraction + long_name = fraction of grid box area in which updrafts occur + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[cld1d] + standard_name = cloud_work_function + long_name = cloud work function + units = m2 s-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[clw] + standard_name = convective_transportable_tracers + long_name = array to contain cloud water and other convective trans. tracers + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers_for_convective_transport) + type = real + kind = kind_phys + intent = inout +[clx] + standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height + long_name = frac. of grid box with by subgrid height_above_mean_sea_level higher than critical height + units = frac + dimensions = (horizontal_loop_extent,4) + type = real + kind = kind_phys + intent = inout +[cmm_ice] + standard_name = surface_drag_wind_speed_for_momentum_in_air_over_ice + long_name = momentum exchange coefficient over ice + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[cmm_land] + 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 +[cmm_water] + standard_name = surface_drag_wind_speed_for_momentum_in_air_over_water + long_name = momentum exchange coefficient over water + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[cnv_dqldt] + standard_name = tendency_of_cloud_water_due_to_convective_microphysics + long_name = tendency of cloud water due to convective microphysics + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cnv_fice] + standard_name = ice_fraction_in_convective_tower + long_name = ice fraction in convective tower + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cnv_mfd] + standard_name = detrained_mass_flux + long_name = detrained mass flux + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cnv_ndrop] + standard_name = number_concentration_of_cloud_liquid_water_particles_for_detrainment + long_name = droplet number concentration in convective detrainment + units = m-3 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[cnv_nice] + standard_name = number_concentration_of_ice_crystals_for_detrainment + long_name = crystal number concentration in convective detrainment + units = m-3 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[cnvc] + standard_name = convective_cloud_cover + long_name = convective cloud cover + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[cnvw] + standard_name = convective_cloud_water_mixing_ratio + long_name = moist convective cloud water mixing ratio + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[ctei_r] + standard_name = cloud_top_entrainment_instability_value + long_name = cloud top entrainment instability value + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ctei_rml] + standard_name = grid_sensitive_critical_cloud_top_entrainment_instability_criteria + long_name = grid sensitive critical cloud top entrainment instability criteria + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[cumabs] + standard_name = maximum_column_heating_rate + long_name = maximum heating rate in column + units = K s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[dd_mf] + standard_name = instantaneous_atmosphere_downdraft_convective_mass_flux + long_name = (downdraft mass flux) * delt + units = kg m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[del] + standard_name = air_pressure_difference_between_midlayers + long_name = air pressure difference between midlayers + units = Pa + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[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 + units = m2 s-2 K-1 + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + intent = inout +[dlength] + standard_name = characteristic_grid_length_scale + long_name = representative horizontal length scale of grid box + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[dqdt] + standard_name = process_split_cumulative_tendency_of_tracers + long_name = updated tendency of the tracers due to model physics + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) + type = real + kind = kind_phys + intent = inout +[dqsfc1] + 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 +[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 +[dtdt] + standard_name = process_split_cumulative_tendency_of_air_temperature + long_name = air temperature tendency due to model physics + units = K s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[dtsfc1] + 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 +[dtzm] + standard_name = mean_change_over_depth_in_sea_water_temperature + long_name = mean of dT(z) (zsea1 to zsea2) + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[dt_mf] + standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux + long_name = (detrainment mass flux) * delt + units = kg m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[dudt] + standard_name = process_split_cumulative_tendency_of_x_wind + long_name = zonal wind tendency due to model physics + units = m s-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[dusfcg] + standard_name = instantaneous_x_stress_due_to_gravity_wave_drag + long_name = zonal surface stress due to orographic gravity wave drag + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[dusfc1] + standard_name = instantaneous_surface_x_momentum_flux + long_name = x momentum flux + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[dvdftra] + standard_name = tendency_of_vertically_diffused_tracer_concentration + long_name = updated tendency of the tracers due to vertical diffusion in PBL scheme + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_vertical_diffusion_tracers) + type = real + kind = kind_phys + intent = inout +[dvdt] + standard_name = process_split_cumulative_tendency_of_y_wind + long_name = meridional wind tendency due to model physics + units = m s-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[dvsfcg] + standard_name = instantaneous_y_stress_due_to_gravity_wave_drag + long_name = meridional surface stress due to orographic gravity wave drag + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[dvsfc1] + standard_name = instantaneous_surface_y_momentum_flux + long_name = y momentum flux + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[elvmax] + standard_name = maximum_subgrid_orography + long_name = maximum of subgrid height_above_mean_sea_level + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ep1d] + standard_name = surface_upward_potential_latent_heat_flux + long_name = surface upward potential latent heat flux + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ep1d_ice] + standard_name = surface_upward_potential_latent_heat_flux_over_ice + long_name = surface upward potential latent heat flux over ice + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ep1d_land] + 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 +[ep1d_water] + standard_name = surface_upward_potential_latent_heat_flux_over_water + long_name = surface upward potential latent heat flux over water + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[evap_ice] + 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 +[evap_land] + 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 +[evap_water] + 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 = inout +[pah] + standard_name = total_precipitation_advected_heat + long_name = precipitation advected heat - total + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ecan] + standard_name = evaporation_of_intercepted_water + long_name = evaporation of intercepted water + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[etran] + standard_name = transpiration_rate + long_name = transpiration rate + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[edir] + standard_name = soil_surface_evaporation_rate + long_name = soil surface evaporation rate + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ffhh_ice] + standard_name = Monin_Obukhov_similarity_function_for_heat_over_ice + long_name = Monin-Obukhov similarity function for heat over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ffhh_land] + standard_name = Monin_Obukhov_similarity_function_for_heat_over_land + long_name = Monin-Obukhov similarity function for heat over land + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ffhh_water] + standard_name = Monin_Obukhov_similarity_function_for_heat_over_water + long_name = Monin-Obukhov similarity function for heat over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[fh2] + standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m + long_name = Monin-Obukhov similarity parameter for heat at 2m + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[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 + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[fh2_land] + standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_land + long_name = Monin-Obukhov similarity parameter for heat at 2m over land + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[fh2_water] + standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_water + long_name = Monin-Obukhov similarity parameter for heat at 2m over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[flag_cice] + standard_name = flag_for_cice + long_name = flag for cice + units = flag + dimensions = (horizontal_loop_extent) + type = logical + intent = inout +[flag_guess] + standard_name = flag_for_guess_run + long_name = flag for guess run + units = flag + dimensions = (horizontal_loop_extent) + type = logical + intent = inout +[flag_iter] + standard_name = flag_for_iteration + long_name = flag for iteration + units = flag + dimensions = (horizontal_loop_extent) + type = logical + intent = inout +[flag_lakefreeze] + standard_name = flag_for_lake_water_freeze + long_name = flag for lake water freeze + units = flag + dimensions = (horizontal_loop_extent) + type = logical + intent = inout +[ffmm_ice] + standard_name = Monin_Obukhov_similarity_function_for_momentum_over_ice + long_name = Monin-Obukhov similarity function for momentum over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ffmm_land] + standard_name = Monin_Obukhov_similarity_function_for_momentum_over_land + long_name = Monin-Obukhov similarity function for momentum over land + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ffmm_water] + standard_name = Monin_Obukhov_similarity_function_for_momentum_over_water + long_name = Monin-Obukhov similarity function for momentum over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[fm10] + standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m + long_name = Monin-Obukhov similarity parameter for momentum at 10m + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[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 + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[fm10_land] + standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_land + long_name = Monin-Obukhov similarity parameter for momentum at 10m over land + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[fm10_water] + standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_water + long_name = Monin-Obukhov similarity parameter for momentum at 10m over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[frland] + standard_name = land_area_fraction_for_microphysics + long_name = land area fraction used in microphysics schemes + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[fscav] + standard_name = fraction_of_tracer_scavenged + long_name = fraction of the tracer (aerosols) that is scavenged by convection + units = km-1 + dimensions = (number_of_tracers_scavenged) + type = real + kind = kind_phys + intent = inout +[fswtr] + standard_name = fraction_of_cloud_top_water_scavenged + long_name = fraction of the tracer (cloud top water) that is scavenged by convection + units = km-1 + dimensions = (number_of_tracers_scavenged) + type = real + kind = kind_phys + intent = inout +[gabsbdlw] + standard_name = surface_downwelling_longwave_flux_absorbed_by_ground + long_name = total sky surface downward longwave flux absorbed by the ground + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[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 + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[gabsbdlw_land] + 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 = inout +[gabsbdlw_water] + 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 + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[gamma] + standard_name = anisotropy_of_subgrid_orography + long_name = anisotropy of subgrid height_above_mean_sea_level + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[gamq] + standard_name = countergradient_mixing_term_for_water_vapor + long_name = countergradient mixing term for water vapor + units = kg kg-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[gamt] + standard_name = countergradient_mixing_term_for_temperature + long_name = countergradient mixing term for temperature + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[gflx] + standard_name = upward_heat_flux_in_soil + long_name = soil heat flux + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[gflx_ice] + standard_name = upward_heat_flux_in_soil_over_ice + long_name = soil heat flux over ice + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[gflx_land] + 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 +[gflx_water] + standard_name = upward_heat_flux_in_soil_over_water + long_name = soil heat flux over water + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[graupelmp] + standard_name = lwe_thickness_of_graupel_amount + long_name = explicit graupel fall on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[gwdcu] + standard_name = tendency_of_x_wind_due_to_convective_gravity_wave_drag + long_name = zonal wind tendency due to convective gravity wave drag + units = m s-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[gwdcv] + standard_name = tendency_of_y_wind_due_to_convective_gravity_wave_drag + long_name = meridional wind tendency due to convective gravity wave drag + units = m s-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[zvfun] + standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction + long_name = function of surface roughness length and green vegetation fraction + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[hffac] + standard_name = surface_upward_sensible_heat_flux_reduction_factor + long_name = surface upward sensible heat flux reduction factor from canopy heat storage + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[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 + units = K m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[hflx_ice] + 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 +[hflx_land] + 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 +[hflx_water] + 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 = inout +[icemp] + standard_name = lwe_thickness_of_ice_amount + long_name = explicit ice fall on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[dry] + 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 = inout +[icy] + standard_name = flag_nonzero_sea_ice_surface_fraction + long_name = flag indicating presence of some sea ice surface area fraction + units = flag + dimensions = (horizontal_loop_extent) + type = logical + intent = inout +[lake] + standard_name = flag_nonzero_lake_surface_fraction + long_name = flag indicating presence of some lake surface area fraction + units = flag + dimensions = (horizontal_loop_extent) + type = logical + intent = inout +[ocean] + standard_name = flag_nonzero_ocean_surface_fraction + long_name = flag indicating presence of some ocean surface area fraction + units = flag + dimensions = (horizontal_loop_extent) + type = logical + intent = inout +[islmsk] + standard_name = sea_land_ice_mask + long_name = sea/land/ice mask (=0/1/2) + units = flag + dimensions = (horizontal_loop_extent) + type = integer + intent = inout +[islmsk_cice] + standard_name = sea_land_ice_mask_cice + long_name = sea/land/ice mask cice (=0/1/2) + units = flag + dimensions = (horizontal_loop_extent) + type = integer + intent = inout +[wet] + standard_name = flag_nonzero_wet_surface_fraction + long_name = flag indicating presence of some ocean or lake surface area fraction + units = flag + dimensions = (horizontal_loop_extent) + type = logical + intent = inout +[kbot] + standard_name = vertical_index_at_cloud_base + long_name = vertical index at cloud base + units = index + dimensions = (horizontal_loop_extent) + type = integer + intent = inout +[kcnv] + standard_name = flag_deep_convection + long_name = flag indicating whether convection occurs in column (0 or 1) + units = flag + dimensions = (horizontal_loop_extent) + type = integer + intent = inout +[kinver] + standard_name = index_of_highest_temperature_inversion + long_name = index of highest temperature inversion + units = index + dimensions = (horizontal_loop_extent) + type = integer + intent = inout +[kpbl] + standard_name = vertical_index_at_top_of_atmosphere_boundary_layer + long_name = vertical index at top atmospheric boundary layer + units = index + dimensions = (horizontal_loop_extent) + type = integer + intent = inout +[ktop] + standard_name = vertical_index_at_cloud_top + long_name = vertical index at cloud top + units = index + dimensions = (horizontal_loop_extent) + type = integer + intent = inout +[ncgl] + standard_name = local_graupel_number_concentration + long_name = number concentration of graupel local to physics + units = kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[ncpr] + standard_name = local_rain_number_concentration + long_name = number concentration of rain local to physics + units = kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[ncps] + standard_name = local_snow_number_concentration + long_name = number concentration of snow local to physics + units = kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[oa4] + standard_name = asymmetry_of_subgrid_orography + long_name = asymmetry of subgrid height_above_mean_sea_level + units = none + dimensions = (horizontal_loop_extent,4) + type = real + kind = kind_phys + intent = inout +[oc] + standard_name = convexity_of_subgrid_orography + long_name = convexity of subgrid height_above_mean_sea_level + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[prcpmp] + standard_name = lwe_thickness_of_explicit_precipitation_amount + long_name = explicit precipitation (rain, ice, snow, graupel, ...) on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[prnum] + standard_name = prandtl_number + long_name = turbulent Prandtl number + units = none + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[q2mp] + standard_name = specific_humidity_at_2m_from_noahmp + long_name = 2 meter specific humidity from noahmp + units = kg kg-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[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 + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[qicn] + standard_name = mass_fraction_of_convective_cloud_ice + long_name = mass fraction of convective cloud ice water + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[qlcn] + standard_name = mass_fraction_of_convective_cloud_liquid_water + long_name = mass fraction of convective cloud liquid water + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[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 + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[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 + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[qss_ice] + 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 +[qss_land] + 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 +[qss_water] + 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 = inout +[fullradar_diag] + standard_name = do_full_radar_reflectivity + long_name = flag for computing full radar reflectivity + units = flag + dimensions = () + type = logical + intent = inout +[rainmp] + standard_name = lwe_thickness_of_explicit_rain_amount + long_name = explicit rain on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[raincd] + standard_name = lwe_thickness_of_deep_convective_precipitation_amount + long_name = deep convective rainfall amount on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[raincs] + standard_name = lwe_thickness_of_shallow_convective_precipitation_amount + long_name = shallow convective rainfall amount on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[rainmcadj] + standard_name = lwe_thickness_of_moist_convective_adj_precipitation_amount + long_name = adjusted moist convective rainfall amount on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[rainp] + standard_name = tendency_of_rain_water_mixing_ratio_due_to_microphysics + long_name = tendency of rain water mixing ratio due to microphysics + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[rb] + standard_name = bulk_richardson_number_at_lowest_model_level + long_name = bulk Richardson number at the surface + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[rb_ice] + standard_name = bulk_richardson_number_at_lowest_model_level_over_ice + long_name = bulk Richardson number at the surface over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[rb_land] + 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 +[rb_water] + standard_name = bulk_richardson_number_at_lowest_model_level_over_water + long_name = bulk Richardson number at the surface over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[max_hourly_reset] + standard_name = flag_reset_maximum_hourly_fields + long_name = flag for resetting maximum hourly fields + units = flag + dimensions = () + type = logical + intent = inout +[ext_diag_thompson_reset] + standard_name = flag_reset_extended_diagnostics_output_arrays_from_thompson_microphysics + long_name = flag for resetting extended diagnostics output arrays from thompson microphysics + units = flag + dimensions = () + type = logical + intent = inout +[rhc] + standard_name = critical_relative_humidity + long_name = critical relative humidity + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[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 +[save_q] + standard_name = tracer_concentration_save + long_name = tracer concentration before entering a physics scheme + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) + type = real + kind = kind_phys + intent = inout +[save_t] + standard_name = air_temperature_save + long_name = air temperature before entering a physics scheme + units = K + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[save_tcp] + standard_name = air_temperature_save_from_convective_parameterization + long_name = air temperature after cumulus parameterization + units = K + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[save_u] + standard_name = x_wind_save + long_name = x-wind before entering a physics scheme + units = m s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[save_v] + standard_name = y_wind_save + long_name = y-wind before entering a physics scheme + units = m s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[sigma] + standard_name = slope_of_subgrid_orography + long_name = slope of subgrid height_above_mean_sea_level + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[sigmaf] + 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 +[sigmafrac] + standard_name = convective_updraft_area_fraction + long_name = convective updraft area fraction + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[sigmatot] + standard_name = convective_updraft_area_fraction_at_model_interfaces + long_name = convective updraft area fraction at model interfaces + units = frac + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + intent = inout +[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 +[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 +[snowmp] + standard_name = lwe_thickness_of_snow_amount + long_name = explicit snow fall on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[snowmt] + standard_name = surface_snow_melt + long_name = snow melt during timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[stress] + standard_name = surface_wind_stress + long_name = surface wind stress + units = m2 s-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[stress_ice] + standard_name = surface_wind_stress_over_ice + long_name = surface wind stress over ice + units = m2 s-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[stress_land] + standard_name = surface_wind_stress_over_land + long_name = surface wind stress over land + units = m2 s-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[stress_water] + standard_name = surface_wind_stress_over_water + long_name = surface wind stress over water + units = m2 s-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[t2mmp] + standard_name = temperature_at_2m_from_noahmp + long_name = 2 meter temperature from noahmp + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[theta] + standard_name = angle_from_east_of_maximum_subgrid_orographic_variations + long_name = angle with_respect to east of maximum subgrid orographic variations + units = degree + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[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 + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tprcp_land] + 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 = inout +[tprcp_water] + standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_water + long_name = total precipitation amount in each time step over water + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tseal] + standard_name = surface_skin_temperature_for_nsst + long_name = ocean surface skin temperature + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tsfc_water] + 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 +[tsurf_ice] + standard_name = surface_skin_temperature_after_iteration_over_ice + long_name = surface skin temperature after iteration over ice + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tsurf_land] + 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 +[tsurf_water] + standard_name = surface_skin_temperature_after_iteration_over_water + long_name = surface skin temperature after iteration over water + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[uustar_ice] + standard_name = surface_friction_velocity_over_ice + long_name = surface friction velocity over ice + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[uustar_land] + standard_name = surface_friction_velocity_over_land + long_name = surface friction velocity over land + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[uustar_water] + standard_name = surface_friction_velocity_over_water + long_name = surface friction velocity over water + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[vdftra] + standard_name = vertically_diffused_tracer_concentration + long_name = tracer concentration diffused by PBL scheme + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_vertical_diffusion_tracers) + type = real + kind = kind_phys + intent = inout +[vegf1d] + standard_name = perturbation_of_vegetation_fraction + long_name = perturbation of vegetation fraction + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[lndp_vgf] + standard_name = magnitude_of_perturbation_of_vegetation_fraction + long_name = magnitude of perturbation of vegetation fraction + units = frac + dimensions = () + type = real + kind = kind_phys + intent = inout +[cf_upi] + standard_name = convective_cloud_fraction_for_microphysics + long_name = convective cloud fraction for microphysics + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[w_upi] + standard_name = vertical_velocity_for_updraft + long_name = vertical velocity for updraft + units = m s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[wcbmax] + standard_name = maximum_updraft_velocity_at_cloud_base + long_name = maximum updraft velocity at cloud base + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[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 = inout +[work1] + standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes + long_name = grid size related coefficient used in scale-sensitive schemes + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[work2] + standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes_complement + long_name = complement to work1 + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[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 + units = ratio + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[xcosz] + standard_name = instantaneous_cosine_of_zenith_angle + long_name = cosine of zenith angle at current time + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[xlai1d] + standard_name = perturbation_of_leaf_area_index + long_name = perturbation of leaf area index + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[xmu] + standard_name = zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes + long_name = zenith angle temporal adjustment factor for shortwave + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[z01d] + standard_name = perturbation_of_momentum_roughness_length + long_name = perturbation of momentum roughness length + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[zt1d] + standard_name = perturbation_of_heat_to_momentum_roughness_length_ratio + long_name = perturbation of heat to momentum roughness length ratio + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ztmax_ice] + standard_name = bounded_surface_roughness_length_for_heat_over_ice + long_name = bounded surface roughness length for heat over ice + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ztmax_land] + standard_name = bounded_surface_roughness_length_for_heat_over_land + long_name = bounded surface roughness length for heat over land + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[ztmax_water] + standard_name = bounded_surface_roughness_length_for_heat_over_water + long_name = bounded surface roughness length for heat over water + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[dudt_ngw] + standard_name = tendency_of_x_wind_due_to_nonorographic_gravity_wave_drag + long_name = zonal wind tendency due to non-stationary GWs + units = m s-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[dvdt_ngw] + standard_name = tendency_of_y_wind_due_to_nonorographic_gravity_wave_drag + long_name = meridional wind tendency due to non-stationary GWs + units = m s-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[dtdt_ngw] + standard_name = tendency_of_air_temperature_due_to_nonorographic_gravity_wave_drag + long_name = air temperature tendency due to non-stationary GWs + units = K s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[kdis_ngw] + standard_name = atmosphere_momentum_diffusivity_due_to_nonorographic_gravity_wave_drag + long_name = eddy mixing due to non-stationary GWs + units = m2 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[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 + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tau_tofd] + standard_name = instantaneous_momentum_flux_due_to_turbulent_orographic_form_drag + long_name = instantaneous momentum flux due to TOFD + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tau_mtb] + standard_name = instantaneous_momentum_flux_due_to_mountain_blocking_drag + long_name = instantaneous momentum flux due to mountain blocking drag + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tau_ogw] + standard_name = instantaneous_momentum_flux_due_to_orographic_gravity_wave_drag + long_name = instantaneous momentum flux due to orographic gravity wave drag + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tau_ngw] + standard_name = instantaneous_momentum_flux_due_to_nonstationary_gravity_wave + long_name = instantaneous momentum flux due to nonstationary gravity waves + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[zngw] + standard_name = height_of_launch_level_of_nonorographic_gravity_waves + long_name = height of launch level of non-stationary GWs + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[zmtb] + standard_name = height_of_mountain_blocking + long_name = height of mountain blocking drag + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[zlwb] + standard_name = height_of_low_level_wave_breaking + long_name = height of low level wave breaking + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[zogw] + standard_name = height_of_launch_level_of_orographic_gravity_wave + long_name = height of launch level of orographic gravity wave + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[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 + units = m s-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[dudt_tms] + standard_name = tendency_of_x_wind_due_to_turbulent_orographic_form_drag + long_name = instantaneous change in x wind due to TOFD + units = m s-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout +[varss] + standard_name = standard_deviation_of_subgrid_orography_small_scale + long_name = standard deviation of subgrid height_above_mean_sea_level small scale + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[ocss] + standard_name = convexity_of_subgrid_orography_small_scale + long_name = convexity of subgrid height_above_mean_sea_level small scale + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[oa4ss] + standard_name = asymmetry_of_subgrid_orography_small_scale + long_name = asymmetry of subgrid height_above_mean_sea_level small scale + units = none + dimensions = (horizontal_loop_extent,4) + type = real + kind = kind_phys + optional = True + intent = inout +[clxss] + standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height_small_scale + long_name = frac. of grid box with by subgrid height_above_mean_sea_level higher than critical height small scale + units = frac + dimensions = (horizontal_loop_extent,4) + type = real + kind = kind_phys + optional = True + intent = inout [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.F90 index 78cd23501..8e4f276ff 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.F90 @@ -1,32 +1,199 @@ !> \file GFS_suite_interstitial_rad_reset.f90 -!! Contains code to reset radiation-related interstitial variables - - module GFS_suite_interstitial_rad_reset - - contains - +!! ########################################################################################## +!! +!! Contains code to reset radiation-related interstitial variables in the GFS physics suite. +!! +!! ########################################################################################## +module GFS_suite_interstitial_rad_reset + use machine, only: kind_phys + use module_radsw_parameters, only: profsw_type, cmpfsw_type + use module_radlw_parameters, only: proflw_type + implicit none +contains !> \section arg_table_GFS_suite_interstitial_rad_reset_run Argument Table !! \htmlinclude GFS_suite_interstitial_rad_reset_run.html !! - subroutine GFS_suite_interstitial_rad_reset_run (Interstitial, Model, errmsg, errflg) - - use machine, only: kind_phys - use GFS_typedefs, only: GFS_control_type - use CCPP_typedefs, only: GFS_interstitial_type - - implicit none - - ! interface variables - type(GFS_interstitial_type), intent(inout) :: Interstitial - type(GFS_control_type), intent(in) :: Model - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - errmsg = '' - errflg = 0 - - call Interstitial%rad_reset(Model) + subroutine GFS_suite_interstitial_rad_reset_run (im, do_RRTMGP, clear_val, aerodp, alb1d, & + alpha, cldsa, cldtaulw, cldtausw, cloud_frac, cloud_lwp, cloud_reliq, cloud_iwp, & + cloud_reice, cloud_rwp, cloud_rerain, cloud_swp, cloud_resnow, de_lgth, delr, dzlyr, & + faerlw, faersw, gasvmr_co2, gasvmr_n2o, gasvmr_ch4, gasvmr_o2, gasvmr_co, & + gasvmr_cfc11, gasvmr_cfc12, gasvmr_cfc22, gasvmr_ccl4, gasvmr_cfc113, htlwc, htlw0, & + htswc, htsw0, idxday, kb, kd, kt, mbota, mtopa, nday, olyr, plvl, plyr, qlyr, raddt, & + sfcalb_nIR_dir, sfcalb_nIR_dif, sfcalb_uvvis_dir, sfcalb_uvvis_dif, tlvl, tlyr, tsfa,& + tsfg, scmpsw, tracer, tv_lay, relhum, qs_lay, q_lay, deltaZ, deltaZc, deltaP, p_lev, & + p_lay, t_lev, t_lay, cloud_overlap_param, precip_overlap_param, fluxlwUP_allsky, & + fluxlwDOWN_allsky, fluxlwUP_clrsky, fluxlwDOWN_clrsky, fluxswUP_allsky, & + fluxswDOWN_allsky, fluxswUP_clrsky, fluxswDOWN_clrsky, aerosolslw, aerosolssw, & + precip_frac, cld_cnv_frac, cnv_cloud_overlap_param, cld_cnv_lwp, cld_cnv_reliq, & + cld_cnv_iwp, cld_cnv_reice, cld_pbl_lwp, cld_pbl_reliq, cld_pbl_iwp, cld_pbl_reice, & + sfc_emiss_byband, sec_diff_byband, sfc_alb_nir_dir, sfc_alb_nir_dif, & + sfc_alb_uvvis_dir, sfc_alb_uvvis_dif, toa_src_sw, toa_src_lw, vmr_o2, vmr_h2o, & + vmr_o3, vmr_ch4, vmr_n2o, vmr_co2, flxprf_lw, flxprf_sw, errmsg, errflg) + ! + integer, intent(in ) :: im + logical, intent(in ) :: do_RRTMGP + real(kind_phys), intent(in ) :: clear_val + real (kind_phys), intent(inout) :: aerodp(:,:), alb1d(:), cldsa(:,:), & + cldtaulw(:,:), cldtausw(:,:), cloud_frac(:,:), cloud_lwp(:,:), cloud_reliq(:,:), & + cloud_iwp(:,:), cloud_reice(:,:), cloud_rwp(:,:), cloud_rerain(:,:), & + cloud_swp(:,:), cloud_resnow(:,:), de_lgth(:), delr(:,:), dzlyr(:,:), & + faerlw(:,:,:,:), faersw(:,:,:,:), gasvmr_co2(:,:), gasvmr_n2o(:,:), & + gasvmr_ch4(:,:), gasvmr_o2(:,:), gasvmr_co(:,:), gasvmr_cfc11(:,:), & + gasvmr_cfc12(:,:), gasvmr_cfc22(:,:), gasvmr_ccl4(:,:), gasvmr_cfc113(:,:), & + htlwc(:,:), htlw0(:,:), htswc(:,:), htsw0(:,:), olyr(:,:), plvl(:,:), plyr(:,:), & + qlyr(:,:), raddt, sfcalb_nIR_dir(:), sfcalb_nIR_dif(:), sfcalb_uvvis_dir(:), & + sfcalb_uvvis_dif(:), tlvl(:,:), tlyr(:,:), tsfa(:), tsfg(:) + type (cmpfsw_type), intent(inout) :: scmpsw(:) + real(kind_phys), intent(inout), optional :: alpha(:,:), tracer(:,:,:), & + tv_lay(:,:), relhum(:,:), qs_lay(:,:), q_lay(:,:), deltaZ(:,:), deltaZc(:,:), & + deltaP(:,:), p_lev(:,:), p_lay(:,:), t_lev(:,:), t_lay(:,:), & + cloud_overlap_param(:,:), precip_overlap_param(:,:), fluxlwUP_allsky(:,:), & + fluxlwDOWN_allsky(:,:), fluxlwUP_clrsky(:,:), fluxlwDOWN_clrsky(:,:), & + fluxswUP_allsky(:,:), fluxswDOWN_allsky(:,:), fluxswUP_clrsky(:,:), & + fluxswDOWN_clrsky(:,:), aerosolslw(:,:,:,:), aerosolssw(:,:,:,:), precip_frac(:,:),& + cld_cnv_frac(:,:), cnv_cloud_overlap_param(:,:), cld_cnv_lwp(:,:), & + cld_cnv_reliq(:,:), cld_cnv_iwp(:,:), cld_cnv_reice(:,:), cld_pbl_lwp(:,:), & + cld_pbl_reliq(:,:), cld_pbl_iwp(:,:), cld_pbl_reice(:,:), sfc_emiss_byband(:,:), & + sec_diff_byband(:,:), sfc_alb_nir_dir(:,:), sfc_alb_nir_dif(:,:), & + sfc_alb_uvvis_dir(:,:), sfc_alb_uvvis_dif(:,:), toa_src_sw(:,:), toa_src_lw(:,:), & + vmr_o2(:,:), vmr_h2o(:,:), vmr_o3(:,:), vmr_ch4(:,:), vmr_n2o(:,:), vmr_co2(:,:) + type(proflw_type), intent(inout) :: flxprf_lw(:,:) + type(profsw_type), intent(inout) :: flxprf_sw(:,:) + integer, intent(inout) :: idxday(:), kb, kd, kt, mbota(:,:), mtopa(:,:), nday + character(len=*), intent(out ) :: errmsg + integer, intent(out ) :: errflg + + ! Initialize CCPP error logging + errmsg = '' + errflg = 0 - end subroutine GFS_suite_interstitial_rad_reset_run + ! Reset fields + aerodp = clear_val + alb1d = clear_val + if (.not. do_RRTMGP) then + alpha = clear_val + end if + cldsa = clear_val + cldtaulw = clear_val + cldtausw = clear_val + cloud_frac = clear_val + cloud_lwp = clear_val + cloud_reliq = clear_val + cloud_iwp = clear_val + cloud_reice = clear_val + cloud_rwp = clear_val + cloud_rerain = clear_val + cloud_swp = clear_val + cloud_resnow = clear_val + de_lgth = clear_val + delr = clear_val + dzlyr = clear_val + faerlw = clear_val + faersw = clear_val + gasvmr_co2 = clear_val + gasvmr_n2o = clear_val + gasvmr_ch4 = clear_val + gasvmr_o2 = clear_val + gasvmr_co = clear_val + gasvmr_cfc11 = clear_val + gasvmr_cfc12 = clear_val + gasvmr_cfc22 = clear_val + gasvmr_ccl4 = clear_val + gasvmr_cfc113 = clear_val + htlwc = clear_val + htlw0 = clear_val + htswc = clear_val + htsw0 = clear_val + idxday = 0 + kb = 0 + kd = 0 + kt = 0 + mbota = 0 + mtopa = 0 + nday = 0 + olyr = clear_val + plvl = clear_val + plyr = clear_val + qlyr = clear_val + raddt = clear_val + sfcalb_nIR_dir = clear_val + sfcalb_nIR_dif = clear_val + sfcalb_uvvis_dir = clear_val + sfcalb_uvvis_dif = clear_val + tlvl = clear_val + tlyr = clear_val + tsfa = clear_val + tsfg = clear_val + + ! Shortwave surface fluxes. + scmpsw%uvbfc = clear_val + scmpsw%uvbf0 = clear_val + scmpsw%nirbm = clear_val + scmpsw%nirdf = clear_val + scmpsw%visbm = clear_val + scmpsw%visdf = clear_val - end module GFS_suite_interstitial_rad_reset \ No newline at end of file + ! RRMTGP + if (do_RRTMGP) then + tracer = clear_val + tv_lay = clear_val + relhum = clear_val + qs_lay = clear_val + q_lay = clear_val + deltaZ = clear_val + deltaZc = clear_val + deltaP = clear_val + p_lev = clear_val + p_lay = clear_val + t_lev = clear_val + t_lay = clear_val + cloud_overlap_param = clear_val + precip_overlap_param = clear_val + fluxlwUP_allsky = clear_val + fluxlwDOWN_allsky = clear_val + fluxlwUP_clrsky = clear_val + fluxlwDOWN_clrsky = clear_val + fluxswUP_allsky = clear_val + fluxswDOWN_allsky = clear_val + fluxswUP_clrsky = clear_val + fluxswDOWN_clrsky = clear_val + aerosolslw = clear_val + aerosolssw = clear_val + precip_frac = clear_val + cld_cnv_frac = clear_val + cnv_cloud_overlap_param = clear_val + cld_cnv_lwp = clear_val + cld_cnv_reliq = clear_val + cld_cnv_iwp = clear_val + cld_cnv_reice = clear_val + cld_pbl_lwp = clear_val + cld_pbl_reliq = clear_val + cld_pbl_iwp = clear_val + cld_pbl_reice = clear_val + sfc_emiss_byband = clear_val + sec_diff_byband = clear_val + sfc_alb_nir_dir = clear_val + sfc_alb_nir_dif = clear_val + sfc_alb_uvvis_dir = clear_val + sfc_alb_uvvis_dif = clear_val + toa_src_sw = clear_val + toa_src_lw = clear_val + vmr_o2 = clear_val + vmr_h2o = clear_val + vmr_o3 = clear_val + vmr_ch4 = clear_val + vmr_n2o = clear_val + vmr_co2 = clear_val + flxprf_lw%upfxc = clear_val + flxprf_lw%dnfxc = clear_val + flxprf_lw%upfx0 = clear_val + flxprf_lw%dnfx0 = clear_val + flxprf_sw%upfxc = clear_val + flxprf_sw%dnfxc = clear_val + flxprf_sw%upfx0 = clear_val + flxprf_sw%dnfx0 = clear_val + end if + ! + end subroutine GFS_suite_interstitial_rad_reset_run + ! +end module GFS_suite_interstitial_rad_reset diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.meta index aaaff02f5..302caa62c 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.meta @@ -1,26 +1,925 @@ [ccpp-table-properties] name = GFS_suite_interstitial_rad_reset type = scheme - dependencies = ../../hooks/machine.F + relative_path = ../../ + dependencies = hooks/machine.F,Radiation/RRTMG/radsw_param.f,Radiation/RRTMG/radlw_param.f ######################################################################## [ccpp-arg-table] name = GFS_suite_interstitial_rad_reset_run type = scheme -[Interstitial] - standard_name = GFS_interstitial_type_instance - long_name = derived type GFS_interstitial_type in FV3 - units = DDT +[im] + standard_name = horizontal_loop_extent + long_name = horizontal loop extent + units = count dimensions = () - type = GFS_interstitial_type - intent = inout -[Model] - standard_name = GFS_control_type_instance - long_name = Fortran DDT containing FV3-GFS model control parameters - units = DDT + type = integer + intent = in +[do_RRTMGP] + standard_name = flag_for_rrtmgp_radiation_scheme + long_name = flag for RRTMGP scheme + units = flag + dimensions = () + type = logical + intent = in +[clear_val] + standard_name = constant_zero + long_name = constant for zero + units = none dimensions = () - type = GFS_control_type + type = real + kind = kind_phys intent = in +[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_loop_extent,number_of_species_for_aerosol_optical_depth) + type = real + kind = kind_phys + intent = inout +[alb1d] + standard_name = surface_albedo_perturbation + long_name = surface albedo perturbation + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[alpha] + standard_name = cloud_overlap_decorrelation_parameter + long_name = cloud overlap decorrelation parameter for RRTMG (but not for RRTMGP) + units = frac + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + optional = True + intent = inout +[cldsa] + standard_name = cloud_area_fraction_for_radiation + long_name = fraction of clouds for low, middle, high, total and BL + units = frac + dimensions = (horizontal_loop_extent,5) + type = real + kind = kind_phys + intent = inout +[cldtaulw] + standard_name = cloud_optical_depth_layers_at_10mu_band + long_name = approx 10mu band layer cloud optical depth + units = none + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[cldtausw] + standard_name = cloud_optical_depth_layers_at_0p55mu_band + long_name = approx .55mu band layer cloud optical depth + units = none + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[cloud_frac] + standard_name = total_cloud_fraction + long_name = layer total cloud fraction + units = frac + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[cloud_lwp] + standard_name = cloud_liquid_water_path + long_name = layer cloud liquid water path + units = g m-2 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[cloud_reliq] + standard_name = mean_effective_radius_for_liquid_cloud + long_name = mean effective radius for liquid cloud + units = um + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[cloud_iwp] + standard_name = cloud_ice_water_path + long_name = layer cloud ice water path + units = g m-2 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[cloud_reice] + standard_name = mean_effective_radius_for_ice_cloud + long_name = mean effective radius for ice cloud + units = um + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[cloud_rwp] + standard_name = cloud_rain_water_path + long_name = cloud rain water path + units = g m-2 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[cloud_rerain] + standard_name = mean_effective_radius_for_rain_drop + long_name = mean effective radius for rain drop + units = um + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[cloud_swp] + standard_name = cloud_snow_water_path + long_name = cloud snow water path + units = g m-2 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[cloud_resnow] + standard_name = mean_effective_radius_for_snow_flake + long_name = mean effective radius for snow flake + units = um + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[de_lgth] + standard_name = cloud_decorrelation_length + long_name = cloud decorrelation length + units = km + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[delr] + standard_name = layer_pressure_thickness_for_radiation + long_name = layer pressure thickness on radiation levels + units = hPa + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[dzlyr] + standard_name = layer_thickness_for_radiation + long_name = layer thickness on radiation levels + units = km + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[faerlw] + standard_name = aerosol_optical_properties_for_longwave_bands_01_16 + long_name = aerosol optical properties for longwave bands 01-16 + units = mixed + dimensions = (horizontal_loop_extent,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 = inout +[faersw] + standard_name = aerosol_optical_properties_for_shortwave_bands_01_16 + long_name = aerosol optical properties for shortwave bands 01-16 + units = mixed + dimensions = (horizontal_loop_extent,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 = inout +[gasvmr_co2] + standard_name = volume_mixing_ratio_of_co2 + long_name = volume mixing ratio co2 + units = m3 m-3 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[gasvmr_n2o] + standard_name = volume_mixing_ratio_of_n2o + long_name = volume mixing ratio no2 + units = m3 m-3 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[gasvmr_ch4] + standard_name = volume_mixing_ratio_of_ch4 + long_name = volume mixing ratio ch4 + units = m3 m-3 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[gasvmr_o2] + standard_name = volume_mixing_ratio_of_o2 + long_name = volume mixing ratio o2 + units = m3 m-3 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[gasvmr_co] + standard_name = volume_mixing_ratio_of_co + long_name = volume mixing ratio co + units = m3 m-3 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[gasvmr_cfc11] + standard_name = volume_mixing_ratio_of_cfc11 + long_name = volume mixing ratio cfc11 + units = m3 m-3 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[gasvmr_cfc12] + standard_name = volume_mixing_ratio_of_cfc12 + long_name = volume mixing ratio cfc12 + units = m3 m-3 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[gasvmr_cfc22] + standard_name = volume_mixing_ratio_of_cfc22 + long_name = volume mixing ratio cfc22 + units = m3 m-3 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[gasvmr_ccl4] + standard_name = volume_mixing_ratio_of_ccl4 + long_name = volume mixing ratio ccl4 + units = m3 m-3 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[gasvmr_cfc113] + standard_name = volume_mixing_ratio_of_cfc113 + long_name = volume mixing ratio cfc113 + units = m3 m-3 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[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 + units = K s-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[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 + units = K s-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[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 + units = K s-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[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 + units = K s-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[idxday] + standard_name = daytime_points + long_name = daytime points + units = index + dimensions = (horizontal_loop_extent) + type = integer + intent = inout +[kb] + standard_name = vertical_index_difference_between_layer_and_lower_bound + long_name = vertical index difference between layer and lower bound + units = index + dimensions = () + type = integer + intent = inout +[kd] + standard_name = vertical_index_difference_between_inout_and_local + long_name = vertical index difference between in/out and local + units = index + dimensions = () + type = integer + intent = inout +[kt] + standard_name = vertical_index_difference_between_layer_and_upper_bound + long_name = vertical index difference between layer and upper bound + units = index + dimensions = () + type = integer + intent = inout +[mbota] + standard_name = model_layer_number_at_cloud_base + long_name = vertical indices for low, middle and high cloud bases + units = index + dimensions = (horizontal_loop_extent,3) + type = integer + intent = inout +[mtopa] + standard_name = model_layer_number_at_cloud_top + long_name = vertical indices for low, middle and high cloud tops + units = index + dimensions = (horizontal_loop_extent,3) + type = integer + intent = inout +[nday] + standard_name = daytime_points_dimension + long_name = daytime points dimension + units = count + dimensions = () + type = integer + intent = inout +[olyr] + standard_name = ozone_concentration_at_layer_for_radiation + long_name = ozone concentration layer + units = kg kg-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[plvl] + standard_name = air_pressure_at_interface_for_radiation_in_hPa + long_name = air pressure at vertical interface for radiation calculation + units = hPa + dimensions = (horizontal_loop_extent,adjusted_vertical_level_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[plyr] + standard_name = air_pressure_at_layer_for_radiation_in_hPa + long_name = air pressure at vertical layer for radiation calculation + units = hPa + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[qlyr] + standard_name = water_vapor_specific_humidity_at_layer_for_radiation + long_name = specific humidity layer + units = kg kg-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[raddt] + standard_name = time_step_for_radiation + long_name = radiation time step + units = s + dimensions = () + type = real + kind = kind_phys + intent = inout +[sfcalb_nIR_dir] + standard_name = surface_albedo_due_to_near_IR_direct + long_name = surface albedo due to near IR direct beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[sfcalb_nIR_dif] + standard_name = surface_albedo_due_to_near_IR_diffused + long_name = surface albedo due to near IR diffused beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[sfcalb_uvvis_dir] + standard_name = surface_albedo_due_to_UV_and_VIS_direct + long_name = surface albedo due to UV+VIS direct beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[sfcalb_uvvis_dif] + standard_name = surface_albedo_due_to_UV_and_VIS_diffused + long_name = surface albedo due to UV+VIS diffused beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tlvl] + standard_name = air_temperature_at_interface_for_radiation + long_name = air temperature at vertical interface for radiation calculation + units = K + dimensions = (horizontal_loop_extent,adjusted_vertical_level_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[tlyr] + standard_name = air_temperature_at_layer_for_radiation + long_name = air temperature at vertical layer for radiation calculation + units = K + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = inout +[tsfa] + standard_name = surface_air_temperature_for_radiation + long_name = lowest model layer air temperature for radiation + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[tsfg] + standard_name = surface_ground_temperature_for_radiation + long_name = surface ground temperature for radiation + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout +[scmpsw] + standard_name = components_of_surface_downward_shortwave_fluxes + long_name = derived type for special components of surface downward shortwave fluxes + units = W m-2 + dimensions = (horizontal_loop_extent) + type = cmpfsw_type + intent = inout +[tracer] + standard_name = chemical_tracers + long_name = chemical tracers + units = g g-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) + type = real + kind = kind_phys + optional = True + intent = inout +[tv_lay] + standard_name = virtual_temperature + long_name = layer virtual temperature + units = K + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[relhum] + standard_name = relative_humidity + long_name = layer relative humidity + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[qs_lay] + standard_name = saturation_vapor_pressure + long_name = saturation vapor pressure + units = Pa + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[q_lay] + standard_name = water_vapor_mixing_ratio + long_name = water vaport mixing ratio + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[deltaZ] + standard_name = layer_thickness + long_name = layer_thickness + units = m + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[deltaZc] + standard_name = layer_thickness_from_layer_center + long_name = layer_thickness + units = m + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[deltaP] + standard_name = layer_thickness_in_Pa + long_name = layer_thickness_in_Pa + units = Pa + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[p_lev] + standard_name = air_pressure_at_interface_for_RRTMGP + long_name = air pressure level + units = Pa + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[p_lay] + standard_name = air_pressure_at_layer_for_RRTMGP + long_name = air pressure layer + units = Pa + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[t_lev] + standard_name = air_temperature_at_interface_for_RRTMGP + long_name = air temperature layer + units = K + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[t_lay] + standard_name = air_temperature_at_layer_for_RRTMGP + long_name = air temperature layer + units = K + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cloud_overlap_param] + standard_name = cloud_overlap_param + long_name = cloud overlap parameter for RRTMGP (but not for RRTMG) + units = km + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[precip_overlap_param] + standard_name = precip_overlap_param + long_name = precipitation overlap parameter + units = km + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[fluxlwUP_allsky] + standard_name = RRTMGP_lw_flux_profile_upward_allsky + long_name = RRTMGP upward longwave all-sky flux profile + units = W m-2 + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[fluxlwDOWN_allsky] + standard_name = RRTMGP_lw_flux_profile_downward_allsky + long_name = RRTMGP downward longwave all-sky flux profile + units = W m-2 + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[fluxlwUP_clrsky] + standard_name = RRTMGP_lw_flux_profile_upward_clrsky + long_name = RRTMGP upward longwave clr-sky flux profile + units = W m-2 + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[fluxlwDOWN_clrsky] + standard_name = RRTMGP_lw_flux_profile_downward_clrsky + long_name = RRTMGP downward longwave clr-sky flux profile + units = W m-2 + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[fluxswUP_allsky] + standard_name = RRTMGP_sw_flux_profile_upward_allsky + long_name = RRTMGP upward shortwave all-sky flux profile + units = W m-2 + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[fluxswDOWN_allsky] + standard_name = RRTMGP_sw_flux_profile_downward_allsky + long_name = RRTMGP downward shortwave all-sky flux profile + units = W m-2 + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[fluxswUP_clrsky] + standard_name = RRTMGP_sw_flux_profile_upward_clrsky + long_name = RRTMGP upward shortwave clr-sky flux profile + units = W m-2 + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[fluxswDOWN_clrsky] + standard_name = RRTMGP_sw_flux_profile_downward_clrsky + long_name = RRTMGP downward shortwave clr-sky flux profile + units = W m-2 + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[aerosolslw] + standard_name = RRTMGP_aerosol_optical_properties_for_longwave_bands_01_16 + long_name = aerosol optical properties for longwave bands 01-16 + units = mixed + dimensions = (horizontal_loop_extent,vertical_layer_dimension, number_of_longwave_bands,number_of_aerosol_output_fields_for_longwave_radiation) + type = real + kind = kind_phys + optional = True + intent = inout +[aerosolssw] + standard_name = RRTMGP_aerosol_optical_properties_for_shortwave_bands_01_16 + long_name = aerosol optical properties for shortwave bands 01-16 + units = mixed + dimensions = (horizontal_loop_extent,vertical_layer_dimension, number_of_shortwave_bands, number_of_aerosol_output_fields_for_shortwave_radiation) + type = real + kind = kind_phys + optional = True + intent = inout +[precip_frac] + standard_name = precipitation_fraction_by_layer + long_name = precipitation fraction in each layer + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cld_cnv_frac] + standard_name = convective_cloud_fraction_for_RRTMGP + long_name = layer convective cloud fraction + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cnv_cloud_overlap_param] + standard_name = convective_cloud_overlap_param + long_name = convective cloud overlap parameter + units = km + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cld_cnv_lwp] + standard_name = convective_cloud_liquid_water_path + long_name = layer convective cloud liquid water path + units = g m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cld_cnv_reliq] + standard_name = mean_effective_radius_for_liquid_convective_cloud + long_name = mean effective radius for liquid convective cloud + units = um + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cld_cnv_iwp] + standard_name = convective_cloud_ice_water_path + long_name = layer convective cloud ice water path + units = g m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cld_cnv_reice] + standard_name = mean_effective_radius_for_ice_convective_cloud + long_name = mean effective radius for ice convective cloud + units = um + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cld_pbl_lwp] + standard_name = MYNN_SGS_cloud_liquid_water_path + long_name = layer convective cloud liquid water path + units = g m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cld_pbl_reliq] + standard_name = mean_effective_radius_for_liquid_MYNN_SGS_cloud + long_name = mean effective radius for liquid MYNN_SGS cloud + units = um + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cld_pbl_iwp] + standard_name = MYNN_SGS_cloud_ice_water_path + long_name = layer convective cloud ice water path + units = g m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[cld_pbl_reice] + standard_name = mean_effective_radius_for_ice_MYNN_SGS_cloud + long_name = mean effective radius for ice MYNN_SGS cloud + units = um + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[sfc_emiss_byband] + standard_name = surface_emissivity_in_each_RRTMGP_LW_band + long_name = surface emissivity in each RRTMGP LW band + units = none + dimensions = (number_of_longwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[sec_diff_byband] + standard_name = secant_of_diffusivity_angle_each_RRTMGP_LW_band + long_name = secant of diffusivity angle in each RRTMGP LW band + units = none + dimensions = (number_of_longwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[sfc_alb_nir_dir] + standard_name = surface_albedo_nearIR_direct + long_name = near-IR (direct) surface albedo (sfc_alb_nir_dir) + units = none + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[sfc_alb_nir_dif] + standard_name = surface_albedo_nearIR_diffuse + long_name = near-IR (diffuse) surface albedo (sfc_alb_nir_dif) + units = none + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[sfc_alb_uvvis_dir] + standard_name = surface_albedo_uvvis_direct + long_name = UVVIS (direct) surface albedo (sfc_alb_uvvis_dir) + units = none + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[sfc_alb_uvvis_dif] + standard_name = surface_albedo_uvvis_diffuse + long_name = UVVIS (diffuse) surface albedo (sfc_alb_uvvis_dif) + units = none + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + optional = True + intent = inout +[toa_src_lw] + standard_name = toa_incident_lw_flux_by_spectral_point + long_name = TOA longwave incident flux at each spectral points + units = W m-2 + dimensions = (horizontal_loop_extent,number_of_longwave_spectral_points) + type = real + kind = kind_phys + optional = True + intent = inout +[toa_src_sw] + standard_name = toa_incident_sw_flux_by_spectral_point + long_name = TOA shortwave incident flux at each spectral points + units = W m-2 + dimensions = (horizontal_loop_extent,number_of_shortwave_spectral_points) + type = real + kind = kind_phys + optional = True + intent = inout +[vmr_o2] + standard_name = volume_mixing_ratio_for_o2 + long_name = molar mixing ratio of o2 in with respect to dry air + units = 1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[vmr_h2o] + standard_name = volume_mixing_ratio_for_h2o + long_name = molar mixing ratio of h2o in with respect to dry air + units = 1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[vmr_o3] + standard_name = volume_mixing_ratio_for_o3 + long_name = molar mixing ratio of o3 in with respect to dry air + units = 1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[vmr_ch4] + standard_name = volume_mixing_ratio_for_ch4 + long_name = molar mixing ratio of ch4 in with respect to dry air + units = 1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[vmr_n2o] + standard_name = volume_mixing_ratio_for_n2o + long_name = molar mixing ratio of n2o in with respect to dry air + units = 1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[vmr_co2] + standard_name = volume_mixing_ratio_for_co2 + long_name = molar mixing ratio of co2 in with respect to dry air + units = 1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + optional = True + intent = inout +[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 + optional = True + 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,vertical_interface_dimension) + type = profsw_type + optional = True + intent = inout [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta index e70eaaa4e..9c4aab4eb 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta @@ -30,34 +30,6 @@ dimensions = () type = integer intent = in -[lkm] - standard_name = control_for_lake_model_execution_method - long_name = control for lake model execution: 0=no lake, 1=lake, 2=lake+nsst - units = flag - dimensions = () - type = integer - intent = in -[iopt_lake] - standard_name = control_for_lake_model_selection - long_name = control for lake model selection - units = 1 - dimensions = () - type = integer - intent = in -[iopt_lake_clm] - standard_name = clm_lake_model_control_selection_value - long_name = value that indicates clm lake model in the control for lake model selection - units = 1 - dimensions = () - type = integer - intent = in -[use_lake_model] - standard_name = flag_for_using_lake_model - long_name = flag indicating lake points using a lake model - units = flag - dimensions = (horizontal_loop_extent) - type = integer - intent = in [rd] standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air @@ -95,13 +67,6 @@ dimensions = () type = logical intent = in -[frac_ice] - standard_name = flag_for_fractional_ice_when_fractional_landmask_is_disabled - long_name = flag for fractional ice when fractional landmask is disabled - units = flag - dimensions = () - type = logical - intent = in [flag_cice] standard_name = flag_for_cice long_name = flag for cice @@ -232,6 +197,21 @@ type = real kind = kind_phys intent = in +[garea] + standard_name = cell_area + long_name = area of the grid cell + units = m2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[frac_ice] + standard_name = flag_for_fractional_ice_when_fractional_landmask_is_disabled + long_name = flag for fractional ice when fractional landmask is disabled + units = flag + dimensions = () + type = logical + intent = in [cd] standard_name = surface_drag_coefficient_for_momentum_in_air long_name = surface exchange coeff for momentum @@ -937,62 +917,14 @@ type = real kind = kind_phys intent = in -[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 -[grav] - standard_name = gravitational_acceleration - long_name = gravitational acceleration - units = m s-2 - dimensions = () - type = real - kind = kind_phys - intent = in -[prsik1] - standard_name = surface_dimensionless_exner_function - long_name = dimensionless Exner function at the ground surface - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[prslk1] - standard_name = dimensionless_exner_function_at_surface_adjacent_layer - long_name = dimensionless Exner function at the lowest model layer - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[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 -[z1] - 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 -[garea] - standard_name = cell_area - long_name = area of the grid cell - units = m2 +[sigmaf] + 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 = in + intent = inout [zvfun] standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction long_name = function of surface roughness length and green vegetation fraction @@ -1040,14 +972,82 @@ type = real kind = kind_phys intent = inout -[sigmaf] - standard_name = bounded_vegetation_area_fraction - long_name = areal fractional cover of green vegetation bounded on the bottom - units = frac - dimensions = (horizontal_loop_extent) +[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 +[lkm] + standard_name = control_for_lake_model_execution_method + long_name = control for lake model execution: 0=no lake, 1=lake, 2=lake+nsst + units = flag + dimensions = () + type = integer + intent = in +[iopt_lake] + standard_name = control_for_lake_model_selection + long_name = control for lake model selection + units = 1 + dimensions = () + type = integer + intent = in +[iopt_lake_clm] + standard_name = clm_lake_model_control_selection_value + long_name = value that indicates clm lake model in the control for lake model selection + units = 1 + dimensions = () + type = integer + intent = in +[use_lake_model] + standard_name = flag_for_using_lake_model + long_name = flag indicating lake points using a lake model + units = flag + dimensions = (horizontal_loop_extent) + type = integer + intent = in +[grav] + standard_name = gravitational_acceleration + long_name = gravitational acceleration + units = m s-2 + dimensions = () + type = real + kind = kind_phys + intent = in +[prsik1] + standard_name = surface_dimensionless_exner_function + long_name = dimensionless Exner function at the ground surface + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[prslk1] + standard_name = dimensionless_exner_function_at_surface_adjacent_layer + long_name = dimensionless Exner function at the lowest model layer + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[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 +[z1] + 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 [ztmax_wat] standard_name = bounded_surface_roughness_length_for_heat_over_water long_name = bounded surface roughness length for heat over water diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.F90 index 4279e63c3..f4f20389a 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.F90 @@ -21,7 +21,7 @@ module GFS_surface_composites_pre !! \htmlinclude GFS_surface_composites_pre_run.html !! subroutine GFS_surface_composites_pre_run (im, lkm, frac_grid, iopt_lake, iopt_lake_clm, & - flag_cice, cplflx, cplice, cplwav2atm, lsm, lsm_ruc, & + flag_cice, cplflx, cplice, cplwav2atm, lsm, ilsm_ruc, & landfrac, lakefrac, lakedepth, oceanfrac, frland, & dry, icy, lake, use_lake_model, wet, hice, cice, zorlo, zorll, zorli, & snowd, snowd_lnd, snowd_ice, tprcp, tprcp_wat, tgrs1, & @@ -34,7 +34,7 @@ subroutine GFS_surface_composites_pre_run (im, lkm, frac_grid, iopt_lake, iopt_l implicit none ! Interface variables - integer, intent(in ) :: im, lkm, kdt, lsm, lsm_ruc, iopt_lake, iopt_lake_clm + integer, intent(in ) :: im, lkm, kdt, lsm, ilsm_ruc, iopt_lake, iopt_lake_clm logical, intent(in ) :: cplflx, cplice, cplwav2atm, frac_grid logical, dimension(:), intent(inout) :: flag_cice logical, dimension(:), intent(inout) :: dry, icy, lake, wet @@ -45,7 +45,7 @@ subroutine GFS_surface_composites_pre_run (im, lkm, frac_grid, iopt_lake, iopt_l real(kind=kind_phys), dimension(:), intent(in ) :: snowd, tprcp, uustar, weasd, qss, tisfc real(kind=kind_phys), dimension(:), intent(inout) :: tsfc, tsfco, tsfcl - real(kind=kind_phys), dimension(:), intent(inout) :: tgrs1 + real(kind=kind_phys), dimension(:), intent(in) :: tgrs1 real(kind=kind_phys), dimension(:), intent(inout) :: snowd_lnd, snowd_ice, tprcp_wat, & tprcp_lnd, tprcp_ice, tsfc_wat, tsurf_wat,tsurf_lnd, tsurf_ice, & uustar_wat, uustar_lnd, uustar_ice, weasd_lnd, weasd_ice, & @@ -234,7 +234,7 @@ subroutine GFS_surface_composites_pre_run (im, lkm, frac_grid, iopt_lake, iopt_l endif if (dry(i)) then ! Land uustar_lnd(i) = uustar(i) - if(lsm /= lsm_ruc) weasd_lnd(i) = weasd(i) + if(lsm /= ilsm_ruc) weasd_lnd(i) = weasd(i) tsurf_lnd(i) = tsfcl(i) ! DH* else @@ -248,7 +248,7 @@ subroutine GFS_surface_composites_pre_run (im, lkm, frac_grid, iopt_lake, iopt_l endif if (icy(i)) then ! Ice is_clm = lkm>0 .and. iopt_lake==iopt_lake_clm .and. use_lake_model(i)>0 - if(lsm /= lsm_ruc .and. .not.is_clm) then + if(lsm /= ilsm_ruc .and. .not.is_clm) then weasd_ice(i) = weasd(i) endif tsurf_ice(i) = tisfc(i) @@ -284,7 +284,7 @@ subroutine GFS_surface_composites_pre_run (im, lkm, frac_grid, iopt_lake, iopt_l endif endif enddo - elseif(lsm /= lsm_ruc) then ! do not do snow initialization with RUC lsm + elseif(lsm /= ilsm_ruc) then ! do not do snow initialization with RUC lsm do i=1,im if (icy(i)) then if (kdt == 1 .or. (.not. cplflx .or. lakefrac(i) > zero)) then diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.meta index d4824f3b0..9becc1d5d 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.meta @@ -28,6 +28,20 @@ dimensions = () type = logical intent = in +[iopt_lake] + standard_name = control_for_lake_model_selection + long_name = control for lake model selection + units = 1 + dimensions = () + type = integer + intent = in +[iopt_lake_clm] + standard_name = clm_lake_model_control_selection_value + long_name = value that indicates clm lake model in the control for lake model selection + units = 1 + dimensions = () + type = integer + intent = in [flag_cice] standard_name = flag_for_cice long_name = flag for cice @@ -63,7 +77,7 @@ dimensions = () type = integer intent = in -[lsm_ruc] +[ilsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model units = flag @@ -138,20 +152,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = in -[iopt_lake] - standard_name = control_for_lake_model_selection - long_name = control for lake model selection - units = 1 - dimensions = () - type = integer - intent = in -[iopt_lake_clm] - standard_name = clm_lake_model_control_selection_value - long_name = value that indicates clm lake model in the control for lake model selection - units = 1 - dimensions = () - type = integer - intent = in [wet] standard_name = flag_nonzero_wet_surface_fraction long_name = flag indicating presence of some ocean or lake surface area fraction diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 index 648f6bf81..76ed62d34 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 @@ -46,7 +46,7 @@ end subroutine GFS_surface_generic_post_init !! \htmlinclude GFS_surface_generic_post_run.html !! subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpllnd, cpl_fire, lssav, dry, icy, wet, & - lsm, lsm_noahmp, dtf, ep1d, gflx, tgrs_1, qgrs_1, ugrs_1, vgrs_1, & + lsm, ilsm_noahmp, dtf, ep1d, gflx, tgrs_1, qgrs_1, ugrs_1, vgrs_1, & adjsfcdlw, adjsfcdsw, adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd, adjsfculw, adjsfculw_wat, adjnirbmu, adjnirdfu, & adjvisbmu, adjvisdfu, t2m, q2m, u10m, v10m, tsfc, tsfc_wat, pgr, xcosz, evbs, evcw, trans, sbsno, snowc, snohf, pah, pahi, & epi, gfluxi, t1, q1, u1, v1, dlwsfci_cpl, dswsfci_cpl, dlwsfc_cpl, dswsfc_cpl, dnirbmi_cpl, dnirdfi_cpl, dvisbmi_cpl, & @@ -61,7 +61,7 @@ subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpl integer, intent(in) :: im logical, intent(in) :: cplflx, cplaqm, cplchm, cplwav, cpllnd, cpl_fire, lssav logical, dimension(:), intent(in) :: dry, icy, wet - integer, intent(in) :: lsm, lsm_noahmp + integer, intent(in) :: lsm, ilsm_noahmp real(kind=kind_phys), intent(in) :: dtf real(kind=kind_phys), dimension(:), intent(in) :: ep1d, gflx, tgrs_1, qgrs_1, ugrs_1, vgrs_1, adjsfcdlw, adjsfcdsw, & @@ -108,7 +108,7 @@ subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpl do i=1,im epi(i) = ep1d(i) gfluxi(i) = gflx(i) - if (lsm == lsm_noahmp) then + if (lsm == ilsm_noahmp) then pahi(i) = pah(i) endif t1(i) = tgrs_1(i) @@ -251,7 +251,7 @@ subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpl tecan(i) = tecan(i) + ecan(i) * dtf tetran(i) = tetran(i) + etran(i) * dtf tedir(i) = tedir(i) + edir(i) * dtf - if (lsm == lsm_noahmp) then + if (lsm == ilsm_noahmp) then paha(i) = paha(i) + pah(i) * dtf twa(i) = waxy(i) endif diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta index 5e7949b8f..6e6275767 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta @@ -168,7 +168,7 @@ dimensions = () type = integer intent = in -[lsm_noahmp] +[ilsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model units = flag @@ -454,7 +454,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = in + intent = inout optional = True [epi] standard_name = instantaneous_surface_potential_evaporation @@ -968,6 +968,14 @@ type = real kind = kind_phys intent = in +[zvfun] + standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction + long_name = function of surface roughness length and green vegetation fraction + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in [hflx] standard_name = surface_upward_temperature_flux long_name = kinematic surface upward sensible heat flux @@ -992,14 +1000,6 @@ type = real kind = kind_phys intent = out -[zvfun] - standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction - long_name = function of surface roughness length and green vegetation fraction - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in [hffac] standard_name = surface_upward_sensible_heat_flux_reduction_factor long_name = surface upward sensible heat flux reduction factor from canopy heat storage diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_pre.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_pre.meta index 30c69732c..1cf4a72ab 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_pre.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_pre.meta @@ -72,6 +72,13 @@ dimensions = (horizontal_dimension) type = integer intent = inout +[vtype_save] + standard_name = vegetation_type_classification_save + long_name = vegetation type for lsm save + units = index + dimensions = (horizontal_dimension) + type = integer + intent = out [stype_save] standard_name = soil_type_classification_save long_name = soil type for lsm save @@ -86,13 +93,6 @@ dimensions = (horizontal_dimension) type = integer intent = out -[vtype_save] - standard_name = vegetation_type_classification_save - long_name = vegetation type for lsm save - units = index - dimensions = (horizontal_dimension) - type = integer - intent = out [slope_save] standard_name = surface_slope_classification_save long_name = sfc slope type for lsm save @@ -198,34 +198,6 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout -[vtype_save] - standard_name = vegetation_type_classification_save - long_name = vegetation type for lsm save - units = index - dimensions = (horizontal_loop_extent) - type = integer - intent = out -[stype_save] - standard_name = soil_type_classification_save - long_name = soil type for lsm save - units = index - dimensions = (horizontal_loop_extent) - type = integer - intent = out -[scolor_save] - standard_name = soil_color_classification_save - long_name = soil color for lsm save - units = index - dimensions = (horizontal_loop_extent) - type = integer - intent = out -[slope_save] - standard_name = surface_slope_classification_save - long_name = sfc slope type for lsm save - units = index - dimensions = (horizontal_loop_extent) - type = integer - intent = out [prsik_1] standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at lowest model interface @@ -458,6 +430,34 @@ type = real kind = kind_phys intent = out +[vtype_save] + standard_name = vegetation_type_classification_save + long_name = vegetation type for lsm save + units = index + dimensions = (horizontal_loop_extent) + type = integer + intent = out +[stype_save] + standard_name = soil_type_classification_save + long_name = soil type for lsm save + units = index + dimensions = (horizontal_loop_extent) + type = integer + intent = out +[scolor_save] + standard_name = soil_color_classification_save + long_name = soil color for lsm save + units = index + dimensions = (horizontal_loop_extent) + type = integer + intent = out +[slope_save] + standard_name = surface_slope_classification_save + long_name = sfc slope type for lsm save + units = index + dimensions = (horizontal_loop_extent) + type = integer + intent = out [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.F90 index 252b1e5a2..101ae9082 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.F90 @@ -13,7 +13,7 @@ module GFS_surface_loop_control_part2 !! #endif !> \section looptwo_general General Algorithm - subroutine GFS_surface_loop_control_part2_run (im, lsm, lsm_noahmp, iter,& + subroutine GFS_surface_loop_control_part2_run (im, lsm, ilsm_noahmp, iter,& wind, flag_guess, flag_iter, dry, wet, icy, nstf_name1, errmsg, errflg) use machine, only: kind_phys @@ -24,7 +24,7 @@ subroutine GFS_surface_loop_control_part2_run (im, lsm, lsm_noahmp, iter,& integer, intent(in) :: im integer, intent(in) :: iter integer, intent(in) :: lsm - integer, intent(in) :: lsm_noahmp + integer, intent(in) :: ilsm_noahmp real(kind=kind_phys), dimension(:), intent(in) :: wind logical, dimension(:), intent(inout) :: flag_guess logical, dimension(:), intent(inout) :: flag_iter @@ -47,7 +47,7 @@ subroutine GFS_surface_loop_control_part2_run (im, lsm, lsm_noahmp, iter,& if (iter == 1 .and. wind(i) < 2.0d0) then !if (dry(i) .or. (wet(i) .and. .not.icy(i) .and. nstf_name1 > 0)) then - if((dry(i) .and. lsm /= lsm_noahmp) .or. (wet(i) .and. nstf_name1 > 0)) then + if((dry(i) .and. lsm /= ilsm_noahmp) .or. (wet(i) .and. nstf_name1 > 0)) then flag_iter(i) = .true. endif endif diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.meta index ba19bf437..0b11b0dc7 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.meta @@ -22,7 +22,7 @@ dimensions = () type = integer intent = in -[lsm_noahmp] +[ilsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model units = flag diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/ccpp_suite_simulator.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/ccpp_suite_simulator.meta index 3c91faaeb..e52ff8c52 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/ccpp_suite_simulator.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/ccpp_suite_simulator.meta @@ -49,6 +49,34 @@ dimensions = (8) type = integer intent = in +[iactive_T] + standard_name = index_for_active_T_in_CCPP_suite_simulator + long_name = index into active process tracer array for temperature in CCPP suite simulator + units = count + dimensions = () + type = integer + intent = in +[iactive_u] + standard_name = index_for_active_u_in_CCPP_suite_simulator + long_name = index into active process tracer array for zonal wind in CCPP suite simulator + units = count + dimensions = () + type = integer + intent = in +[iactive_v] + standard_name = index_for_active_v_in_CCPP_suite_simulator + long_name = index into active process tracer array for meridional wind in CCPP suite simulator + units = count + dimensions = () + type = integer + intent = in +[iactive_q] + standard_name = index_for_active_q_in_CCPP_suite_simulator + long_name = index into active process tracer array for moisture in CCPP suite simulator + units = count + dimensions = () + type = integer + intent = in [proc_start] standard_name = index_for_first_physics_process_in_CCPP_suite_simulator long_name = index for first physics process in CCPP suite simulator @@ -63,6 +91,13 @@ dimensions = () type = integer intent = inout +[physics_process] + standard_name = physics_process_type_for_CCPP_suite_simulator + long_name = physics process type for CCPP suite simulator + units = mixed + dimensions = (number_of_physics_process_in_CCPP_suite_simulator) + type = base_physics_process + intent = inout [in_pre_active] standard_name = flag_to_indicate_location_in_physics_process_loop_before_active_scheme long_name = flag to indicate location in physics process loop before active scheme @@ -117,34 +152,6 @@ type = real kind = kind_phys intent = in -[iactive_T] - standard_name = index_for_active_T_in_CCPP_suite_simulator - long_name = index into active process tracer array for temperature in CCPP suite simulator - units = count - dimensions = () - type = integer - intent = in -[iactive_u] - standard_name = index_for_active_u_in_CCPP_suite_simulator - long_name = index into active process tracer array for zonal wind in CCPP suite simulator - units = count - dimensions = () - type = integer - intent = in -[iactive_v] - standard_name = index_for_active_v_in_CCPP_suite_simulator - long_name = index into active process tracer array for meridional wind in CCPP suite simulator - units = count - dimensions = () - type = integer - intent = in -[iactive_q] - standard_name = index_for_active_q_in_CCPP_suite_simulator - long_name = index into active process tracer array for moisture in CCPP suite simulator - units = count - dimensions = () - type = integer - intent = in [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -177,13 +184,6 @@ type = real kind = kind_phys intent = inout -[physics_process] - standard_name = physics_process_type_for_CCPP_suite_simulator - long_name = physics process type for CCPP suite simulator - units = mixed - dimensions = (number_of_physics_process_in_CCPP_suite_simulator) - type = base_physics_process - intent = inout [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.meta index 7108e2f97..721358a04 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.meta @@ -229,7 +229,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = inout + intent = in [pratemax] standard_name = maximum_precipitation_rate_over_maximum_hourly_time_interval long_name = maximum precipitation rate over maximum hourly time interval @@ -238,6 +238,40 @@ type = real kind = kind_phys intent = inout +[lightning_threat] + standard_name = do_lightning_threat_index_calculations + long_name = enables the lightning threat index calculations + units = flag + dimensions = () + type = logical + intent = in +[ltg1_max] + standard_name = lightning_threat_index_1 + long_name = lightning threat index 1 + units = flashes min-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout + optional = True +[ltg2_max] + standard_name = lightning_threat_index_2 + long_name = lightning threat index 2 + units = flashes min-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout + optional = True +[ltg3_max] + standard_name = lightning_threat_index_3 + long_name = lightning threat index 3 + units = flashes min-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout + optional = True [wgrs] standard_name = unsmoothed_nonhydrostatic_upward_air_velocity long_name = unsmoothed non-hydrostatic upward air velocity @@ -247,6 +281,14 @@ kind = kind_phys intent = in optional = True +[prsi] + standard_name = air_pressure_at_interface + long_name = air pressure at model layer interfaces + units = Pa + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + intent = in [qgraupel] standard_name = graupel_mixing_ratio long_name = ratio of mass of graupel to mass of dry air plus vapor (without condensates) @@ -271,14 +313,6 @@ type = real kind = kind_phys intent = in -[con_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 [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -287,45 +321,11 @@ type = real kind = kind_phys intent = in -[lightning_threat] - standard_name = do_lightning_threat_index_calculations - long_name = enables the lightning threat index calculations - units = flag +[con_rd] + standard_name = gas_constant_of_dry_air + long_name = ideal gas constant for dry air + units = J kg-1 K-1 dimensions = () - type = logical - intent = in -[ltg1_max] - standard_name = lightning_threat_index_1 - long_name = lightning threat index 1 - units = flashes min-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = True -[ltg2_max] - standard_name = lightning_threat_index_2 - long_name = lightning threat index 2 - units = flashes min-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = True -[ltg3_max] - standard_name = lightning_threat_index_3 - long_name = lightning threat index 3 - units = flashes min-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = True -[prsi] - standard_name = air_pressure_at_interface - long_name = air pressure at model layer interfaces - units = Pa - dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys intent = in diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.meta index 55b9e07b1..62c44abed 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.meta @@ -6,19 +6,3 @@ [ccpp-arg-table] name = base_physics_process type = ddt - -######################################################################## -[ccpp-table-properties] - name = module_ccpp_suite_simulator - type = module - dependencies = ../../hooks/machine.F - -[ccpp-arg-table] - name = module_ccpp_suite_simulator - type = module -[base_physics_process] - standard_name = base_physics_process - long_name = definition of type base_physics_process - units = DDT - dimensions = () - type = base_physics_process diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.meta index 9f7712d53..2e1085be1 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.meta @@ -25,13 +25,6 @@ type = real kind = kind_phys intent = in -[levs] - standard_name = vertical_layer_dimension - long_name = vertical layer dimension - units = count - dimensions = () - type = integer - intent = in [fhswr] standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation @@ -40,6 +33,13 @@ type = real kind = kind_phys intent = in +[levs] + standard_name = vertical_layer_dimension + long_name = vertical layer dimension + units = count + dimensions = () + type = integer + intent = in [flag_init] standard_name = flag_for_first_timestep long_name = flag signaling first time step for time integration loop @@ -157,14 +157,6 @@ type = real kind = kind_phys intent = inout -[qs] - standard_name = snow_mixing_ratio - long_name = ratio of mass of snow water to mass of dry air plus vapor (without condensates) - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout [qv] standard_name = specific_humidity long_name = water vapor specific humidity @@ -205,23 +197,22 @@ type = real kind = kind_phys intent = inout -[qg] - standard_name = graupel_mixing_ratio - long_name = graupel mixing ratio wrt dry+vapor (no condensates) +[qs] + standard_name = snow_mixing_ratio + long_name = ratio of mass of snow water to mass of dry air plus vapor (without condensates) units = kg kg-1 dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = inout -[ud_mf] - standard_name = instantaneous_atmosphere_updraft_convective_mass_flux - long_name = (updraft mass flux) * delt - units = kg m-2 +[qg] + standard_name = graupel_mixing_ratio + long_name = graupel mixing ratio wrt dry+vapor (no condensates) + units = kg kg-1 dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = in - optional = True + intent = inout [qci_conv] standard_name = convective_cloud_condesate_after_rainout long_name = convective cloud condesate after rainout @@ -247,6 +238,15 @@ type = real kind = kind_phys intent = inout +[ud_mf] + standard_name = instantaneous_atmosphere_updraft_convective_mass_flux + long_name = (updraft mass flux) * delt + units = kg m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + optional = True [imfdeepcnv] standard_name = control_for_deep_convection_scheme long_name = flag for mass-flux deep convection scheme @@ -345,7 +345,7 @@ standard_name = total_cloud_fraction long_name = layer total cloud fraction units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -353,7 +353,7 @@ standard_name = cloud_liquid_water_path long_name = layer cloud liquid water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -361,7 +361,7 @@ standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -369,7 +369,7 @@ standard_name = cloud_ice_water_path long_name = layer cloud ice water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout @@ -377,7 +377,7 @@ standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout diff --git a/physics/MP/Morrison_Gettelman/m_micro.meta b/physics/MP/Morrison_Gettelman/m_micro.meta index 6068d4dd9..96eeccdac 100644 --- a/physics/MP/Morrison_Gettelman/m_micro.meta +++ b/physics/MP/Morrison_Gettelman/m_micro.meta @@ -316,14 +316,6 @@ dimensions = () type = integer intent = in -[rainmin] - standard_name = lwe_thickness_of_minimum_rain_amount - long_name = minimum rain amount - units = m - dimensions = () - type = real - kind = kind_phys - intent = in [flipv] standard_name = flag_flip long_name = vertical flip logical @@ -707,6 +699,14 @@ dimensions = (horizontal_loop_extent) type = integer intent = inout +[rainmin] + standard_name = lwe_thickness_of_minimum_rain_amount + long_name = minimum rain amount + units = m + dimensions = () + type = real + kind = kind_phys + intent = in [cldreffl] standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle long_name = effective radius of cloud liquid water particle in micrometer diff --git a/physics/MP/NSSL/mp_nssl.meta b/physics/MP/NSSL/mp_nssl.meta index 0f672eedb..a4730faad 100644 --- a/physics/MP/NSSL/mp_nssl.meta +++ b/physics/MP/NSSL/mp_nssl.meta @@ -20,6 +20,13 @@ dimensions = () type = integer intent = in +[errflg] + standard_name = ccpp_error_code + long_name = error code for error handling in CCPP + units = 1 + dimensions = () + type = integer + intent = out [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -28,13 +35,6 @@ type = character kind = len=* intent = out -[errflg] - standard_name = ccpp_error_code - long_name = error code for error handling in CCPP - units = 1 - dimensions = () - type = integer - intent = out [threads] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available to scheme @@ -363,6 +363,24 @@ type = real kind = kind_phys intent = inout +[cccn] + standard_name = cloud_condensation_nuclei_number_concentration_of_new_state + long_name = number concentration of cloud condensation nuclei updated by physics + units = kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[cccna] + standard_name = activated_cloud_condensation_nuclei_number_concentration_of_new_state + long_name = number concentration of activated cloud condensation nuclei updated by physics + units = kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True [qc] standard_name = cloud_liquid_water_mixing_ratio_of_new_state long_name = cloud water mixing ratio wrt dry+vapor (no condensates) @@ -412,24 +430,6 @@ kind = kind_phys intent = inout optional = True -[cccn] - standard_name = cloud_condensation_nuclei_number_concentration_of_new_state - long_name = number concentration of cloud condensation nuclei updated by physics - units = kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[cccna] - standard_name = activated_cloud_condensation_nuclei_number_concentration_of_new_state - long_name = number concentration of activated cloud condensation nuclei updated by physics - units = kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True [ccw] standard_name = mass_number_concentration_of_cloud_liquid_water_particles_in_air_of_new_state long_name = cloud droplet number concentration @@ -580,7 +580,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = inout + intent = out [rain] standard_name = lwe_thickness_of_explicit_rain_amount long_name = explicit rain fall on physics timestep @@ -588,7 +588,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = inout + intent = out optional = True [graupel] standard_name = lwe_thickness_of_graupel_amount @@ -597,7 +597,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = inout + intent = out optional = True [ice] standard_name = lwe_thickness_of_ice_amount @@ -606,7 +606,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = inout + intent = out optional = True [snow] standard_name = lwe_thickness_of_snow_amount @@ -615,7 +615,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = inout + intent = out optional = True [sr] standard_name = ratio_of_snowfall_to_rainfall @@ -632,7 +632,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = out + intent = inout [do_radar_ref] standard_name = flag_for_radar_reflectivity long_name = flag for radar reflectivity @@ -704,16 +704,16 @@ dimensions = () type = integer intent = in -[nreffr] - standard_name = index_of_rain_effective_radius_in_xyz_dimensioned_restart_array - long_name = the index of rain effective radius in phy_f3d +[nseffr] + standard_name = index_of_snow_effective_radius_in_xyz_dimensioned_restart_array + long_name = the index of snow effective radius in phy_f3d units = index dimensions = () type = integer intent = in -[nseffr] - standard_name = index_of_snow_effective_radius_in_xyz_dimensioned_restart_array - long_name = the index of snow effective radius in phy_f3d +[nreffr] + standard_name = index_of_rain_effective_radius_in_xyz_dimensioned_restart_array + long_name = the index of rain effective radius in phy_f3d units = index dimensions = () type = integer diff --git a/physics/MP/Thompson/mp_thompson.F90 b/physics/MP/Thompson/mp_thompson.F90 index 78c7baf7e..a3efec234 100644 --- a/physics/MP/Thompson/mp_thompson.F90 +++ b/physics/MP/Thompson/mp_thompson.F90 @@ -354,7 +354,7 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & refl_10cm, fullradar_diag, & max_hail_diam_sfc, & do_radar_ref, aerfld, & - mpicomm, mpirank, mpiroot, blkno, & + mpicomm, mpirank, mpiroot, chunk_no, & ext_diag, diag3d, reset_diag3d, & spp_wts_mp, spp_mp, n_var_spp, & spp_prt_list, spp_var_list, & @@ -416,7 +416,7 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & logical, intent(in) :: sedi_semi integer, intent(in) :: decfl ! MPI and block information - integer, intent(in) :: blkno + integer, intent(in) :: chunk_no type(MPI_Comm), intent(in) :: mpicomm integer, intent(in) :: mpirank integer, intent(in) :: mpiroot @@ -526,7 +526,7 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & errmsg = '' errflg = 0 - if (first_time_step .and. istep==1 .and. blkno==1) then + if (first_time_step .and. istep==1 .and. chunk_no==1) then ! Check initialization state if (.not.is_initialized) then write(errmsg, fmt='((a))') 'mp_thompson_run called before mp_thompson_init' diff --git a/physics/MP/Thompson/mp_thompson.meta b/physics/MP/Thompson/mp_thompson.meta index f5338419b..2ec5ab118 100644 --- a/physics/MP/Thompson/mp_thompson.meta +++ b/physics/MP/Thompson/mp_thompson.meta @@ -721,14 +721,6 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = out -[max_hail_diam_sfc] - standard_name = max_hail_diameter_sfc - long_name = instantaneous maximum hail diameter at lowest model level - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys intent = inout [fullradar_diag] standard_name = do_full_radar_reflectivity @@ -737,6 +729,14 @@ dimensions = () type = logical intent = in +[max_hail_diam_sfc] + standard_name = max_hail_diameter_sfc + long_name = instantaneous maximum hail diameter at lowest model level + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout [do_radar_ref] standard_name = flag_for_radar_reflectivity long_name = flag for radar reflectivity @@ -773,9 +773,9 @@ dimensions = () type = integer intent = in -[blkno] - standard_name = ccpp_block_number - long_name = number of block for explicit data blocking in CCPP +[chunk_no] + standard_name = ccpp_chunk_number + long_name = number of chunk for contiguous data in CCPP units = index dimensions = () type = integer @@ -834,15 +834,6 @@ kind = kind_phys intent = in optional = True -[spp_stddev_cutoff] - standard_name = magnitude_of_spp_standard_deviation_cutoff - long_name = magnitude of spp standard deviation cutoff - units = 1 - dimensions = (number_of_perturbed_spp_schemes) - type = real - kind = kind_phys - intent = in - optional = True [spp_var_list] standard_name = perturbed_spp_schemes long_name = perturbed spp schemes @@ -852,6 +843,15 @@ kind = len=10 intent = in optional = True +[spp_stddev_cutoff] + standard_name = magnitude_of_spp_standard_deviation_cutoff + long_name = magnitude of spp standard deviation cutoff + units = 1 + dimensions = (number_of_perturbed_spp_schemes) + type = real + kind = kind_phys + intent = in + optional = True [cplchm] standard_name = flag_for_chemistry_coupling long_name = flag controlling cplchm collection (default off) diff --git a/physics/MP/Zhao_Carr/zhaocarr_gscond.f b/physics/MP/Zhao_Carr/zhaocarr_gscond.f index 2f70aa2f0..1ba72ae46 100644 --- a/physics/MP/Zhao_Carr/zhaocarr_gscond.f +++ b/physics/MP/Zhao_Carr/zhaocarr_gscond.f @@ -104,7 +104,7 @@ subroutine zhaocarr_gscond_run (im,km,dt,dtf,prsl,ps,q,clw1 & real(kind=kind_phys), intent(in) :: clw1(:,:), clw2(:,:) real(kind=kind_phys), intent(out) :: cwm(:,:) real(kind=kind_phys), intent(inout), optional :: & - &, tp(:,:), qp(:,:), psp(:) & + & tp(:,:), qp(:,:), psp(:) & &, tp1(:,:), qp1(:,:), psp1(:) real(kind=kind_phys), intent(in) :: u(:,:) logical, intent(in) :: lprnt diff --git a/physics/MP/Zhao_Carr/zhaocarr_precpd.f b/physics/MP/Zhao_Carr/zhaocarr_precpd.f index 922fedfcc..251f4506d 100644 --- a/physics/MP/Zhao_Carr/zhaocarr_precpd.f +++ b/physics/MP/Zhao_Carr/zhaocarr_precpd.f @@ -11,6 +11,9 @@ module zhaocarr_precpd logical :: is_initialized = .False. contains +!! \section arg_table_zhaocarr_precpd_init Argument Table +!! \htmlinclude zhaocarr_precpd_init.html +!! subroutine zhaocarr_precpd_init (imp_physics, & & imp_physics_zhao_carr, & & imp_physics_zhao_carr_pdf, & diff --git a/physics/PBL/MYJ/myjpbl_wrapper.F90 b/physics/PBL/MYJ/myjpbl_wrapper.F90 index cfa4fff09..7b58cfb71 100644 --- a/physics/PBL/MYJ/myjpbl_wrapper.F90 +++ b/physics/PBL/MYJ/myjpbl_wrapper.F90 @@ -8,6 +8,9 @@ MODULE myjpbl_wrapper contains +!! \section arg_table_myjpbl_wrapper_init Argument Table +!! \htmlinclude myjpbl_wrapper_init.html +!! subroutine myjpbl_wrapper_init (do_myjpbl,errmsg,errflg) logical, intent(in) :: do_myjpbl diff --git a/physics/PBL/MYJ/myjpbl_wrapper.meta b/physics/PBL/MYJ/myjpbl_wrapper.meta index 9b76ac453..8c7de4d35 100644 --- a/physics/PBL/MYJ/myjpbl_wrapper.meta +++ b/physics/PBL/MYJ/myjpbl_wrapper.meta @@ -599,6 +599,20 @@ dimensions = () type = logical intent = in +[gen_tend] + standard_name = flag_for_generic_tendency_due_to_planetary_boundary_layer + long_name = true if GFS_PBL_generic should calculate tendencies + units = flag + dimensions = () + type = logical + intent = in +[ldiag3d] + standard_name = flag_for_diagnostics_3D + long_name = flag for 3d diagnostic fields + units = flag + dimensions = () + type = logical + intent = in [dtend] standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables @@ -650,20 +664,6 @@ dimensions = () type = integer intent = in -[gen_tend] - standard_name = flag_for_generic_tendency_due_to_planetary_boundary_layer - long_name = true if GFS_PBL_generic should calculate tendencies - units = flag - dimensions = () - type = logical - intent = in -[ldiag3d] - standard_name = flag_for_diagnostics_3D - long_name = flag for 3d diagnostic fields - units = flag - dimensions = () - type = logical - intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/PBL/SATMEDMF/satmedmfvdif.meta b/physics/PBL/SATMEDMF/satmedmfvdif.meta index 2f0e0514d..194e2889c 100644 --- a/physics/PBL/SATMEDMF/satmedmfvdif.meta +++ b/physics/PBL/SATMEDMF/satmedmfvdif.meta @@ -496,22 +496,6 @@ type = real kind = kind_phys intent = in -[dtend] - standard_name = cumulative_change_of_state_variables - long_name = diagnostic tendencies for state variables - units = mixed - dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) - type = real - kind = kind_phys - intent = inout - optional = True -[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 - units = index - dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) - type = integer - intent = in [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 @@ -554,6 +538,22 @@ dimensions = () type = integer intent = in +[dtend] + standard_name = cumulative_change_of_state_variables + long_name = diagnostic tendencies for state variables + units = mixed + dimensions = (horizontal_loop_extent,vertical_layer_dimension,cumulative_change_of_state_variables_outer_index_max) + type = real + kind = kind_phys + intent = inout + optional = True +[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 + units = index + dimensions = (number_of_tracers_plus_one_hundred,number_of_cumulative_change_processes) + type = integer + intent = in [gen_tend] standard_name = flag_for_generic_tendency_due_to_planetary_boundary_layer long_name = true if GFS_PBL_generic should calculate tendencies diff --git a/physics/PBL/SATMEDMF/satmedmfvdifq.meta b/physics/PBL/SATMEDMF/satmedmfvdifq.meta index cdbfa67b7..66277c1d1 100644 --- a/physics/PBL/SATMEDMF/satmedmfvdifq.meta +++ b/physics/PBL/SATMEDMF/satmedmfvdifq.meta @@ -217,6 +217,22 @@ type = real kind = kind_phys intent = in +[t1] + standard_name = air_temperature + long_name = layer mean air temperature + units = K + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[q1] + standard_name = vertically_diffused_tracer_concentration + long_name = tracer concentration diffused by PBL scheme + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_vertical_diffusion_tracers) + type = real + kind = kind_phys + intent = in [usfco] standard_name = x_ocean_current long_name = zonal current at ocean surface @@ -240,22 +256,6 @@ dimensions = () type = integer intent = in -[t1] - standard_name = air_temperature - long_name = layer mean air temperature - units = K - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in -[q1] - standard_name = vertically_diffused_tracer_concentration - long_name = tracer concentration diffused by PBL scheme - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_vertical_diffusion_tracers) - type = real - kind = kind_phys - intent = in [swh] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky shortwave heating rate diff --git a/physics/PBL/SHOC/moninshoc.f b/physics/PBL/SHOC/moninshoc.f index 994b78bf6..4cc0b43e6 100644 --- a/physics/PBL/SHOC/moninshoc.f +++ b/physics/PBL/SHOC/moninshoc.f @@ -9,6 +9,9 @@ module moninshoc contains +!> \section arg_table_moninshoc_init Argument Table +!! \htmlinclude moninshocinitn.html +!! subroutine moninshoc_init (do_shoc, errmsg, errflg) implicit none diff --git a/physics/PBL/SHOC/shoc.F90 b/physics/PBL/SHOC/shoc.F90 index 9afe3b725..cfaa86251 100644 --- a/physics/PBL/SHOC/shoc.F90 +++ b/physics/PBL/SHOC/shoc.F90 @@ -14,6 +14,9 @@ module shoc contains +!> \section arg_table_shoc_init Argument Table +!! \htmlinclude shoc_init.html +!! subroutine shoc_init (do_shoc, errmsg, errflg) implicit none logical, intent(in) :: do_shoc diff --git a/physics/PBL/YSU/ysuvdif.F90 b/physics/PBL/YSU/ysuvdif.F90 index 09ba28625..fda8c4de7 100644 --- a/physics/PBL/YSU/ysuvdif.F90 +++ b/physics/PBL/YSU/ysuvdif.F90 @@ -11,6 +11,9 @@ module ysuvdif contains +!> \section arg_table_ysuvdif_init Argument Table +!! \htmlinclude ysuvdif_init.html +!! subroutine ysuvdif_init (do_ysu,errmsg,errflg) logical, intent(in) :: do_ysu diff --git a/physics/PBL/saYSU/shinhongvdif.F90 b/physics/PBL/saYSU/shinhongvdif.F90 index f56eae617..4a3bccef1 100644 --- a/physics/PBL/saYSU/shinhongvdif.F90 +++ b/physics/PBL/saYSU/shinhongvdif.F90 @@ -11,6 +11,9 @@ module shinhongvdif contains +!> \section arg_table_shinhongvdif_init Argument Table +!! \htmlinclude shinhongvdif_init.html +!! subroutine shinhongvdif_init (shinhong,errmsg,errflg) logical, intent(in) :: shinhong diff --git a/physics/Radiation/RRTMG/radlw_main.meta b/physics/Radiation/RRTMG/radlw_main.meta index f7a8ee43d..6191d366e 100644 --- a/physics/Radiation/RRTMG/radlw_main.meta +++ b/physics/Radiation/RRTMG/radlw_main.meta @@ -2,6 +2,7 @@ name = rrtmg_lw type = scheme dependencies = ../../hooks/machine.F,../mersenne_twister.f,../../hooks/physcons.F90,radlw_datatb.f,radlw_param.f + module_name = rrtmg_lw ######################################################################## [ccpp-arg-table] @@ -257,17 +258,17 @@ dimensions = () type = integer intent = in -[iovr_exp] - standard_name = flag_for_exponential_cloud_overlap_method - long_name = choice of exponential cloud overlap method - units = flag +[iovr_rand] + standard_name = flag_for_random_cloud_overlap_method + long_name = choice of random cloud overlap method + units = flag dimensions = () type = integer intent = in -[iovr_exprand] - standard_name = flag_for_exponential_random_cloud_overlap_method - long_name = choice of exponential-random cloud overlap method - units = flag +[iovr_maxrand] + standard_name = flag_for_maximum_random_cloud_overlap_method + long_name = choice of maximum-random cloud overlap method + units = flag dimensions = () type = integer intent = in @@ -278,24 +279,24 @@ dimensions = () type = integer intent = in -[iovr_rand] - standard_name = flag_for_random_cloud_overlap_method - long_name = choice of random cloud overlap method +[iovr_dcorr] + standard_name = flag_for_decorrelation_length_cloud_overlap_method + long_name = choice of decorrelation-length cloud overlap method units = flag dimensions = () type = integer intent = in -[iovr_maxrand] - standard_name = flag_for_maximum_random_cloud_overlap_method - long_name = choice of maximum-random cloud overlap method +[iovr_exp] + standard_name = flag_for_exponential_cloud_overlap_method + long_name = choice of exponential cloud overlap method units = flag dimensions = () type = integer intent = in -[iovr_dcorr] - standard_name = flag_for_decorrelation_length_cloud_overlap_method - long_name = choice of decorrelation-length cloud overlap method - units = flag +[iovr_exprand] + standard_name = flag_for_exponential_random_cloud_overlap_method + long_name = choice of exponential-random cloud overlap method + units = flag dimensions = () type = integer intent = in diff --git a/physics/Radiation/RRTMG/radlw_param.f b/physics/Radiation/RRTMG/radlw_param.f index bc2aae224..84800f118 100644 --- a/physics/Radiation/RRTMG/radlw_param.f +++ b/physics/Radiation/RRTMG/radlw_param.f @@ -90,7 +90,11 @@ module module_radlw_parameters ! real (kind=kind_phys) :: dnfxc !< total sky downward flux at sfc real (kind=kind_phys) :: dnfx0 !< clear sky downward flux at sfc end type sfcflw_type -! + +!> derived type for LW flux profiles +!! \section arg_table_proflw_type Argument Table +!! \htmlinclude proflw_type.html +!! type proflw_type !< define type construct for optional radiation flux profiles real (kind=kind_phys) :: upfxc !< level up flux for total sky real (kind=kind_phys) :: dnfxc !< level down flux for total sky diff --git a/physics/Radiation/RRTMG/radlw_param.meta b/physics/Radiation/RRTMG/radlw_param.meta index c2fc40df3..2e7f4e1b7 100644 --- a/physics/Radiation/RRTMG/radlw_param.meta +++ b/physics/Radiation/RRTMG/radlw_param.meta @@ -1,7 +1,8 @@ [ccpp-table-properties] name = topflw_type type = ddt - dependencies = + dependencies = + module_name = module_radlw_parameters [ccpp-arg-table] name = topflw_type @@ -12,6 +13,7 @@ name = sfcflw_type type = ddt dependencies = + module_name = module_radlw_parameters [ccpp-arg-table] name = sfcflw_type @@ -22,35 +24,8 @@ name = proflw_type type = ddt dependencies = + module_name = module_radlw_parameters [ccpp-arg-table] name = proflw_type type = ddt - -######################################################################## -[ccpp-table-properties] - name = module_radlw_parameters - type = module - dependencies = - -[ccpp-arg-table] - name = module_radlw_parameters - type = module -[topflw_type] - standard_name = topflw_type - long_name = definition of type topflw_type - units = DDT - dimensions = () - type = topflw_type -[sfcflw_type] - standard_name = sfcflw_type - long_name = definition of type sfcflw_type - units = DDT - dimensions = () - type = sfcflw_type -[proflw_type] - standard_name = proflw_type - long_name = definition of type proflw_type - units = DDT - dimensions = () - type = proflw_type diff --git a/physics/Radiation/RRTMG/radsw_main.meta b/physics/Radiation/RRTMG/radsw_main.meta index bd2898ad3..a848329bb 100644 --- a/physics/Radiation/RRTMG/radsw_main.meta +++ b/physics/Radiation/RRTMG/radsw_main.meta @@ -2,6 +2,7 @@ name = rrtmg_sw type = scheme dependencies = ../../hooks/machine.F,../mersenne_twister.f,../../hooks/physcons.F90,radsw_datatb.f,radsw_param.f + module_name = rrtmg_sw ######################################################################## [ccpp-arg-table] @@ -289,12 +290,12 @@ dimensions = () type = logical intent = in -[top_at_1] - standard_name = flag_for_vertical_ordering_in_radiation - long_name = flag for vertical ordering in radiation +[iswcliq] + standard_name = control_for_shortwave_radiation_liquid_clouds + long_name = sw optical property for liquid clouds units = flag dimensions = () - type = logical + type = integer intent = in [iswcice] standard_name = flag_for_optical_property_for_ice_clouds_for_shortwave_radiation @@ -303,13 +304,6 @@ dimensions = () type = integer intent = in -[iswcliq] - standard_name = control_for_shortwave_radiation_liquid_clouds - long_name = sw optical property for liquid clouds - units = flag - dimensions = () - type = integer - intent = in [isubcsw] standard_name = flag_for_sw_clouds_grid_approximation long_name = flag for sw clouds sub-grid approximation @@ -324,26 +318,34 @@ dimensions = () type = integer intent = in -[iovr_exp] - standard_name = flag_for_exponential_cloud_overlap_method - long_name = choice of exponential cloud overlap method - units = flag +[top_at_1] + standard_name = flag_for_vertical_ordering_in_radiation + long_name = flag for vertical ordering in radiation + units = flag dimensions = () - type = integer + type = logical intent = in -[iovr_exprand] - standard_name = flag_for_exponential_random_cloud_overlap_method - long_name = choice of exponential-random cloud overlap method - units = flag +[iswmode] + standard_name = control_for_sw_scattering_choice + long_name = control of rrtmg shortwave scattering choice + units = 1 dimensions = () type = integer intent = in -[iovr_max] - standard_name = flag_for_maximum_cloud_overlap_method - long_name = choice of maximum cloud overlap method +[cld_cf] + standard_name = total_cloud_fraction + long_name = total cloud fraction + units = frac + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys + intent = in +[lsswr] + standard_name = flag_for_calling_shortwave_radiation + long_name = flag to calculate SW irradiances units = flag dimensions = () - type = integer + type = logical intent = in [iovr_rand] standard_name = flag_for_random_cloud_overlap_method @@ -359,6 +361,13 @@ dimensions = () type = integer intent = in +[iovr_max] + standard_name = flag_for_maximum_cloud_overlap_method + long_name = choice of maximum cloud overlap method + units = flag + dimensions = () + type = integer + intent = in [iovr_dcorr] standard_name = flag_for_decorrelation_length_cloud_overlap_method long_name = choice of decorrelation-length cloud overlap method @@ -366,27 +375,19 @@ dimensions = () type = integer intent = in -[iswmode] - standard_name = control_for_sw_scattering_choice - long_name = control of rrtmg shortwave scattering choice - units = 1 +[iovr_exp] + standard_name = flag_for_exponential_cloud_overlap_method + long_name = choice of exponential cloud overlap method + units = flag dimensions = () type = integer intent = in -[cld_cf] - standard_name = total_cloud_fraction - long_name = total cloud fraction - units = frac - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys - intent = in -[lsswr] - standard_name = flag_for_calling_shortwave_radiation - long_name = flag to calculate SW irradiances - units = flag +[iovr_exprand] + standard_name = flag_for_exponential_random_cloud_overlap_method + long_name = choice of exponential-random cloud overlap method + units = flag dimensions = () - type = logical + type = integer intent = in [hswc] standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step_and_radiation_levels diff --git a/physics/Radiation/RRTMG/radsw_param.meta b/physics/Radiation/RRTMG/radsw_param.meta index d6b734a7a..0eba091b3 100644 --- a/physics/Radiation/RRTMG/radsw_param.meta +++ b/physics/Radiation/RRTMG/radsw_param.meta @@ -2,6 +2,7 @@ name = topfsw_type type = ddt dependencies = + module_name = module_radsw_parameters [ccpp-arg-table] name = topfsw_type @@ -12,6 +13,7 @@ name = sfcfsw_type type = ddt dependencies = + module_name = module_radsw_parameters [ccpp-arg-table] name = sfcfsw_type @@ -22,6 +24,7 @@ name = cmpfsw_type type = ddt dependencies = + module_name = module_radsw_parameters [ccpp-arg-table] name = cmpfsw_type @@ -32,41 +35,8 @@ name = profsw_type type = ddt dependencies = + module_name = module_radsw_parameters [ccpp-arg-table] name = profsw_type type = ddt - -######################################################################## -[ccpp-table-properties] - name = module_radsw_parameters - type = module - dependencies = - -[ccpp-arg-table] - name = module_radsw_parameters - type = module -[topfsw_type] - standard_name = topfsw_type - long_name = definition of type topfsw_type - units = DDT - dimensions = () - type = topfsw_type -[sfcfsw_type] - standard_name = sfcfsw_type - long_name = definition of type sfcfsw_type - units = DDT - dimensions = () - type = sfcfsw_type -[cmpfsw_type] - standard_name = cmpfsw_type - long_name = definition of type cmpfsw_type - units = DDT - dimensions = () - type = cmpfsw_type -[profsw_type] - standard_name = profsw_type - long_name = definition of type profsw_type - units = DDT - dimensions = () - type = profsw_type diff --git a/physics/Radiation/RRTMG/rrtmg_lw_post.F90 b/physics/Radiation/RRTMG/rrtmg_lw_post.F90 index 36661973d..75c7cfe2d 100644 --- a/physics/Radiation/RRTMG/rrtmg_lw_post.F90 +++ b/physics/Radiation/RRTMG/rrtmg_lw_post.F90 @@ -20,18 +20,18 @@ subroutine rrtmg_lw_post_run (im, levs, ltp, lm, kd, lslwr, lwhtr, & implicit none - integer, intent(in) :: im, levs, ltp, lm, kd - logical, intent(in) :: lslwr, lwhtr - real(kind=kind_phys), dimension(im), intent(in) :: tsfa - real(kind=kind_phys), dimension(im, LM+LTP), intent(in) :: htlwc - real(kind=kind_phys), dimension(im, LM+LTP), intent(in) :: htlw0 + integer, intent(in) :: im, levs, ltp, lm, kd + logical, intent(in) :: lslwr, lwhtr + real(kind=kind_phys), dimension(:), intent(in) :: tsfa + real(kind=kind_phys), dimension(:, :), intent(in) :: htlwc + real(kind=kind_phys), dimension(:, :), intent(in) :: htlw0 - type(sfcflw_type), dimension(im), intent(in) :: sfcflw + type(sfcflw_type), dimension(:), intent(in) :: sfcflw - real(kind=kind_phys), dimension(im), intent(inout) :: tsflw, sfcdlw - real(kind=kind_phys), dimension(im, levs), intent(inout) :: htrlw, lwhc - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg + real(kind=kind_phys), dimension(:), intent(inout) :: tsflw, sfcdlw + real(kind=kind_phys), dimension(:, :), intent(inout) :: htrlw, lwhc + character(len=*), intent(out) :: errmsg + integer, intent(out) :: errflg ! local variables integer :: k1, k diff --git a/physics/Radiation/RRTMG/rrtmg_lw_post.meta b/physics/Radiation/RRTMG/rrtmg_lw_post.meta index 6ed7c2365..aeee3e474 100644 --- a/physics/Radiation/RRTMG/rrtmg_lw_post.meta +++ b/physics/Radiation/RRTMG/rrtmg_lw_post.meta @@ -50,7 +50,7 @@ type = logical intent = in [lwhtr] - standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep_assuming_clear_sky + standard_name = flag_for_tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output lw heating rate (Radtend%lwhc) units = flag dimensions = () diff --git a/physics/Radiation/RRTMG/rrtmg_sw_post.meta b/physics/Radiation/RRTMG/rrtmg_sw_post.meta index 0a48b04d7..c777c1f31 100644 --- a/physics/Radiation/RRTMG/rrtmg_sw_post.meta +++ b/physics/Radiation/RRTMG/rrtmg_sw_post.meta @@ -64,7 +64,7 @@ type = logical intent = in [swhtr] - standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep_assuming_clear_sky + standard_name = flag_for_tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output sw heating rate (Radtend%swhc) units = flag dimensions = () diff --git a/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.meta b/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.meta index 4212adcc6..f5c84453a 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.meta +++ b/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.meta @@ -21,37 +21,6 @@ dimensions = () type = logical intent = in -[top_at_1] - standard_name = flag_for_vertical_ordering_in_radiation - long_name = flag for vertical ordering in radiation - units = flag - dimensions = () - type = logical - intent = in -[con_pi] - standard_name = pi - long_name = ratio of a circle's circumference to its diameter - units = none - dimensions = () - type = real - kind = kind_phys - intent = in -[con_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 -[con_g] - standard_name = gravitational_acceleration - long_name = gravitational acceleration - units = m s-2 - dimensions = () - type = real - kind = kind_phys - intent = in [ncol] standard_name = horizontal_loop_extent long_name = horizontal dimension @@ -178,35 +147,42 @@ dimensions = () type = integer intent = in -[aerodp] - standard_name = atmosphere_optical_thickness_due_to_ambient_aerosol_particles - long_name = vertical integrated optical depth for various aerosol species +[top_at_1] + standard_name = flag_for_vertical_ordering_in_radiation + long_name = flag for vertical ordering in radiation + units = flag + dimensions = () + type = logical + intent = in +[con_pi] + standard_name = pi + long_name = ratio of a circle's circumference to its diameter units = none - dimensions = (horizontal_loop_extent,number_of_species_for_aerosol_optical_depth) + dimensions = () type = real kind = kind_phys - intent = out -[aersw_tau] - standard_name = aerosol_optical_depth_for_shortwave_bands_01_16 - long_name = aerosol optical depth for shortwave bands 01-16 - units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_shortwave_radiation) + intent = in +[con_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 = out -[aersw_ssa] - standard_name = aerosol_single_scattering_albedo_for_shortwave_bands_01_16 - long_name = aerosol single scattering albedo for shortwave bands 01-16 - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_shortwave_radiation) + intent = in +[con_g] + standard_name = gravitational_acceleration + long_name = gravitational acceleration + units = m s-2 + dimensions = () type = real kind = kind_phys - intent = out -[aersw_g] - standard_name = aerosol_asymmetry_parameter_for_shortwave_bands_01_16 - long_name = aerosol asymmetry parameter for shortwave bands 01-16 + intent = in +[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_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_shortwave_radiation) + dimensions = (horizontal_loop_extent,number_of_species_for_aerosol_optical_depth) type = real kind = kind_phys intent = out @@ -214,7 +190,7 @@ standard_name = aerosol_optical_depth_for_longwave_bands_01_16 long_name = aerosol optical depth for longwave bands 01-16 units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_longwave_radiation) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) type = real kind = kind_phys intent = out @@ -222,7 +198,7 @@ standard_name = aerosol_single_scattering_albedo_for_longwave_bands_01_16 long_name = aerosol single scattering albedo for longwave bands 01-16 units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_longwave_radiation) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) type = real kind = kind_phys intent = out @@ -230,7 +206,31 @@ standard_name = aerosol_asymmetry_parameter_for_longwave_bands_01_16 long_name = aerosol asymmetry parameter for longwave bands 01-16 units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_longwave_radiation) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) + type = real + kind = kind_phys + intent = out +[aersw_tau] + standard_name = aerosol_optical_depth_for_shortwave_bands_01_16 + long_name = aerosol optical depth for shortwave bands 01-16 + units = none + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) + type = real + kind = kind_phys + intent = out +[aersw_ssa] + standard_name = aerosol_single_scattering_albedo_for_shortwave_bands_01_16 + long_name = aerosol single scattering albedo for shortwave bands 01-16 + units = frac + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) + type = real + kind = kind_phys + intent = out +[aersw_g] + standard_name = aerosol_asymmetry_parameter_for_shortwave_bands_01_16 + long_name = aerosol asymmetry parameter for shortwave bands 01-16 + units = none + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) type = real kind = kind_phys intent = out diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_main.meta b/physics/Radiation/RRTMGP/rrtmgp_lw_main.meta index ac1da1490..da791f4b3 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_main.meta +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_main.meta @@ -37,6 +37,15 @@ type = character intent = in kind = len=128 +[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 = True [doGP_cldoptics_PADE] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_PADE long_name = logical flag to control cloud optics scheme. @@ -51,16 +60,16 @@ dimensions = () type = logical intent = in -[doGP_sgs_cnv] - standard_name = flag_to_include_sgs_convective_cloud_in_RRTMGP - long_name = logical flag to control sgs convective cloud in RRTMGP +[doGP_sgs_pbl] + standard_name = flag_to_include_sgs_MYNN_EDMF_cloud_in_RRTMGP + long_name = logical flag to control MYNN-EDMF PBL cloud in RRTMGP units = flag dimensions = () type = logical intent = in -[doGP_sgs_pbl] - standard_name = flag_to_include_sgs_MYNN_EDMF_cloud_in_RRTMGP - long_name = logical flag to control MYNN-EDMF PBL cloud in RRTMGP +[doGP_sgs_cnv] + standard_name = flag_to_include_sgs_convective_cloud_in_RRTMGP + long_name = logical flag to control sgs convective cloud in RRTMGP units = flag dimensions = () type = logical @@ -72,6 +81,13 @@ dimensions = () type = integer intent = inout +[mpicomm] + standard_name = mpi_communicator + long_name = MPI communicator + units = index + dimensions = () + type = MPI_Comm + intent = in [mpirank] standard_name = mpi_rank long_name = current MPI rank @@ -86,12 +102,12 @@ dimensions = () type = integer intent = in -[mpicomm] - standard_name = mpi_communicator - long_name = MPI communicator - units = index +[nLay] + standard_name = vertical_layer_dimension + long_name = number of vertical levels + units = count dimensions = () - type = MPI_Comm + type = integer intent = in [rrtmgp_phys_blksz] standard_name = number_of_columns_per_RRTMGP_LW_block @@ -100,22 +116,6 @@ dimensions = () type = integer intent = in -[nLay] - standard_name = vertical_layer_dimension - long_name = number of vertical levels - 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=* - intent = in - optional = True [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -144,7 +144,7 @@ type = logical intent = in [doLWclrsky] - standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep_assuming_clear_sky + standard_name = flag_for_tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output lw heating rate (Radtend%lwhc) units = flag dimensions = () @@ -157,6 +157,13 @@ dimensions = () type = logical intent = in +[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 + units = flag + dimensions = () + type = logical + intent = in [use_LW_jacobian] standard_name = flag_to_calc_RRTMGP_LW_jacobian long_name = logical flag to control RRTMGP LW calculation @@ -164,13 +171,6 @@ dimensions = () type = logical intent = in -[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 - units = flag - dimensions = () - type = logical - intent = in [doGP_sgs_cnv] standard_name = flag_to_include_sgs_convective_cloud_in_RRTMGP long_name = logical flag to control sgs convective cloud in RRTMGP @@ -192,13 +192,6 @@ dimensions = () type = integer intent = in -[rrtmgp_phys_blksz] - standard_name = number_of_columns_per_RRTMGP_LW_block - long_name = number of columns to process at a time by RRTMGP LW scheme - units = count - dimensions = () - type = integer - intent = in [nLay] standard_name = vertical_layer_dimension long_name = number of vertical levels @@ -206,27 +199,35 @@ dimensions = () type = integer intent = in -[nGauss_angles] - standard_name = number_of_gaussian_quadrature_angles_for_radiation - long_name = Number of angles used in Gaussian quadrature +[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 -[nGases] - standard_name = number_of_active_gases_used_by_RRTMGP - long_name = number of gases available used by RRTMGP (Model%nGases) +[rrtmgp_phys_blksz] + standard_name = number_of_columns_per_RRTMGP_LW_block + long_name = number of columns to process at a time by RRTMGP LW scheme units = count dimensions = () type = integer intent = in -[isubc_lw] - standard_name = flag_for_lw_clouds_sub_grid_approximation - long_name = flag for lw clouds sub-grid approximation - units = flag - dimensions = () +[nGauss_angles] + standard_name = number_of_gaussian_quadrature_angles_for_radiation + long_name = Number of angles used in Gaussian quadrature + units = count + dimensions = () + type = integer + intent = in +[icseed_lw] + standard_name = random_number_seed_for_mcica_longwave + long_name = seed for random number generation for longwave radiation + units = none + dimensions = (horizontal_loop_extent) type = integer intent = in + optional = True [iovr] standard_name = flag_for_cloud_overlap_method_for_radiation long_name = max-random overlap clouds @@ -234,6 +235,20 @@ dimensions = () type = integer intent = in +[iovr_convcld] + standard_name = flag_for_convective_cloud_overlap_method_for_radiation + long_name = flag for convective cloud overlap method + units = flag + dimensions = () + type = integer + intent = in +[iovr_max] + standard_name = flag_for_maximum_cloud_overlap_method + long_name = choice of maximum cloud overlap method + units = flag + dimensions = () + type = integer + intent = in [iovr_maxrand] standard_name = flag_for_maximum_random_cloud_overlap_method long_name = choice of maximum-random cloud overlap method @@ -241,6 +256,13 @@ dimensions = () type = integer intent = in +[iovr_rand] + standard_name = flag_for_random_cloud_overlap_method + long_name = choice of random cloud overlap method + units = flag + dimensions = () + type = integer + intent = in [iovr_dcorr] standard_name = flag_for_decorrelation_length_cloud_overlap_method long_name = choice of decorrelation-length cloud overlap method @@ -262,35 +284,13 @@ dimensions = () type = integer intent = in -[iovr_rand] - standard_name = flag_for_random_cloud_overlap_method - long_name = choice of random cloud overlap method - units = flag - dimensions = () - type = integer - intent = in -[iovr_max] - standard_name = flag_for_maximum_cloud_overlap_method - long_name = choice of maximum cloud overlap method - units = flag - dimensions = () - type = integer - intent = in -[iovr_convcld] - standard_name = flag_for_convective_cloud_overlap_method_for_radiation - long_name = flag for convective cloud overlap method +[isubc_lw] + standard_name = flag_for_lw_clouds_sub_grid_approximation + long_name = flag for lw clouds sub-grid approximation units = flag dimensions = () type = integer intent = in -[icseed_lw] - standard_name = random_number_seed_for_mcica_longwave - long_name = seed for random number generation for longwave radiation - units = none - dimensions = (horizontal_loop_extent) - type = integer - intent = in - optional = True [semis] standard_name = surface_longwave_emissivity long_name = surface lw emissivity in fraction @@ -401,7 +401,7 @@ standard_name = total_cloud_fraction long_name = layer total cloud fraction units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -409,7 +409,7 @@ standard_name = cloud_liquid_water_path long_name = layer cloud liquid water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -417,7 +417,7 @@ standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -425,7 +425,7 @@ standard_name = cloud_ice_water_path long_name = layer cloud ice water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -433,7 +433,7 @@ standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -441,7 +441,7 @@ standard_name = cloud_snow_water_path long_name = layer cloud snow water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -449,7 +449,7 @@ standard_name = mean_effective_radius_for_snow_flake long_name = mean effective radius for snow cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -457,7 +457,7 @@ standard_name = cloud_rain_water_path long_name = layer cloud rain water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -465,7 +465,7 @@ standard_name = mean_effective_radius_for_rain_drop long_name = mean effective radius for rain cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -487,19 +487,19 @@ kind = kind_phys intent = in optional = True -[cld_cnv_iwp] - standard_name = convective_cloud_ice_water_path - long_name = layer convective cloud ice water path - units = g m-2 +[cld_cnv_reliq] + standard_name = mean_effective_radius_for_liquid_convective_cloud + long_name = mean effective radius for liquid convective cloud + units = um dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = in optional = True -[cld_cnv_reliq] - standard_name = mean_effective_radius_for_liquid_convective_cloud - long_name = mean effective radius for liquid convective cloud - units = um +[cld_cnv_iwp] + standard_name = convective_cloud_ice_water_path + long_name = layer convective cloud ice water path + units = g m-2 dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys @@ -523,19 +523,19 @@ kind = kind_phys intent = in optional = True -[cld_pbl_iwp] - standard_name = MYNN_SGS_cloud_ice_water_path - long_name = layer convective cloud ice water path - units = g m-2 +[cld_pbl_reliq] + standard_name = mean_effective_radius_for_liquid_MYNN_SGS_cloud + long_name = mean effective radius for liquid MYNN_SGS cloud + units = um dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = in optional = True -[cld_pbl_reliq] - standard_name = mean_effective_radius_for_liquid_MYNN_SGS_cloud - long_name = mean effective radius for liquid MYNN_SGS cloud - units = um +[cld_pbl_iwp] + standard_name = MYNN_SGS_cloud_ice_water_path + long_name = layer convective cloud ice water path + units = g m-2 dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys @@ -572,7 +572,7 @@ standard_name = aerosol_optical_depth_for_longwave_bands_01_16 long_name = aerosol optical depth for longwave bands 01-16 units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_longwave_radiation) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) type = real kind = kind_phys intent = in @@ -580,7 +580,7 @@ standard_name = aerosol_single_scattering_albedo_for_longwave_bands_01_16 long_name = aerosol single scattering albedo for longwave bands 01-16 units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_longwave_radiation) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) type = real kind = kind_phys intent = in @@ -588,28 +588,10 @@ standard_name = aerosol_asymmetry_parameter_for_longwave_bands_01_16 long_name = aerosol asymmetry parameter for longwave bands 01-16 units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_longwave_radiation) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) type = real kind = kind_phys intent = in -[fluxlwUP_radtime] - standard_name = RRTMGP_lw_flux_profile_upward_allsky_on_radiation_timestep - long_name = RRTMGP upward longwave all-sky flux profile - units = W m-2 - dimensions = (horizontal_loop_extent,vertical_interface_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[fluxlwDOWN_radtime] - standard_name = RRTMGP_lw_flux_profile_downward_allsky_on_radiation_timestep - long_name = RRTMGP downward longwave all-sky flux profile - units = W m-2 - dimensions = (horizontal_loop_extent,vertical_interface_dimension) - type = real - kind = kind_phys - intent = inout - optional = True [fluxlwUP_allsky] standard_name = RRTMGP_lw_flux_profile_upward_allsky long_name = RRTMGP upward longwave all-sky flux profile @@ -655,6 +637,24 @@ kind = kind_phys intent = inout optional = True +[fluxlwUP_radtime] + standard_name = RRTMGP_lw_flux_profile_upward_allsky_on_radiation_timestep + long_name = RRTMGP upward longwave all-sky flux profile + units = W m-2 + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[fluxlwDOWN_radtime] + standard_name = RRTMGP_lw_flux_profile_downward_allsky_on_radiation_timestep + long_name = RRTMGP downward longwave all-sky flux profile + units = W m-2 + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + intent = inout + optional = True [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_main.meta b/physics/Radiation/RRTMGP/rrtmgp_sw_main.meta index 9bfda6fa1..a0d20ae7a 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_main.meta +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_main.meta @@ -37,6 +37,15 @@ type = character intent = in kind = len=128 +[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 = True [doGP_cldoptics_PADE] standard_name = flag_to_calc_lw_cld_optics_using_RRTMGP_PADE long_name = logical flag to control cloud optics scheme. @@ -51,40 +60,33 @@ dimensions = () type = logical intent = in -[nrghice] - standard_name = number_of_ice_roughness_categories - long_name = number of ice-roughness categories in RRTMGP calculation - units = count - dimensions = () - type = integer - intent = inout -[doGP_sgs_cnv] - standard_name = flag_to_include_sgs_convective_cloud_in_RRTMGP - long_name = logical flag to control sgs convective cloud in RRTMGP +[doGP_sgs_pbl] + standard_name = flag_to_include_sgs_MYNN_EDMF_cloud_in_RRTMGP + long_name = logical flag to control MYNN-EDMF PBL cloud in RRTMGP units = flag dimensions = () type = logical intent = in -[doGP_sgs_pbl] - standard_name = flag_to_include_sgs_MYNN_EDMF_cloud_in_RRTMGP - long_name = logical flag to control MYNN-EDMF PBL cloud in RRTMGP +[doGP_sgs_cnv] + standard_name = flag_to_include_sgs_convective_cloud_in_RRTMGP + long_name = logical flag to control sgs convective cloud in RRTMGP units = flag dimensions = () type = logical intent = in -[rrtmgp_phys_blksz] - standard_name = number_of_columns_per_RRTMGP_SW_block - long_name = number of columns to process at a time by RRTMGP SW scheme +[nrghice] + standard_name = number_of_ice_roughness_categories + long_name = number of ice-roughness categories in RRTMGP calculation units = count dimensions = () type = integer - intent = in -[nLay] - standard_name = vertical_layer_dimension - long_name = number of vertical levels - units = count + intent = inout +[mpicomm] + standard_name = mpi_communicator + long_name = MPI communicator + units = index dimensions = () - type = integer + type = MPI_Comm intent = in [mpirank] standard_name = mpi_rank @@ -100,22 +102,20 @@ dimensions = () type = integer intent = in -[mpicomm] - standard_name = mpi_communicator - long_name = MPI communicator - units = index +[nLay] + standard_name = vertical_layer_dimension + long_name = number of vertical levels + units = count dimensions = () - type = MPI_Comm + 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=* +[rrtmgp_phys_blksz] + standard_name = number_of_columns_per_RRTMGP_SW_block + long_name = number of columns to process at a time by RRTMGP SW scheme + units = count + dimensions = () + type = integer intent = in - optional = True [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -144,7 +144,7 @@ type = logical intent = in [doSWclrsky] - standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep_assuming_clear_sky + standard_name = flag_for_tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output sw heating rate (Radtend%swhc) units = flag dimensions = () @@ -157,13 +157,6 @@ dimensions = () type = logical intent = in -[iSFC] - standard_name = vertical_index_for_surface_in_RRTMGP - long_name = index for surface layer in RRTMGP - units = flag - dimensions = () - type = integer - intent = in [doGP_sgs_cnv] standard_name = flag_to_include_sgs_convective_cloud_in_RRTMGP long_name = logical flag to control sgs convective cloud in RRTMGP @@ -185,18 +178,18 @@ dimensions = () type = integer intent = in -[nLay] - standard_name = vertical_layer_dimension - long_name = number of vertical levels +[nday] + standard_name = daytime_points_dimension + long_name = daytime points dimension units = count dimensions = () type = integer intent = in -[rrtmgp_phys_blksz] - standard_name = number_of_columns_per_RRTMGP_SW_block - long_name = number of columns to process at a time by RRTMGP SW scheme +[nLay] + standard_name = vertical_layer_dimension + long_name = number of vertical levels units = count - dimensions = () + dimensions = () type = integer intent = in [nGases] @@ -206,9 +199,9 @@ dimensions = () type = integer intent = in -[nday] - standard_name = daytime_points_dimension - long_name = daytime points dimension +[rrtmgp_phys_blksz] + standard_name = number_of_columns_per_RRTMGP_SW_block + long_name = number of columns to process at a time by RRTMGP SW scheme units = count dimensions = () type = integer @@ -220,21 +213,14 @@ dimensions = (horizontal_loop_extent) type = integer intent = in -[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 +[icseed_sw] + standard_name = random_number_seed_for_mcica_shortwave + long_name = seed for random number generation for shortwave radiation units = none dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[isubc_sw] - standard_name = flag_for_sw_clouds_grid_approximation - long_name = flag for sw clouds sub-grid approximation - units = flag - dimensions = () type = integer intent = in + optional = True [iovr] standard_name = flag_for_cloud_overlap_method_for_radiation long_name = max-random overlap clouds @@ -242,6 +228,20 @@ dimensions = () type = integer intent = in +[iovr_convcld] + standard_name = flag_for_convective_cloud_overlap_method_for_radiation + long_name = flag for convective cloud overlap method + units = flag + dimensions = () + type = integer + intent = in +[iovr_max] + standard_name = flag_for_maximum_cloud_overlap_method + long_name = choice of maximum cloud overlap method + units = flag + dimensions = () + type = integer + intent = in [iovr_maxrand] standard_name = flag_for_maximum_random_cloud_overlap_method long_name = choice of maximum-random cloud overlap method @@ -249,6 +249,13 @@ dimensions = () type = integer intent = in +[iovr_rand] + standard_name = flag_for_random_cloud_overlap_method + long_name = choice of random cloud overlap method + units = flag + dimensions = () + type = integer + intent = in [iovr_dcorr] standard_name = flag_for_decorrelation_length_cloud_overlap_method long_name = choice of decorrelation-length cloud overlap method @@ -270,35 +277,60 @@ dimensions = () type = integer intent = in -[iovr_rand] - standard_name = flag_for_random_cloud_overlap_method - long_name = choice of random cloud overlap method +[isubc_sw] + standard_name = flag_for_sw_clouds_grid_approximation + long_name = flag for sw clouds sub-grid approximation units = flag dimensions = () type = integer intent = in -[iovr_max] - standard_name = flag_for_maximum_cloud_overlap_method - long_name = choice of maximum cloud overlap method +[iSFC] + standard_name = vertical_index_for_surface_in_RRTMGP + long_name = index for surface layer in RRTMGP units = flag dimensions = () type = integer intent = in -[iovr_convcld] - standard_name = flag_for_convective_cloud_overlap_method_for_radiation - long_name = flag for convective cloud overlap method - units = flag - dimensions = () - type = integer +[sfc_alb_nir_dir] + standard_name = surface_albedo_due_to_near_IR_direct + long_name = surface albedo due to near IR direct beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys intent = in -[icseed_sw] - standard_name = random_number_seed_for_mcica_shortwave - long_name = seed for random number generation for shortwave radiation +[sfc_alb_nir_dif] + standard_name = surface_albedo_due_to_near_IR_diffused + long_name = surface albedo due to near IR diffused beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[sfc_alb_uvvis_dir] + standard_name = surface_albedo_due_to_UV_and_VIS_direct + long_name = surface albedo due to UV+VIS direct beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[sfc_alb_uvvis_dif] + standard_name = surface_albedo_due_to_UV_and_VIS_diffused + long_name = surface albedo due to UV+VIS diffused beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[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 units = none dimensions = (horizontal_loop_extent) - type = integer + type = real + kind = kind_phys intent = in - optional = True [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP long_name = air pressure at vertical layer for radiation calculation @@ -393,7 +425,7 @@ standard_name = total_cloud_fraction long_name = layer total cloud fraction units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -401,7 +433,7 @@ standard_name = cloud_liquid_water_path long_name = layer cloud liquid water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -409,7 +441,7 @@ standard_name = mean_effective_radius_for_liquid_cloud long_name = mean effective radius for liquid cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -417,7 +449,7 @@ standard_name = cloud_ice_water_path long_name = layer cloud ice water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -425,7 +457,7 @@ standard_name = mean_effective_radius_for_ice_cloud long_name = mean effective radius for ice cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -433,7 +465,7 @@ standard_name = cloud_snow_water_path long_name = layer cloud snow water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -441,7 +473,7 @@ standard_name = mean_effective_radius_for_snow_flake long_name = mean effective radius for snow cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -449,7 +481,7 @@ standard_name = cloud_rain_water_path long_name = layer cloud rain water path units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -457,7 +489,7 @@ standard_name = mean_effective_radius_for_rain_drop long_name = mean effective radius for rain cloud units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = in @@ -479,19 +511,19 @@ kind = kind_phys intent = in optional = True -[cld_cnv_iwp] - standard_name = convective_cloud_ice_water_path - long_name = layer convective cloud ice water path - units = g m-2 +[cld_cnv_reliq] + standard_name = mean_effective_radius_for_liquid_convective_cloud + long_name = mean effective radius for liquid convective cloud + units = um dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = in optional = True -[cld_cnv_reliq] - standard_name = mean_effective_radius_for_liquid_convective_cloud - long_name = mean effective radius for liquid convective cloud - units = um +[cld_cnv_iwp] + standard_name = convective_cloud_ice_water_path + long_name = layer convective cloud ice water path + units = g m-2 dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys @@ -515,19 +547,19 @@ kind = kind_phys intent = in optional = True -[cld_pbl_iwp] - standard_name = MYNN_SGS_cloud_ice_water_path - long_name = layer convective cloud ice water path - units = g m-2 +[cld_pbl_reliq] + standard_name = mean_effective_radius_for_liquid_MYNN_SGS_cloud + long_name = mean effective radius for liquid MYNN_SGS cloud + units = um dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys intent = in optional = True -[cld_pbl_reliq] - standard_name = mean_effective_radius_for_liquid_MYNN_SGS_cloud - long_name = mean effective radius for liquid MYNN_SGS cloud - units = um +[cld_pbl_iwp] + standard_name = MYNN_SGS_cloud_ice_water_path + long_name = layer convective cloud ice water path + units = g m-2 dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys @@ -551,38 +583,6 @@ kind = kind_phys intent = in optional = True -[sfc_alb_nir_dir] - standard_name = surface_albedo_due_to_near_IR_direct - long_name = surface albedo due to near IR direct beam - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[sfc_alb_nir_dif] - standard_name = surface_albedo_due_to_near_IR_diffused - long_name = surface albedo due to near IR diffused beam - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[sfc_alb_uvvis_dir] - standard_name = surface_albedo_due_to_UV_and_VIS_direct - long_name = surface albedo due to UV+VIS direct beam - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[sfc_alb_uvvis_dif] - standard_name = surface_albedo_due_to_UV_and_VIS_diffused - long_name = surface albedo due to UV+VIS diffused beam - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in [active_gases_array] standard_name = list_of_active_gases_used_by_RRTMGP long_name = list of active gases used by RRTMGP @@ -596,7 +596,7 @@ standard_name = aerosol_optical_depth_for_shortwave_bands_01_16 long_name = aerosol optical depth for shortwave bands 01-16 units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_shortwave_radiation) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) type = real kind = kind_phys intent = in @@ -604,7 +604,7 @@ standard_name = aerosol_single_scattering_albedo_for_shortwave_bands_01_16 long_name = aerosol single scattering albedo for shortwave bands 01-16 units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_shortwave_radiation) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) type = real kind = kind_phys intent = in @@ -612,7 +612,7 @@ standard_name = aerosol_asymmetry_parameter_for_shortwave_bands_01_16 long_name = aerosol asymmetry parameter for shortwave bands 01-16 units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_bands_for_shortwave_radiation) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) type = real kind = kind_phys intent = in @@ -671,7 +671,7 @@ standard_name = cloud_optical_depth_layers_at_0p55mu_band long_name = approx .55mu band layer cloud optical depth units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension) + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys intent = inout diff --git a/physics/SFC_Layer/GFDL/gfdl_sfc_layer.F90 b/physics/SFC_Layer/GFDL/gfdl_sfc_layer.F90 index ce6501908..0c005436b 100644 --- a/physics/SFC_Layer/GFDL/gfdl_sfc_layer.F90 +++ b/physics/SFC_Layer/GFDL/gfdl_sfc_layer.F90 @@ -97,7 +97,7 @@ end subroutine gfdl_sfc_layer_init !! \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, icoef_sf, cplwav, karman, & + ilsm_noah, ilsm_noahmp, ilsm_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, & @@ -120,8 +120,8 @@ subroutine gfdl_sfc_layer_run (im, nsoil, km, xlat, xlon, flag_iter, lsm, & implicit none integer, intent(in) :: im, nsoil, km, ivegsrc - integer, intent(in) :: lsm, lsm_noah, lsm_noahmp, & - lsm_ruc, icoef_sf, ntsflg + integer, intent(in) :: lsm, ilsm_noah, ilsm_noahmp, & + ilsm_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 @@ -181,13 +181,13 @@ subroutine gfdl_sfc_layer_run (im, nsoil, km, xlat, xlon, flag_iter, lsm, & cd_high_limit, ch_low_limit, ch_high_limit, fh2_fh_ratio !#### This block will become unnecessary when maxsmc and drysmc come through the CCPP #### - if (lsm == lsm_noah) then + if (lsm == ilsm_noah) then maxsmc = maxsmc_noah drysmc = drysmc_noah - else if (lsm == lsm_noahmp) then + else if (lsm == ilsm_noahmp) then maxsmc = maxsmc_noahmp drysmc = drysmc_noahmp - else if (lsm == lsm_ruc) then + else if (lsm == ilsm_ruc) then maxsmc = maxsmc_ruc drysmc = drysmc_ruc else diff --git a/physics/SFC_Layer/GFDL/gfdl_sfc_layer.meta b/physics/SFC_Layer/GFDL/gfdl_sfc_layer.meta index ac98437e9..1225d8e7b 100644 --- a/physics/SFC_Layer/GFDL/gfdl_sfc_layer.meta +++ b/physics/SFC_Layer/GFDL/gfdl_sfc_layer.meta @@ -92,13 +92,6 @@ dimensions = () type = integer intent = in -[karman] - standard_name = von_karman_constant - long_name = von karman constant - units = none - dimensions = () - type = real - intent = in [xlat] standard_name = latitude long_name = latitude @@ -129,21 +122,21 @@ dimensions = () type = integer intent = in -[lsm_noah] +[ilsm_noah] standard_name = identifier_for_noah_land_surface_scheme long_name = flag for NOAH land surface model units = flag dimensions = () type = integer intent = in -[lsm_noahmp] +[ilsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model units = flag dimensions = () type = integer intent = in -[lsm_ruc] +[ilsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model units = flag @@ -164,6 +157,13 @@ dimensions = () type = logical intent = in +[karman] + standard_name = von_karman_constant + long_name = von karman constant + units = none + dimensions = () + type = real + intent = in [cplwav2atm] standard_name = flag_for_one_way_ocean_wave_coupling_to_atmosphere long_name = flag controlling ocean wave coupling to the atmosphere (default off) diff --git a/physics/SFC_Layer/MYJ/myjsfc_wrapper.F90 b/physics/SFC_Layer/MYJ/myjsfc_wrapper.F90 index 4f122ef88..973098a72 100644 --- a/physics/SFC_Layer/MYJ/myjsfc_wrapper.F90 +++ b/physics/SFC_Layer/MYJ/myjsfc_wrapper.F90 @@ -8,6 +8,9 @@ MODULE myjsfc_wrapper contains +!! \section arg_table_myjsfc_wrapper_init Argument Table +!! \htmlinclude myjsfc_wrapper_init.html +!! subroutine myjsfc_wrapper_init (do_myjsfc, & & errmsg,errflg) diff --git a/physics/SFC_Layer/MYNN/mynnsfc_wrapper.F90 b/physics/SFC_Layer/MYNN/mynnsfc_wrapper.F90 index 779a56da4..feb43a178 100644 --- a/physics/SFC_Layer/MYNN/mynnsfc_wrapper.F90 +++ b/physics/SFC_Layer/MYNN/mynnsfc_wrapper.F90 @@ -55,7 +55,7 @@ end subroutine mynnsfc_wrapper_init SUBROUTINE mynnsfc_wrapper_run( & & im,levs, & & itimestep,iter,flag_iter, & - & flag_init,flag_restart,lsm,lsm_ruc,& + & flag_init,flag_restart,lsm,ilsm_ruc,& & sigmaf,vegtype,shdmax,ivegsrc, & !intent(in) & z0pert,ztpert, & !intent(in) & redrag,sfc_z0_type, & !intent(in) @@ -122,7 +122,7 @@ SUBROUTINE mynnsfc_wrapper_run( & logical, intent(in) :: sfclay_compute_flux,sfclay_compute_diag integer, intent(in) :: isftcflx,iz0tlnd integer, intent(in) :: im, levs - integer, intent(in) :: iter, itimestep, lsm, lsm_ruc + integer, intent(in) :: iter, itimestep, lsm, ilsm_ruc logical, dimension(:), intent(in) :: flag_iter logical, intent(in) :: flag_init,flag_restart,lprnt integer, intent(in) :: ivegsrc @@ -260,7 +260,7 @@ SUBROUTINE mynnsfc_wrapper_run( & where (icy) znt_ice=znt_ice*0.01 ! qsfc ruc - if (lsm==lsm_ruc) then + if (lsm==ilsm_ruc) then where (dry) qsfc_lnd = qsfc_lnd_ruc/(1.+qsfc_lnd_ruc) ! spec. hum where (icy) qsfc_ice = qsfc_ice_ruc/(1.+qsfc_ice_ruc) ! spec. hum. end if @@ -301,7 +301,7 @@ SUBROUTINE mynnsfc_wrapper_run( & u3d=u,v3d=v,t3d=t3d,qv3d=qv,p3d=prsl,dz8w=dz, & th3d=th,pi3d=exner,qc3d=qc, & PSFCPA=ps,PBLH=pblh,MAVAIL=mavail,XLAND=xland,DX=dx, & - ISFFLX=isfflx,isftcflx=isftcflx,LSM=lsm,LSM_RUC=lsm_ruc, & + ISFFLX=isfflx,isftcflx=isftcflx,LSM=lsm,LSM_RUC=ilsm_ruc, & iz0tlnd=iz0tlnd,psi_opt=psi_opt, & compute_flux=sfclay_compute_flux,compute_diag=sfclay_compute_diag,& sigmaf=sigmaf,vegtype=vegtype,shdmax=shdmax,ivegsrc=ivegsrc, & !intent(in) diff --git a/physics/SFC_Layer/MYNN/mynnsfc_wrapper.meta b/physics/SFC_Layer/MYNN/mynnsfc_wrapper.meta index 957beacbb..6150c36bb 100644 --- a/physics/SFC_Layer/MYNN/mynnsfc_wrapper.meta +++ b/physics/SFC_Layer/MYNN/mynnsfc_wrapper.meta @@ -90,7 +90,7 @@ dimensions = () type = integer intent = in -[lsm_ruc] +[ilsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model units = flag diff --git a/physics/SFC_Layer/UFS/sfc_diag.f b/physics/SFC_Layer/UFS/sfc_diag.f index 66ec95c50..f57fd6435 100644 --- a/physics/SFC_Layer/UFS/sfc_diag.f +++ b/physics/SFC_Layer/UFS/sfc_diag.f @@ -11,7 +11,7 @@ module sfc_diag !! !> @{ subroutine sfc_diag_run (im,xlat_d,xlon_d, & - & lsm,lsm_ruc,grav,cp,eps,epsm1,con_rocp, & + & lsm,ilsm_ruc,grav,cp,eps,epsm1,con_rocp, & & con_karman, & & shflx,cdq,wind, & & usfco,vsfco,icplocn2atm, & @@ -27,7 +27,7 @@ subroutine sfc_diag_run (im,xlat_d,xlon_d, & use physcons, only : con_t0c implicit none ! - integer, intent(in) :: im, lsm, lsm_ruc, iopt_lake, iopt_lake_clm + integer, intent(in) :: im, lsm, ilsm_ruc, iopt_lake, iopt_lake_clm logical, intent(in) :: use_lake2m integer, intent(in) :: icplocn2atm logical, intent(in) :: thsfc_loc ! Flag for reference pot. temp. @@ -105,7 +105,7 @@ subroutine sfc_diag_run (im,xlat_d,xlon_d, & fhi = fh2(i) / fh(i) wrk = 1.0 - fhi - if(lsm /= lsm_ruc) then + if(lsm /= ilsm_ruc) then !-- original method if(have_2m) then ! already have 2m T & Q from lake diff --git a/physics/SFC_Layer/UFS/sfc_diag.meta b/physics/SFC_Layer/UFS/sfc_diag.meta index 9ec3213d3..dd5aa6447 100644 --- a/physics/SFC_Layer/UFS/sfc_diag.meta +++ b/physics/SFC_Layer/UFS/sfc_diag.meta @@ -38,7 +38,7 @@ dimensions = () type = integer intent = in -[lsm_ruc] +[ilsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model units = flag @@ -92,33 +92,25 @@ dimensions = () type = real intent = in -[zf] - standard_name = height_above_ground_at_lowest_model_layer - long_name = layer 1 height above ground (not MSL) - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[ps] - standard_name = surface_air_pressure - long_name = surface pressure - units = Pa +[shflx] + standard_name = surface_upward_temperature_flux + long_name = kinematic surface upward sensible heat flux + units = K m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys intent = in -[u1] - standard_name = x_wind_of_new_state_at_surface_adjacent_layer - long_name = x component of 1st model layer wind - units = m s-1 +[cdq] + standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air + long_name = surface exchange coeff heat & moisture + units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys intent = in -[v1] - standard_name = y_wind_of_new_state_at_surface_adjacent_layer - long_name = y component of 1st model layer wind +[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 @@ -147,6 +139,38 @@ dimensions = () type = integer intent = in +[zf] + standard_name = height_above_ground_at_lowest_model_layer + long_name = layer 1 height above ground (not MSL) + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[ps] + standard_name = surface_air_pressure + long_name = surface pressure + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[u1] + standard_name = x_wind_of_new_state_at_surface_adjacent_layer + long_name = x component of 1st model layer wind + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[v1] + standard_name = y_wind_of_new_state_at_surface_adjacent_layer + long_name = y component of 1st model layer wind + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in [t1] standard_name = air_temperature_at_surface_adjacent_layer long_name = 1st model layer air temperature @@ -242,6 +266,20 @@ dimensions = () type = logical intent = in +[diag_flux] + standard_name = flag_for_flux_method_in_2m_diagnostics + long_name = flag for flux method in 2-m diagnostics + units = flag + dimensions = () + type = logical + intent = in +[diag_log] + standard_name = flag_for_log_method_in_2m_diagnostics + long_name = flag for log method in 2-m diagnostics + units = flag + dimensions = () + type = logical + intent = in [use_lake_model] standard_name = flag_for_using_lake_model long_name = flag indicating lake points using a lake model @@ -272,28 +310,6 @@ kind = kind_phys intent = in optional = True -[diag_flux] - standard_name = flag_for_flux_method_in_2m_diagnostics - long_name = flag for flux method in 2-m diagnostics - units = flag - dimensions = () - type = logical - intent = in -[diag_log] - standard_name = flag_for_log_method_in_2m_diagnostics - long_name = flag for log method in 2-m diagnostics - units = flag - dimensions = () - type = logical - intent = in -[shflx] - standard_name = surface_upward_temperature_flux - long_name = kinematic surface upward sensible heat flux - units = K m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in [lake_q2m] standard_name = specific_humidity_at_2m_from_clm_lake long_name = specific humidity at 2m from clm lake @@ -303,14 +319,6 @@ kind = kind_phys intent = in optional = True -[cdq] - standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air - long_name = surface exchange coeff heat & moisture - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in [use_lake2m] standard_name = use_2m_diagnostics_calculated_by_lake_model long_name = model 2m diagnostics use the temperature and humidity calculated by the lake model @@ -318,14 +326,6 @@ dimensions = () type = logical intent = in -[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 [f10m] standard_name = ratio_of_wind_at_surface_adjacent_layer_to_wind_at_10m long_name = ratio of fm10 and fm diff --git a/physics/SFC_Layer/UFS/sfc_diag_post.F90 b/physics/SFC_Layer/UFS/sfc_diag_post.F90 index 72755c6f3..73e39f4ed 100644 --- a/physics/SFC_Layer/UFS/sfc_diag_post.F90 +++ b/physics/SFC_Layer/UFS/sfc_diag_post.F90 @@ -13,15 +13,14 @@ module sfc_diag_post !! \htmlinclude sfc_diag_post_run.html !! #endif - subroutine sfc_diag_post_run (im, lsm, lsm_noahmp, opt_diag, dry, lssav, dtf, con_eps, con_epsm1, pgr,& + subroutine sfc_diag_post_run (im, lsm, ilsm_noahmp, opt_diag, dry, lssav, dtf, con_eps, con_epsm1, pgr,& t2mmp,q2mp, t2m, q2m, u10m, v10m, tmpmin, tmpmax, spfhmin, spfhmax, & wind10mmax, u10mmax, v10mmax, dpt2m, errmsg, errflg) use machine, only: kind_phys, kind_dbl_prec implicit none - - integer, intent(in) :: im, lsm, lsm_noahmp,opt_diag + integer, intent(in) :: im, lsm, ilsm_noahmp,opt_diag logical, intent(in) :: lssav real(kind=kind_phys), intent(in) :: dtf, con_eps, con_epsm1 logical , dimension(:), intent(in) :: dry @@ -40,7 +39,7 @@ subroutine sfc_diag_post_run (im, lsm, lsm_noahmp, opt_diag, dry, lssav, dtf, co errmsg = '' errflg = 0 - if (lsm == lsm_noahmp) then + if (lsm == ilsm_noahmp) then if (opt_diag == 2 .or. opt_diag == 3) then do i=1,im if(dry(i)) then diff --git a/physics/SFC_Layer/UFS/sfc_diag_post.meta b/physics/SFC_Layer/UFS/sfc_diag_post.meta index 7469b89b7..dc9daef50 100644 --- a/physics/SFC_Layer/UFS/sfc_diag_post.meta +++ b/physics/SFC_Layer/UFS/sfc_diag_post.meta @@ -22,7 +22,7 @@ dimensions = () type = integer intent = in -[lsm_noahmp] +[ilsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model units = flag diff --git a/physics/SFC_Layer/UFS/sfc_diff.f b/physics/SFC_Layer/UFS/sfc_diff.f index 2b1d285f3..97d17d16a 100644 --- a/physics/SFC_Layer/UFS/sfc_diff.f +++ b/physics/SFC_Layer/UFS/sfc_diff.f @@ -54,7 +54,8 @@ module sfc_diff !!\f] !! - Calculate the exchange coefficients:\f$cm\f$, \f$ch\f$, and \f$stress\f$ as inputs of other \a sfc schemes. !! - subroutine sfc_diff_run (im,rvrdm1,eps,epsm1,grav, & !intent(in) + subroutine sfc_diff_run ( & + & im,rvrdm1,eps,epsm1,grav, & !intent(in) & ps,t1,q1,z1,garea,wind, & !intent(in) & prsl1,prslki,prsik1,prslk1, & !intent(in) & sigmaf,vegtype,shdmax,ivegsrc, & !intent(in) diff --git a/physics/SFC_Layer/UFS/sfc_diff.meta b/physics/SFC_Layer/UFS/sfc_diff.meta index 0964473cb..b42368e7b 100644 --- a/physics/SFC_Layer/UFS/sfc_diff.meta +++ b/physics/SFC_Layer/UFS/sfc_diff.meta @@ -87,14 +87,6 @@ type = real kind = kind_phys intent = in -[zvfun] - standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction - long_name = function of surface roughness length and green vegetation fraction - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = out [wind] standard_name = wind_speed_at_lowest_model_layer long_name = wind speed at lowest model level @@ -218,6 +210,13 @@ type = real kind = kind_phys intent = in +[sfc_z0_type] + standard_name = flag_for_surface_roughness_option_over_water + long_name = surface roughness options over water + units = flag + dimensions = () + type = integer + intent = in [u1] standard_name = x_wind_at_surface_adjacent_layer long_name = x component of surface layer wind @@ -250,13 +249,6 @@ type = real kind = kind_phys intent = in -[sfc_z0_type] - standard_name = flag_for_surface_roughness_option_over_water - long_name = surface roughness options over water - units = flag - dimensions = () - type = integer - intent = in [icplocn2atm] standard_name = control_for_air_sea_flux_computation_over_water long_name = air-sea flux option @@ -612,6 +604,14 @@ type = real kind = kind_phys intent = inout +[zvfun] + standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction + long_name = function of surface roughness length and green vegetation fraction + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = out [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/SFC_Models/Lake/Flake/flake_driver.F90 b/physics/SFC_Models/Lake/Flake/flake_driver.F90 index 9092b1c36..365991bb6 100644 --- a/physics/SFC_Models/Lake/Flake/flake_driver.F90 +++ b/physics/SFC_Models/Lake/Flake/flake_driver.F90 @@ -427,8 +427,8 @@ end subroutine flake_driver_post_init subroutine flake_driver_post_finalize() end subroutine flake_driver_post_finalize -!> \section arg_table_flake_driver_post Argument Table -!! \htmlinclude flake_driver_post.html +!> \section arg_table_flake_driver_post_run Argument Table +!! \htmlinclude flake_driver_post_run.html !! subroutine flake_driver_post_run (im, use_lake_model, h_ML, T_wML, & Tsurf, lakedepth, xz, zm, tref, tsfco, & diff --git a/physics/SFC_Models/Lake/Flake/flake_driver.meta b/physics/SFC_Models/Lake/Flake/flake_driver.meta index f5615ba08..ed90323b8 100644 --- a/physics/SFC_Models/Lake/Flake/flake_driver.meta +++ b/physics/SFC_Models/Lake/Flake/flake_driver.meta @@ -182,7 +182,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = inout + intent = in [snwdph] standard_name = surface_snow_thickness_water_equivalent_over_ice long_name = water equivalent snow depth over ice @@ -207,14 +207,6 @@ type = real kind = kind_phys intent = inout -[fice] - standard_name = sea_ice_area_fraction_of_sea_area_fraction - long_name = ice fraction over open water - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout [t_sfc] standard_name = surface_skin_temperature_after_iteration_over_water long_name = surface skin temperature after iteration over water @@ -223,6 +215,14 @@ type = real kind = kind_phys intent = inout +[fice] + standard_name = sea_ice_area_fraction_of_sea_area_fraction + long_name = ice fraction over open water + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout [hflx] standard_name = kinematic_surface_upward_sensible_heat_flux_over_water long_name = kinematic surface upward sensible heat flux over water @@ -420,7 +420,8 @@ [ccpp-table-properties] name = flake_driver_post type = scheme - dependencies = machine.F + dependencies = ../../../hooks/machine.F + ######################################################################## [ccpp-arg-table] name = flake_driver_post_run @@ -432,21 +433,12 @@ dimensions = () type = integer intent = in -[lakedepth] - standard_name = lake_depth - long_name = lake depth - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in -[tsurf] - standard_name = surface_skin_temperature_after_iteration_over_water - long_name = surface skin temperature after iteration over water - units = K +[use_lake_model] + standard_name = flag_for_using_lake_model + long_name = flag indicating lake points using a lake model + units = flag dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys + type = integer intent = in [h_ML] standard_name = mixed_layer_depth_of_lakes @@ -466,6 +458,22 @@ kind = kind_phys intent = in optional = True +[tsurf] + standard_name = surface_skin_temperature_after_iteration_over_water + long_name = surface skin temperature after iteration over water + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[lakedepth] + standard_name = lake_depth + long_name = lake depth + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in [xz] standard_name = diurnal_thermocline_layer_thickness long_name = diurnal thermocline layer thickness @@ -473,7 +481,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = out + intent = inout optional = True [zm] standard_name = ocean_mixed_layer_thickness @@ -482,7 +490,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = out + intent = inout optional = True [tref] standard_name = reference_sea_surface_temperature @@ -491,16 +499,16 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = out + intent = inout optional = True -[tfco] +[tsfco] standard_name = sea_surface_temperature long_name = sea surface temperature units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = out + intent = inout [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/SFC_Models/Land/Noah/lsm_noah.f b/physics/SFC_Models/Land/Noah/lsm_noah.f index 139c978a0..99ab92878 100644 --- a/physics/SFC_Models/Land/Noah/lsm_noah.f +++ b/physics/SFC_Models/Land/Noah/lsm_noah.f @@ -21,12 +21,12 @@ module lsm_noah !! \section arg_table_lsm_noah_init Argument Table !! \htmlinclude lsm_noah_init.html !! - subroutine lsm_noah_init(lsm, lsm_noah, me, isot, ivegsrc, nlunit, + subroutine lsm_noah_init(lsm,ilsm_noah, me, isot, ivegsrc, nlunit, & pores, resid, errmsg, errflg) implicit none integer, intent(in) :: lsm - integer, intent(in) :: lsm_noah + integer, intent(in) :: ilsm_noah integer, intent(in) :: me, isot, ivegsrc, nlunit @@ -40,7 +40,7 @@ subroutine lsm_noah_init(lsm, lsm_noah, me, isot, ivegsrc, nlunit, errflg = 0 ! Consistency checks - if (lsm/=lsm_noah) then + if (lsm/=ilsm_noah) then write(errmsg,'(*(a))') 'Logic error: namelist choice of ', & 'LSM is different from Noah' errflg = 1 diff --git a/physics/SFC_Models/Land/Noah/lsm_noah.meta b/physics/SFC_Models/Land/Noah/lsm_noah.meta index f26b075d9..252b71cb1 100644 --- a/physics/SFC_Models/Land/Noah/lsm_noah.meta +++ b/physics/SFC_Models/Land/Noah/lsm_noah.meta @@ -15,7 +15,7 @@ dimensions = () type = integer intent = in -[lsm_noah] +[ilsm_noah] standard_name = identifier_for_noah_land_surface_scheme long_name = flag for NOAH land surface model units = flag diff --git a/physics/SFC_Models/Land/Noahmp/lnd_iau_mod.meta b/physics/SFC_Models/Land/Noahmp/lnd_iau_mod.meta index 8541af659..52e2a4875 100644 --- a/physics/SFC_Models/Land/Noahmp/lnd_iau_mod.meta +++ b/physics/SFC_Models/Land/Noahmp/lnd_iau_mod.meta @@ -2,6 +2,7 @@ name = land_iau_external_data_type type = ddt dependencies = + module_name = land_iau_mod [ccpp-arg-table] name = land_iau_external_data_type @@ -13,6 +14,7 @@ name = land_iau_state_type type = ddt dependencies = + module_name = land_iau_mod [ccpp-arg-table] name = land_iau_state_type @@ -24,35 +26,8 @@ name = land_iau_control_type type = ddt dependencies = + module_name = land_iau_mod [ccpp-arg-table] name = land_iau_control_type type = ddt - -######################################################################## -[ccpp-table-properties] - name = land_iau_mod - type = module - dependencies = machine.F - -[ccpp-arg-table] - name = land_iau_mod - type = module -[land_iau_external_data_type] - standard_name = land_iau_external_data_type - long_name = definition of type land_iau_external_data_type - units = DDT - dimensions = () - type = land_iau_external_data_type -[land_iau_state_type] - standard_name = land_iau_state_type - long_name = definition of type land_iau_state_type - units = DDT - dimensions = () - type = land_iau_state_type -[land_iau_control_type] - standard_name = land_iau_control_type - long_name = definition of type land_iau_control_type - units = DDT - dimensions = () - type = land_iau_control_type diff --git a/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 b/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 index d4971efd9..0b27f04bd 100644 --- a/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 +++ b/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 @@ -35,7 +35,7 @@ module noahmpdrv !! \section arg_table_noahmpdrv_init Argument Table !! \htmlinclude noahmpdrv_init.html !! - subroutine noahmpdrv_init(lsm, lsm_noahmp, me, isot, ivegsrc, & + subroutine noahmpdrv_init(lsm, ilsm_noahmp, me, isot, ivegsrc,& nlunit, pores, resid, & do_mynnsfclay,do_mynnedmf, & errmsg, errflg, & @@ -48,7 +48,7 @@ subroutine noahmpdrv_init(lsm, lsm_noahmp, me, isot, ivegsrc, & implicit none integer, intent(in) :: lsm - integer, intent(in) :: lsm_noahmp + integer, intent(in) :: ilsm_noahmp integer, intent(in) :: me, isot, ivegsrc, nlunit real (kind=kind_phys), dimension(:), intent(out) :: pores, resid @@ -78,7 +78,7 @@ subroutine noahmpdrv_init(lsm, lsm_noahmp, me, isot, ivegsrc, & errflg = 0 ! Consistency checks - if (lsm/=lsm_noahmp) then + if (lsm/=ilsm_noahmp) then write(errmsg,'(*(a))') 'Logic error: namelist choice of ', & & 'LSM is different from Noah' errflg = 1 diff --git a/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta b/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta index 7d1150c80..93c9a325b 100644 --- a/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta +++ b/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta @@ -2,7 +2,7 @@ name = noahmpdrv type = scheme dependencies = ../../../tools/funcphys.f90,../../../hooks/machine.F - dependencies = module_sf_noahmp_glacier.F90,module_sf_noahmplsm.F90,noahmp_tables.f90 + dependencies = module_sf_noahmp_glacier.F90,module_sf_noahmplsm.F90,noahmp_tables.f90,lnd_iau_mod.F90 dependencies = ../Noah/set_soilveg.f ######################################################################## @@ -16,7 +16,7 @@ dimensions = () type = integer intent = in -[lsm_noahmp] +[ilsm_noahmp] standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model units = flag @@ -1226,6 +1226,7 @@ kind = kind_phys intent = inout optional = True + assumed_shape = True [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 @@ -1235,6 +1236,7 @@ kind = kind_phys intent = inout optional = True + assumed_shape = True [snicexy] standard_name = lwe_thickness_of_ice_in_surface_snow long_name = lwe_thickness_of_ice_in_surface_snow @@ -1244,6 +1246,7 @@ kind = kind_phys intent = inout optional = True + assumed_shape = True [snliqxy] standard_name = lwe_thickness_of_liquid_water_in_surface_snow long_name = snow layer liquid water @@ -1253,6 +1256,7 @@ kind = kind_phys intent = inout optional = True + assumed_shape = True [lfmassxy] standard_name = leaf_mass_content long_name = leaf mass diff --git a/physics/SFC_Models/Land/RUC/lsm_ruc.F90 b/physics/SFC_Models/Land/RUC/lsm_ruc.F90 index c6176fe31..45def7109 100644 --- a/physics/SFC_Models/Land/RUC/lsm_ruc.F90 +++ b/physics/SFC_Models/Land/RUC/lsm_ruc.F90 @@ -36,7 +36,7 @@ module lsm_ruc subroutine lsm_ruc_init (me, master, isot, ivegsrc, nlunit, & lsm_cold_start, flag_init, con_fvirt, con_rd, & im, lsoil_ruc, lsoil, kice, nlev, & ! in - lsm_ruc, lsm, slmsk, stype, vtype, landfrac, & ! in + ilsm_ruc, lsm, slmsk, stype, vtype, landfrac, & ! in q1, prsl1, tsfc_lnd, tsfc_ice, tsfc_wat, & ! in tg3, smc, slc, stc, fice, min_seaice, & ! in sncovr_lnd, sncovr_ice, snoalb, & ! in @@ -59,7 +59,7 @@ subroutine lsm_ruc_init (me, master, isot, ivegsrc, nlunit, & integer, intent(in) :: lsoil integer, intent(in) :: kice integer, intent(in) :: nlev - integer, intent(in) :: lsm_ruc, lsm + integer, intent(in) :: ilsm_ruc, lsm real (kind_phys),intent(in) :: con_fvirt real (kind_phys),intent(in) :: con_rd @@ -123,7 +123,7 @@ subroutine lsm_ruc_init (me, master, isot, ivegsrc, nlunit, & errflg = 0 ! Consistency checks - if (lsm/=lsm_ruc) then + if (lsm/=ilsm_ruc) then write(errmsg,'(*(a))') 'Logic error: namelist choice of ', & & 'LSM is different from RUC' errflg = 1 @@ -207,7 +207,7 @@ subroutine lsm_ruc_init (me, master, isot, ivegsrc, nlunit, & call init_soil_depth_3 ( zs , dzs , lsoil_ruc ) call rucinit (lsm_cold_start, im, lsoil_ruc, lsoil, nlev, & ! in - me, master, lsm_ruc, lsm, slmsk, & ! in + me, master, ilsm_ruc, lsm, slmsk, & ! in stype, vtype, landfrac, fice, & ! in min_seaice, tsfc_lnd, tsfc_wat, tg3, & ! in zs, dzs, smc, slc, stc, & ! in @@ -325,7 +325,7 @@ end subroutine lsm_ruc_finalize !! !>\section gen_lsm_ruc_run RUC LSM General Algorithm subroutine lsm_ruc_run & ! inputs - & ( iter, me, master, delt, kdt, im, nlev, lsm_ruc, lsm, & + & ( iter, me, master, delt, kdt, im, nlev, ilsm_ruc, lsm, & & imp_physics, imp_physics_gfdl, imp_physics_thompson, & & imp_physics_nssl, do_mynnsfclay, & & exticeden, lsoil_ruc, lsoil, mosaic_lu, mosaic_soil, & @@ -378,7 +378,7 @@ subroutine lsm_ruc_run & ! inputs integer, intent(in) :: im, nlev, iter, lsoil_ruc, lsoil, kdt, isot, ivegsrc integer, intent(in) :: mosaic_lu, mosaic_soil, isncond_opt, isncovr_opt integer, intent(in) :: nlcat, nscat - integer, intent(in) :: lsm_ruc, lsm + integer, intent(in) :: ilsm_ruc, lsm integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, & imp_physics_nssl real (kind_phys), dimension(:), intent(in) :: xlat_d, xlon_d @@ -1630,7 +1630,7 @@ end subroutine lsm_ruc_run !>\ingroup lsm_ruc_group !! This subroutine contains RUC LSM initialization. subroutine rucinit (lsm_cold_start, im, lsoil_ruc, lsoil, & ! in - nlev, me, master, lsm_ruc, lsm, slmsk, & ! in + nlev, me, master, ilsm_ruc, lsm, slmsk,& ! in stype, vtype, landfrac, fice, & ! in min_seaice, tskin_lnd, tskin_wat, tg3, & ! in zs, dzs, smc, slc, stc, & ! in @@ -1641,7 +1641,7 @@ subroutine rucinit (lsm_cold_start, im, lsoil_ruc, lsoil, & ! in logical, intent(in ) :: lsm_cold_start integer, intent(in ) :: lsm - integer, intent(in ) :: lsm_ruc + integer, intent(in ) :: ilsm_ruc integer, intent(in ) :: im, nlev integer, intent(in ) :: lsoil_ruc integer, intent(in ) :: lsoil @@ -1713,10 +1713,10 @@ subroutine rucinit (lsm_cold_start, im, lsoil_ruc, lsoil, & ! in debug_print = .false. - if (lsm/=lsm_ruc) then + if (lsm/=ilsm_ruc) then write(errmsg,'(a,i0,a,i0)') & 'ERROR in lsm_ruc_init: namelist variable lsm=', & - lsm, ' incompatible with RUC LSM, please set to ', lsm_ruc + lsm, ' incompatible with RUC LSM, please set to ', ilsm_ruc errflg = 1 return else if (debug_print) then diff --git a/physics/SFC_Models/Land/RUC/lsm_ruc.meta b/physics/SFC_Models/Land/RUC/lsm_ruc.meta index fc3c52d2a..cf5716e0d 100644 --- a/physics/SFC_Models/Land/RUC/lsm_ruc.meta +++ b/physics/SFC_Models/Land/RUC/lsm_ruc.meta @@ -108,7 +108,7 @@ dimensions = () type = integer intent = in -[lsm_ruc] +[ilsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model units = flag @@ -598,7 +598,7 @@ dimensions = () type = integer intent = in -[lsm_ruc] +[ilsm_ruc] standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model units = flag @@ -787,7 +787,7 @@ units = index dimensions = (horizontal_loop_extent) type = integer - intent = in + intent = inout [vtype] standard_name = vegetation_type_classification long_name = vegetation type at each grid cell @@ -1699,6 +1699,31 @@ kind = kind_phys intent = out optional = True +[add_fire_heat_flux] + standard_name = flag_for_fire_heat_flux + long_name = flag to add fire heat flux to LSM + units = flag + dimensions = () + type = logical + intent = in +[fire_heat_flux_out] + standard_name = surface_fire_heat_flux + long_name = heat flux of fire at the surface + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in + optional = True +[frac_grid_burned_out] + standard_name = fraction_of_grid_cell_burning + long_name = ration of the burnt area to the grid cell area + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in + optional = True [rhosnf] standard_name = lsm_internal_surface_frozen_precipitation_density long_name = density of frozen precipitation @@ -1790,31 +1815,6 @@ dimensions = () type = logical intent = in -[add_fire_heat_flux] - standard_name = flag_for_fire_heat_flux - long_name = flag to add fire heat flux to LSM - units = flag - dimensions = () - type = logical - intent = in -[fire_heat_flux_out] - standard_name = surface_fire_heat_flux - long_name = heat flux of fire at the surface - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = True -[frac_grid_burned_out] - standard_name = fraction_of_grid_cell_burning - long_name = ration of the burnt area to the grid cell area - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = in - optional = True [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/SFC_Models/SeaIce/CICE/sfc_sice.meta b/physics/SFC_Models/SeaIce/CICE/sfc_sice.meta index 828a83939..f6bc339b1 100644 --- a/physics/SFC_Models/SeaIce/CICE/sfc_sice.meta +++ b/physics/SFC_Models/SeaIce/CICE/sfc_sice.meta @@ -304,7 +304,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = in + intent = inout [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 @@ -344,7 +344,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = in + intent = inout [qss_w] standard_name = surface_specific_humidity_over_water long_name = surface air saturation specific humidity over water @@ -352,7 +352,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = in + intent = inout [snowmt] standard_name = surface_snow_melt long_name = snow melt during timestep @@ -392,7 +392,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = in + intent = inout [evapw] standard_name = kinematic_surface_upward_latent_heat_flux_over_water long_name = kinematic surface upward latent heat flux over water @@ -400,7 +400,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = in + intent = inout [hflxi] standard_name = kinematic_surface_upward_sensible_heat_flux_over_ice long_name = kinematic surface upward sensible heat flux over ice @@ -408,7 +408,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = in + intent = inout [hflxw] standard_name = kinematic_surface_upward_sensible_heat_flux_over_water long_name = kinematic surface upward sensible heat flux over water @@ -416,7 +416,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = in + intent = inout [islmsk] standard_name = sea_land_ice_mask_cice long_name = sea/land/ice mask cice (=0/1/2) diff --git a/physics/photochem/module_h2ophys.meta b/physics/photochem/module_h2ophys.meta index 030050acb..9e384104c 100644 --- a/physics/photochem/module_h2ophys.meta +++ b/physics/photochem/module_h2ophys.meta @@ -6,20 +6,3 @@ [ccpp-arg-table] name = ty_h2ophys type = ddt - -######################################################################## -[ccpp-table-properties] - name = module_h2ophys - type = module - dependencies = machine.F - -[ccpp-arg-table] - name = module_h2ophys - type = module -[ty_h2ophys] - standard_name = ty_h2ophys - long_name = definition of type ty_h2ophys - units = DDT - dimensions = () - type = ty_h2ophys - \ No newline at end of file diff --git a/physics/photochem/module_ozphys.meta b/physics/photochem/module_ozphys.meta index 2922d16d7..324f759eb 100644 --- a/physics/photochem/module_ozphys.meta +++ b/physics/photochem/module_ozphys.meta @@ -6,19 +6,4 @@ [ccpp-arg-table] name = ty_ozphys type = ddt - -######################################################################## -[ccpp-table-properties] - name = module_ozphys - type = module - dependencies = machine.F,funcphys.f90 - -[ccpp-arg-table] - name = module_ozphys - type = module -[ty_ozphys] - standard_name = ty_ozphys - long_name = definition of type ty_ozphys - units = DDT - dimensions = () - type = ty_ozphys \ No newline at end of file + \ No newline at end of file diff --git a/physics/smoke_dust/rrfs_smoke_wrapper.F90 b/physics/smoke_dust/rrfs_smoke_wrapper.F90 index 764561272..e1416e336 100755 --- a/physics/smoke_dust/rrfs_smoke_wrapper.F90 +++ b/physics/smoke_dust/rrfs_smoke_wrapper.F90 @@ -237,7 +237,7 @@ subroutine rrfs_smoke_wrapper_run(im, flag_init, kte, kme, ktau, dt, garea, land integer :: i, j, k, kp, n ! MPI variables integer :: mpiid - type(MPI_comm), intent(in) :: mpicomm + type(MPI_Comm), intent(in) :: mpicomm integer, intent(in) :: mpirank integer, intent(in) :: mpiroot diff --git a/physics/smoke_dust/rrfs_smoke_wrapper.meta b/physics/smoke_dust/rrfs_smoke_wrapper.meta index 2f3605ff4..7a90347b3 100755 --- a/physics/smoke_dust/rrfs_smoke_wrapper.meta +++ b/physics/smoke_dust/rrfs_smoke_wrapper.meta @@ -392,7 +392,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = inout + intent = in [us3d] standard_name = x_wind_of_new_state long_name = updated x-direction wind @@ -400,7 +400,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = inout + intent = in [vs3d] standard_name = y_wind_of_new_state long_name = updated y-direction wind @@ -408,7 +408,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = inout + intent = in [spechum] standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics @@ -416,7 +416,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = inout + intent = in [w] standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity @@ -439,7 +439,7 @@ dimensions = (horizontal_loop_extent,vertical_dimension_of_soil_internal_to_land_surface_scheme) type = real kind = kind_phys - intent = inout + intent = in optional = True [tslb] standard_name = soil_temperature_for_land_surface_model @@ -457,6 +457,14 @@ dimensions = (horizontal_loop_extent) type = integer intent = in +[vegtype_frac] + standard_name = fraction_of_vegetation_category + long_name = fraction of horizontal grid area occupied by given vegetation category + units = frac + dimensions = (horizontal_loop_extent,number_of_vegetation_categories) + type = real + kind = kind_phys + intent = in [soiltyp] standard_name = soil_type_classification long_name = soil type at each grid cell @@ -471,14 +479,6 @@ dimensions = () type = integer intent = in -[vegtype_frac] - standard_name = fraction_of_vegetation_category - long_name = fraction of horizontal grid area occupied by given vegetation category - units = frac - dimensions = (horizontal_loop_extent,number_of_vegetation_categories) - type = real - kind = kind_phys - intent = in [dswsfc] standard_name = surface_downwelling_shortwave_flux long_name = surface downwelling shortwave flux at current time @@ -752,6 +752,24 @@ kind = kind_phys intent = inout optional = True +[drydep_flux_out] + standard_name = dry_deposition_flux + long_name = rrfs dry deposition flux + units = ug m-2 + dimensions = (horizontal_loop_extent,number_of_chemical_species_deposited) + type = real + kind = kind_phys + intent = inout + optional = True +[wetdpr] + standard_name = mp_wet_deposition_smoke_dust + long_name = large scale wet deposition of smoke and dust + units = kg kg-1 + dimensions = (horizontal_loop_extent,number_of_chemical_species_vertically_mixed) + type = real + kind = kind_phys + intent = inout + optional = True [ebb_smoke_in] standard_name = surface_smoke_emission long_name = emission of surface smoke @@ -823,72 +841,6 @@ kind = kind_phys intent = inout optional = True -[mpicomm] - standard_name = mpi_communicator - long_name = MPI communicator - units = index - dimensions = () - type = MPI_Comm - intent = in -[mpirank] - standard_name = mpi_rank - long_name = current MPI-rank - units = index - dimensions = () - type = integer - intent = in -[mpiroot] - standard_name = mpi_root - long_name = master MPI-rank - units = index - dimensions = () - type = integer - intent = in -[rho_dry] - standard_name = dry_air_density - long_name = dry air density - units = kg m-3 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[uspdavg] - standard_name = mean_wind_speed_in_boundary_layer - long_name = average wind speed within the boundary layer - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = True -[hpbl_thetav] - standard_name = atmosphere_boundary_layer_thickness_from_modified_parcel - long_name = pbl height based on modified parcel method - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = inout - optional = True -[drydep_flux_out] - standard_name = dry_deposition_flux - long_name = rrfs dry deposition flux - units = ug m-2 - dimensions = (horizontal_loop_extent,number_of_chemical_species_deposited) - type = real - kind = kind_phys - intent = inout - optional = True -[wetdpr] - standard_name = mp_wet_deposition_smoke_dust - long_name = large scale wet deposition of smoke and dust - units = kg kg-1 - dimensions = (horizontal_loop_extent,number_of_chemical_species_vertically_mixed) - type = real - kind = kind_phys - intent = inout - optional = True [hwp] standard_name = hourly_wildfire_potential long_name = rrfs hourly fire weather potential @@ -896,7 +848,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - intent = out + intent = inout optional = True [hwp_ave] standard_name = hourly_wildfire_potential_average @@ -932,32 +884,48 @@ kind = kind_phys intent = inout optional = True +[smoke_fire] + standard_name = smoke_emission_of_fire + long_name = smoke emission of fire + units = kg m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in + optional = True +[cpl_fire] + standard_name = do_fire_coupling + long_name = flag controlling fire_behavior collection (default off) + units = flag + dimensions = () + type = logical + intent = in [peak_hr_out] - standard_name = peak_hr_fire - long_name = time_of_peak_fire_emissions - units = s - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = out + standard_name = peak_hr_fire + long_name = time_of_peak_fire_emissions + units = s + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout optional = True [lu_nofire_out] - standard_name = sum_of_land_use_fractions_for_no_fire_pixels - long_name = land use of no fire pixels for type - units = 1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = out + standard_name = sum_of_land_use_fractions_for_no_fire_pixels + long_name = land use of no fire pixels for type + units = 1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = out optional = True [lu_qfire_out] - standard_name = sum_of_land_use_fractions_for_cropland_fire_pixels - long_name = land use of fire pixels for type - units = 1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - intent = out + standard_name = sum_of_land_use_fractions_for_cropland_fire_pixels + long_name = land use of fire pixels for type + units = 1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = out optional = True [fire_heat_flux_out] standard_name = surface_fire_heat_flux @@ -985,29 +953,61 @@ type = real kind = kind_phys intent = in -[smoke_fire] - standard_name = smoke_emission_of_fire - long_name = smoke emission of fire - units = kg m-2 +[totprcp] + standard_name = accumulated_lwe_thickness_of_precipitation_amount + long_name = accumulated total precipitation + units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys intent = in +[uspdavg] + standard_name = mean_wind_speed_in_boundary_layer + long_name = average wind speed within the boundary layer + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = inout optional = True -[totprcp] - standard_name = accumulated_lwe_thickness_of_precipitation_amount - long_name = accumulated total precipitation +[hpbl_thetav] + standard_name = atmosphere_boundary_layer_thickness_from_modified_parcel + long_name = pbl height based on modified parcel method units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys + intent = inout + optional = True +[rho_dry] + standard_name = dry_air_density + long_name = dry air density + units = kg m-3 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[mpicomm] + standard_name = mpi_communicator + long_name = MPI communicator + units = index + dimensions = () + type = MPI_Comm intent = in -[cpl_fire] - standard_name = do_fire_coupling - long_name = flag controlling fire_behavior collection (default off) - units = flag +[mpirank] + standard_name = mpi_rank + long_name = current MPI-rank + units = index dimensions = () - type = logical + type = integer + intent = in +[mpiroot] + standard_name = mpi_root + long_name = master MPI-rank + units = index + dimensions = () + type = integer intent = in [errmsg] standard_name = ccpp_error_message diff --git a/physics/tools/get_phi_fv3.F90 b/physics/tools/get_phi_fv3.F90 index d111d3ae0..60fbc2470 100644 --- a/physics/tools/get_phi_fv3.F90 +++ b/physics/tools/get_phi_fv3.F90 @@ -4,7 +4,6 @@ module get_phi_fv3 use machine, only: kind_phys - use physcons, only: con_fvirt !--- public declarations public get_phi_fv3_run @@ -56,4 +55,4 @@ subroutine get_phi_fv3_run(ix, levs, con_fvirt, gt0, gq01, del_gz, phii, phil, e end subroutine get_phi_fv3_run -end module get_phi_fv3 \ No newline at end of file +end module get_phi_fv3 diff --git a/physics/tools/get_phi_fv3.meta b/physics/tools/get_phi_fv3.meta index 5c162c746..2d30a7bb6 100644 --- a/physics/tools/get_phi_fv3.meta +++ b/physics/tools/get_phi_fv3.meta @@ -2,7 +2,7 @@ [ccpp-table-properties] name = get_phi_fv3 type = scheme - dependencies = ../hooks/machine.F,../hooks/physcons.F90 + dependencies = ../hooks/machine.F ######################################################################## [ccpp-arg-table]