[Dart-dev] DART/branches Revision: 11121

dart at ucar.edu dart at ucar.edu
Fri Feb 17 14:42:53 MST 2017


hendric at ucar.edu
2017-02-17 14:42:53 -0700 (Fri, 17 Feb 2017)
186
adding state variables with no_copy_back to the preassim and
postassim files.  output files created by dart will only contain
variables in the state that the user has chosen to update.




Modified: DART/branches/rma_trunk/filter/filter_mod.f90
===================================================================
--- DART/branches/rma_trunk/filter/filter_mod.f90	2017-02-16 21:18:06 UTC (rev 11120)
+++ DART/branches/rma_trunk/filter/filter_mod.f90	2017-02-17 21:42:53 UTC (rev 11121)
@@ -18,7 +18,7 @@
                                   delete_obs_from_seq, delete_seq_head,                       &
                                   delete_seq_tail, replace_obs_values, replace_qc,            &
                                   destroy_obs_sequence, get_qc_meta_data, add_qc
-                                  
+                                 
 use obs_def_mod,           only : obs_def_type, get_obs_def_error_variance, get_obs_def_time, &
                                   get_obs_kind
 use obs_def_utilities_mod, only : set_debug_fwd_op
@@ -131,7 +131,7 @@
 integer :: POSTASSIM_POSTINF_MEAN   = COPY_NOT_PRESENT
 integer :: POSTASSIM_POSTINF_SD     = COPY_NOT_PRESENT
 
-logical :: do_prior_inflate     = .false. 
+logical :: do_prior_inflate     = .false.
 logical :: do_posterior_inflate = .false.
 
 !----------------------------------------------------------------
@@ -168,10 +168,10 @@
 integer, parameter :: MAXFILES = 200
 !>@todo FIXME - how does this work for multiple domains?  ens1d1, ens2d1, ... ens1d2 or
 !> ens1d1 ens1d2, ens1d1 ens2d2, etc   i like the latter better.
-character(len=256) ::  input_state_files(MAXFILES) = 'null'  
-character(len=256) :: output_state_files(MAXFILES) = 'null'  
+character(len=256) ::  input_state_files(MAXFILES) = 'null' 
+character(len=256) :: output_state_files(MAXFILES) = 'null' 
 ! Name of files containing a list of {input,output} restart files, 1 file per domain
-character(len=256) ::  input_state_file_list(MAX_NUM_DOMS) = 'null'  
+character(len=256) ::  input_state_file_list(MAX_NUM_DOMS) = 'null' 
 character(len=256) :: output_state_file_list(MAX_NUM_DOMS) = 'null'
 ! Read in a single file and perturb this to create an ensemble
 logical            :: perturb_from_single_instance = .false.
@@ -182,9 +182,9 @@
 logical            :: has_cycling                  = .false. ! filter will advance the model
 ! Stages to write.  Valid values include:
 !    input, preassim, postassim, output
-character(len=10)  :: stages_to_write(4) = (/"output    ", "null      ", "null      ", "null      "/) 
+character(len=10)  :: stages_to_write(4) = (/"output    ", "null      ", "null      ", "null      "/)
 
-!>@todo FIXME 
+!>@todo FIXME
 !> for preassim and postassim output it might be we should
 !> be controlling the writing of individual ensemble members
 !> by looking at the num_output_state_member value.  0 means
@@ -243,7 +243,7 @@
 
 !----------------------------------------------------------------
 !> The code does not use %vars arrays except:
-!> * Task 0 still writes the obs_sequence file, so there is a transpose (copies to vars) and 
+!> * Task 0 still writes the obs_sequence file, so there is a transpose (copies to vars) and
 !> sending the obs_fwd_op_ens_handle%vars to task 0. Keys is also size obs%vars.
 !> * If you read dart restarts state_ens_handle%vars is allocated.
 !> * If you write dart diagnostics state_ens_handle%vars is allocated.
@@ -544,8 +544,8 @@
    ! these cases, we must not advance the times on the lags.
 
    ! Figure out how far model needs to move data to make the window
-   ! include the next available observation.  recent change is 
-   ! curr_ens_time in move_ahead() is intent(inout) and doesn't get changed 
+   ! include the next available observation.  recent change is
+   ! curr_ens_time in move_ahead() is intent(inout) and doesn't get changed
    ! even if there are no more obs.
    call trace_message('Before move_ahead checks time of data and next obs')
 
@@ -561,7 +561,7 @@
    ! PAR For now, can only broadcast real arrays
    call filter_sync_keys_time(state_ens_handle, key_bounds, num_obs_in_set, curr_ens_time, next_ens_time)
 
-   if(key_bounds(1) < 0) then 
+   if(key_bounds(1) < 0) then
       call trace_message('No more obs to assimilate, exiting main loop', 'filter:', -1)
       exit AdvanceTime
    endif
@@ -616,7 +616,7 @@
    call print_obs_time(seq, key_bounds(2), 'Time of last  observation in window')
 
    ! Create an ensemble for the observations from this time plus
-   ! obs_error_variance, observed value, key from sequence, global qc, 
+   ! obs_error_variance, observed value, key from sequence, global qc,
    ! then mean for each group, then variance for each group
    call init_ensemble_manager(obs_fwd_op_ens_handle, TOTAL_OBS_COPIES, int(num_obs_in_set,i8), 1, transpose_type_in = 2)
    ! Also need a qc field for copy of each observation
@@ -633,7 +633,7 @@
 
    ! Compute mean and spread for inflation and state diagnostics
    call compute_copy_mean_sd(state_ens_handle, 1, ens_size, ENS_MEAN_COPY, ENS_SD_COPY)
-   
+  
    ! Write out the mean and sd for the input files if requested
    if (get_stage_to_write('input')) then
       if (output_mean) &
@@ -654,7 +654,7 @@
       if (inf_damping(1) /= 1.0_r8) then
          call prepare_to_update_copies(state_ens_handle)
          state_ens_handle%copies(PRIOR_INF_COPY, :) = 1.0_r8 + &
-            inf_damping(1) * (state_ens_handle%copies(PRIOR_INF_COPY, :) - 1.0_r8) 
+            inf_damping(1) * (state_ens_handle%copies(PRIOR_INF_COPY, :) - 1.0_r8)


More information about the Dart-dev mailing list