[Dart-dev] DART/branches Revision: 12178

dart at ucar.edu dart at ucar.edu
Tue Dec 5 11:35:04 MST 2017


hendric at ucar.edu
2017-12-05 11:35:00 -0700 (Tue, 05 Dec 2017)
50
adding highest obs limit as a namelist variable.




Modified: DART/branches/recam/models/cam-fv/model_mod.f90
===================================================================
--- DART/branches/recam/models/cam-fv/model_mod.f90	2017-12-05 18:16:41 UTC (rev 12177)
+++ DART/branches/recam/models/cam-fv/model_mod.f90	2017-12-05 18:35:00 UTC (rev 12178)
@@ -110,6 +110,7 @@
 logical            :: use_damping_ramp_at_model_top   = .false.  
 integer            :: debug_level                     = 0
 logical            :: suppress_grid_info_in_output    = .false.
+integer            :: highest_obs_limit_in_state      = -1
 logical            :: custom_routine_to_generate_ensemble = .false.
 character(len=32)  :: fields_to_perturb(MAX_PERT)     = "QTY_TEMPERATURE"
 real(r8)           :: perturbation_amplitude(MAX_PERT)= 0.00001_r8
@@ -139,12 +140,12 @@
    no_assim_above_this_model_level, &
    use_damping_ramp_at_model_top,   &
    suppress_grid_info_in_output,    &
+   highest_obs_limit_in_state,      &
    custom_routine_to_generate_ensemble, &
    fields_to_perturb,               &
    perturbation_amplitude,          &
    debug_level
 
-
 ! global variables
 character(len=512) :: string1, string2
 logical, save      :: module_initialized = .false.
@@ -623,6 +624,7 @@
 !> istatus = 11   cannot get vertical levels for an obs on height levels
 !> istatus = 12   cannot get values from obs quantity
 !> istatus = 13   can not interpolate values of this quantity
+!> istatus = 14   can not interpolate values above a given level
 !> istatus = X
 !> istatus = 99   unknown error - shouldn't happen
 !>
@@ -638,19 +640,17 @@
 
 character(len=*), parameter :: routine = 'model_interpolate:'
 
-integer  :: varid
+integer  :: varid, icorner, numdims, which_vert, status1
 integer  :: lon_bot, lat_bot, lon_top, lat_top
+integer  :: four_lons(4), four_lats(4)
+integer  :: level_one_array(ens_size), status_array(ens_size)
+integer  :: four_bot_levs(4, ens_size), four_top_levs(4, ens_size)
 real(r8) :: lon_fract, lat_fract
-real(r8) :: lon_lat_vert(3), botvals(ens_size), topvals(ens_size)
-integer  :: level_one_array(ens_size)
-integer  :: which_vert, status1, status_array(ens_size)
+real(r8) :: lon_lat_vert(3)
+real(r8) :: botvals(ens_size), topvals(ens_size)
+real(r8) :: two_horiz_fracts(2)
+real(r8) :: four_vert_fracts(4, ens_size), quad_vals(4, ens_size)
 type(quad_interp_handle) :: interp_handle
-integer  :: icorner, numdims
-integer  :: four_lons(4), four_lats(4)
-real(r8) :: two_horiz_fracts(2)
-integer  :: four_bot_levs(4, ens_size), four_top_levs(4, ens_size)
-real(r8) :: four_vert_fracts(4, ens_size)
-real(r8) :: quad_vals(4, ens_size)
 
 if ( .not. module_initialized ) call static_init_model
 
@@ -754,6 +754,7 @@
                                 four_bot_levs(icorner, :), four_top_levs(icorner, :), &
                                 four_vert_fracts(icorner, :), status_array)
       
+
       !>@todo FIXME should we let the process continue if at least one
       !>member has failed?  pro: save work  con: don't get forward operator
       !>values for members that could compute them
@@ -762,6 +763,11 @@
          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
+      endif
    enddo
    
    if (varid > 0) then
@@ -2191,6 +2197,8 @@
 !>@todo FIXME this should be an array_dump() routine
 !> in a utilities routine somewhere. 
 if (debug_level > 10) then
+   !call array_dump2(varname, grid_array%vals(:,:), nper_linei, nsize)
+   !subroutine
    per_line = 5
    print*, 'variable name ', trim(varname)
    do i=1, grid_array%nsize, per_line

Modified: DART/branches/recam/models/cam-fv/work/input.nml
===================================================================
--- DART/branches/recam/models/cam-fv/work/input.nml	2017-12-05 18:16:41 UTC (rev 12177)
+++ DART/branches/recam/models/cam-fv/work/input.nml	2017-12-05 18:35:00 UTC (rev 12178)
@@ -115,7 +115,7 @@
    init_time_days             = -1,
    init_time_seconds          = -1,
 
-   write_output_state_to_file = .true.,


More information about the Dart-dev mailing list