[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