[Dart-dev] [5740] DART/branches/development: Adding the support for the flux tower observations and incorporating what used to be in the obs_def_land_mod .f90

nancy at ucar.edu nancy at ucar.edu
Wed May 9 16:56:37 MDT 2012


Revision: 5740
Author:   thoar
Date:     2012-05-09 16:56:36 -0600 (Wed, 09 May 2012)
Log Message:
-----------
Adding the support for the flux tower observations and incorporating what used to be in the obs_def_land_mod.f90
The DEFAULT_obs_kind_mod.f90 also had a lot of hanging whitespace that I removed.

Modified Paths:
--------------
    DART/branches/development/obs_def/obs_def_tower_mod.f90
    DART/branches/development/obs_kind/DEFAULT_obs_kind_mod.F90

-------------- next part --------------
Modified: DART/branches/development/obs_def/obs_def_tower_mod.f90
===================================================================
--- DART/branches/development/obs_def/obs_def_tower_mod.f90	2012-05-09 22:43:11 UTC (rev 5739)
+++ DART/branches/development/obs_def/obs_def_tower_mod.f90	2012-05-09 22:56:36 UTC (rev 5740)
@@ -3,9 +3,23 @@
 ! http://www.image.ucar.edu/DAReS/DART/DART_download
 
 ! BEGIN DART PREPROCESS KIND LIST
-!TOWER_TEMPERATURE,       KIND_TEMPERATURE,        COMMON_CODE
-!TOWER_U_WIND_COMPONENT,  KIND_U_WIND_COMPONENT,   COMMON_CODE
-!TOWER_V_WIND_COMPONENT,  KIND_V_WIND_COMPONENT,   COMMON_CODE
+!SOIL_TEMPERATURE,               KIND_SOIL_TEMPERATURE,         COMMON_CODE
+!LAYER_LIQUID_WATER,             KIND_LIQUID_WATER,             COMMON_CODE
+!LAYER_ICE,                      KIND_ICE,                      COMMON_CODE
+!SNOW_THICKNESS,                 KIND_SNOW_THICKNESS,           COMMON_CODE
+!SNOW_WATER,                     KIND_SNOW_WATER,               COMMON_CODE
+!MODIS_SNOWCOVER_FRAC,           KIND_SNOWCOVER_FRAC,           COMMON_CODE
+!LEAF_CARBON,                    KIND_LEAF_CARBON,              COMMON_CODE
+!LEAF_AREA_INDEX,                KIND_LEAF_AREA_INDEX,          COMMON_CODE
+!TOWER_AIR_TEMPERATURE,          KIND_TEMPERATURE,              COMMON_CODE
+!TOWER_SOIL_TEMPERATURE,         KIND_TEMPERATURE,              COMMON_CODE
+!TOWER_U_WIND_COMPONENT,         KIND_U_WIND_COMPONENT,         COMMON_CODE
+!TOWER_V_WIND_COMPONENT,         KIND_V_WIND_COMPONENT,         COMMON_CODE
+!TOWER_LATENT_HEAT_FLUX,         KIND_LATENT_HEAT_FLUX,         COMMON_CODE
+!TOWER_SENSIBLE_HEAT_FLUX,       KIND_SENSIBLE_HEAT_FLUX,       COMMON_CODE
+!TOWER_GLOBAL_RADIATION,         KIND_RADIATION,                COMMON_CODE
+!TOWER_NETC_ECO_EXCHANGE,        KIND_NET_CARBON_PRODUCTION,    COMMON_CODE
+!TOWER_NET_CARBON_FLUX,          KIND_NET_CARBON_FLUX,          COMMON_CODE
 ! END DART PREPROCESS KIND LIST
 
 ! <next few lines under version control, do not edit>

