[Dart-dev] DART/branches Revision: 11614

dart at ucar.edu dart at ucar.edu
Tue May 9 09:32:27 MDT 2017


nancy at ucar.edu
2017-05-09 09:32:26 -0600 (Tue, 09 May 2017)
137
keep jon poterjoy's particle filte version in sync with
the original version.  clean up some comments in the
original; no code changes.




Modified: DART/branches/model_mod_changes/assimilation_code/modules/assimilation/assim_tools_mod.f90
===================================================================
--- DART/branches/model_mod_changes/assimilation_code/modules/assimilation/assim_tools_mod.f90	2017-05-08 22:37:17 UTC (rev 11613)
+++ DART/branches/model_mod_changes/assimilation_code/modules/assimilation/assim_tools_mod.f90	2017-05-09 15:32:26 UTC (rev 11614)
@@ -745,8 +745,8 @@
       !>  this obs was already converted
       !if (is_doing_vertical_conversion) then
       !   ! use converted vertical coordinate from owner
-     !    call set_vertical(base_obs_loc, query_location(my_obs_loc(owners_index), 'VLOC'), &
-     !                                    int(query_location(my_obs_loc(owners_index), 'WHICH_VERT')))
+      !   call set_vertical(base_obs_loc, query_location(my_obs_loc(owners_index), 'VLOC'), &
+      !                                   int(query_location(my_obs_loc(owners_index), 'WHICH_VERT')))
       !endif
 
    ! Next block is done by processes that do NOT own this observation
@@ -2835,13 +2835,8 @@
    my_obs_loc(i)  = get_obs_def_location(obs_def)
    my_obs_type(i) = get_obs_def_type_of_obs(obs_def)
    if (my_obs_type(i) > 0) then
-         my_obs_kind(i) = get_quantity_for_type_of_obs(my_obs_type(i))
+      my_obs_kind(i) = get_quantity_for_type_of_obs(my_obs_type(i))
    else
-      !call get_state_meta_data(win, -1 * my_obs_type(i), dummyloc, my_obs_kind(i))    ! identity obs
-      ! This is just to get the kind.  WRF needs state_ensemble_handle because it converts the state
-      ! element to the required vertical coordinate.  Should this be allowed anyway?
-      ! With dummy loc you are going to end up converting the vertical twice for identity obs. FIXME use
-      ! actual ob location so you can store the converted vertical?
       call get_state_meta_data(-1 * int(my_obs_type(i),i8), dummyloc, my_obs_kind(i))
    endif
 end do Get_Obs_Locations

Modified: DART/branches/model_mod_changes/assimilation_code/modules/assimilation/assim_tools_mod.pf.f90
===================================================================
--- DART/branches/model_mod_changes/assimilation_code/modules/assimilation/assim_tools_mod.pf.f90	2017-05-08 22:37:17 UTC (rev 11613)
+++ DART/branches/model_mod_changes/assimilation_code/modules/assimilation/assim_tools_mod.pf.f90	2017-05-09 15:32:26 UTC (rev 11614)
@@ -38,10 +38,12 @@
 use sampling_error_correction_mod, only : get_sampling_error_table_size, &
                                           read_sampling_error_correction
 
-use         location_mod, only : location_type, get_close_type, get_close_obs_destroy,    &
+use         location_mod, only : location_type, get_close_type, query_location,           &
                                  operator(==), set_location_missing, write_location,      &
-                                 LocationDims, vert_is_surface, has_vertical_localization,&
-                                 get_vert, set_vert, set_which_vert
+                                 LocationDims, is_vertical, vertical_localization_on,     &
+                                 set_vertical, has_vertical_choice, get_close_init,       &
+                                 get_vertical_localization_coord, get_close_destroy,      &
+                                 set_vertical_localization_coord
 
 use ensemble_manager_mod, only : ensemble_type, get_my_num_vars, get_my_vars,             & 
                                  compute_copy_mean_var, get_var_owner_index,              &
@@ -59,14 +61,10 @@
 
 use time_manager_mod,     only : time_type, get_time
 
-use assim_model_mod,      only : get_state_meta_data, get_close_maxdist_init,             &
-                                 get_close_obs_init, get_close_state_init,                &
-                                 get_close_obs, get_close_state,                          &
-                                 query_vert_localization_coord, vert_convert
+use assim_model_mod,      only : get_state_meta_data,                                     &
+                                 get_close_obs,         get_close_state,                  &
+                                 convert_vertical_obs,  convert_vertical_state
 
-!>@todo FIXME would like to separate vert_convert into these:
-!                                 convert_vert_obs, convert_vert_state
-
 use distributed_state_mod, only : create_mean_window, free_mean_window
 
 use quality_control_mod, only : good_dart_qc, DARTQC_FAILED_VERT_CONVERT
@@ -96,6 +94,10 @@
 logical                :: close_obs_caching = .true.
 real(r8), parameter    :: small = epsilon(1.0_r8)   ! threshold for avoiding NaNs/Inf
 
+! true if we have multiple vert choices and we're doing vertical localization
+! (make it a local variable so we don't keep making subroutine calls)
+logical                :: is_doing_vertical_conversion = .false.
+
 character(len = 255)   :: msgstring, msgstring2, msgstring3
 
 ! Need to read in table for off-line based sampling correction and store it
@@ -158,7 +160,10 @@
 ! Some models are allowed to have MISSING_R8 values in the DART state vector.
 ! If they are encountered, it is not necessarily a FATAL error.
 ! Most of the time, if a MISSING_R8 is encountered, DART should die.
-! CLM and POP (more?) should have allow_missing_in_clm = .true.
+! CLM should have allow_missing_in_clm = .true.
+! maybe POP - but in POP the missing values are land and all ensemble members
+! have the same missing values.  CLM is different in that only some ensemble members may
+! have missing values and so we have a deficient ensemble size at those state locations.
 logical  :: allow_missing_in_clm = .false.
 
 ! False by default; if true, expect to read in an ascii table
@@ -169,6 +174,24 @@
 character(len=256) :: obs_impact_filename = ''
 logical            :: allow_any_impact_values = .false.
 
+! These next two only affect models with multiple options
+! for vertical localization:
+!
+! "convert_state" is false by default; it depends on the model
+! what is faster - do the entire state up front and possibly


More information about the Dart-dev mailing list