[Dart-dev] DART/branches Revision: 12760
dart at ucar.edu
dart at ucar.edu
Mon Aug 6 07:52:28 MDT 2018
nancy at ucar.edu
2018-08-06 07:52:27 -0600 (Mon, 06 Aug 2018)
109
fix for performance bottleneck when running with
a distributed mean and doing vertical location conversion.
Modified: DART/branches/recam/assimilation_code/modules/assimilation/assim_tools_mod.f90
===================================================================
--- DART/branches/recam/assimilation_code/modules/assimilation/assim_tools_mod.f90 2018-08-06 13:47:10 UTC (rev 12759)
+++ DART/branches/recam/assimilation_code/modules/assimilation/assim_tools_mod.f90 2018-08-06 13:52:27 UTC (rev 12760)
@@ -635,8 +635,8 @@
! vertical up above, then we need to broadcast the new values to all the other
! tasks so they're computing the right distances when applying the increments.
if (is_doing_vertical_conversion) then
- vertvalue_obs_in_localization_coord = query_location(base_obs_loc, "VLOC")
- whichvert_obs_in_localization_coord = query_location(base_obs_loc, "WHICH_VERT")
+ vertvalue_obs_in_localization_coord = query_location(my_obs_loc(owners_index), "VLOC")
+ whichvert_obs_in_localization_coord = query_location(my_obs_loc(owners_index), "WHICH_VERT")
else
vertvalue_obs_in_localization_coord = 0.0_r8
whichvert_obs_in_localization_coord = 0
@@ -751,10 +751,6 @@
endif
whichvert_obs_in_localization_coord = nint(whichvert_real)
- if (is_doing_vertical_conversion) then
- ! use converted vertical coordinate value and type from owner
- call set_vertical(base_obs_loc, vertvalue_obs_in_localization_coord, whichvert_obs_in_localization_coord)
- endif
endif
!-----------------------------------------------------------------------
@@ -761,6 +757,11 @@
! Everybody is doing this section, cycle if qc is bad
if(nint(obs_qc) /= 0) cycle SEQUENTIAL_OBS
+ if (is_doing_vertical_conversion) then
+ ! use converted vertical coordinate value and type from owner
+ call set_vertical(base_obs_loc, vertvalue_obs_in_localization_coord, whichvert_obs_in_localization_coord)
+ endif
+
! Can compute prior mean and variance of obs for each group just once here
do group = 1, num_groups
grp_bot = grp_beg(group)
More information about the Dart-dev
mailing list