Modified: DART/branches/development/obs_kind/DEFAULT_obs_kind_mod.F90
===================================================================
--- DART/branches/development/obs_kind/DEFAULT_obs_kind_mod.F90	2012-05-09 22:43:11 UTC (rev 5739)
+++ DART/branches/development/obs_kind/DEFAULT_obs_kind_mod.F90	2012-05-09 22:56:36 UTC (rev 5740)
@@ -50,13 +50,13 @@
 ! generate this table automatically.
 
 ! F90 currently has a maximum length of 32 characters for the NAME of
-! any Fortran PARAMETER. 
+! any Fortran PARAMETER.
 
 integer, parameter, public :: paramname_length = 32
 
 ! Definition and public access to the observation types/kinds
-! Unique index values associated with each observation type and 
-! kind strings are defined here. 
+! Unique index values associated with each observation type and
+! kind strings are defined here.
 
 integer, parameter, public :: &
     KIND_RAW_STATE_VARIABLE          = 0, &
@@ -85,26 +85,26 @@
     KIND_POTENTIAL_TEMPERATURE       = 23, &
     KIND_SOIL_MOISTURE               = 24, &
     KIND_SURFACE_ELEVATION           = 25
-                       
+
 ! kinds for Gravity Wave Drag (CAM - kevin)
 integer, parameter, public :: &
     KIND_GRAV_WAVE_DRAG_EFFIC        = 26, &
     KIND_GRAV_WAVE_STRESS_FRACTION   = 27
-                       
+
 ! kinds for simple advection model
 integer, parameter, public :: &
     KIND_TRACER_SOURCE               = 28, &
     KIND_TRACER_CONCENTRATION        = 29, &
     KIND_MEAN_SOURCE                 = 30, &
     KIND_SOURCE_PHASE                = 31
- 
+
 ! kind for power-weighted precipitation fall speed
 ! and a few other kinds that were missing from the
 ! collection of fractions and mixing ratio definitions.
 ! (CONCENTRATION -> CONCENTR because the max len of
 ! these strings is still 32 chars.)
 
-! WARNING: the current models use 
+! WARNING: the current models use
 ! KIND_CLOUD_LIQUID_WATER and KIND_CLOUD_ICE
 ! for mixing ratios.  because current models are
 ! using them, we can't make them consistent with
@@ -115,7 +115,7 @@
     KIND_POWER_WEIGHTED_FALL_SPEED   = 32, &
     KIND_CLOUDWATER_MIXING_RATIO     = 33, &
     KIND_ICE_MIXING_RATIO            = 34, &
-    KIND_DROPLET_NUMBER_CONCENTR     = 35, & 
+    KIND_DROPLET_NUMBER_CONCENTR     = 35, &
     KIND_SNOW_NUMBER_CONCENTR        = 36, &
     KIND_RAIN_NUMBER_CONCENTR        = 37, &
     KIND_GRAUPEL_NUMBER_CONCENTR     = 38, &
@@ -123,10 +123,10 @@
     KIND_ICE_FRACTION                = 40, &
     KIND_RELATIVE_HUMIDITY           = 41
 
-! kinds for TIEgcm 
+! kinds for TIEgcm
 integer, parameter, public :: &
     KIND_ELECTRON_DENSITY            = 42
-   
+
 ! kinds for generic parameters that aren't going to be
 ! directly observed but are going to be adjusted by the
 ! assimilation.
@@ -153,7 +153,7 @@
     KIND_DRY_LAND                    = 54, &
     KIND_SEA_SURFACE_PRESSURE        = 55, &
     KIND_W_CURRENT_COMPONENT         = 56
- 
+
 ! proposed new kinds for COSMIC GPS/RO obs
 ! (currently unused)
 integer, parameter, public :: &
@@ -165,11 +165,11 @@
     KIND_INFRARED_RADIANCE           = 60, &
     KIND_INFRARED_BRIGHT_TEMP        = 61, &
     KIND_LANDMASK                    = 62
-                                     
-! kind for unstructured grids 
+
+! kind for unstructured grids
 integer, parameter, public :: &
     KIND_EDGE_NORMAL_SPEED           = 63
