[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