[ccpp-table-properties]
  name = scm_sfc_flux_spec
  type = scheme
  dependencies = machine.F

########################################################################
[ccpp-arg-table]
  name = scm_sfc_flux_spec_init
  type = scheme
[lheatstrg]
  standard_name = flag_for_canopy_heat_storage_in_land_surface_scheme
  long_name = flag for canopy heat storage parameterization
  units = flag
  dimensions = ()
  type = logical
  intent = in
[errmsg]
  standard_name = ccpp_error_message
  long_name = error message for error handling in CCPP
  units = none
  dimensions = ()
  type = character
  kind = len=*
  intent = out
[errflg]
  standard_name = ccpp_error_code
  long_name = error code for error handling in CCPP
  units = 1
  dimensions = ()
  type = integer
  intent = out

#################################
[ccpp-arg-table]
  name = scm_sfc_flux_spec_run
  type = scheme
[im]
  standard_name = horizontal_loop_extent
  long_name = horizontal loop extent
  units = count
  dimensions = ()
  type = integer
  intent = in
[u1]
  standard_name = x_wind_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_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
[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
[t1]
  standard_name = air_temperature_at_surface_adjacent_layer
  long_name = 1st model layer air temperature
  units = K
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = in
[q1]
  standard_name = specific_humidity_at_surface_adjacent_layer
  long_name = 1st model layer specific humidity
  units = kg kg-1
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = in
[p1]
  standard_name = air_pressure_at_surface_adjacent_layer
  long_name = Model layer 1 mean pressure
  units = Pa
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = in
[roughness_length]
  standard_name = surface_roughness_length
  long_name = surface roughness length
  units = cm
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = in
[spec_sh_flux]
  standard_name = specified_surface_upward_temperature_flux
  long_name = specified kinematic surface upward sensible heat flux
  units = K m s-1
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = in
[spec_lh_flux]
  standard_name = specified_surface_upward_specific_humidity_flux
  long_name = specified kinematic surface upward latent heat flux
  units = kg kg-1 m s-1
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = in
[exner_inverse]
  standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer
  long_name = Exner function ratio bt midlayer and interface at 1st layer
  units = ratio
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = in
[T_surf]
  standard_name = surface_skin_temperature
  long_name = surface skin temperature
  units = K
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = in
[cp]
  standard_name = specific_heat_of_dry_air_at_constant_pressure
  long_name = specific heat of dry air at constant pressure
  units = J kg-1 K-1
  dimensions = ()
  type = real
  kind = kind_phys
  intent = in
[grav]
  standard_name = gravitational_acceleration
  long_name = gravitational acceleration
  units = m s-2
  dimensions = ()
  type = real
  kind = kind_phys
  intent = in
[hvap]
  standard_name = latent_heat_of_vaporization_of_water_at_0C
  long_name = latent heat of vaporization of water at 0C
  units = J kg-1
  dimensions = ()
  type = real
  kind = kind_phys
  intent = in
[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
[fvirt]
  standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one
  long_name = rv/rd - 1 (rv = ideal gas constant for water vapor)
  units = none
  dimensions = ()
  type = real
  kind = kind_phys
  intent = in
[vonKarman]
  standard_name = von_karman_constant
  long_name = Von Karman constant
  units = none
  dimensions = ()
  type = real
  kind = kind_phys
  intent = in
[tgice]
  standard_name = freezing_point_temperature_of_seawater
  long_name = freezing point temperature of seawater
  units = K
  dimensions = ()
  type = real
  kind = kind_phys
  intent = in
[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
[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
[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 = out
[cice]
  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
[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
[tisfc]
  standard_name = surface_skin_temperature_over_ice
  long_name = surface skin temperature over ice
  units = K
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = inout
[oceanfrac]
  standard_name = sea_area_fraction
  long_name = fraction of horizontal grid area occupied by ocean
  units = frac
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = in
[min_seaice]
  standard_name = min_sea_ice_area_fraction
  long_name = minimum sea ice value
  units = frac
  dimensions = ()
  type = real
  kind = kind_phys
  intent = in
[cplflx]
  standard_name = flag_for_surface_flux_coupling
  long_name = flag controlling cplflx collection (default off)
  units = flag
  dimensions = ()
  type = logical
  intent = in
[cplice]
  standard_name = flag_for_sea_ice_coupling
  long_name = flag controlling cplice collection (default on)
  units = flag
  dimensions = ()
  type = logical
  intent = in
[flag_cice]
  standard_name = flag_for_cice
  long_name = flag for cice
  units = flag
  dimensions = (horizontal_loop_extent)
  type = logical
  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
[min_lakeice]
  standard_name = min_lake_ice_area_fraction
  long_name = minimum lake ice value
  units = frac
  dimensions = ()
  type = real
  kind = kind_phys
  intent = in
[tsfcl]
  standard_name = surface_skin_temperature_over_land
  long_name = surface skin temperature over land
  units = K
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = inout
[tsfc_wat]
  standard_name = surface_skin_temperature_over_water
  long_name = surface skin temperature over water
  units = K
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = inout
[slmsk]
  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 = inout
[lakefrac]
  standard_name = lake_area_fraction
  long_name = fraction of horizontal grid area occupied by lake
  units = frac
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  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
[lakedepth]
  standard_name = lake_depth
  long_name = lake depth
  units = m
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  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 = inout
[sh_flux]
  standard_name = surface_upward_temperature_flux
  long_name = surface upward sensible heat flux
  units = K m s-1
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = out
[lh_flux]
  standard_name = surface_upward_specific_humidity_flux
  long_name = surface upward evaporation flux
  units = kg kg-1 m s-1
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = out
[sh_flux_chs]
  standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation
  long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation
  units = K m s-1
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = out
[u_star]
  standard_name = surface_friction_velocity
  long_name = boundary layer parameter
  units = m s-1
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = out
[sfc_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 = out
[cm]
  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 = out
[ch]
  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 = out
[fm]
  standard_name = Monin_Obukhov_similarity_function_for_momentum
  long_name = Monin-Obukhov similarity function for momentum
  units = none
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = out
[fh]
  standard_name = Monin_Obukhov_similarity_function_for_heat
  long_name = Monin-Obukhov similarity function for heat
  units = none
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = out
[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 = out
[u10m]
  standard_name = x_wind_at_10m
  long_name = 10 meter u wind speed
  units = m s-1
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = out
[v10m]
  standard_name = y_wind_at_10m
  long_name = 10 meter v wind speed
  units = m s-1
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = out
[wind1]
  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 = out
[qss]
  standard_name = surface_specific_humidity
  long_name = surface air saturation specific humidity
  units = kg kg-1
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = out
[t2m]
  standard_name = air_temperature_at_2m
  long_name = 2 meter temperature
  units = K
  dimensions = (horizontal_loop_extent)
  type = real
  kind = kind_phys
  intent = out
[q2m]
  standard_name = specific_humidity_at_2m
  long_name = 2 meter specific humidity
  units = kg kg-1
  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
  units = none
  dimensions = ()
  type = character
  kind = len=*
  intent = out
[errflg]
  standard_name = ccpp_error_code
  long_name = error code for error handling in CCPP
  units = 1
  dimensions = ()
  type = integer
  intent = out