- 
+
 ! kinds for planetary remote sensing (wglawson, c.lee)
 integer, parameter, public :: &
     KIND_SKIN_TEMPERATURE            = 70, &
@@ -198,7 +198,7 @@
     KIND_VORTEX_LAT                  = 82, &
     KIND_VORTEX_PMIN                 = 83, &
     KIND_VORTEX_WMAX                 = 84
- 
+
 ! kinds for COAMPS (Tim Whitcomb)
 integer, parameter, public :: &
     KIND_EXNER_FUNCTION              = 85, &
@@ -207,15 +207,15 @@
     KIND_VERTLEVEL                   = 88, &
     KIND_MICROWAVE_BRIGHT_TEMP       = 89
 
-! kinds for NAAPS (Walter R. Sessions) 
+! kinds for NAAPS (Walter R. Sessions)
 integer, parameter, public :: &
-    KIND_INTEGRATED_SULFATE          = 90, & 
+    KIND_INTEGRATED_SULFATE          = 90, &
     KIND_INTEGRATED_DUST             = 91, &
     KIND_INTEGRATED_SMOKE            = 92, &
     KIND_INTEGRATED_SEASALT          = 93, &
     KIND_INTEGRATED_AOD              = 94, &
-    KIND_SO2                         = 95, & 
-    KIND_SULFATE                     = 96, & 
+    KIND_SO2                         = 95, &
+    KIND_SULFATE                     = 96, &
     KIND_DUST                        = 97, &
     KIND_SMOKE                       = 98, &
     KIND_SEASALT                     = 99
@@ -228,16 +228,31 @@
     KIND_HAIL_VOLUME                 = 103, &
     KIND_DIFFERENTIAL_REFLECTIVITY   = 104, &
     KIND_SPECIFIC_DIFFERENTIAL_PHASE = 105, &
-    KIND_FLASH_RATE_2D               = 106 
+    KIND_FLASH_RATE_2D               = 106
 
+! kinds for CLM - Community Land Model (Tim Hoar)
+integer, parameter, public :: &
+    KIND_SNOW_THICKNESS              = 107, &
+    KIND_SNOW_WATER                  = 108, &
+    KIND_SNOWCOVER_FRAC              = 109, &
+    KIND_LIQUID_WATER                = 110, &
+    KIND_ICE                         = 111, &
+    KIND_LEAF_CARBON                 = 112, &
+    KIND_LEAF_AREA_INDEX             = 113, &
+    KIND_NET_CARBON_FLUX             = 114, &
+    KIND_LATENT_HEAT_FLUX            = 115, &
+    KIND_SENSIBLE_HEAT_FLUX          = 116, &
+    KIND_RADIATION                   = 117, &
+    KIND_NET_CARBON_PRODUCTION       = 118
+
 !! PRIVATE ONLY TO THIS MODULE. see comment below near the max_obs_specific
 !! declaration.
-integer, parameter :: max_obs_generic = 106
+integer, parameter :: max_obs_generic = 118
 
 !----------------------------------------------------------------------------
-! This list is autogenerated by the 'preprocess' program.  To add new 
+! This list is autogenerated by the 'preprocess' program.  To add new
 ! observation types (e.g. AIRS_U_WIND_COMPONENT), edit the obs_def_x_mod.f90
-! files and also add (or remove) them from the 'input_files' variable of 
+! files and also add (or remove) them from the 'input_files' variable of
 ! the &preprocess_nml namelist in the model-specific work/input.nml file.
 
 ! Unique index values associated with each observation type string are
@@ -264,7 +279,7 @@
 !! being non-backwards compatible.  for now, punt on both type and kind
 !! and start trying to use specific and generic (ok, which do map to type
 !! and kind, respectively).  using intermediate names might make the transition
-!! less painful.  right now, many(most) of the subroutine names or args 
+!! less painful.  right now, many(most) of the subroutine names or args
 !! which are public are using 'kind' where it needs to be 'type'.
 integer, parameter :: max_obs_specific = max_obs_kinds
 
