[Dart-dev] DART/branches Revision: 11262

dart at ucar.edu dart at ucar.edu
Thu Mar 9 13:42:16 MST 2017


nancy at ucar.edu
2017-03-09 13:42:15 -0700 (Thu, 09 Mar 2017)
3366
collected updates for many different reasons.  list of
changes are:

adaptive_inflate/adaptive_inflate_mod.f90:
   add rtps inflation
common/types_mod.f90:
   add missing_i8
filter/filter_mod.f90:
filter/filter_mod.dopplerfold.f90:
   add rtps inflation
   re-enable check_file_info_variable_shape() for output file
   add back in perturb capability for single-file input
   bring dopplerfold in sync with plain version
forward_operator/forward_operator_mod.f90:
   fix doxygen, no code changes
io/dart_time_io_mod.f90:
   add support for different calendars to created single-file output
   files we create, add support for reading times with 'days since' or
   'seconds since' a base time in netcdf attrs.
io/direct_netcdf_mod.f90:
   add code, currently disabled, which would update the time
   in an existing output file if it isn't the same as the model_time.
   not sure if this is a good idea - might need to be namelist
   selectable - but was needed for a ROMS run and don't want to
   lose the code.
io/io_filenames_mod.f90:
   fix code using num_dims instead of the correct io_num_dims
   improve some error messages
io/state_space_diag_mod.f90:
   add back in the capability for perturbing a single state
   fix the computation of variable shapes so we can re-enable
   check_file_info_variable_shape(), taking into account the
   possible 'time' and 'member' dimensions
   use the actual dims instead of assuming positions in the array
