diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ab148b6..fa7f4704 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Updated read_obs_sm_ASCAT_EUMET to work with both original and revised file name templates. +- Updated subroutine read_obs_sm_ASCAT_EUMET() to work with both original and revised file name templates. +- Revised variable names (SHORT_NAME) and descriptions (LONG_NAME) to match M21C file specs. ### Fixed diff --git a/GEOSens_GridComp/GEOS_EnsGridComp.F90 b/GEOSens_GridComp/GEOS_EnsGridComp.F90 index e38d8cb2..7dd65533 100644 --- a/GEOSens_GridComp/GEOS_EnsGridComp.F90 +++ b/GEOSens_GridComp/GEOS_EnsGridComp.F90 @@ -4,7 +4,8 @@ module GEOS_EnsGridCompMod ! !USES - !! This grid comp behaves like a coupler. The set service, initialization are compliant with MAPL grid comp concept. + !! This grid comp behaves like a coupler; SetServices() and Initialize() are compliant with MAPL's GridComp concept. + use ESMF use MAPL_Mod use catch_constants, only: DZGT => CATCH_DZGT @@ -31,22 +32,22 @@ module GEOS_EnsGridCompMod integer, parameter :: NUM_SUBTILES=4 real :: enavg_nodata_threshold - type(cat_progn_type),dimension(:,:), allocatable :: catch_progn - type(cat_param_type),dimension(: ), allocatable :: catch_param - - + type(cat_progn_type), dimension(:,:), allocatable :: catch_progn + type(cat_param_type), dimension(: ), allocatable :: catch_param ! 1d only, assumes no parameter perturbations! + + contains - + !BOP - - ! !IROTUINE: SetServices -- Set ESMF services for this component - + + ! !ROUTINE: SetServices -- Set ESMF services for this component + ! !INTERFACE: - + subroutine SetServices(gc, rc) - + ! !ARGUMENTS: - + type(ESMF_GridComp), intent(inout) :: gc ! gridded component integer, optional :: rc ! return code @@ -73,7 +74,7 @@ subroutine SetServices(gc, rc) ) VERIFY_(status) - ! phase one: collect forcing ensemble + ! phase 1: collect forcing ensemble call MAPL_GridCompSetEntryPoint( & gc, & ESMF_METHOD_RUN, & @@ -82,7 +83,7 @@ subroutine SetServices(gc, rc) ) VERIFY_(status) - ! phase two : collect ensemble out from land + ! phase 2: collect ensemble out from land call MAPL_GridCompSetEntryPoint( & gc, & ESMF_METHOD_RUN, & @@ -91,11 +92,11 @@ subroutine SetServices(gc, rc) ) VERIFY_(status) - !phase 3 : get cat_param + ! phase 3: get catch_param call MAPL_GridCompSetEntryPoint( & gc, & ESMF_METHOD_RUN, & - GET_CATCH_PARAM , & + GET_CATCH_PARAM , & rc=status & ) VERIFY_(status) @@ -152,7 +153,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'interception_reservoir_capac',& + LONG_NAME = 'vegetation_interception_water_storage',& UNITS = 'kg m-2' ,& SHORT_NAME = 'CAPAC' ,& ! FRIENDLYTO = trim(COMP_NAME) ,& @@ -459,7 +460,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'runoff_flux' ,& + LONG_NAME = 'runoff_total_flux' ,& UNITS = 'kg m-2 s-1' ,& SHORT_NAME = 'RUNOFF' ,& DIMS = MAPL_DimsTileOnly ,& @@ -468,7 +469,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'interception_loss_energy_flux',& + LONG_NAME = 'interception_loss_latent_heat_flux',& UNITS = 'W m-2' ,& SHORT_NAME = 'EVPINT' ,& DIMS = MAPL_DimsTileOnly ,& @@ -477,7 +478,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'baresoil_evap_energy_flux' ,& + LONG_NAME = 'baresoil_evaporation_latent_heat_flux' ,& UNITS = 'W m-2' ,& SHORT_NAME = 'EVPSOI' ,& DIMS = MAPL_DimsTileOnly ,& @@ -486,7 +487,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'transpiration_energy_flux' ,& + LONG_NAME = 'transpiration_latent_heat_flux' ,& UNITS = 'W m-2' ,& SHORT_NAME = 'EVPVEG' ,& DIMS = MAPL_DimsTileOnly ,& @@ -495,7 +496,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'snow_ice_evaporation_energy_flux',& + LONG_NAME = 'snowpack_evaporation_latent_heat_flux_on_land',& UNITS = 'W m-2' ,& SHORT_NAME = 'EVPICE' ,& DIMS = MAPL_DimsTileOnly ,& @@ -514,7 +515,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'totoal soil moisture' ,& + LONG_NAME = 'total_soil_moisture' ,& UNITS = 'kg m-2' ,& SHORT_NAME = 'WATSOI' ,& DIMS = MAPL_DimsTileOnly ,& @@ -532,7 +533,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'snowpack_evaporation_energy_flux',& + LONG_NAME = 'snowpack_evaporation_latent_heat_flux',& UNITS = 'W m-2' ,& SHORT_NAME = 'EVPSNO' ,& DIMS = MAPL_DimsTileOnly ,& @@ -540,7 +541,7 @@ subroutine SetServices(gc, rc) RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'baseflow_flux' ,& + LONG_NAME = 'baseflow_flux_land' ,& UNITS = 'kg m-2 s-1' ,& SHORT_NAME = 'BASEFLOW' ,& DIMS = MAPL_DimsTileOnly ,& @@ -567,7 +568,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'surface_outgoing_longwave_flux',& + LONG_NAME = 'surface_emitted_longwave_flux',& UNITS = 'W m-2' ,& SHORT_NAME = 'HLWUP' ,& DIMS = MAPL_DimsTileOnly ,& @@ -595,7 +596,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'total_latent_energy_flux' ,& + LONG_NAME = 'total_latent_heat_flux_consistent_with_evaporation_from_turbulence' ,& UNITS = 'W m-2' ,& SHORT_NAME = 'HLATN' ,& DIMS = MAPL_DimsTileOnly ,& @@ -604,7 +605,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'rainwater_infiltration_flux',& + LONG_NAME = 'Soil_water_infiltration_rate',& UNITS = 'kg m-2 s-1' ,& SHORT_NAME = 'QINFIL' ,& DIMS = MAPL_DimsTileOnly ,& @@ -649,7 +650,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'ave_catchment_temp_incl_snw',& + LONG_NAME = 'surface_temperature_of_land_incl_snow',& UNITS = 'K' ,& SHORT_NAME = 'TPSURF' ,& DIMS = MAPL_DimsTileOnly ,& @@ -658,7 +659,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'ave_catchment_temp_incl_snw_ensstd',& + LONG_NAME = 'surface_temperature_of_land_incl_snow_ensstd',& UNITS = 'K' ,& SHORT_NAME = 'TPSURF_ENSSTD' ,& DIMS = MAPL_DimsTileOnly ,& @@ -667,7 +668,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'temperature_top_snow_layer',& + LONG_NAME = 'surface_temperature_of_snow_on_land',& UNITS = 'K' ,& SHORT_NAME = 'TPSNOW' ,& DIMS = MAPL_DimsTileOnly ,& @@ -676,7 +677,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'temperature_unsaturated_zone',& + LONG_NAME = 'surface_temperature_of_unsaturated_zone',& UNITS = 'K' ,& SHORT_NAME = 'TPUNST' ,& DIMS = MAPL_DimsTileOnly ,& @@ -685,7 +686,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'temperature_saturated_zone',& + LONG_NAME = 'surface_temperature_of_saturated_zone',& UNITS = 'K' ,& SHORT_NAME = 'TPSAT' ,& DIMS = MAPL_DimsTileOnly ,& @@ -694,7 +695,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'temperature_wilted_zone' ,& + LONG_NAME = 'surface_temperature_of_wilting_zone' ,& UNITS = 'K' ,& SHORT_NAME = 'TPWLT' ,& DIMS = MAPL_DimsTileOnly ,& @@ -703,7 +704,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'fractional_area_of_land_snowcover',& + LONG_NAME = 'fractional_area_of_snow_on_land',& UNITS = '1' ,& SHORT_NAME = 'ASNOW' ,& DIMS = MAPL_DimsTileOnly ,& @@ -766,7 +767,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'snow_depth' ,& + LONG_NAME = 'snow_depth_within_snow_covered_area_fraction_on_land' ,& UNITS = 'm' ,& SHORT_NAME = 'SNOWDP' ,& DIMS = MAPL_DimsTileOnly ,& @@ -775,7 +776,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'surface_soil_wetness' ,& + LONG_NAME = 'soil_wetness_surface' ,& UNITS = '1' ,& SHORT_NAME = 'WET1' ,& DIMS = MAPL_DimsTileOnly ,& @@ -784,7 +785,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'root_zone_soil_wetness' ,& + LONG_NAME = 'soil_wetness_rootzone' ,& UNITS = '1' ,& SHORT_NAME = 'WET2' ,& DIMS = MAPL_DimsTileOnly ,& @@ -793,7 +794,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'ave_prof_soil__moisture' ,& + LONG_NAME = 'soil_wetness_profile' ,& UNITS = '1' ,& SHORT_NAME = 'WET3' ,& DIMS = MAPL_DimsTileOnly ,& @@ -802,7 +803,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'water_surface_layer' ,& + LONG_NAME = 'soil_moisture_surface' ,& UNITS = 'm3 m-3' ,& SHORT_NAME = 'WCSF' ,& DIMS = MAPL_DimsTileOnly ,& @@ -811,7 +812,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'water_surface_layer_ensstd' ,& + LONG_NAME = 'soil_moisture_surface_ensstd' ,& UNITS = 'm3 m-3' ,& SHORT_NAME = 'WCSF_ENSSTD' ,& DIMS = MAPL_DimsTileOnly ,& @@ -820,7 +821,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'water_root_zone' ,& + LONG_NAME = 'soil_moisture_rootzone' ,& UNITS = 'm3 m-3' ,& SHORT_NAME = 'WCRZ' ,& DIMS = MAPL_DimsTileOnly ,& @@ -829,7 +830,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'water_root_zone_ensstd' ,& + LONG_NAME = 'soil_moisture_rootzone_ensstd' ,& UNITS = 'm3 m-3' ,& SHORT_NAME = 'WCRZ_ENSSTD' ,& DIMS = MAPL_DimsTileOnly ,& @@ -839,7 +840,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'water_ave_prof' ,& + LONG_NAME = 'soil_moisture_profile' ,& UNITS = 'm3 m-3' ,& SHORT_NAME = 'WCPR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -848,7 +849,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'water_ave_prof_ensstd' ,& + LONG_NAME = 'soil_moisture_profile_ensstd' ,& UNITS = 'm3 m-3' ,& SHORT_NAME = 'WCPR_ENSSTD' ,& DIMS = MAPL_DimsTileOnly ,& @@ -857,63 +858,63 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'soil_temperatures_layer_1' ,& + LONG_NAME = 'soil_temperature_layer_1' ,& UNITS = 'K' ,& - SHORT_NAME = 'TSOIL1TILE' ,& + SHORT_NAME = 'TP1' ,& DIMS = MAPL_DimsTileOnly ,& VLOCATION = MAPL_VLocationNone ,& RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'soil_temperatures_layer_1_ensstd' ,& + LONG_NAME = 'soil_temperature_layer_1_ensstd' ,& UNITS = 'K' ,& - SHORT_NAME = 'TSOIL1TILE_ENSSTD' ,& + SHORT_NAME = 'TP1_ENSSTD' ,& DIMS = MAPL_DimsTileOnly ,& VLOCATION = MAPL_VLocationNone ,& RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'soil_temperatures_layer_2' ,& + LONG_NAME = 'soil_temperature_layer_2' ,& UNITS = 'K' ,& - SHORT_NAME = 'TSOIL2TILE' ,& + SHORT_NAME = 'TP2' ,& DIMS = MAPL_DimsTileOnly ,& VLOCATION = MAPL_VLocationNone ,& RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'soil_temperatures_layer_3' ,& + LONG_NAME = 'soil_temperature_layer_3' ,& UNITS = 'K' ,& - SHORT_NAME = 'TSOIL3TILE' ,& + SHORT_NAME = 'TP3' ,& DIMS = MAPL_DimsTileOnly ,& VLOCATION = MAPL_VLocationNone ,& RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'soil_temperatures_layer_4' ,& + LONG_NAME = 'soil_temperature_layer_4' ,& UNITS = 'K' ,& - SHORT_NAME = 'TSOIL4TILE' ,& + SHORT_NAME = 'TP4' ,& DIMS = MAPL_DimsTileOnly ,& VLOCATION = MAPL_VLocationNone ,& RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'soil_temperatures_layer_5' ,& + LONG_NAME = 'soil_temperature_layer_5' ,& UNITS = 'K' ,& - SHORT_NAME = 'TSOIL5TILE' ,& + SHORT_NAME = 'TP5' ,& DIMS = MAPL_DimsTileOnly ,& VLOCATION = MAPL_VLocationNone ,& RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'soil_temperatures_layer_6' ,& + LONG_NAME = 'soil_temperature_layer_6' ,& UNITS = 'K' ,& - SHORT_NAME = 'TSOIL6TILE' ,& + SHORT_NAME = 'TP6' ,& DIMS = MAPL_DimsTileOnly ,& VLOCATION = MAPL_VLocationNone ,& RC=STATUS ) @@ -929,7 +930,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'surface_albedo_visible_beam',& + LONG_NAME = 'surface_reflectivity_visible_beam',& UNITS = '1' ,& SHORT_NAME = 'ALBVR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -938,7 +939,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'surface_albedo_visible_diffuse',& + LONG_NAME = 'surface_reflectivity_visible_diffuse',& UNITS = '1' ,& SHORT_NAME = 'ALBVF' ,& DIMS = MAPL_DimsTileOnly ,& @@ -947,7 +948,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'surface_albedo_near_infrared_beam',& + LONG_NAME = 'surface_reflectivity_near_infrared_beam',& UNITS = '1' ,& SHORT_NAME = 'ALBNR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -956,7 +957,7 @@ subroutine SetServices(gc, rc) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - LONG_NAME = 'surface_albedo_near_infrared_diffuse',& + LONG_NAME = 'surface_reflectivity_near_infrared_diffuse',& UNITS = '1' ,& SHORT_NAME = 'ALBNF' ,& DIMS = MAPL_DimsTileOnly ,& @@ -1224,21 +1225,19 @@ subroutine SetServices(gc, rc) VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'ACCUM', & - LONG_NAME = 'net_ice_accumulation_rate', & - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsTileOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - + + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'ACCUM', & + LONG_NAME = 'net_ice_accumulation_rate', & + UNITS = 'kg m-2 s-1', & + DIMS = MAPL_DimsTileOnly, & + VLOCATION = MAPL_VLocationNone, & + RC=STATUS ) + VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'EVLAND', & - LONG_NAME = 'Evaporation_land', & + LONG_NAME = 'total_evapotranspiration_land', & UNITS = 'kg m-2 s-1', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1265,7 +1264,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DRPARLAND', & - LONG_NAME = 'surface_downwelling_par_beam_flux', & + LONG_NAME = 'surface_downwelling_PAR_beam_flux', & UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1274,7 +1273,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DFPARLAND', & - LONG_NAME = 'surface_downwelling_par_diffuse_flux', & + LONG_NAME = 'surface_downwelling_PAR_diffuse_flux', & UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1292,8 +1291,8 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SWNETSNOW', & - LONG_NAME = 'Net_shortwave_snow', & + SHORT_NAME = 'SWNETSNOW', & + LONG_NAME = 'Net_shortwave_flux_snow', & UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1303,7 +1302,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'LWUPSNOW', & - LONG_NAME = 'Net_longwave_snow', & + LONG_NAME = 'surface_emitted_longwave_flux_snow', & UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1312,7 +1311,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'LWDNSNOW', & - LONG_NAME = 'Net_longwave_snow', & + LONG_NAME = 'surface_absorbed_longwave_flux_snow', & UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1377,7 +1376,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'SWLAND', & - LONG_NAME = 'Net_shortwave_land', & + LONG_NAME = 'Net_shortwave_flux_land', & UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1386,7 +1385,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'SWDOWNLAND', & - LONG_NAME = 'Incident_shortwave_land', & + LONG_NAME = 'Incident_shortwave_flux_land', & UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1396,7 +1395,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'LWLAND', & - LONG_NAME = 'Net_longwave_land', & + LONG_NAME = 'Net_longwave_flux_land', & UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1406,7 +1405,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'GHLAND', & - LONG_NAME = 'Ground_heating_land', & + LONG_NAME = 'Ground_heating_flux_land', & UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1415,7 +1414,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'GHTSKIN', & - LONG_NAME = 'Ground_heating_skin_temp', & + LONG_NAME = 'Ground_heating_flux_for_skin_temp_land', & UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1434,7 +1433,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'TWLAND', & - LONG_NAME = 'Avail_water_storage_land', & + LONG_NAME = 'total_water_storage_land', & UNITS = 'kg m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1480,7 +1479,16 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'SPLAND', & - LONG_NAME = 'rate_of_spurious_land_energy_source',& + LONG_NAME = 'Spurious_sensible_heat_flux_land',& + UNITS = 'W m-2', & + DIMS = MAPL_DimsTileOnly, & + VLOCATION = MAPL_VLocationNone, & + RC=STATUS ) + VERIFY_(STATUS) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'SPLH', & + LONG_NAME = 'Spurious_latent_heat_flux_land',& UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1489,7 +1497,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'SPWATR', & - LONG_NAME = 'rate_of_spurious_land_water_source',& + LONG_NAME = 'Spurious_evapotranspiration_flux_land',& UNITS = 'kg m-2 s-1', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1498,7 +1506,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'SPSNOW', & - LONG_NAME = 'rate_of_spurious_snow_energy',& + LONG_NAME = 'Spurious_snow_energy_flux_land',& UNITS = 'W m-2', & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VLocationNone, & @@ -1838,7 +1846,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec( & gc, & SHORT_NAME = "DRPAR", & - LONG_NAME = "surface_downwelling_par_beam_flux", & + LONG_NAME = "surface_downwelling_PAR_beam_flux", & UNITS = "W m-2", & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VlocationNone, & @@ -1849,7 +1857,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec( & gc, & SHORT_NAME = "DFPAR", & - LONG_NAME = "surface_downwelling_par_diffuse_flux", & + LONG_NAME = "surface_downwelling_PAR_diffuse_flux", & UNITS = "W m-2", & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VlocationNone, & @@ -1904,7 +1912,7 @@ subroutine SetServices(gc, rc) call MAPL_AddExportSpec( & gc, & SHORT_NAME = "LWDNSRF", & - LONG_NAME = "perturbed_surface_downwelling_longwave_flux", & + LONG_NAME = "perturbed_surface_absorbed_longwave_flux", & UNITS = "W m-2", & DIMS = MAPL_DimsTileOnly, & VLOCATION = MAPL_VlocationNone, & @@ -1941,10 +1949,11 @@ subroutine SetServices(gc, rc) end subroutine SetServices - + ! ------------------------------------------------------------------------------------------------------------ + ! !BOP - - ! !IROTUINE: Initialize -- initialize method for LDAS GC + ! + ! !ROUTINE: Initialize -- initialize method for LDAS Ens GC ! !INTERFACE: @@ -2011,10 +2020,11 @@ subroutine Initialize(gc, import, export, clock, rc) end subroutine Initialize - + ! ------------------------------------------------------------------------------------------------------------ + ! !BOP - - ! !IROTUINE: collecting and averaging + ! + ! !ROUTINE: collect and average surface met forcing ensemble subroutine Collect_force_ens(gc, import, export, clock, rc) @@ -2088,7 +2098,6 @@ subroutine Collect_force_ens(gc, import, export, clock, rc) call MAPL_TimerOn(MAPL, "TOTAL") call MAPL_TimerOn(MAPL, "Collect_force") - call MAPL_GetPointer(import, TApert, 'TApert', rc=status) VERIFY_(status) call MAPL_GetPointer(import, QApert, 'QApert', rc=status) @@ -2233,6 +2242,10 @@ subroutine Collect_force_ens(gc, import, export, clock, rc) end subroutine Collect_force_ens + ! ------------------------------------------------------------------------------------------------------------ + ! + ! !ROUTINE: collect and average land ensemble + subroutine Collect_land_ens(gc, import, export, clock, rc) ! !ARGUMENTS: @@ -2419,6 +2432,7 @@ subroutine Collect_land_ens(gc, import, export, clock, rc) real, dimension(:),pointer :: DWLAND,DWLAND_enavg real, dimension(:),pointer :: DHLAND,DHLAND_enavg real, dimension(:),pointer :: SPLAND,SPLAND_enavg + real, dimension(:),pointer :: SPLH, SPLH_enavg real, dimension(:),pointer :: SPWATR,SPWATR_enavg real, dimension(:),pointer :: SPSNOW,SPSNOW_enavg real, dimension(:),pointer :: PEATCLSM_WATERLEVEL,PEATCLSM_WATERLEVEL_enavg @@ -2782,6 +2796,8 @@ subroutine Collect_land_ens(gc, import, export, clock, rc) VERIFY_(status) call MAPL_GetPointer(import, SPLAND, 'SPLAND' ,rc=status) VERIFY_(status) + call MAPL_GetPointer(import, SPLH, 'SPLH' ,rc=status) + VERIFY_(status) call MAPL_GetPointer(import, SPWATR, 'SPWATR' ,rc=status) VERIFY_(status) call MAPL_GetPointer(import, SPSNOW, 'SPSNOW' ,rc=status) @@ -2950,19 +2966,19 @@ subroutine Collect_land_ens(gc, import, export, clock, rc) VERIFY_(status) call MAPL_GetPointer(export, WCPR_enstd, 'WCPR_ENSSTD' ,rc=status) VERIFY_(status) - call MAPL_GetPointer(export, TP1_enavg, 'TSOIL1TILE' ,rc=status) + call MAPL_GetPointer(export, TP1_enavg, 'TP1' ,rc=status) VERIFY_(status) - call MAPL_GetPointer(export, TP1_enstd, 'TSOIL1TILE_ENSSTD' ,rc=status) + call MAPL_GetPointer(export, TP1_enstd, 'TP1_ENSSTD' ,rc=status) VERIFY_(status) - call MAPL_GetPointer(export, TP2_enavg, 'TSOIL2TILE' ,rc=status) + call MAPL_GetPointer(export, TP2_enavg, 'TP2' ,rc=status) VERIFY_(status) - call MAPL_GetPointer(export, TP3_enavg, 'TSOIL3TILE' ,rc=status) + call MAPL_GetPointer(export, TP3_enavg, 'TP3' ,rc=status) VERIFY_(status) - call MAPL_GetPointer(export, TP4_enavg, 'TSOIL4TILE' ,rc=status) + call MAPL_GetPointer(export, TP4_enavg, 'TP4' ,rc=status) VERIFY_(status) - call MAPL_GetPointer(export, TP5_enavg, 'TSOIL5TILE' ,rc=status) + call MAPL_GetPointer(export, TP5_enavg, 'TP5' ,rc=status) VERIFY_(status) - call MAPL_GetPointer(export, TP6_enavg, 'TSOIL6TILE' ,rc=status) + call MAPL_GetPointer(export, TP6_enavg, 'TP6' ,rc=status) VERIFY_(status) call MAPL_GetPointer(export, EMIS_enavg, 'EMIS' ,rc=status) VERIFY_(status) @@ -3084,6 +3100,8 @@ subroutine Collect_land_ens(gc, import, export, clock, rc) VERIFY_(status) call MAPL_GetPointer(export, SPLAND_enavg, 'SPLAND' ,rc=status) VERIFY_(status) + call MAPL_GetPointer(export, SPLH_enavg, 'SPLH' ,rc=status) + VERIFY_(status) call MAPL_GetPointer(export, SPWATR_enavg, 'SPWATR' ,rc=status) VERIFY_(status) call MAPL_GetPointer(export, SPSNOW_enavg, 'SPSNOW' ,rc=status) @@ -3253,6 +3271,7 @@ subroutine Collect_land_ens(gc, import, export, clock, rc) if(associated(DWLAND_enavg)) DWLAND_enavg = 0.0 if(associated(DHLAND_enavg)) DHLAND_enavg = 0.0 if(associated(SPLAND_enavg)) SPLAND_enavg = 0.0 + if(associated(SPLH_enavg)) SPLH_enavg = 0.0 if(associated(SPWATR_enavg)) SPWATR_enavg = 0.0 if(associated(SPSNOW_enavg)) SPSNOW_enavg = 0.0 if(associated(PEATCLSM_WATERLEVEL_enavg)) PEATCLSM_WATERLEVEL_enavg = 0.0 @@ -3546,6 +3565,8 @@ subroutine Collect_land_ens(gc, import, export, clock, rc) DHLAND_enavg = DHLAND_enavg + DHLAND if(associated(SPLAND_enavg) .and. associated(SPLAND)) & SPLAND_enavg = SPLAND_enavg + SPLAND + if(associated(SPLH_enavg) .and. associated(SPLH)) & + SPLH_enavg = SPLH_enavg + SPLH if(associated(SPWATR_enavg) .and. associated(SPWATR)) & SPWATR_enavg = SPWATR_enavg + SPWATR if(associated(SPSNOW_enavg) .and. associated(SPSNOW)) & @@ -3786,6 +3807,7 @@ subroutine Collect_land_ens(gc, import, export, clock, rc) if(associated(DWLAND_enavg)) DWLAND_enavg = DWLAND_enavg/NUM_ENSEMBLE if(associated(DHLAND_enavg)) DHLAND_enavg = DHLAND_enavg/NUM_ENSEMBLE if(associated(SPLAND_enavg)) SPLAND_enavg = SPLAND_enavg/NUM_ENSEMBLE + if(associated(SPLH_enavg)) SPLH_enavg = SPLH_enavg /NUM_ENSEMBLE if(associated(SPWATR_enavg)) SPWATR_enavg = SPWATR_enavg/NUM_ENSEMBLE if(associated(SPSNOW_enavg)) SPSNOW_enavg = SPSNOW_enavg/NUM_ENSEMBLE if(associated(PEATCLSM_WATERLEVEL_enavg)) PEATCLSM_WATERLEVEL_enavg = PEATCLSM_WATERLEVEL_enavg/NUM_ENSEMBLE @@ -3850,7 +3872,10 @@ subroutine Collect_land_ens(gc, import, export, clock, rc) RETURN_(ESMF_SUCCESS) end subroutine Collect_land_ens - + + ! ------------------------------------------------------------------------------------------------------------ + ! + ! !ROUTINE: collect Catchment model parameters subroutine GET_CATCH_PARAM( GC, IMPORT, EXPORT, CLOCK, RC ) @@ -3875,38 +3900,38 @@ subroutine GET_CATCH_PARAM( GC, IMPORT, EXPORT, CLOCK, RC ) logical :: firsttime = .true. real, pointer :: poros(:) =>null() - real, pointer :: cond(:) =>null() - real, pointer :: psis(:) =>null() - real, pointer :: bee(:) =>null() + real, pointer :: cond(:) =>null() + real, pointer :: psis(:) =>null() + real, pointer :: bee(:) =>null() real, pointer :: wpwet(:) =>null() - real, pointer :: gnu(:) =>null() - real, pointer :: vgwmax(:) =>null() - real, pointer :: bf1(:) =>null() - real, pointer :: bf2(:) =>null() - real, pointer :: bf3(:) =>null() + real, pointer :: gnu(:) =>null() + real, pointer :: vgwmax(:)=>null() + real, pointer :: bf1(:) =>null() + real, pointer :: bf2(:) =>null() + real, pointer :: bf3(:) =>null() real, pointer :: cdcr1(:) =>null() real, pointer :: cdcr2(:) =>null() - real, pointer :: ars1(:) =>null() - real, pointer :: ars2(:) =>null() - real, pointer :: ars3(:) =>null() - real, pointer :: ara1(:) =>null() - real, pointer :: ara2(:) =>null() - real, pointer :: ara3(:) =>null() - real, pointer :: ara4(:) =>null() - real, pointer :: arw1(:) =>null() - real, pointer :: arw2(:) =>null() - real, pointer :: arw3(:) =>null() - real, pointer :: arw4(:) =>null() - real, pointer :: tsa1(:) =>null() - real, pointer :: tsa2(:) =>null() - real, pointer :: tsb1(:) =>null() - real, pointer :: tsb2(:) =>null() - real, pointer :: atau(:) =>null() - real, pointer :: btau(:) =>null() - real, pointer :: ity(:) =>null() - real, pointer :: z2ch(:) =>null() - - real :: SURFLAY, x + real, pointer :: ars1(:) =>null() + real, pointer :: ars2(:) =>null() + real, pointer :: ars3(:) =>null() + real, pointer :: ara1(:) =>null() + real, pointer :: ara2(:) =>null() + real, pointer :: ara3(:) =>null() + real, pointer :: ara4(:) =>null() + real, pointer :: arw1(:) =>null() + real, pointer :: arw2(:) =>null() + real, pointer :: arw3(:) =>null() + real, pointer :: arw4(:) =>null() + real, pointer :: tsa1(:) =>null() + real, pointer :: tsa2(:) =>null() + real, pointer :: tsb1(:) =>null() + real, pointer :: tsb2(:) =>null() + real, pointer :: atau(:) =>null() + real, pointer :: btau(:) =>null() + real, pointer :: ity(:) =>null() + real, pointer :: z2ch(:) =>null() + + real :: SURFLAY, x integer :: i if (firsttime) then @@ -3983,46 +4008,48 @@ subroutine GET_CATCH_PARAM( GC, IMPORT, EXPORT, CLOCK, RC ) catch_param(:)%dzgt(4) = dzgt(4) catch_param(:)%dzgt(5) = dzgt(5) catch_param(:)%dzgt(6) = dzgt(6) - catch_param(:)%poros = poros - catch_param(:)%cond = cond - catch_param(:)%psis = psis - catch_param(:)%bee = bee - catch_param(:)%wpwet = wpwet - catch_param(:)%gnu = gnu - catch_param(:)%vgwmax= vgwmax - catch_param(:)%bf1 = bf1 - catch_param(:)%bf2 = bf2 - catch_param(:)%bf3 = bf3 - catch_param(:)%cdcr1 = cdcr1 - catch_param(:)%cdcr2 = cdcr2 - catch_param(:)%ars1 = ars1 - catch_param(:)%ars2 = ars2 - catch_param(:)%ars3 = ars3 - catch_param(:)%ara1 = ara1 - catch_param(:)%ara2 = ara2 - catch_param(:)%ara3 = ara3 - catch_param(:)%ara4 = ara4 - catch_param(:)%arw1 = arw1 - catch_param(:)%arw2 = arw2 - catch_param(:)%arw3 = arw3 - catch_param(:)%arw4 = arw4 - catch_param(:)%tsa1 = tsa1 - catch_param(:)%tsa2 = tsa2 - catch_param(:)%tsb1 = tsb1 - catch_param(:)%tsb2 = tsb2 - catch_param(:)%atau = atau - catch_param(:)%btau = btau + catch_param(:)%poros = poros + catch_param(:)%cond = cond + catch_param(:)%psis = psis + catch_param(:)%bee = bee + catch_param(:)%wpwet = wpwet + catch_param(:)%gnu = gnu + catch_param(:)%vgwmax = vgwmax + catch_param(:)%bf1 = bf1 + catch_param(:)%bf2 = bf2 + catch_param(:)%bf3 = bf3 + catch_param(:)%cdcr1 = cdcr1 + catch_param(:)%cdcr2 = cdcr2 + catch_param(:)%ars1 = ars1 + catch_param(:)%ars2 = ars2 + catch_param(:)%ars3 = ars3 + catch_param(:)%ara1 = ara1 + catch_param(:)%ara2 = ara2 + catch_param(:)%ara3 = ara3 + catch_param(:)%ara4 = ara4 + catch_param(:)%arw1 = arw1 + catch_param(:)%arw2 = arw2 + catch_param(:)%arw3 = arw3 + catch_param(:)%arw4 = arw4 + catch_param(:)%tsa1 = tsa1 + catch_param(:)%tsa2 = tsa2 + catch_param(:)%tsb1 = tsb1 + catch_param(:)%tsb2 = tsb2 + catch_param(:)%atau = atau + catch_param(:)%btau = btau catch_param(:)%vegcls = nint(ity) catch_param(:)%veghght = z2ch call MAPL_GetResource(MAPL, SURFLAY, Label="SURFLAY:", DEFAULT=50.0, rc=status) - catch_param(:)%dzsf = SURFLAY - catch_param(:)%dzpr = (cdcr2/(1.-wpwet)) / poros - catch_param(:)%dzrz = vgwmax/poros + catch_param(:)%dzsf = SURFLAY + catch_param(:)%dzpr = (cdcr2/(1.-wpwet)) / poros + catch_param(:)%dzrz = vgwmax/poros + + ! assign NaN to other fields - !assign NaN to other fields x = ieee_value(x,ieee_quiet_nan) + catch_param(:)%soilcls30 = transfer(x,i) catch_param(:)%soilcls100 = transfer(x,i) catch_param(:)%gravel30 = x @@ -4035,10 +4062,14 @@ subroutine GET_CATCH_PARAM( GC, IMPORT, EXPORT, CLOCK, RC ) catch_param(:)%wpwet30 = x catch_param(:)%poros30 = x catch_param(:)%dpth = x + endif + RETURN_(ESMF_SUCCESS) -end subroutine GET_CATCH_PARAM + end subroutine GET_CATCH_PARAM + + ! ------------------------------------------------------------------------------------------------------------ subroutine Finalize(gc, import, export, clock, rc) @@ -4078,3 +4109,5 @@ subroutine Finalize(gc, import, export, clock, rc) end subroutine Finalize end module GEOS_EnsGridCompMod + +! ============================= EOF ====================================================================== diff --git a/GEOSlandassim_GridComp/GEOS_LandAssimGridComp.F90 b/GEOSlandassim_GridComp/GEOS_LandAssimGridComp.F90 index f24124fd..c7904fca 100644 --- a/GEOSlandassim_GridComp/GEOS_LandAssimGridComp.F90 +++ b/GEOSlandassim_GridComp/GEOS_LandAssimGridComp.F90 @@ -540,7 +540,7 @@ subroutine SetServices ( GC, RC ) ! Exports for Catchment prognostics increments call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_temperature_saturated_zone' ,& + LONG_NAME = 'increment_surface_temperature_of_saturated_zone' ,& UNITS = 'K' ,& SHORT_NAME = 'TCFSAT_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -549,7 +549,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_temperature_transition_zone' ,& + LONG_NAME = 'increment_surface_temperature_of_unsaturated_zone' ,& UNITS = 'K' ,& SHORT_NAME = 'TCFTRN_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -558,7 +558,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_temperature_wilting_zone' ,& + LONG_NAME = 'increment_surface_temperature_of_wilting_zone' ,& UNITS = 'K' ,& SHORT_NAME = 'TCFWLT_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -567,7 +567,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_specific_humidity_saturated_zone' ,& + LONG_NAME = 'increment_surface_specific_humidity_of_saturated_zone' ,& UNITS = 'kg kg-1' ,& SHORT_NAME = 'QCFSAT_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -576,7 +576,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_specific_humidity_transition_zone' ,& + LONG_NAME = 'increment_surface_specific_humidity_of_unsaturated_zone' ,& UNITS = 'kg kg-1' ,& SHORT_NAME = 'QCFTRN_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -585,7 +585,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_specific_humidity_wilting_zone' ,& + LONG_NAME = 'increment_surface_specific_humidity_of_wilting_zone' ,& UNITS = 'kg kg-1' ,& SHORT_NAME = 'QCFWLT_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -594,7 +594,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_interception_reservoir_capac' ,& + LONG_NAME = 'increment_vegetation_interception_water_storage' ,& UNITS = 'kg m-2' ,& SHORT_NAME = 'CAPAC_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -847,18 +847,18 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'soil_temperatures_layer_1_analysis' ,& + LONG_NAME = 'soil_temperature_layer_1_analysis' ,& UNITS = 'K' ,& - SHORT_NAME = 'TSOIL1_ANA' ,& + SHORT_NAME = 'TP1_ANA' ,& DIMS = MAPL_DimsTileOnly ,& VLOCATION = MAPL_VLocationNone ,& RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'soil_temperatures_layer_1_analysis_ensstd' ,& + LONG_NAME = 'soil_temperature_layer_1_analysis_ensstd' ,& UNITS = 'K' ,& - SHORT_NAME = 'TSOIL1_ANA_ENSSTD' ,& + SHORT_NAME = 'TP1_ANA_ENSSTD' ,& DIMS = MAPL_DimsTileOnly ,& VLOCATION = MAPL_VLocationNone ,& RC=STATUS ) @@ -1531,13 +1531,13 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, dimension(:),pointer :: RZMC_ana=>null() ! rootzone soil moisture real, dimension(:),pointer :: PRMC_ana=>null() ! profile soil moisture real, dimension(:),pointer :: TPSURF_ana=>null() ! tpsurf - real, dimension(:),pointer :: TSOIL1_ana=>null() ! tsoil1 + real, dimension(:),pointer :: TP1_ana=>null() ! tsoil1 real, dimension(:),pointer :: SFMC_ana_ensstd=>null() ! surface soil moisture real, dimension(:),pointer :: RZMC_ana_ensstd=>null() ! rootzone soil moisture real, dimension(:),pointer :: PRMC_ana_ensstd=>null() ! profile soil moisture real, dimension(:),pointer :: TPSURF_ana_ensstd=>null() ! tpsurf - real, dimension(:),pointer :: TSOIL1_ana_ensstd=>null() ! tsoil1 + real, dimension(:),pointer :: TP1_ana_ensstd=>null() ! tsoil1 !! export for microwave radiative transfer model (mwRTM) @@ -1699,7 +1699,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(export, TPSURF_ana, 'TPSURF_ANA' ,rc=status) VERIFY_(status) - call MAPL_GetPointer(export, TSOIL1_ana, 'TSOIL1_ANA' ,rc=status) + call MAPL_GetPointer(export, TP1_ana, 'TP1_ANA' ,rc=status) VERIFY_(status) call MAPL_GetPointer(export, SFMC_ana, 'WCSF_ANA' ,rc=status) VERIFY_(status) @@ -1709,7 +1709,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) VERIFY_(status) call MAPL_GetPointer(export, TPSURF_ana_ensstd, 'TPSURF_ANA_ENSSTD' ,rc=status) VERIFY_(status) - call MAPL_GetPointer(export, TSOIL1_ana_ensstd, 'TSOIL1_ANA_ENSSTD' ,rc=status) + call MAPL_GetPointer(export, TP1_ana_ensstd, 'TP1_ANA_ENSSTD' ,rc=status) VERIFY_(status) call MAPL_GetPointer(export, SFMC_ana_ensstd, 'WCSF_ANA_ENSSTD' ,rc=status) VERIFY_(status) @@ -2046,13 +2046,13 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if(associated(RZMC_ana)) RZMC_ana(:) = cat_diagS_ensavg(:)%rzmc if(associated(PRMC_ana)) PRMC_ana(:) = cat_diagS_ensavg(:)%prmc if(associated(TPSURF_ana)) TPSURF_ana(:) = cat_diagS_ensavg(:)%tsurf - if(associated(TSOIL1_ana)) TSOIL1_ana(:) = cat_diagS_ensavg(:)%tp(1) + MAPL_TICE ! convert to K + if(associated(TP1_ana)) TP1_ana(:) = cat_diagS_ensavg(:)%tp(1) + MAPL_TICE ! convert to K if(associated(SFMC_ana_ensstd)) SFMC_ana_ensstd(:) = max( cat_diagS_ensstd(:)%sfmc , 0. ) if(associated(RZMC_ana_ensstd)) RZMC_ana_ensstd(:) = max( cat_diagS_ensstd(:)%rzmc , 0. ) if(associated(PRMC_ana_ensstd)) PRMC_ana_ensstd(:) = max( cat_diagS_ensstd(:)%prmc , 0. ) if(associated(TPSURF_ana_ensstd)) TPSURF_ana_ensstd(:) = max( cat_diagS_ensstd(:)%tsurf , 0. ) - if(associated(TSOIL1_ana_ensstd)) TSOIL1_ana_ensstd(:) = max( cat_diagS_ensstd(:)%tp(1) , 0. ) + if(associated(TP1_ana_ensstd)) TP1_ana_ensstd(:) = max( cat_diagS_ensstd(:)%tp(1) , 0. ) if(associated(MWRTM_VEGOPACITY)) MWRTM_VEGOPACITY(:) = mwRTM_param(:)%VEGOPACITY diff --git a/GEOSlandassim_GridComp/GEOSexportcatchincr_GridComp/GEOS_ExportCatchIncrGridComp.F90 b/GEOSlandassim_GridComp/GEOSexportcatchincr_GridComp/GEOS_ExportCatchIncrGridComp.F90 index 8ea79574..cbbec5f9 100644 --- a/GEOSlandassim_GridComp/GEOSexportcatchincr_GridComp/GEOS_ExportCatchIncrGridComp.F90 +++ b/GEOSlandassim_GridComp/GEOSexportcatchincr_GridComp/GEOS_ExportCatchIncrGridComp.F90 @@ -88,7 +88,7 @@ subroutine SetServices ( GC, RC ) ! Exports for Catchment prognostics increments call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_temperature_saturated_zone' ,& + LONG_NAME = 'increment_surface_temperature_saturated_zone' ,& UNITS = 'K' ,& SHORT_NAME = 'TCFSAT_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -97,7 +97,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_temperature_transition_zone' ,& + LONG_NAME = 'increment_surface_temperature_of_unsaturated_zone' ,& UNITS = 'K' ,& SHORT_NAME = 'TCFTRN_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -106,7 +106,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_temperature_wilting_zone' ,& + LONG_NAME = 'increment_surface_temperature_of_wilting_zone' ,& UNITS = 'K' ,& SHORT_NAME = 'TCFWLT_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -115,7 +115,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_specific_humidity_saturated_zone' ,& + LONG_NAME = 'increment_surface_specific_humidity_of_saturated_zone' ,& UNITS = 'kg kg-1' ,& SHORT_NAME = 'QCFSAT_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -124,7 +124,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_specific_humidity_transition_zone' ,& + LONG_NAME = 'increment_surface_specific_humidity_of_unsaturated_zone' ,& UNITS = 'kg kg-1' ,& SHORT_NAME = 'QCFTRN_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -133,7 +133,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_canopy_specific_humidity_wilting_zone' ,& + LONG_NAME = 'increment_surface_specific_humidity_of_wilting_zone' ,& UNITS = 'kg kg-1' ,& SHORT_NAME = 'QCFWLT_INCR' ,& DIMS = MAPL_DimsTileOnly ,& @@ -142,7 +142,7 @@ subroutine SetServices ( GC, RC ) _VERIFY(STATUS) call MAPL_AddExportSpec(GC ,& - LONG_NAME = 'increment_interception_reservoir_capac' ,& + LONG_NAME = 'increment_vegetation_interception_water_storage' ,& UNITS = 'kg m-2' ,& SHORT_NAME = 'CAPAC_INCR' ,& DIMS = MAPL_DimsTileOnly ,& diff --git a/GEOSldas_App/GEOSldas_HIST.rc b/GEOSldas_App/GEOSldas_HIST.rc index adb52654..ce692ffb 100644 --- a/GEOSldas_App/GEOSldas_HIST.rc +++ b/GEOSldas_App/GEOSldas_HIST.rc @@ -23,9 +23,12 @@ COLLECTIONS: # 'catch_progn_incr' # 'inst3_1d_lndfcstana_Nt' # 'inst3_2d_lndfcstana_Nx' +# 'const_1d_lnd_Nt' +# 'const_2d_lnd_Nx' :: #CUBE GRID_LABELS: PC720x361-DC +#CUBE PC1440x721-DC #CUBE :: @@ -36,6 +39,13 @@ COLLECTIONS: #CUBE PC720x361-DC.DATELINE: DC #CUBE PC720x361-DC.LM: 1 +#CUBE PC1440x721-DC.GRID_TYPE: LatLon +#CUBE PC1440x721-DC.IM_WORLD: 1440 +#CUBE PC1440x721-DC.JM_WORLD: 721 +#CUBE PC1440x721-DC.POLE: PC +#CUBE PC1440x721-DC.DATELINE: DC +#CUBE PC1440x721-DC.LM: 1 + # Detailed definition of the collections listed above # # Bit shaving: Retain only scientifically meaningful precision and modify meaningless @@ -112,41 +122,42 @@ COLLECTIONS: tavg24_1d_lnd_Nt.mode: 'time-averaged', tavg24_1d_lnd_Nt.frequency: 240000, tavg24_1d_lnd_Nt.ref_time: 000000, - tavg24_1d_lnd_Nt.fields: 'WET3' , 'GridComp' , 'GWETPROF' , + tavg24_1d_lnd_Nt.fields: 'GRN' , 'VEGDYN' , + 'LAI' , 'VEGDYN' , + 'WET3' , 'GridComp' , 'GWETPROF' , 'WET2' , 'GridComp' , 'GWETROOT' , 'WET1' , 'GridComp' , 'GWETTOP' , 'WCPR' , 'GridComp' , 'PRMC' , 'WCRZ' , 'GridComp' , 'RZMC' , 'WCSF' , 'GridComp' , 'SFMC' , - 'TPSNOW' , 'GridComp' , - 'TPUNST' , 'GridComp' , 'TUNST' , - 'TPSAT' , 'GridComp' , 'TSAT' , - 'TPWLT' , 'GridComp' , 'TWLT' , - 'TPSURF' , 'GridComp' , 'TSURF' , - 'GRN' , 'VEGDYN' , - 'LAI' , 'VEGDYN' , - 'TP1' , 'GridComp' , - 'TP2' , 'GridComp' , - 'TP3' , 'GridComp' , - 'TP4' , 'GridComp' , - 'TP5' , 'GridComp' , - 'TP6' , 'GridComp' , - 'PRLAND' , 'GridComp' , 'PRECTOTLAND' , - 'SNOLAND' , 'GridComp' , 'PRECSNOLAND' , - 'TSLAND' , 'GridComp' , 'SNOMAS' , - 'SNOWDP' , 'GridComp' , 'SNODP' , - 'EVPSOI' , 'GridComp' , 'EVPSOIL' , - 'EVPVEG' , 'GridComp' , 'EVPTRNS' , - 'EVPINT' , 'GridComp' , 'EVPINTR' , - 'EVPICE' , 'GridComp' , 'EVPSBLN' , - 'RUNSURF' , 'GridComp' , 'RUNOFF' , - 'BASEFLOW' , 'GridComp' , + 'CAPAC' , 'GridComp' , 'INTRWATR' , + 'TPSNOW' , 'GridComp' , 'TPSNOWLAND' , + 'TPUNST' , 'GridComp' , 'TUNSTLAND' , + 'TPSAT' , 'GridComp' , 'TSATLAND' , + 'TPWLT' , 'GridComp' , 'TWLTLAND' , + 'TPSURF' , 'GridComp' , 'TSURFLAND' , + 'TP1' , 'GridComp' , 'TSOIL1' , # CATCH GC: TP1, ENSAVG GC: TSOIL1TILE + 'TP2' , 'GridComp' , 'TSOIL2' , # ... + 'TP3' , 'GridComp' , 'TSOIL3' , # ... + 'TP4' , 'GridComp' , 'TSOIL4' , # ... + 'TP5' , 'GridComp' , 'TSOIL5' , # ... + 'TP6' , 'GridComp' , 'TSOIL6' , # ... + 'PRLAND' , 'GridComp' , 'PRECTOTCORRLAND' , # assume "corrected" precip + 'SNOLAND' , 'GridComp' , 'PRECSNOCORRLAND' , # assume "corrected" precip + 'TSLAND' , 'GridComp' , 'SNOMASLAND' , + 'SNOWDP' , 'GridComp' , 'SNODPLAND' , + 'EVPSOI' , 'GridComp' , 'LHLANDSOIL' , + 'EVPVEG' , 'GridComp' , 'LHLANDTRNS' , + 'EVPINT' , 'GridComp' , 'LHLANDINTR' , + 'EVPICE' , 'GridComp' , 'LHLANDSBLN' , + 'RUNSURF' , 'GridComp' , 'RUNSURFLAND' , + 'BASEFLOW' , 'GridComp' , 'BASEFLOWLAND' , 'SMLAND' , 'GridComp' , - 'QINFIL' , 'GridComp' , - 'FRUST' , 'GridComp' , 'FRUNST' , - 'FRSAT' , 'GridComp' , - 'ASNOW' , 'GridComp' , 'FRSNO' , - 'FRWLT' , 'GridComp' , + 'QINFIL' , 'GridComp' , 'QINFILLAND' , + 'FRUST' , 'GridComp' , 'FRLANDUNST' , + 'FRSAT' , 'GridComp' , 'FRLANDSAT' , + 'ASNOW' , 'GridComp' , 'FRLANDSNO' , + 'FRWLT' , 'GridComp' , 'FRLANDWLT' , 'DFPARLAND' , 'GridComp' , 'PARDFLAND' , 'DRPARLAND' , 'GridComp' , 'PARDRLAND' , 'SHLAND' , 'GridComp' , @@ -157,11 +168,12 @@ COLLECTIONS: 'GHLAND' , 'GridComp' , 'TWLAND' , 'GridComp' , 'TELAND' , 'GridComp' , - 'DWLAND' , 'GridComp' , 'WCHANGE' , - 'DHLAND' , 'GridComp' , 'ECHANGE' , - 'SPLAND' , 'GridComp' , - 'SPWATR' , 'GridComp' , - 'SPSNOW' , 'GridComp' , + 'DWLAND' , 'GridComp' , 'WCHANGELAND' , + 'DHLAND' , 'GridComp' , 'ECHANGELAND' , + 'SPLAND' , 'GridComp' , 'SPSHLAND' , +# 'SPLH' , 'GridComp' , 'SPLHLAND' , # works for Catch only, not yet for CatchCN + 'SPWATR' , 'GridComp' , 'SPEVLAND' , + 'SPSNOW' , 'GridComp' , 'SPSNLAND' , 'PEATCLSM_WATERLEVEL', 'GridComp' , 'PEATCLSM_FSWCHANGE' , 'GridComp' , >>>HIST_AEROSOL<<< 'RMELTDU001' , 'GridComp' , @@ -203,52 +215,54 @@ COLLECTIONS: >>>HIST_IRRIG<<< 'IRRIGRATE' , 'GridComp' , :: - tavg24_2d_lnd_Nx.descr: '2d,Daily,Time-Averaged,Single-Level,Assimilation,Land Surface Diagnostics', - tavg24_2d_lnd_Nx.nbits: 12, - tavg24_2d_lnd_Nx.template: '%y4%m2%d2_%h2%n2z.nc4', - tavg24_2d_lnd_Nx.mode: 'time-averaged', - tavg24_2d_lnd_Nx.frequency: 240000, - tavg24_2d_lnd_Nx.ref_time: 000000, - tavg24_2d_lnd_Nx.format: 'CFIO', - tavg24_2d_lnd_Nx.regrid_exch: '../input/tile.data' - tavg24_2d_lnd_Nx.regrid_name: 'GRIDNAME' - tavg24_2d_lnd_Nx.grid_label: PC720x361-DC - tavg24_2d_lnd_Nx.deflate: 2, - tavg24_2d_lnd_Nx.fields: 'WET3' , 'GridComp' , 'GWETPROF' , + tavg24_2d_lnd_Nx.format: 'CFIO', + tavg24_2d_lnd_Nx.descr: '2d,Daily,Time-Averaged,Single-Level,Assimilation,Land Surface Diagnostics', + tavg24_2d_lnd_Nx.nbits: 12, + tavg24_2d_lnd_Nx.template: '%y4%m2%d2_%h2%n2z.nc4', + tavg24_2d_lnd_Nx.mode: 'time-averaged', + tavg24_2d_lnd_Nx.frequency: 240000, + tavg24_2d_lnd_Nx.ref_time: 000000, + tavg24_2d_lnd_Nx.regrid_exch: '../input/tile.data' + tavg24_2d_lnd_Nx.regrid_name: 'GRIDNAME' +# tavg24_2d_lnd_Nx.regrid_method: 'BILINEAR_MONOTONIC' , + tavg24_2d_lnd_Nx.grid_label: PC720x361-DC + tavg24_2d_lnd_Nx.deflate: 2, + tavg24_2d_lnd_Nx.fields: 'GRN' , 'VEGDYN' , + 'LAI' , 'VEGDYN' , + 'WET3' , 'GridComp' , 'GWETPROF' , 'WET2' , 'GridComp' , 'GWETROOT' , 'WET1' , 'GridComp' , 'GWETTOP' , 'WCPR' , 'GridComp' , 'PRMC' , 'WCRZ' , 'GridComp' , 'RZMC' , 'WCSF' , 'GridComp' , 'SFMC' , - 'TPSNOW' , 'GridComp' , - 'TPUNST' , 'GridComp' , 'TUNST' , - 'TPSAT' , 'GridComp' , 'TSAT' , - 'TPWLT' , 'GridComp' , 'TWLT' , - 'TPSURF' , 'GridComp' , 'TSURF' , - 'GRN' , 'VEGDYN' , - 'LAI' , 'VEGDYN' , - 'TP1' , 'GridComp' , - 'TP2' , 'GridComp' , - 'TP3' , 'GridComp' , - 'TP4' , 'GridComp' , - 'TP5' , 'GridComp' , - 'TP6' , 'GridComp' , - 'PRLAND' , 'GridComp' , 'PRECTOTLAND' , - 'SNOLAND' , 'GridComp' , 'PRECSNOLAND' , - 'TSLAND' , 'GridComp' , 'SNOMAS' , - 'SNOWDP' , 'GridComp' , 'SNODP' , - 'EVPSOI' , 'GridComp' , 'EVPSOIL' , - 'EVPVEG' , 'GridComp' , 'EVPTRNS' , - 'EVPINT' , 'GridComp' , 'EVPINTR' , - 'EVPICE' , 'GridComp' , 'EVPSBLN' , - 'RUNSURF' , 'GridComp' , 'RUNOFF' , - 'BASEFLOW' , 'GridComp' , + 'CAPAC' , 'GridComp' , 'INTRWATR' , + 'TPSNOW' , 'GridComp' , 'TPSNOWLAND' , + 'TPUNST' , 'GridComp' , 'TUNSTLAND' , + 'TPSAT' , 'GridComp' , 'TSATLAND' , + 'TPWLT' , 'GridComp' , 'TWLTLAND' , + 'TPSURF' , 'GridComp' , 'TSURFLAND' , + 'TP1' , 'GridComp' , 'TSOIL1' , # CATCH GC: TP1, ENSAVG GC: TSOIL1TILE + 'TP2' , 'GridComp' , 'TSOIL2' , # ... + 'TP3' , 'GridComp' , 'TSOIL3' , # ... + 'TP4' , 'GridComp' , 'TSOIL4' , # ... + 'TP5' , 'GridComp' , 'TSOIL5' , # ... + 'TP6' , 'GridComp' , 'TSOIL6' , # ... + 'PRLAND' , 'GridComp' , 'PRECTOTCORRLAND' , # assume "corrected" precip + 'SNOLAND' , 'GridComp' , 'PRECSNOCORRLAND' , # assume "corrected" precip + 'TSLAND' , 'GridComp' , 'SNOMASLAND' , + 'SNOWDP' , 'GridComp' , 'SNODPLAND' , + 'EVPSOI' , 'GridComp' , 'LHLANDSOIL' , + 'EVPVEG' , 'GridComp' , 'LHLANDTRNS' , + 'EVPINT' , 'GridComp' , 'LHLANDINTR' , + 'EVPICE' , 'GridComp' , 'LHLANDSBLN' , + 'RUNSURF' , 'GridComp' , 'RUNSURFLAND' , + 'BASEFLOW' , 'GridComp' , 'BASEFLOWLAND' , 'SMLAND' , 'GridComp' , - 'QINFIL' , 'GridComp' , - 'FRUST' , 'GridComp' , 'FRUNST' , - 'FRSAT' , 'GridComp' , - 'ASNOW' , 'GridComp' , 'FRSNO' , - 'FRWLT' , 'GridComp' , + 'QINFIL' , 'GridComp' , 'QINFILLAND' , + 'FRUST' , 'GridComp' , 'FRLANDUNST' , + 'FRSAT' , 'GridComp' , 'FRLANDSAT' , + 'ASNOW' , 'GridComp' , 'FRLANDSNO' , + 'FRWLT' , 'GridComp' , 'FRLANDWLT' , 'DFPARLAND' , 'GridComp' , 'PARDFLAND' , 'DRPARLAND' , 'GridComp' , 'PARDRLAND' , 'SHLAND' , 'GridComp' , @@ -259,11 +273,12 @@ COLLECTIONS: 'GHLAND' , 'GridComp' , 'TWLAND' , 'GridComp' , 'TELAND' , 'GridComp' , - 'DWLAND' , 'GridComp' , 'WCHANGE' , - 'DHLAND' , 'GridComp' , 'ECHANGE' , - 'SPLAND' , 'GridComp' , - 'SPWATR' , 'GridComp' , - 'SPSNOW' , 'GridComp' , + 'DWLAND' , 'GridComp' , 'WCHANGELAND' , + 'DHLAND' , 'GridComp' , 'ECHANGELAND' , + 'SPLAND' , 'GridComp' , 'SPSHLAND' , +# 'SPLH' , 'GridComp' , 'SPLHLAND' , # works for Catch only, not yet for CatchCN + 'SPWATR' , 'GridComp' , 'SPEVLAND' , + 'SPSNOW' , 'GridComp' , 'SPSNLAND' , 'PEATCLSM_WATERLEVEL', 'GridComp' , 'PEATCLSM_FSWCHANGE' , 'GridComp' , >>>HIST_AEROSOL<<< 'RMELTDU001' , 'GridComp' , @@ -305,6 +320,58 @@ COLLECTIONS: >>>HIST_IRRIG<<< 'IRRIGRATE' , 'GridComp' , :: + + const_1d_lnd_Nt.descr: 'Tile-space,Constant,Time-invariant,Single-Level,Assimilation,Land Surface Model Parameters', + const_1d_lnd_Nt.template: '%y4%m2%d2_%h2%n2z.bin', + const_1d_lnd_Nt.mode: 'instantaneous', + const_1d_lnd_Nt.frequency: 240000, + const_1d_lnd_Nt.ref_time: 000000, + const_1d_lnd_Nt.fields: 'DZGT1' , 'GridComp' , + 'DZGT2' , 'GridComp' , + 'DZGT3' , 'GridComp' , + 'DZGT4' , 'GridComp' , + 'DZGT5' , 'GridComp' , + 'DZGT6' , 'GridComp' , + 'DZPR' , 'GridComp' , + 'DZRZ' , 'GridComp' , + 'DZSF' , 'GridComp' , + 'DZTS' , 'GridComp' , + 'WPWET' , 'GridComp' , + 'WPEMW' , 'GridComp' , + 'WPMC' , 'GridComp' , + 'CDCR2' , 'GridComp' , + 'POROS' , 'GridComp' , + :: + + const_2d_lnd_Nx.format: 'CFIO', + const_2d_lnd_Nx.descr: '2d,Constant,Time-invariant,Single-Level,Assimilation,Land Surface Model Parameters', + const_2d_lnd_Nx.template: '%y4%m2%d2_%h2%n2z.nc4', + const_2d_lnd_Nx.mode: 'instantaneous', + const_2d_lnd_Nx.frequency: 240000, + const_2d_lnd_Nx.ref_time: 000000, + const_2d_lnd_Nx.regrid_exch: '../input/tile.data' + const_2d_lnd_Nx.regrid_name: 'GRIDNAME' + const_2d_lnd_Nx.regrid_method: 'BILINEAR_MONOTONIC' , + const_2d_lnd_Nx.grid_label: PC720x361-DC + const_2d_lnd_Nx.deflate: 2, + const_2d_lnd_Nx.fields: 'DZGT1' , 'GridComp' , + 'DZGT2' , 'GridComp' , + 'DZGT3' , 'GridComp' , + 'DZGT4' , 'GridComp' , + 'DZGT5' , 'GridComp' , + 'DZGT6' , 'GridComp' , + 'DZPR' , 'GridComp' , + 'DZRZ' , 'GridComp' , + 'DZSF' , 'GridComp' , + 'DZTS' , 'GridComp' , + 'WPWET' , 'GridComp' , + 'WPEMW' , 'GridComp' , + 'WPMC' , 'GridComp' , + 'CDCR2' , 'GridComp' , + 'POROS' , 'GridComp' , + :: + + SMAP_L4_SM_gph.descr: 'Tile-space,3-Hourly,Time-Averaged,Single-Level,Assimilation,SMAP L4_SM Land Geophysical Diagnostics', SMAP_L4_SM_gph.nbits: 12, SMAP_L4_SM_gph.template: '%y4%m2%d2_%h2%n2z.bin', @@ -318,12 +385,12 @@ COLLECTIONS: 'WET2' , 'ENSAVG' , 'sm_rootzone_wetness' , 'WET3' , 'ENSAVG' , 'sm_profile_wetness' , 'TPSURF' , 'ENSAVG' , 'surface_temp' , - 'TSOIL1TILE' , 'ENSAVG' , 'soil_temp_layer1' , - 'TSOIL2TILE' , 'ENSAVG' , 'soil_temp_layer2' , - 'TSOIL3TILE' , 'ENSAVG' , 'soil_temp_layer3' , - 'TSOIL4TILE' , 'ENSAVG' , 'soil_temp_layer4' , - 'TSOIL5TILE' , 'ENSAVG' , 'soil_temp_layer5' , - 'TSOIL6TILE' , 'ENSAVG' , 'soil_temp_layer6' , + 'TP1' , 'ENSAVG' , 'soil_temp_layer1' , + 'TP2' , 'ENSAVG' , 'soil_temp_layer2' , + 'TP3' , 'ENSAVG' , 'soil_temp_layer3' , + 'TP4' , 'ENSAVG' , 'soil_temp_layer4' , + 'TP5' , 'ENSAVG' , 'soil_temp_layer5' , + 'TP6' , 'ENSAVG' , 'soil_temp_layer6' , 'SNOWMASS' , 'ENSAVG' , 'snow_mass' , 'SNOWDP' , 'ENSAVG' , 'snow_depth' , 'EVLAND' , 'ENSAVG' , 'land_evapotranspiration_flux' , @@ -363,7 +430,7 @@ COLLECTIONS: inst1_1d_lnr_Nt.frequency: 010000 , inst1_1d_lnr_Nt.ref_time: 000000, inst1_1d_lnr_Nt.fields: 'TPSURF' , 'ENSAVG' , 'surface_temp' , - 'TSOIL1TILE' , 'ENSAVG' , 'soil_temp_layer1' , + 'TP1' , 'ENSAVG' , 'soil_temp_layer1' , 'TPSNOW' , 'ENSAVG' , 'snow_temp_layer1' , 'TB_LAND_1410MHZ_40DEG_HPOL' , 'LANDASSIM' , 'tb_h' , 'TB_LAND_1410MHZ_40DEG_VPOL' , 'LANDASSIM' , 'tb_v' , @@ -420,22 +487,22 @@ COLLECTIONS: 'WCRZ' , 'ENSAVG' , 'RZMC_FCST' , 'WCPR' , 'ENSAVG' , 'PRMC_FCST' , 'TPSURF' , 'ENSAVG' , 'TSURF_FCST' , - 'TSOIL1TILE' , 'ENSAVG' , 'TSOIL1_FCST' , + 'TP1' , 'ENSAVG' , 'TSOIL1_FCST' , 'WCSF_ENSSTD' , 'ENSAVG' , 'SFMC_FCST_ENSSTD' , 'WCRZ_ENSSTD' , 'ENSAVG' , 'RZMC_FCST_ENSSTD' , 'WCPR_ENSSTD' , 'ENSAVG' , 'PRMC_FCST_ENSSTD' , 'TPSURF_ENSSTD' , 'ENSAVG' , 'TSURF_FCST_ENSSTD' , - 'TSOIL1TILE_ENSSTD' , 'ENSAVG' , 'TSOIL1_FCST_ENSSTD' , + 'TP1_ENSSTD' , 'ENSAVG' , 'TSOIL1_FCST_ENSSTD' , 'WCSF_ANA' , 'LANDASSIM' , 'SFMC_ANA' , 'WCRZ_ANA' , 'LANDASSIM' , 'RZMC_ANA' , 'WCPR_ANA' , 'LANDASSIM' , 'PRMC_ANA' , 'TPSURF_ANA' , 'LANDASSIM' , 'TSURF_ANA' , - 'TSOIL1_ANA' , 'LANDASSIM' , 'TSOIL1_ANA' , + 'TP1_ANA' , 'LANDASSIM' , 'TSOIL1_ANA' , 'WCSF_ANA_ENSSTD' , 'LANDASSIM' , 'SFMC_ANA_ENSSTD' , 'WCRZ_ANA_ENSSTD' , 'LANDASSIM' , 'RZMC_ANA_ENSSTD' , 'WCPR_ANA_ENSSTD' , 'LANDASSIM' , 'PRMC_ANA_ENSSTD' , 'TPSURF_ANA_ENSSTD' , 'LANDASSIM' , 'TSURF_ANA_ENSSTD' , - 'TSOIL1_ANA_ENSSTD' , 'LANDASSIM' , 'TSOIL1_ANA_ENSSTD' + 'TP1_ANA_ENSSTD' , 'LANDASSIM' , 'TSOIL1_ANA_ENSSTD' :: # For lndfcstana, *.frequency and *.ref_time must be consistent with the LDAS.rc resource @@ -459,22 +526,22 @@ COLLECTIONS: 'WCRZ' , 'ENSAVG' , 'RZMC_FCST' , 'WCPR' , 'ENSAVG' , 'PRMC_FCST' , 'TPSURF' , 'ENSAVG' , 'TSURF_FCST' , - 'TSOIL1TILE' , 'ENSAVG' , 'TSOIL1_FCST' , + 'TP1' , 'ENSAVG' , 'TSOIL1_FCST' , 'WCSF_ENSSTD' , 'ENSAVG' , 'SFMC_FCST_ENSSTD' , 'WCRZ_ENSSTD' , 'ENSAVG' , 'RZMC_FCST_ENSSTD' , 'WCPR_ENSSTD' , 'ENSAVG' , 'PRMC_FCST_ENSSTD' , 'TPSURF_ENSSTD' , 'ENSAVG' , 'TSURF_FCST_ENSSTD' , - 'TSOIL1TILE_ENSSTD' , 'ENSAVG' , 'TSOIL1_FCST_ENSSTD' , + 'TP1_ENSSTD' , 'ENSAVG' , 'TSOIL1_FCST_ENSSTD' , 'WCSF_ANA' , 'LANDASSIM' , 'SFMC_ANA' , 'WCRZ_ANA' , 'LANDASSIM' , 'RZMC_ANA' , 'WCPR_ANA' , 'LANDASSIM' , 'PRMC_ANA' , 'TPSURF_ANA' , 'LANDASSIM' , 'TSURF_ANA' , - 'TSOIL1_ANA' , 'LANDASSIM' , 'TSOIL1_ANA' , + 'TP1_ANA' , 'LANDASSIM' , 'TSOIL1_ANA' , 'WCSF_ANA_ENSSTD' , 'LANDASSIM' , 'SFMC_ANA_ENSSTD' , 'WCRZ_ANA_ENSSTD' , 'LANDASSIM' , 'RZMC_ANA_ENSSTD' , 'WCPR_ANA_ENSSTD' , 'LANDASSIM' , 'PRMC_ANA_ENSSTD' , 'TPSURF_ANA_ENSSTD' , 'LANDASSIM' , 'TSURF_ANA_ENSSTD' , - 'TSOIL1_ANA_ENSSTD' , 'LANDASSIM' , 'TSOIL1_ANA_ENSSTD' + 'TP1_ANA_ENSSTD' , 'LANDASSIM' , 'TSOIL1_ANA_ENSSTD' :: # ========================== EOF ============================================================== diff --git a/GEOSldas_App/process_hist.csh b/GEOSldas_App/process_hist.csh old mode 100755 new mode 100644 index 73d3b421..4c6516ff --- a/GEOSldas_App/process_hist.csh +++ b/GEOSldas_App/process_hist.csh @@ -54,12 +54,12 @@ endif if($NENS > 1) then set GridComp = ENSAVG sed -i 's|VEGDYN|'VEGDYN_e0000'|g' $HISTRC - sed -i 's|TP1|'TSOIL1TILE'|g' $HISTRC - sed -i 's|TP2|'TSOIL2TILE'|g' $HISTRC - sed -i 's|TP3|'TSOIL3TILE'|g' $HISTRC - sed -i 's|TP4|'TSOIL4TILE'|g' $HISTRC - sed -i 's|TP5|'TSOIL5TILE'|g' $HISTRC - sed -i 's|TP6|'TSOIL6TILE'|g' $HISTRC +# sed -i 's|TP1|'TSOIL1TILE'|g' $HISTRC +# sed -i 's|TP2|'TSOIL2TILE'|g' $HISTRC +# sed -i 's|TP3|'TSOIL3TILE'|g' $HISTRC +# sed -i 's|TP4|'TSOIL4TILE'|g' $HISTRC +# sed -i 's|TP5|'TSOIL5TILE'|g' $HISTRC +# sed -i 's|TP6|'TSOIL6TILE'|g' $HISTRC # sed -i 's|DATAATM|'DATAATM0000'|g' $HISTRC endif diff --git a/GEOSldas_App/tile_bin2nc4.F90 b/GEOSldas_App/tile_bin2nc4.F90 index df52c8be..cf3f2fbc 100644 --- a/GEOSldas_App/tile_bin2nc4.F90 +++ b/GEOSldas_App/tile_bin2nc4.F90 @@ -3,18 +3,21 @@ PROGRAM tile_bin2nc4 implicit none INCLUDE 'netcdf.inc' - integer :: i,k, n, NTILES - integer :: NCFOutID, Vid, STATUS, CellID, TimID, nVars - character(256) :: Usage="tile_bin2nc4.x BINFILE DESCRIPTOR TILECOORD" + integer :: i,k, n, NTILES + integer :: NCFOutID, Vid, STATUS, CellID, TimID, nVars + character(256) :: Usage="tile_bin2nc4.x BINFILE DESCRIPTOR TILECOORD" ! DESCRIPTOR = GrADS ctl file generated by MAPL from HISTORY.rc character(512) :: BINFILE, TILECOORD, DESCRIPTOR, arg(3) character(128) :: MYNAME, BUF - integer, dimension(8) :: date_time_values + + integer, dimension(8) :: date_time_values character (22) :: time_stamp - real, allocatable, dimension (:) :: lons, lats, var + real, allocatable, dimension (:) :: lons, lats, var integer, allocatable, dimension (:) :: tileid, i_index, j_index + integer :: myunit1, myunit2 - real :: undef - ! processing command line agruments + real :: undef + + ! process command line arguments I = command_argument_count() @@ -28,7 +31,8 @@ PROGRAM tile_bin2nc4 call get_command_argument(n,arg(n)) enddo - call get_environment_variable ("MYNAME" ,MYNAME ) + call get_environment_variable ("MYNAME", MYNAME) + read(arg(1),'(a)') BINFILE read(arg(2),'(a)') DESCRIPTOR read(arg(3),'(a)') TILECOORD @@ -38,10 +42,11 @@ PROGRAM tile_bin2nc4 ! print *,trim(DESCRIPTOR) ! print *,trim(TILECOORD) - ! reading TILECOORD + ! read TILECOORD file open (newunit=myunit1, file = trim(TILECOORD), form = 'unformatted', action ='read') read (myunit1) NTILES + allocate (lons (1:NTILES)) allocate (lats (1:NTILES)) allocate (tileid (1:NTILES)) @@ -63,7 +68,7 @@ PROGRAM tile_bin2nc4 close (myunit1,status = 'keep') - ! read binary and write NC4 + ! read DESCRIPTOR file (=GrADS ctl file generated by MAPL from HISTORY.rc file) open (newunit=myunit1, file = trim(DESCRIPTOR), form ='formatted', action = 'read') nVars = 0 @@ -86,6 +91,8 @@ PROGRAM tile_bin2nc4 end do + ! prep nc4 file + status = NF_CREATE (trim(BINFILE)//'.nc4', NF_NETCDF4, NCFOutID) status = NF_DEF_DIM(NCFOutID, 'tile' , NTILES, CellID) status = NF_DEF_DIM(NCFOutID, 'time' , NF_UNLIMITED, TimID) @@ -102,8 +109,8 @@ PROGRAM tile_bin2nc4 status = NF_DEF_VAR(NCFOutID, 'JG' , NF_INT, 1 ,CellID, vid) status = NF_PUT_ATT_TEXT(NCFOutID, vid, 'long_name', & LEN_TRIM('J_INDEX'), 'J_INDEX') - do n = 1, nVars + do n = 1, nVars read(myunit1, '(a)', iostat=status) buf status = NF_DEF_VAR(NCFOutID,buf(1:index(buf,' ') -1) , NF_FLOAT, 2 ,(/CellID, TimID/), vid) status = NF_PUT_ATT_TEXT(NCFOutID, vid, 'long_name', & @@ -115,7 +122,6 @@ PROGRAM tile_bin2nc4 status = nf_put_att_real(NCFOutID, vid, '_FillValue',NF_FLOAT, 1, undef) end do - call date_and_time(VALUES=date_time_values) write (time_stamp,'(i4.4,a1,i2.2,a1,i2.2,1x,a2,1x,i2.2,a1,i2.2,a1,i2.2)') & @@ -133,7 +139,7 @@ PROGRAM tile_bin2nc4 status = NF_PUT_VARA_INT (NCFOutID,VarID(NCFOutID,'IG' ) ,(/1/),(/NTILES/),i_index ) status = NF_PUT_VARA_INT (NCFOutID,VarID(NCFOutID,'JG' ) ,(/1/),(/NTILES/),j_index ) - ! reading and writing + ! read data from binary file and write into nc4 file open (newunit=myunit2, file = trim(BINFILE)//'.bin', form = 'unformatted', action = 'read') @@ -152,47 +158,47 @@ PROGRAM tile_bin2nc4 close (myunit1) close (myunit2) - contains - - ! ---------------------------------------------------------------------- - - integer function VarID (NCFID, VNAME) - - integer, intent (in) :: NCFID - character(*), intent (in) :: VNAME - integer :: status - - STATUS = NF_INQ_VARID (NCFID, trim(VNAME) ,VarID) - IF (STATUS .NE. NF_NOERR) & - CALL HANDLE_ERR(STATUS, trim(VNAME)) - - end function VarID - +contains + + ! ---------------------------------------------------------------------- + + integer function VarID (NCFID, VNAME) + + integer, intent (in) :: NCFID + character(*), intent (in) :: VNAME + integer :: status + + STATUS = NF_INQ_VARID (NCFID, trim(VNAME) ,VarID) + IF (STATUS .NE. NF_NOERR) & + CALL HANDLE_ERR(STATUS, trim(VNAME)) + + end function VarID + ! ----------------------------------------------------------------------- - - SUBROUTINE HANDLE_ERR(STATUS, Line) - - INTEGER, INTENT (IN) :: STATUS - CHARACTER(*), INTENT (IN) :: Line - - IF (STATUS .NE. NF_NOERR) THEN - PRINT *, trim(Line),': ',NF_STRERROR(STATUS) - STOP 'Stopped' - ENDIF - - END SUBROUTINE HANDLE_ERR - - ! *********************************************************************** - + + SUBROUTINE HANDLE_ERR(STATUS, Line) + + INTEGER, INTENT (IN) :: STATUS + CHARACTER(*), INTENT (IN) :: Line + + IF (STATUS .NE. NF_NOERR) THEN + PRINT *, trim(Line),': ',NF_STRERROR(STATUS) + STOP 'Stopped' + ENDIF + + END SUBROUTINE HANDLE_ERR + + ! *********************************************************************** + FUNCTION getAttribute (SHORT_NAME, LNAME, UNT) result (str_atr) - + character(*), intent(in) :: SHORT_NAME integer, intent (in), optional :: LNAME, UNT character(128) :: str_atr, LONG_NAME, UNITS - + SELECT case (trim(SHORT_NAME)) - - ! For SM_L4 + + ! For L4_SM ! reichle, 20 May 2020: verified SHORT_NAME and corrected UNITS to match SMAP L4_SM Product Specs; LONG_NAME (mostly) from GEOS_CatchGridComp.F90 ! reichle, 14 Feb 2022: added "WATERTABLED" (now: "PEATCLSM_WATERLEVEL") and "FSWCHANGE" (now: "PEATCLSM_FSWCHANGE") ! reichle, 21 Feb 2022: added "mwrtm_vegopacity" @@ -249,206 +255,227 @@ FUNCTION getAttribute (SHORT_NAME, LNAME, UNT) result (str_atr) case ('TB_LAND_1410MHZ_40DEG_HPOL'); LONG_NAME = 'brightness_temperature_land_1410MHz_40deg_Hpol'; UNITS = 'K' case ('TB_LAND_1410MHZ_40DEG_VPOL'); LONG_NAME = 'brightness_temperature_land_1410MHz_40deg_Vpol'; UNITS = 'K' - ! Done for SM_L4 - - case ('Tair'); LONG_NAME = 'air_temperature_at_RefH'; UNITS = 'K' - case ('TA'); LONG_NAME = 'air_temperature_at_RefH'; UNITS = 'K' - case ('Qair'); LONG_NAME = 'specific_humidity_at_RefH'; UNITS = 'kg kg-1' - case ('QA'); LONG_NAME = 'specific_humidity_at_RefH'; UNITS = 'kg kg-1' - case ('LWdown'); LONG_NAME = 'surface_absorbed_longwave_flux'; UNITS = 'W m-2' - case ('LWDNSRF'); LONG_NAME = 'surface_absorbed_longwave_flux'; UNITS = 'W m-2' - case ('SWdown'); LONG_NAME = 'downward_shortwave_radiation'; UNITS = 'W m-2' - case ('Wind'); LONG_NAME = 'wind_speed_at_RefH'; UNITS = 'm s-1' - case ('UU'); LONG_NAME = 'wind_speed_at_RefH'; UNITS = 'm s-1' - case ('Psurf'); LONG_NAME = 'surface_pressure'; UNITS = 'Pa' - case ('PS'); LONG_NAME = 'surface_pressure'; UNITS = 'Pa' - case ('Rainf_C'); LONG_NAME = 'convective_rainfall'; UNITS = 'kg m-2 s-1' - case ('Rainf'); LONG_NAME = 'liquid_water_precipitation'; UNITS = 'kg m-2 s-1' - case ('Snowf'); LONG_NAME = 'total_snowfall'; UNITS = 'kg m-2 s-1' - case ('RainfSnowf'); LONG_NAME = 'RainfSnowf'; UNITS = 'kg m-2 s-1' - case ('SWnet'); LONG_NAME = 'downward_net_shortwave_radiation'; UNITS = 'W m-2' - case ('RefH'); LONG_NAME = 'reference_height_for_Tair_Qair_Wind'; UNITS = 'm' - case ('DZ'); LONG_NAME = 'reference_height_for_Tair_Qair_Wind'; UNITS = 'm' - case ('CATDEF'); LONG_NAME = 'catchment_deficit'; UNITS = 'kg m-2' - case ('RZEXC'); LONG_NAME = 'root_zone_excess'; UNITS = 'kg m-2' - case ('SRFEXC'); LONG_NAME = 'surface_excess'; UNITS = 'kg m-2' - case ('WESNN1'); LONG_NAME = 'snow_mass_layer_1'; UNITS = 'kg m-2' - case ('WESNN2'); LONG_NAME = 'snow_mass_layer_2'; UNITS = 'kg m-2' - case ('WESNN3'); LONG_NAME = 'snow_mass_layer_3'; UNITS = 'kg m-2' - case ('HTSNNN1'); LONG_NAME = 'heat_content_snow_layer_1'; UNITS = 'J m-2' - case ('HTSNNN2'); LONG_NAME = 'heat_content_snow_layer_2'; UNITS = 'J m-2' - case ('HTSNNN3'); LONG_NAME = 'heat_content_snow_layer_3'; UNITS = 'J m-2' - case ('SNDZN1'); LONG_NAME = 'snow_depth_layer_1'; UNITS = 'm' - case ('SNDZN2'); LONG_NAME = 'snow_depth_layer_2'; UNITS = 'm' - case ('SNDZN3'); LONG_NAME = 'snow_depth_layer_3'; UNITS = 'm' - case ('FICE1'); LONG_NAME = 'snow_frozen_fraction_layer_1'; UNITS = '1' - case ('FICE2'); LONG_NAME = 'snow_frozen_fraction_layer_2'; UNITS = '1' - case ('FICE3'); LONG_NAME = 'snow_frozen_fraction_layer_3'; UNITS = '1' - case ('ALBVR'); LONG_NAME = 'surface_reflectivity_for_visible_beam'; UNITS = '1' - case ('ALBVF'); LONG_NAME = 'surface_reflectivity_for_visible_diffuse'; UNITS = '1' - case ('ALBNR'); LONG_NAME = 'surface_reflectivity_for_near_infared_beam'; UNITS = '1' - case ('ALBNF'); LONG_NAME = 'surface_reflectivity_for_near_infrared_diffuse'; UNITS = '1' - case ('HLWUP'); LONG_NAME = 'surface_emitted_longwave_flux'; UNITS = 'W m-2' - case ('GWETPROF'); LONG_NAME = 'ave_prof_soil_wetness'; UNITS = '1' - case ('GWETROOT'); LONG_NAME = 'root_zone_soil_wetness'; UNITS = '1' - case ('GWETTOP'); LONG_NAME = 'surface_soil_wetness'; UNITS = '1' - case ('PRMC'); LONG_NAME = 'water_ave_prof'; UNITS = 'm3 m-3' - case ('RZMC'); LONG_NAME = 'water_root_zone'; UNITS = 'm3 m-3' - case ('SFMC'); LONG_NAME = 'water_surface_layer'; UNITS = 'm3 m-3' - case ('TPSNOW'); LONG_NAME = 'temperature_top_snow_layer'; UNITS = 'K' - case ('TUNST'); LONG_NAME = 'temperature_unsaturated_zone'; UNITS = 'K' - case ('TSAT'); LONG_NAME = 'temperature_saturated_zone'; UNITS = 'K' - case ('TWLT'); LONG_NAME = 'temperature_wilted_zone'; UNITS = 'K' - case ('TSURF'); LONG_NAME = 'ave_catchment_temp_incl_snw'; UNITS = 'K' - case ('TPSURF'); LONG_NAME = 'ave_catchment_temp_incl_snw'; UNITS = 'K' - case ('GRN'); LONG_NAME = 'greeness_fraction'; UNITS = '1' - case ('LAI'); LONG_NAME = 'leaf_area_index'; UNITS = '1' - case ('TP1'); LONG_NAME = 'soil_temperatures_layer_1'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 - case ('TP2'); LONG_NAME = 'soil_temperatures_layer_2'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 - case ('TP3'); LONG_NAME = 'soil_temperatures_layer_3'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 - case ('TP4'); LONG_NAME = 'soil_temperatures_layer_4'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 - case ('TP5'); LONG_NAME = 'soil_temperatures_layer_5'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 - case ('TP6'); LONG_NAME = 'soil_temperatures_layer_6'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 - case ('PRECTOTLAND');LONG_NAME = 'Total_precipitation_land'; UNITS = 'kg m-2 s-1' - case ('PRECSNOLAND');LONG_NAME = 'snowfall_land'; UNITS = 'kg m-2 s-1' - case ('SNOWMASS') ;LONG_NAME = 'snow_mass'; UNITS = 'kg m-2' - case ('SNOMAS') ;LONG_NAME = 'snow_mass'; UNITS = 'kg m-2' - case ('SNO'); LONG_NAME = 'snowfall'; UNITS = 'kg m-2 s-1' - case ('SNODP'); LONG_NAME = 'snow_depth_in_snow_covered_area'; UNITS = 'm' - case ('EVPSOIL'); LONG_NAME = 'baresoil_evap_energy_flux'; UNITS = 'W m-2' - case ('EVPTRNS'); LONG_NAME = 'transpiration_energy_flux'; UNITS = 'W m-2' - case ('EVPINTR'); LONG_NAME = 'interception_loss_energy_flux'; UNITS = 'W m-2' - case ('EVPSBLN'); LONG_NAME = 'snow_ice_evaporation_energy_flux'; UNITS = 'W m-2' - case ('RUNOFF'); LONG_NAME = 'runoff_flux'; UNITS = 'kg m-2 s-1' - case ('BASEFLOW'); LONG_NAME = 'baseflow_flux'; UNITS = 'kg m-2 s-1' - case ('SMLAND'); LONG_NAME = 'Snowmelt_flux_land'; UNITS = 'kg m-2 s-1' - case ('QINFIL'); LONG_NAME = 'rainwater_infiltration_flux'; UNITS = 'kg m-2 s-1' - case ('FRUNST'); LONG_NAME = 'fractional_area_of_unsaturated_zone'; UNITS = '1' - case ('FRSAT'); LONG_NAME = 'fractional_area_of_saturated_zone'; UNITS = '1' - case ('FRSNO'); LONG_NAME = 'fractional_area_of_land_snowcover'; UNITS = '1' - case ('FRWLT'); LONG_NAME = 'fractional_area_of_wilting_zone'; UNITS = '1' - case ('PARDFLAND'); LONG_NAME = 'surface_downwelling_par_diffuse_flux'; UNITS = 'W m-2' - case ('PARDRLAND'); LONG_NAME = 'surface_downwelling_par_beam_flux'; UNITS = 'W m-2' - case ('SHLAND'); LONG_NAME = 'Sensible_heat_flux_land'; UNITS = 'W m-2' - case ('LHLAND'); LONG_NAME = 'Latent_heat_flux_land'; UNITS = 'W m-2' - case ('EVLAND'); LONG_NAME = 'Evaporation_land'; UNITS = 'kg m-2 s-1' - case ('LWLAND'); LONG_NAME = 'Net_longwave_land'; UNITS = 'W m-2' - case ('SWLAND'); LONG_NAME = 'Net_shortwave_land'; UNITS = 'W m-2' - case ('SWDOWNLAND'); LONG_NAME = 'Incident_shortwave_land'; UNITS = 'W m-2' - case ('GHLAND'); LONG_NAME = 'Ground_heating_land'; UNITS = 'W m-2' - case ('TWLAND'); LONG_NAME = 'Avail_water_storage_land'; UNITS = 'kg m-2' - case ('TSLAND'); LONG_NAME = 'Total_snow_storage_land'; UNITS = 'kg m-2' - case ('TELAND'); LONG_NAME = 'Total_energy_storage_land'; UNITS = 'J m-2' - case ('WCHANGE'); LONG_NAME = 'rate_of_change_of_total_land_water'; UNITS = 'kg m-2 s-1' - case ('ECHANGE'); LONG_NAME = 'rate_of_change_of_total_land_energy'; UNITS = 'W m-2' - case ('SPLAND'); LONG_NAME = 'rate_of_spurious_land_energy_source'; UNITS = 'W m-2' - case ('SPWATR'); LONG_NAME = 'rate_of_spurious_land_water_source'; UNITS = 'kg m-2 s-1' - case ('SPSNOW'); LONG_NAME = 'rate_of_spurious_snow_energy'; UNITS = 'W m-2' - case ('PEATCLSM_WATERLEVEL');LONG_NAME = 'depth_to_water_table_from_surface_in_peat'; UNITS = 'm' - case ('PEATCLSM_FSWCHANGE'); LONG_NAME = 'change_in_free_surface_water_reservoir_on_peat'; UNITS = 'kg m-2 s-1' - case ('CNLAI'); LONG_NAME = 'CN_exposed_leaf-area_index'; UNITS = '1' - case ('CNTLAI'); LONG_NAME = 'CN_total_leaf-area_index'; UNITS = '1' - case ('CNSAI'); LONG_NAME = 'CN_exposed_stem-area_index'; UNITS = '1' - case ('CNTOTC'); LONG_NAME = 'CN_total_carbon'; UNITS = 'kg m-2' - case ('CNVEGC'); LONG_NAME = 'CN_total_vegetation_carbon'; UNITS = 'kg m-2' - case ('CNROOT'); LONG_NAME = 'CN_total_root_carbon'; UNITS = 'kg m-2' - case ('CNNPP'); LONG_NAME = 'CN_net_primary_production'; UNITS = 'kg m-2 s-1' - case ('CNGPP'); LONG_NAME = 'CN_gross_primary_production'; UNITS = 'kg m-2 s-1' - case ('CNSR'); LONG_NAME = 'CN_total_soil_respiration'; UNITS = 'kg m-2 s-1' - case ('CNNEE'); LONG_NAME = 'CN_net_ecosystem_exchange'; UNITS = 'kg m-2 s-1' - case ('CNXSMR'); LONG_NAME = 'abstract_C_pool_to_meet_excess_MR_demand'; UNITS = 'kg m-2' - case ('CNADD'); LONG_NAME = 'CN_added_to_maintain_positive_C'; UNITS = 'kg m-2 s-1' - case ('PARABS'); LONG_NAME = 'absorbed_PAR'; UNITS = 'W m-2' - case ('PARINC'); LONG_NAME = 'incident_PAR'; UNITS = 'W m-2' - case ('SCSAT'); LONG_NAME = 'saturated_stomatal_conductance'; UNITS = 'm s-1' - case ('SCUNS'); LONG_NAME = 'unstressed_stomatal_conductance'; UNITS = 'm s-1' - case ('BTRAN'); LONG_NAME = 'transpiration coefficient'; UNITS = '1' - case ('SIF'); LONG_NAME = 'solar induced fluorescence'; UNITS = 'umol m-2 sm s-1' - case ('CLOSS'); LONG_NAME = 'CN_carbon_loss_to_fire'; UNITS = 'kg m-2 s-1' - case ('BURN'); LONG_NAME = 'CN_fractional_area_burn_rate'; UNITS = 's-1' - case ('FSEL'); LONG_NAME = 'fire season length'; UNITS = 'days' - case ('EVPSNO'); LONG_NAME = 'snowpack_evaporation_energy_flux'; UNITS = 'W m-2' - case ('GHTSKIN'); LONG_NAME = 'Ground_heating_skin_temp'; UNITS = 'W m-2' - case ('WAT10CM'); LONG_NAME = 'soil moisture in Upper 10cm'; UNITS = 'kg m-2' - case ('WATSOI'); LONG_NAME = 'totoal soil moisture'; UNITS = 'kg m-2' - case ('ICESOI'); LONG_NAME = 'soil frozen water content'; UNITS = 'kg m-2' - case ('RMELTDU001'); LONG_NAME = 'flushed_out_dust_mass_flux_from_the_bottom_layer_bin_1'; UNITS = 'kg m-2 s-1' - case ('RMELTDU002'); LONG_NAME = 'flushed_out_dust_mass_flux_from_the_bottom_layer_bin_2'; UNITS = 'kg m-2 s-1' - case ('RMELTDU003'); LONG_NAME = 'flushed_out_dust_mass_flux_from_the_bottom_layer_bin_3'; UNITS = 'kg m-2 s-1' - case ('RMELTDU004'); LONG_NAME = 'flushed_out_dust_mass_flux_from_the_bottom_layer_bin_4'; UNITS = 'kg m-2 s-1' - case ('RMELTDU005'); LONG_NAME = 'flushed_out_dust_mass_flux_from_the_bottom_layer_bin_5'; UNITS = 'kg m-2 s-1' - case ('RMELTBC001'); LONG_NAME = 'flushed_out_black_carbon_mass_flux_from_the_bottom_layer_bin_1'; UNITS = 'kg m-2 s-1' - case ('RMELTBC002'); LONG_NAME = 'flushed_out_black_carbon_mass_flux_from_the_bottom_layer_bin_2'; UNITS = 'kg m-2 s-1' - case ('RMELTOC001'); LONG_NAME = 'flushed_out_organic_carbon_mass_flux_from_the_bottom_layer_bin_1'; UNITS = 'kg m-2 s-1' - case ('RMELTOC002'); LONG_NAME = 'flushed_out_organic_carbon_mass_flux_from_the_bottom_layer_bin_2'; UNITS = 'kg m-2 s-1' + ! End L4_SM ------------------------------------------------------------------------------------------------------------------------------------------------- + + case ('Tair'); LONG_NAME = 'air_temperature_at_RefH'; UNITS = 'K' + case ('TA'); LONG_NAME = 'air_temperature_at_RefH'; UNITS = 'K' + case ('Qair'); LONG_NAME = 'specific_humidity_at_RefH'; UNITS = 'kg kg-1' + case ('QA'); LONG_NAME = 'specific_humidity_at_RefH'; UNITS = 'kg kg-1' + case ('LWdown'); LONG_NAME = 'surface_absorbed_longwave_flux'; UNITS = 'W m-2' + case ('LWDNSRF'); LONG_NAME = 'surface_absorbed_longwave_flux'; UNITS = 'W m-2' + case ('SWdown'); LONG_NAME = 'downward_shortwave_radiation'; UNITS = 'W m-2' + case ('Wind'); LONG_NAME = 'wind_speed_at_RefH'; UNITS = 'm s-1' + case ('UU'); LONG_NAME = 'wind_speed_at_RefH'; UNITS = 'm s-1' + case ('Psurf'); LONG_NAME = 'surface_pressure'; UNITS = 'Pa' + case ('PS'); LONG_NAME = 'surface_pressure'; UNITS = 'Pa' + case ('Rainf_C'); LONG_NAME = 'convective_rainfall'; UNITS = 'kg m-2 s-1' + case ('Rainf'); LONG_NAME = 'liquid_water_precipitation'; UNITS = 'kg m-2 s-1' + case ('Snowf'); LONG_NAME = 'total_snowfall'; UNITS = 'kg m-2 s-1' + case ('RainfSnowf'); LONG_NAME = 'RainfSnowf'; UNITS = 'kg m-2 s-1' + case ('SWnet'); LONG_NAME = 'downward_net_shortwave_radiation'; UNITS = 'W m-2' + case ('RefH'); LONG_NAME = 'reference_height_for_Tair_Qair_Wind'; UNITS = 'm' + case ('DZ'); LONG_NAME = 'reference_height_for_Tair_Qair_Wind'; UNITS = 'm' + case ('CATDEF'); LONG_NAME = 'catchment_deficit'; UNITS = 'kg m-2' + case ('RZEXC'); LONG_NAME = 'root_zone_excess'; UNITS = 'kg m-2' + case ('SRFEXC'); LONG_NAME = 'surface_excess'; UNITS = 'kg m-2' + case ('CAPAC', 'INTRWATR'); LONG_NAME = 'vegetation_interception_water_storage'; UNITS = 'kg m-2' + case ('WESNN1'); LONG_NAME = 'snow_mass_layer_1'; UNITS = 'kg m-2' + case ('WESNN2'); LONG_NAME = 'snow_mass_layer_2'; UNITS = 'kg m-2' + case ('WESNN3'); LONG_NAME = 'snow_mass_layer_3'; UNITS = 'kg m-2' + case ('HTSNNN1'); LONG_NAME = 'heat_content_snow_layer_1'; UNITS = 'J m-2' + case ('HTSNNN2'); LONG_NAME = 'heat_content_snow_layer_2'; UNITS = 'J m-2' + case ('HTSNNN3'); LONG_NAME = 'heat_content_snow_layer_3'; UNITS = 'J m-2' + case ('SNDZN1'); LONG_NAME = 'snow_depth_layer_1'; UNITS = 'm' + case ('SNDZN2'); LONG_NAME = 'snow_depth_layer_2'; UNITS = 'm' + case ('SNDZN3'); LONG_NAME = 'snow_depth_layer_3'; UNITS = 'm' + case ('FICE1'); LONG_NAME = 'snow_frozen_fraction_layer_1'; UNITS = '1' + case ('FICE2'); LONG_NAME = 'snow_frozen_fraction_layer_2'; UNITS = '1' + case ('FICE3'); LONG_NAME = 'snow_frozen_fraction_layer_3'; UNITS = '1' + case ('ALBVR'); LONG_NAME = 'surface_reflectivity_for_visible_beam'; UNITS = '1' + case ('ALBVF'); LONG_NAME = 'surface_reflectivity_for_visible_diffuse'; UNITS = '1' + case ('ALBNR'); LONG_NAME = 'surface_reflectivity_for_near_infared_beam'; UNITS = '1' + case ('ALBNF'); LONG_NAME = 'surface_reflectivity_for_near_infrared_diffuse'; UNITS = '1' + case ('HLWUP'); LONG_NAME = 'surface_emitted_longwave_flux'; UNITS = 'W m-2' + case ('GWETPROF'); LONG_NAME = 'soil_wetness_profile'; UNITS = '1' + case ('GWETROOT'); LONG_NAME = 'soil_wetness_rootzone'; UNITS = '1' + case ('GWETTOP'); LONG_NAME = 'soil_wetness_surface'; UNITS = '1' + case ('PRMC'); LONG_NAME = 'soil_moisture_profile'; UNITS = 'm3 m-3' + case ('RZMC'); LONG_NAME = 'soil_moisture_rootzone'; UNITS = 'm3 m-3' + case ('SFMC'); LONG_NAME = 'soil_moisture_surface'; UNITS = 'm3 m-3' + case ('TPSNOW', 'TPSNOWLAND'); LONG_NAME = 'surface_temperature_of_snow_on_land'; UNITS = 'K' + case ('TUNST' , 'TUNSTLAND'); LONG_NAME = 'surface_temperature_of_unsaturated_zone'; UNITS = 'K' + case ('TSAT' , 'TSATLAND'); LONG_NAME = 'surface_temperature_of_saturated_zone'; UNITS = 'K' + case ('TWLT' , 'TWLTLAND'); LONG_NAME = 'surface_temperature_of_wilting_zone'; UNITS = 'K' + case ('TSURF', 'TPSURF', 'TSURFLAND'); LONG_NAME = 'surface_temperature_of_land_incl_snow'; UNITS = 'K' + case ('GRN'); LONG_NAME = 'vegetation_greenness_fraction'; UNITS = '1' + case ('LAI'); LONG_NAME = 'leaf_area_index'; UNITS = '1' + case ('TP1', 'TSOIL1'); LONG_NAME = 'soil_temperature_layer_1'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 + case ('TP2', 'TSOIL2'); LONG_NAME = 'soil_temperature_layer_2'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 + case ('TP3', 'TSOIL3'); LONG_NAME = 'soil_temperature_layer_3'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 + case ('TP4', 'TSOIL4'); LONG_NAME = 'soil_temperature_layer_4'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 + case ('TP5', 'TSOIL5'); LONG_NAME = 'soil_temperature_layer_5'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 + case ('TP6', 'TSOIL6'); LONG_NAME = 'soil_temperature_layer_6'; UNITS = 'K' ! units now K, rreichle & borescan, 6 Nov 2020 + case ('PRECTOTLAND', 'PRECTOTCORRLAND'); LONG_NAME = 'Total_precipitation_land'; UNITS = 'kg m-2 s-1' + case ('PRECSNOLAND', 'PRECSNOCORRLAND'); LONG_NAME = 'snowfall_land'; UNITS = 'kg m-2 s-1' + case ('SNOWMASS', 'SNOMAS'); LONG_NAME = 'snow_mass'; UNITS = 'kg m-2' + case ('TSLAND', 'SNOMASLAND'); LONG_NAME = 'Total_snow_storage_land'; UNITS = 'kg m-2' + case ('SNO'); LONG_NAME = 'snowfall'; UNITS = 'kg m-2 s-1' + case ('SNODP'); LONG_NAME = 'snow_depth_within_snow_covered_area_fraction'; UNITS = 'm' + case ('SNODPLAND'); LONG_NAME = 'snow_depth_within_snow_covered_area_fraction_on_land'; UNITS = 'm' + case ('EVPSOIL', 'LHLANDSOIL'); LONG_NAME = 'baresoil_evaporation_latent_heat_flux'; UNITS = 'W m-2' + case ('EVPTRNS', 'LHLANDTRNS'); LONG_NAME = 'transpiration_latent_heat_flux'; UNITS = 'W m-2' + case ('EVPINTR', 'LHLANDINTR'); LONG_NAME = 'interception_loss_latent_heat_flux'; UNITS = 'W m-2' + case ('EVPSBLN', 'LHLANDSBLN'); LONG_NAME = 'snowpack_evaporation_latent_heat_flux_on_land'; UNITS = 'W m-2' + case ('EVPSNO'); LONG_NAME = 'snowpack_evaporation_latent_heat_flux'; UNITS = 'W m-2' ! avg across all tile types + case ('RUNOFF'); LONG_NAME = 'runoff_total_flux'; UNITS = 'kg m-2 s-1' ! avg across all tile types + case ('RUNSURF', 'RUNSURFLAND'); LONG_NAME = 'overland runoff including throughflow'; UNITS = 'kg m-2 s-1' + case ('BASEFLOW'); LONG_NAME = 'baseflow_flux'; UNITS = 'kg m-2 s-1' + case ('BASEFLOWLAND'); LONG_NAME = 'baseflow_flux_land'; UNITS = 'kg m-2 s-1' + case ('SMLAND'); LONG_NAME = 'Snowmelt_flux_land'; UNITS = 'kg m-2 s-1' + case ('QINFIL', 'QINFILLAND'); LONG_NAME = 'Soil_water_infiltration_rate'; UNITS = 'kg m-2 s-1' + case ('FRUNST', 'FRLANDUNST'); LONG_NAME = 'fractional_area_of_unsaturated_zone'; UNITS = '1' + case ('FRSAT' , 'FRLANDSAT' ); LONG_NAME = 'fractional_area_of_saturated_zone'; UNITS = '1' + case ('FRSNO' , 'FRLANDSNO' ); LONG_NAME = 'fractional_area_of_snow_on_land'; UNITS = '1' + case ('FRWLT' , 'FRLANDWLT' ); LONG_NAME = 'fractional_area_of_wilting_zone'; UNITS = '1' + case ('PARDFLAND'); LONG_NAME = 'surface_downwelling_PAR_diffuse_flux'; UNITS = 'W m-2' + case ('PARDRLAND'); LONG_NAME = 'surface_downwelling_PAR_beam_flux'; UNITS = 'W m-2' + case ('SHLAND'); LONG_NAME = 'Sensible_heat_flux_land'; UNITS = 'W m-2' + case ('LHLAND'); LONG_NAME = 'Latent_heat_flux_land'; UNITS = 'W m-2' + case ('EVLAND'); LONG_NAME = 'Total_evaporation_land'; UNITS = 'kg m-2 s-1' + case ('LWLAND'); LONG_NAME = 'Net_longwave_flux_land'; UNITS = 'W m-2' + case ('SWLAND'); LONG_NAME = 'Net_shortwave_flux_land'; UNITS = 'W m-2' + case ('SWDOWNLAND'); LONG_NAME = 'Incident_shortwave_flux_land'; UNITS = 'W m-2' + case ('GHLAND'); LONG_NAME = 'Ground_heating_flux_land'; UNITS = 'W m-2' + case ('TWLAND'); LONG_NAME = 'total_water_storage_land'; UNITS = 'kg m-2' + case ('TELAND'); LONG_NAME = 'Total_energy_storage_land'; UNITS = 'J m-2' + case ('WCHANGE','WCHANGELAND'); LONG_NAME = 'rate_of_change_of_total_land_water'; UNITS = 'kg m-2 s-1' + case ('ECHANGE','ECHANGELAND'); LONG_NAME = 'rate_of_change_of_total_land_energy'; UNITS = 'W m-2' + case ('SPLAND', 'SPSHLAND'); LONG_NAME = 'Spurious_sensible_heat_flux_land'; UNITS = 'W m-2' + case ('SPLH' , 'SPLHLAND'); LONG_NAME = 'Spurious_latent_heat_flux_land'; UNITS = 'W m-2' + case ('SPWATR', 'SPEVLAND'); LONG_NAME = 'Spurious_evapotranspiration_flux_land'; UNITS = 'kg m-2 s-1' + case ('SPSNOW', 'SPSNLAND'); LONG_NAME = 'Spurious_snow_energy_flux_land'; UNITS = 'W m-2' + case ('PEATCLSM_WATERLEVEL'); LONG_NAME = 'depth_to_water_table_from_surface_in_peat'; UNITS = 'm' + case ('PEATCLSM_FSWCHANGE'); LONG_NAME = 'change_in_free_surface_water_reservoir_on_peat'; UNITS = 'kg m-2 s-1' + case ('CNLAI'); LONG_NAME = 'CN_exposed_leaf-area_index'; UNITS = '1' + case ('CNTLAI'); LONG_NAME = 'CN_total_leaf-area_index'; UNITS = '1' + case ('CNSAI'); LONG_NAME = 'CN_exposed_stem-area_index'; UNITS = '1' + case ('CNTOTC'); LONG_NAME = 'CN_total_carbon'; UNITS = 'kg m-2' + case ('CNVEGC'); LONG_NAME = 'CN_total_vegetation_carbon'; UNITS = 'kg m-2' + case ('CNROOT'); LONG_NAME = 'CN_total_root_carbon'; UNITS = 'kg m-2' + case ('CNNPP'); LONG_NAME = 'CN_net_primary_production'; UNITS = 'kg m-2 s-1' + case ('CNGPP'); LONG_NAME = 'CN_gross_primary_production'; UNITS = 'kg m-2 s-1' + case ('CNSR'); LONG_NAME = 'CN_total_soil_respiration'; UNITS = 'kg m-2 s-1' + case ('CNNEE'); LONG_NAME = 'CN_net_ecosystem_exchange'; UNITS = 'kg m-2 s-1' + case ('CNXSMR'); LONG_NAME = 'abstract_C_pool_to_meet_excess_MR_demand'; UNITS = 'kg m-2' + case ('CNADD'); LONG_NAME = 'CN_added_to_maintain_positive_C'; UNITS = 'kg m-2 s-1' + case ('PARABS'); LONG_NAME = 'absorbed_PAR'; UNITS = 'W m-2' + case ('PARINC'); LONG_NAME = 'incident_PAR'; UNITS = 'W m-2' + case ('SCSAT'); LONG_NAME = 'saturated_stomatal_conductance'; UNITS = 'm s-1' + case ('SCUNS'); LONG_NAME = 'unstressed_stomatal_conductance'; UNITS = 'm s-1' + case ('BTRAN'); LONG_NAME = 'transpiration coefficient'; UNITS = '1' + case ('SIF'); LONG_NAME = 'solar induced fluorescence'; UNITS = 'umol m-2 sm s-1' + case ('CLOSS'); LONG_NAME = 'CN_carbon_loss_to_fire'; UNITS = 'kg m-2 s-1' + case ('BURN'); LONG_NAME = 'CN_fractional_area_burn_rate'; UNITS = 's-1' + case ('FSEL'); LONG_NAME = 'fire season length'; UNITS = 'days' + case ('GHTSKIN'); LONG_NAME = 'Ground_heating_flux_for_skin_temp_land'; UNITS = 'W m-2' + case ('WAT10CM'); LONG_NAME = 'soil moisture in Upper 10cm'; UNITS = 'kg m-2' + case ('WATSOI'); LONG_NAME = 'total soil moisture'; UNITS = 'kg m-2' + case ('ICESOI'); LONG_NAME = 'soil frozen water content'; UNITS = 'kg m-2' + case ('RMELTDU001'); LONG_NAME = 'flushed_out_dust_mass_flux_from_the_bottom_layer_bin_1'; UNITS = 'kg m-2 s-1' + case ('RMELTDU002'); LONG_NAME = 'flushed_out_dust_mass_flux_from_the_bottom_layer_bin_2'; UNITS = 'kg m-2 s-1' + case ('RMELTDU003'); LONG_NAME = 'flushed_out_dust_mass_flux_from_the_bottom_layer_bin_3'; UNITS = 'kg m-2 s-1' + case ('RMELTDU004'); LONG_NAME = 'flushed_out_dust_mass_flux_from_the_bottom_layer_bin_4'; UNITS = 'kg m-2 s-1' + case ('RMELTDU005'); LONG_NAME = 'flushed_out_dust_mass_flux_from_the_bottom_layer_bin_5'; UNITS = 'kg m-2 s-1' + case ('RMELTBC001'); LONG_NAME = 'flushed_out_black_carbon_mass_flux_from_the_bottom_layer_bin_1'; UNITS = 'kg m-2 s-1' + case ('RMELTBC002'); LONG_NAME = 'flushed_out_black_carbon_mass_flux_from_the_bottom_layer_bin_2'; UNITS = 'kg m-2 s-1' + case ('RMELTOC001'); LONG_NAME = 'flushed_out_organic_carbon_mass_flux_from_the_bottom_layer_bin_1'; UNITS = 'kg m-2 s-1' + case ('RMELTOC002'); LONG_NAME = 'flushed_out_organic_carbon_mass_flux_from_the_bottom_layer_bin_2'; UNITS = 'kg m-2 s-1' + ! land constants + + case ('CDCR2'); LONG_NAME = 'maximum soil water content above wilting point'; UNITS = 'kg m-2' + case ('DZGT1'); LONG_NAME = 'thickness_of_soil_layer_associated_with_TSOIL1'; UNITS = 'm' + case ('DZGT2'); LONG_NAME = 'thickness_of_soil_layer_associated_with_TSOIL2'; UNITS = 'm' + case ('DZGT3'); LONG_NAME = 'thickness_of_soil_layer_associated_with_TSOIL3'; UNITS = 'm' + case ('DZGT4'); LONG_NAME = 'thickness_of_soil_layer_associated_with_TSOIL4'; UNITS = 'm' + case ('DZGT5'); LONG_NAME = 'thickness_of_soil_layer_associated_with_TSOIL5'; UNITS = 'm' + case ('DZGT6'); LONG_NAME = 'thickness_of_soil_layer_associated_with_TSOIL6'; UNITS = 'm' + case ('DZPR'); LONG_NAME = 'thickness_of_soil_layer_associated_with_PRMC_and_GWETPROF'; UNITS = 'm' + case ('DZRZ'); LONG_NAME = 'thickness_of_soil_layer_associated_with_RZMC_and_GWETROOT'; UNITS = 'm' + case ('DZSF'); LONG_NAME = 'thickness_of_soil_layer_associated_with_SFMC_and_GWETTOP'; UNITS = 'm' + case ('DZTS'); LONG_NAME = 'thickness_of_soil_layer_associated_with_TSATLAND_TUNSTLAND_and_TWLTLAND'; UNITS = 'm' + case ('POROS'); LONG_NAME = 'soil_porosity'; UNITS = 'm3 m-3' + case ('WPEMW'); LONG_NAME = 'soil_wilting_point_in_equivalent_mass_of_total_profile_water'; UNITS = 'kg m-2' + case ('WPMC'); LONG_NAME = 'soil_wilting_point_in_volumetric_units'; UNITS = 'm3 m-3' + case ('WPWET'); LONG_NAME = 'soil_wilting_point_in_degree_of_saturation_units'; UNITS = '1' + ! land assimilation increments for Catchment prognostic variables in coupled land-atmosphere DAS (#sqz 2020-01) - case ('TCFSAT_INCR'); LONG_NAME = 'increment_canopy_temperature_saturated_zone'; UNITS = 'K' - case ('TCFTRN_INCR'); LONG_NAME = 'increment_canopy_temperature_transition_zone'; UNITS = 'K' - case ('TCFWLT_INCR'); LONG_NAME = 'increment_canopy_temperature_wilting_zone'; UNITS = 'K' - case ('QCFSAT_INCR'); LONG_NAME = 'increment_canopy_specific_humidity_saturated_zone'; UNITS = 'kg kg-1' - case ('QCFTRN_INCR'); LONG_NAME = 'increment_canopy_specific_humidity_transition_zone'; UNITS = 'kg kg-1' - case ('QCFWLT_INCR'); LONG_NAME = 'increment_canopy_specific_humidity_wilting_zone'; UNITS = 'kg kg-1' - case ('CAPAC_INCR'); LONG_NAME = 'increment_interception_reservoir_capac'; UNITS = 'kg m-2' - case ('CATDEF_INCR'); LONG_NAME = 'increment_catchment_deficit'; UNITS = 'kg m-2' - case ('RZEXC_INCR'); LONG_NAME = 'increment_root_zone_excess'; UNITS = 'kg m-2' - case ('SRFEXC_INCR'); LONG_NAME = 'increment_surface_excess'; UNITS = 'kg m-2' - case ('GHTCNT1_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_1'; UNITS = 'J m-2' - case ('GHTCNT2_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_2'; UNITS = 'J m-2' - case ('GHTCNT3_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_3'; UNITS = 'J m-2' - case ('GHTCNT4_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_4'; UNITS = 'J m-2' - case ('GHTCNT5_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_5'; UNITS = 'J m-2' - case ('GHTCNT6_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_6'; UNITS = 'J m-2' - case ('WESNN1_INCR'); LONG_NAME = 'increment_snow_mass_layer_1'; UNITS = 'kg m-2' - case ('WESNN2_INCR'); LONG_NAME = 'increment_snow_mass_layer_2'; UNITS = 'kg m-2' - case ('WESNN3_INCR'); LONG_NAME = 'increment_snow_mass_layer_3'; UNITS = 'kg m-2' - case ('HTSNNN1_INCR'); LONG_NAME = 'increment_heat_content_snow_layer_1'; UNITS = 'J m-2' - case ('HTSNNN2_INCR'); LONG_NAME = 'increment_heat_content_snow_layer_2'; UNITS = 'J m-2' - case ('HTSNNN3_INCR'); LONG_NAME = 'increment_heat_content_snow_layer_3'; UNITS = 'J m-2' - case ('SNDZN1_INCR'); LONG_NAME = 'increment_snow_depth_layer_1'; UNITS = 'm' - case ('SNDZN2_INCR'); LONG_NAME = 'increment_snow_depth_layer_2'; UNITS = 'm' - case ('SNDZN3_INCR'); LONG_NAME = 'increment_snow_depth_layer_3'; UNITS = 'm' + case ('TCFSAT_INCR'); LONG_NAME = 'increment_surface_temperature_of_saturated_zone'; UNITS = 'K' + case ('TCFTRN_INCR'); LONG_NAME = 'increment_surface_temperature_of_transition_zone'; UNITS = 'K' + case ('TCFWLT_INCR'); LONG_NAME = 'increment_surface_temperature_of_wilting_zone'; UNITS = 'K' + case ('QCFSAT_INCR'); LONG_NAME = 'increment_surface_specific_humidity_of_saturated_zone'; UNITS = 'kg kg-1' + case ('QCFTRN_INCR'); LONG_NAME = 'increment_surface_specific_humidity_of_transition_zone'; UNITS = 'kg kg-1' + case ('QCFWLT_INCR'); LONG_NAME = 'increment_surface_specific_humidity_of_wilting_zone'; UNITS = 'kg kg-1' + case ('CAPAC_INCR'); LONG_NAME = 'increment_vegetation_interception_water_storage'; UNITS = 'kg m-2' + case ('CATDEF_INCR'); LONG_NAME = 'increment_catchment_deficit'; UNITS = 'kg m-2' + case ('RZEXC_INCR'); LONG_NAME = 'increment_root_zone_excess'; UNITS = 'kg m-2' + case ('SRFEXC_INCR'); LONG_NAME = 'increment_surface_excess'; UNITS = 'kg m-2' + case ('GHTCNT1_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_1'; UNITS = 'J m-2' + case ('GHTCNT2_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_2'; UNITS = 'J m-2' + case ('GHTCNT3_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_3'; UNITS = 'J m-2' + case ('GHTCNT4_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_4'; UNITS = 'J m-2' + case ('GHTCNT5_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_5'; UNITS = 'J m-2' + case ('GHTCNT6_INCR'); LONG_NAME = 'increment_soil_heat_content_layer_6'; UNITS = 'J m-2' + case ('WESNN1_INCR'); LONG_NAME = 'increment_snow_mass_layer_1'; UNITS = 'kg m-2' + case ('WESNN2_INCR'); LONG_NAME = 'increment_snow_mass_layer_2'; UNITS = 'kg m-2' + case ('WESNN3_INCR'); LONG_NAME = 'increment_snow_mass_layer_3'; UNITS = 'kg m-2' + case ('HTSNNN1_INCR'); LONG_NAME = 'increment_heat_content_snow_layer_1'; UNITS = 'J m-2' + case ('HTSNNN2_INCR'); LONG_NAME = 'increment_heat_content_snow_layer_2'; UNITS = 'J m-2' + case ('HTSNNN3_INCR'); LONG_NAME = 'increment_heat_content_snow_layer_3'; UNITS = 'J m-2' + case ('SNDZN1_INCR'); LONG_NAME = 'increment_snow_depth_layer_1'; UNITS = 'm' + case ('SNDZN2_INCR'); LONG_NAME = 'increment_snow_depth_layer_2'; UNITS = 'm' + case ('SNDZN3_INCR'); LONG_NAME = 'increment_snow_depth_layer_3'; UNITS = 'm' ! land assimilation forecast and analysis for Catchment model diagnostics - case ('SFMC_FCST'); LONG_NAME = 'soil_moisture_surface_forecast'; UNITS = 'm3 m-3' - case ('RZMC_FCST'); LONG_NAME = 'soil_moisture_rootzone_forecast'; UNITS = 'm3 m-3' - case ('PRMC_FCST'); LONG_NAME = 'soil_moisture_profile_forecast'; UNITS = 'm3 m-3' - case ('TSURF_FCST'); LONG_NAME = 'ave_catchment_temp_incl_snw_forecast'; UNITS = 'K' - case ('TSOIL1_FCST'); LONG_NAME = 'soil_temperatures_layer_1_forecast'; UNITS = 'K' - - case ('SFMC_FCST_ENSSTD'); LONG_NAME = 'soil_moisture_surface_forecast_ensstd'; UNITS = 'm3 m-3' - case ('RZMC_FCST_ENSSTD'); LONG_NAME = 'soil_moisture_rootzone_forecast_ensstd'; UNITS = 'm3 m-3' - case ('PRMC_FCST_ENSSTD'); LONG_NAME = 'soil_moisture_profile_forecast_ensstd'; UNITS = 'm3 m-3' - case ('TSURF_FCST_ENSSTD'); LONG_NAME = 'ave_catchment_temp_incl_snw_forecast_ensstd'; UNITS = 'K' - case ('TSOIL1_FCST_ENSSTD'); LONG_NAME = 'soil_temperatures_layer_1_forecast_ensstd'; UNITS = 'K' - - case ('SFMC_ANA'); LONG_NAME = 'soil_moisture_surface_analysis'; UNITS = 'm3 m-3' - case ('RZMC_ANA'); LONG_NAME = 'soil_moisture_rootzone_analysis'; UNITS = 'm3 m-3' - case ('PRMC_ANA'); LONG_NAME = 'soil_moisture_profile_analysis'; UNITS = 'm3 m-3' - case ('TSURF_ANA'); LONG_NAME = 'ave_catchment_temp_incl_snw_analysis'; UNITS = 'K' - case ('TSOIL1_ANA'); LONG_NAME = 'soil_temperatures_layer_1_analysis'; UNITS = 'K' - - case ('SFMC_ANA_ENSSTD'); LONG_NAME = 'soil_moisture_surface_analysis_ensstd'; UNITS = 'm3 m-3' - case ('RZMC_ANA_ENSSTD'); LONG_NAME = 'soil_moisture_rootzone_analysis_ensstd'; UNITS = 'm3 m-3' - case ('PRMC_ANA_ENSSTD'); LONG_NAME = 'soil_moisture_profile_analysis_ensstd'; UNITS = 'm3 m-3' - case ('TSURF_ANA_ENSSTD'); LONG_NAME = 'ave_catchment_temp_incl_snw_analysis_ensstd'; UNITS = 'K' - case ('TSOIL1_ANA_ENSSTD'); LONG_NAME = 'soil_temperatures_layer_1_analysis_ensstd'; UNITS = 'K' - - ! other land assimilation fields - - case ('MWRTM_VEGOPACITY'); LONG_NAME = 'Lband_microwave_vegopacity_normalized_with_cos_inc_angle'; UNITS = '1' + case ('SFMC_FCST'); LONG_NAME = 'soil_moisture_surface_forecast'; UNITS = 'm3 m-3' + case ('RZMC_FCST'); LONG_NAME = 'soil_moisture_rootzone_forecast'; UNITS = 'm3 m-3' + case ('PRMC_FCST'); LONG_NAME = 'soil_moisture_profile_forecast'; UNITS = 'm3 m-3' + case ('TSURF_FCST'); LONG_NAME = 'surface_temperature_of_land_incl_snow_forecast'; UNITS = 'K' + case ('TSOIL1_FCST'); LONG_NAME = 'soil_temperature_layer_1_forecast'; UNITS = 'K' + + case ('SFMC_FCST_ENSSTD'); LONG_NAME = 'soil_moisture_surface_forecast_ensstd'; UNITS = 'm3 m-3' + case ('RZMC_FCST_ENSSTD'); LONG_NAME = 'soil_moisture_rootzone_forecast_ensstd'; UNITS = 'm3 m-3' + case ('PRMC_FCST_ENSSTD'); LONG_NAME = 'soil_moisture_profile_forecast_ensstd'; UNITS = 'm3 m-3' + case ('TSURF_FCST_ENSSTD'); LONG_NAME = 'surface_temperature_of_land_incl_snow_forecast_ensstd'; UNITS = 'K' + case ('TSOIL1_FCST_ENSSTD'); LONG_NAME = 'soil_temperature_layer_1_forecast_ensstd'; UNITS = 'K' + + case ('SFMC_ANA'); LONG_NAME = 'soil_moisture_surface_analysis'; UNITS = 'm3 m-3' + case ('RZMC_ANA'); LONG_NAME = 'soil_moisture_rootzone_analysis'; UNITS = 'm3 m-3' + case ('PRMC_ANA'); LONG_NAME = 'soil_moisture_profile_analysis'; UNITS = 'm3 m-3' + case ('TSURF_ANA'); LONG_NAME = 'surface_temperature_of_land_incl_snow_analysis'; UNITS = 'K' + case ('TSOIL1_ANA'); LONG_NAME = 'soil_temperature_layer_1_analysis'; UNITS = 'K' + + case ('SFMC_ANA_ENSSTD'); LONG_NAME = 'soil_moisture_surface_analysis_ensstd'; UNITS = 'm3 m-3' + case ('RZMC_ANA_ENSSTD'); LONG_NAME = 'soil_moisture_rootzone_analysis_ensstd'; UNITS = 'm3 m-3' + case ('PRMC_ANA_ENSSTD'); LONG_NAME = 'soil_moisture_profile_analysis_ensstd'; UNITS = 'm3 m-3' + case ('TSURF_ANA_ENSSTD'); LONG_NAME = 'surface_temperature_of_land_incl_snow_ensstd'; UNITS = 'K' + case ('TSOIL1_ANA_ENSSTD'); LONG_NAME = 'soil_temperature_layer_1_analysis_ensstd'; UNITS = 'K' + + ! other land assimilation fields + + case ('MWRTM_VEGOPACITY'); LONG_NAME = 'Lband_microwave_vegopacity_normalized_with_cos_inc_angle'; UNITS = '1' ! default LONG_NAME and UNITS for nc4 files created by tile_bin2nc4.F90 (used for any SHORT_NAME not listed above): - case default; LONG_NAME = 'not defined in tile_bin2nc4.F90'; UNITS = 'not defined in tile_bin2nc4.F90'; - + case default; LONG_NAME = 'not defined in tile_bin2nc4.F90'; UNITS = 'not defined in tile_bin2nc4.F90'; + end select - + if (present(LNAME)) str_atr = trim (LONG_NAME) if (present(UNT)) str_atr = trim (UNITS ) - + END FUNCTION getAttribute - + END PROGRAM tile_bin2nc4