@@ -305,7 +320,7 @@
    character(len = paramname_length) :: name
 end type obs_kind_type
 
-! An obs_kind_name_type is defined by the preprocess program to store 
+! An obs_kind_name_type is defined by the preprocess program to store
 ! the association between obs_kind index numbers and string names.
 ! raw is index 0, so this needs to match.  revisit the direct indexing
 ! since we have an index in the table -- redundant info?
@@ -458,8 +473,20 @@
 obs_kind_names(105) = obs_kind_type(KIND_SPECIFIC_DIFFERENTIAL_PHASE, 'KIND_SPECIFIC_DIFFERENTIAL_PHASE')
 obs_kind_names(106) = obs_kind_type(KIND_FLASH_RATE_2D, 'KIND_FLASH_RATE_2D')
 
+obs_kind_names(107) = obs_kind_type(KIND_SNOW_THICKNESS        ,'KIND_SNOW_THICKNESS')
+obs_kind_names(108) = obs_kind_type(KIND_SNOW_WATER            ,'KIND_SNOW_WATER')
+obs_kind_names(109) = obs_kind_type(KIND_SNOWCOVER_FRAC        ,'KIND_SNOWCOVER_FRAC')
+obs_kind_names(110) = obs_kind_type(KIND_LIQUID_WATER          ,'KIND_LIQUID_WATER')
+obs_kind_names(111) = obs_kind_type(KIND_ICE                   ,'KIND_ICE')
+obs_kind_names(112) = obs_kind_type(KIND_LEAF_CARBON           ,'KIND_LEAF_CARBON')
+obs_kind_names(113) = obs_kind_type(KIND_LEAF_AREA_INDEX       ,'KIND_LEAF_AREA_INDEX')
+obs_kind_names(114) = obs_kind_type(KIND_NET_CARBON_FLUX       ,'KIND_NET_CARBON_FLUX')
+obs_kind_names(115) = obs_kind_type(KIND_LATENT_HEAT_FLUX      ,'KIND_LATENT_HEAT_FLUX')
+obs_kind_names(116) = obs_kind_type(KIND_SENSIBLE_HEAT_FLUX    ,'KIND_SENSIBLE_HEAT_FLUX')
+obs_kind_names(117) = obs_kind_type(KIND_RADIATION             ,'KIND_RADIATION')
+obs_kind_names(118) = obs_kind_type(KIND_NET_CARBON_PRODUCTION ,'KIND_NET_CARBON_PRODUCTION')
 
-! count here, then output below 
+! count here, then output below
 
 num_kind_assimilate = 0
 do i = 1, max_obs_specific
@@ -561,7 +588,7 @@
 if ( .not. module_initialized ) call initialize_module
 
 ! Need to search through the first map column to find this obs_def_index value
-! Then return the index into table in this module from corresponding row in 
+! Then return the index into table in this module from corresponding row in
 ! second column.
 do i = 1, max_obs_specific
    if(map(1, i) == obs_def_index) then
@@ -606,7 +633,7 @@
 ! handling more readable.
 
 function get_raw_obs_kind_name(obs_kind_ind)
-  
+
 ! Returns observation kind name
 
 integer, intent(in) :: obs_kind_ind
@@ -666,7 +693,7 @@
 
 integer :: i
 character(len=len(obs_kind_name)) :: string1
-  
+
 if (.not. module_initialized) call initialize_module
 
 string1 = adjustl(obs_kind_name)
@@ -699,7 +726,7 @@
 !----------------------------------------------------------------------------
 
 function get_num_raw_obs_kinds()
-  
+
 ! Accessor function to return observation *kind* count
 
 integer :: get_num_raw_obs_kinds
@@ -774,8 +801,8 @@
 is_ascii = ascii_file_format(fform)
 
 ! Write the 20 character identifier to indicate the start of a kind table.