io/state_structure_mod.f90:
   fix the code that computes variable sizes in the single file case
   (don't include the time or member dimensions)
   remove extra trim() intrinsics when comparing strings; you need
   it for prints or writes, but not for comparisons
   fix one call which needs to include the time and member
   dimensions which wasn't before
io/state_vector_io_mod.f90:
   includes passing down the perturb flag to read_singlefile
models/bgrid_solo/model_mod.f90:
   added an optional 'template_file' namelist item so we can
   get the sizes and shapes of the arrays from that file,
   instead of trying to construct the domain from scratch.
   if not starting from a restart file, leave template_file
   unset and the domain will be constructed as before.
models/bgrid_solo/work/input.nml:
   add template_file to model_nml namelist
models/wrf/distributed_phb_model_mod.f90:
   all_reduce_min_max renamed to broadcast_minmax
mpi_utilities/mpi_utilities_mod.f90:
mpi_utilities/null_mpi_utilities_mod.f90:
   remove obsolete comment block at top; add broadcast_flag
   and broadcast_minmax; deprecate all_reduce_min_max
   convert to doxygen comments and style guide
   add start_mpi_timer/read_mpi_timer to
   wrap mpi_wtime() - corresponding routines
   using the normal clock added to null mpi version
obs_def/obs_def_gps_mod.f90:
obs_def/obs_def_tpw_mod.f90:
obs_def/obs_def_upper_atm_mod.f90:
observations/ROMS/convert_roms_obs.f90:
   fix the format of the doxygen 'todo's so they show
   up on the list
observations/AIRS/work/mkmf_convert_airs_L2:
   add comment that if you're building on yellowstone
   i've got the libraries in my work directory
observations/buildall.csh:
   build the ncep converters first because they are
   needed by at least one other converter
quality_control/quality_control_mod.f90:
   change the doxygen formatting
   change a 'stop' to a call to the error handler




Modified: DART/branches/rma_trunk/common/types_mod.f90
===================================================================
--- DART/branches/rma_trunk/common/types_mod.f90	2017-03-09 20:26:25 UTC (rev 11261)
+++ DART/branches/rma_trunk/common/types_mod.f90	2017-03-09 20:42:15 UTC (rev 11262)
@@ -16,7 +16,7 @@
 
 public :: i2, i4, i8, r4, c4, r8, c8, digits12
 public :: PI, DEG2RAD, RAD2DEG, MISSING_R4, MISSING_R8
-public :: MISSING_I, MISSING_DATA
+public :: MISSING_I, MISSING_I8, MISSING_DATA
 public :: SECPERDAY
 public :: t_kelvin, es_alpha, es_beta, es_gamma, gas_constant_v, gas_constant
 public :: L_over_Rv, ps0, earth_radius, gravity
@@ -74,16 +74,16 @@
 integer, parameter :: i8 = SELECTED_INT_KIND(13)
 
 ! real precision:
+! TO RUN WITH REDUCED PRECISION REALS (and use correspondingly less memory)
+! comment OUT the r8 definition below and use the second one:
 integer, parameter :: r4 = SELECTED_REAL_KIND(6,30)
 integer, parameter :: r8 = SELECTED_REAL_KIND(12)   ! real r8
-! integer, parameter :: r8 = r4                       ! alias r8 to r4
+!integer, parameter :: r8 = r4                      ! alias r8 to r4
 
 ! complex precision:
 integer, parameter :: c4 = SELECTED_REAL_KIND(6,30)
 integer, parameter :: c8 = SELECTED_REAL_KIND(12)
 
-! TO RUN WITH REDUCED PRECISION REALS (and use correspondingly less memory)
-! comment OUT the r8 definition above and use this one:
 
 
 ! 'digits12' is reserved for real variables that MUST retain 64 bits of
@@ -104,10 +104,11 @@
 real(kind=r8), parameter :: DEG2RAD = PI / 180.0_r8
 real(kind=r8), parameter :: RAD2DEG = 180.0_r8 / PI
 
-integer,       parameter ::  MISSING_I    = -888888
-integer,       parameter ::  MISSING_DATA = -88
-real(kind=r4), parameter ::  MISSING_R4   = -888888.0_r4
-real(kind=r8), parameter ::  MISSING_R8   = -888888.0_r8
+integer,          parameter ::  MISSING_I    = -888888
+integer(kind=i8), parameter ::  MISSING_I8   = -888888_I8
+integer,          parameter ::  MISSING_DATA = -88
+real(kind=r4),    parameter ::  MISSING_R4   = -888888.0_r4
+real(kind=r8),    parameter ::  MISSING_R8   = -888888.0_r8
 
 real(r8), parameter :: t_kelvin       = 273.15_r8
 real(r8), parameter :: es_alpha       = 611.2_r8

Modified: DART/branches/rma_trunk/filter/filter_mod.dopplerfold.f90
===================================================================
--- DART/branches/rma_trunk/filter/filter_mod.dopplerfold.f90	2017-03-09 20:26:25 UTC (rev 11261)
+++ DART/branches/rma_trunk/filter/filter_mod.dopplerfold.f90	2017-03-09 20:42:15 UTC (rev 11262)
@@ -50,7 +50,7 @@
                                   do_single_ss_inflate, inflate_ens, adaptive_inflate_init,   &
                                   adaptive_inflate_type, set_inflation_mean_copy ,            &
                                   log_inflation_info, set_inflation_sd_copy,                  &
-                                  get_minmax_task_zero
+                                  get_minmax_task_zero, do_rtps_inflate
 use mpi_utilities_mod,     only : my_task_id, task_sync, broadcast_send, broadcast_recv,      &
                                   task_count
 use smoother_mod,          only : smoother_read_restart, advance_smoother,                    &
@@ -132,6 +132,7 @@
 integer :: POSTASSIM_PRIORINF_SD    = COPY_NOT_PRESENT
 integer :: POSTASSIM_POSTINF_MEAN   = COPY_NOT_PRESENT
 integer :: POSTASSIM_POSTINF_SD     = COPY_NOT_PRESENT
+integer :: SPARE_PRIOR_SPREAD       = COPY_NOT_PRESENT
 
 logical :: do_prior_inflate     = .false.
 logical :: do_posterior_inflate = .false.
@@ -205,7 +206,8 @@
 !                  == './advance_model.csh'    -> advance ensemble using a script
 
 ! Inflation namelist entries follow, first entry for prior, second for posterior
-! inf_flavor is 0:none, 1:obs space, 2: varying state space, 3: fixed state_space
+! inf_flavor is 0:none, 1:obs space, 2: varying state space, 3: fixed state_space,
+! 4 is rtps (relax to prior spread)
 integer              :: inf_flavor(2)                  = 0
 logical              :: inf_initial_from_restart(2)    = .false.
 logical              :: inf_sd_initial_from_restart(2) = .false.
@@ -263,7 +265,7 @@
 
 integer,    allocatable :: keys(:)
 integer(i8)             :: model_size
-integer                 :: j, i, iunit, io, time_step_number, num_obs_in_set
+integer                 :: i, j, iunit, io, time_step_number, num_obs_in_set
 integer                 :: last_key_used, key_bounds(2)
 integer                 :: in_obs_copy, obs_val_index
 integer                 :: prior_obs_mean_index, posterior_obs_mean_index
@@ -322,10 +324,11 @@
 ! See if smoothing is turned on
 ds = do_smoothing()
 
-! Make sure inflation options are legal
+! Make sure inflation options are legal - this should be in the inflation module
+! and not here.  FIXME!
 do i = 1, 2
-   if(inf_flavor(i) < 0 .or. inf_flavor(i) > 3) then
-      write(msgstring, *) 'inf_flavor=', inf_flavor(i), ' Must be 0, 1, 2, 3 '
+   if(inf_flavor(i) < 0 .or. inf_flavor(i) > 4) then


More information about the Dart-dev mailing list