[Dart-dev] DART/branches Revision: 12179
dart at ucar.edu
dart at ucar.edu
Tue Dec 5 12:59:37 MST 2017
nancy at ucar.edu
2017-12-05 12:59:35 -0700 (Tue, 05 Dec 2017)
369
drew some pictures and convinced myself that the test
for obs above a given level is to test the bottom level
numbers and reject the obs if the bottom level is smaller
than the limit (since the model top is level 1).
my strategy with this model is to figure out what i think
i should do and then invert the sense of the tests. seems
to work pretty well so far. :)
Modified: DART/branches/recam/models/cam-fv/model_mod.f90
===================================================================
--- DART/branches/recam/models/cam-fv/model_mod.f90 2017-12-05 18:35:00 UTC (rev 12178)
+++ DART/branches/recam/models/cam-fv/model_mod.f90 2017-12-05 19:59:35 UTC (rev 12179)
@@ -759,14 +759,24 @@
!>member has failed? pro: save work con: don't get forward operator
!>values for members that could compute them
!>(this is true for all the subsequent returns from this routine)
+
if (any(status_array /= 0)) then
istatus(:) = 4 ! cannot locate enclosing vertical levels !>@todo FIXME use where statements?
return
endif
- if (any(highest_obs_limit_in_state < four_top_levs(icorner,:)) &&
- highest_obs_limit_in_state > 0) then
- istatus(:) = 14
+ ! if we are avoiding assimilating obs above a given level, test here and return
+ ! if any of the bottom corners are above the limit (meaning the obs is at least
+ ! in the layer above the given cutoff.)
+ !
+ ! level 1 is top, so test that the level numbers are *smaller* than the limit.
+ ! (meaning the obs is above the given limit in at least one ensemble member)
+
+ if (highest_obs_limit_in_state > 0) then
+ if (any(four_bot_levs(icorner,:) <= highest_obs_limit_in_state)) then
+ istatus(:) = 14
+ return
+ endif
endif
enddo
More information about the Dart-dev
mailing list