-! To maintain complete backwards compatibility with the original read 
-! code this string must start in column 1.  
+! To maintain complete backwards compatibility with the original read
+! code this string must start in column 1.
 ! you cannot use: write(ifile, *) 'string'  because the output string
 ! will start in col 2.  the string either has to be part of the format
 ! argument to write(), or you have to use a separate format statement.
@@ -858,7 +885,7 @@
 
 is_ascii = ascii_file_format(fform)
 
-! Read the 20 character identifier which identifies the start 
+! Read the 20 character identifier which identifies the start
 ! of the obstype number/name table for this sequence file.
 if (is_ascii) then
    read(ifile, *) header
@@ -926,7 +953,7 @@
       write(*, *) '     ',  obs_type_info(i)%index, trim(obs_type_info(i)%name)
 end do
 
-! Read the input as a string, convert to integers as appropriate 
+! Read the input as a string, convert to integers as appropriate
 read(*, '(A)') in
 
 ! If string is a positive or negative number, convert it to integer
@@ -946,7 +973,7 @@
    endif
 endif
 
-! Make sure 
+! Make sure
 
 end function get_kind_from_menu
 
@@ -954,11 +981,11 @@
 
 function add_wind_names(my_names)
 !----------------------------------------------------------------------
-! Define/Append the 'horizontal wind' obs_kinds to supplant the list 
+! Define/Append the 'horizontal wind' obs_kinds to supplant the list
 ! of names for scalar observations in obs_kind_names()
 ! i.e. if there is a RADIOSONDE_U_WIND_COMPONENT and
-!                  a RADIOSONDE_V_WIND_COMPONENT, there must be 
-!  
+!                  a RADIOSONDE_V_WIND_COMPONENT, there must be
+!
 !                  a RADIOSONDE_HORIZONTAL_WIND
 ! Replace calls to 'get_obs_kind_name' with variable 'my_obs_kind_names'
 !----------------------------------------------------------------------
@@ -984,7 +1011,7 @@
 nwinds = 0
 
 ! Copy all the known obs kinds to a local list that is SURELY too BIG
-! as we find wind pairs, we insert the new name at the end of the known 
+! as we find wind pairs, we insert the new name at the end of the known
 ! names.
 
 do ivar = 1,max_obs_kinds
@@ -1051,7 +1078,7 @@
 if ( DEBUG ) write(*,*)'There are ',nwinds,' pairs of winds.'
 
 ! Now that we know how many wind pairs there are, we return the
-! exact number and new array of observation kind names  
+! exact number and new array of observation kind names
 
 add_wind_names = max_obs_kinds + nwinds
 
@@ -1079,7 +1106,7 @@
 !
 ! obstype1           The (specific) 'type' of a candidate observation
 ! obstype2           The (specific) 'type' of a candidate observation
-! obskey             The observation number (from the obs sequence file - 
+! obskey             The observation number (from the obs sequence file -
 !                    used for error messages only)
 ! all_obs_typenames  The 'extended' list of observation types - declared
 !                    by grok_observation_names()
@@ -1132,7 +1159,7 @@
    return
 endif
 
-! Focus on getting the platform name 
+! Focus on getting the platform name
 ! There are only two viable wind component strings (see obs_def_mod.f90):
 ! '_?_WIND_COMPONENT' and '_?_10_METER_WIND'
 
@@ -1158,7 +1185,7 @@
 
 ! So now we have the platform name for one of the observations
 ! and that (1:indx1) defines the platform name in a matching scenario.
-! str1(1:indx1) and str2(1:indx1) should be the wind name - 
+! str1(1:indx1) and str2(1:indx1) should be the wind name -
 ! 'RADIOSONDE_' or 'SHIP_' or 'AIREP_' or ...
 
 if ( str1(1:indx1) /= str2(1:indx1) ) then
@@ -1182,7 +1209,7 @@
    endif
 enddo MyKind
 
-! If we have checked all the types and not found a match ... 
+! If we have checked all the types and not found a match ...
 
 if (.not. do_obs_form_pair ) then
    write(     *     ,*) trim(str1),' ',trim(str2)


More information about the Dart-dev mailing list