[Dart-dev] DART/branches Revision: 11609

dart at ucar.edu dart at ucar.edu
Fri May 5 16:10:41 MDT 2017


nancy at ucar.edu
2017-05-05 16:10:40 -0600 (Fri, 05 May 2017)
339
merge in rma_trunk changes, and make wrf reproduce compared
to the previous rma_trunk.  you MUST set:

&assim_tools_nml
   convert_all_state_verticals_first = .true.
   convert_all_obs_verticals_first   = .true.
   lanai_bitwise = .false.

to match the previous rma_trunk tests.
i believe this is ready to merge back onto the
rma_trunk.





Index: DART/branches/model_mod_changes
===================================================================
--- DART/branches/model_mod_changes	2017-05-05 21:51:08 UTC (rev 11608)
+++ DART/branches/model_mod_changes	2017-05-05 22:10:40 UTC (rev 11609)

Property changes on: DART/branches/model_mod_changes
___________________________________________________________________
Modified: svn:mergeinfo
## -29,7 +29,7 ##
 /DART/branches/rma_sprint:8101-8172
 /DART/branches/rma_state_structure_test_dir:9478-9682
 /DART/branches/rma_state_structure_unit_test:9697-10274
-/DART/branches/rma_trunk:11409-11552
+/DART/branches/rma_trunk:11409-11608
 /DART/branches/rma_trunk_clamping:8792-8807
 /DART/branches/rma_trunk_filename:8017-8163
 /DART/branches/rma_trunk_get_state_fun:8574-8602
Modified: DART/branches/model_mod_changes/assimilation_code/location/threed_cartesian/location_mod.f90
===================================================================
--- DART/branches/model_mod_changes/assimilation_code/location/threed_cartesian/location_mod.f90	2017-05-05 21:51:08 UTC (rev 11608)
+++ DART/branches/model_mod_changes/assimilation_code/location/threed_cartesian/location_mod.f90	2017-05-05 22:10:40 UTC (rev 11609)
@@ -840,6 +840,11 @@
 allocate(gc%box%loc_box(num))
 gc%box%loc_box(:) = -1
 
+! Allocate the storage for the grid dependent boxes
+allocate(gc%box%count(nx,ny,nz), gc%box%start(nx,ny,nz))
+gc%box%count  = -1
+gc%box%start  = -1
+
 ! Set the value of num_locs in the structure
 gc%num = num
 
@@ -1281,11 +1286,11 @@
 dist = 1e38_r8                ! something big and positive.
 
 ! the list of locations in the loc() argument must be the same
-! as the list of locations passed into get_close_obs_init(), so
+! as the list of locations passed into get_close_init(), so
 ! gc%num and size(loc) better be the same.   if the list changes,
 ! you have to destroy the old gc and init a new one.
 if (size(loc_list) /= gc%num) then
-   write(errstring,*)'loc() array must match one passed to get_close_obs_init()'
+   write(errstring,*)'loc() array must match one passed to get_close_init()'
    call error_handler(E_ERR, 'find_nearest_boxes', errstring, source, revision, revdate)
 endif
 

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-05 21:51:08 UTC (rev 11608)
+++ DART/branches/model_mod_changes/assimilation_code/modules/assimilation/assim_tools_mod.f90	2017-05-05 22:10:40 UTC (rev 11609)
@@ -94,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
@@ -164,6 +168,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
+! do unneeded work, or do the conversion during the assimilation
+! loop. we think this depends heavily on how much of the state
+! is going to be adjusted by the obs.  for a global model
+! we think false may be better; for a regional model with
+! a lot of obs and full coverage true may be better.
+!
+! "convert_obs" is true by default; in general it seems to
+! be better for each task to convert the obs vertical before
+! going into the loop but again this depends on how many
+! obs per task and whether the mean is distributed or 
+! replicated on each task.
+logical :: convert_all_state_verticals_first = .false.
+logical :: convert_all_obs_verticals_first   = .true.
 
 ! Not in the namelist; this var disables the experimental
 ! linear and spherical case code in the adaptive localization 
@@ -189,8 +211,9 @@
    output_localization_diagnostics, localization_diagnostics_file,         &
    special_localization_obs_types, special_localization_cutoffs,           &
    allow_missing_in_clm, distribute_mean, close_obs_caching,               &
-   adjust_obs_impact, obs_impact_filename,                                 &  
-   allow_any_impact_values, lanai_bitwise ! don't document these last two for now
+   adjust_obs_impact, obs_impact_filename, allow_any_impact_values,        &
+   convert_all_state_verticals_first, convert_all_obs_verticals_first,     &
+   lanai_bitwise ! don't document this one -- only used for regression tests
 
 !============================================================================
 
@@ -288,99 +311,11 @@


More information about the Dart-dev mailing list