[Dart-dev] DART/branches Revision: 11481

dart at ucar.edu dart at ucar.edu
Thu Apr 13 15:46:04 MDT 2017


hendric at ucar.edu
2017-04-13 15:46:02 -0600 (Thu, 13 Apr 2017)
194
perfect model obs now writes out a true_state.nc which contains all of the 
state for each model advance and a perfect_output.nc file which contains
a single time stamp for the last time step.




Modified: DART/branches/rma_output_files/assimilation_code/programs/perfect_model_obs/perfect_model_obs.f90
===================================================================
--- DART/branches/rma_output_files/assimilation_code/programs/perfect_model_obs/perfect_model_obs.f90	2017-04-13 21:44:14 UTC (rev 11480)
+++ DART/branches/rma_output_files/assimilation_code/programs/perfect_model_obs/perfect_model_obs.f90	2017-04-13 21:46:02 UTC (rev 11481)
@@ -51,10 +51,12 @@
                                   set_io_copy_flag, check_file_info_variable_shape, &
                                   READ_COPY, WRITE_COPY
                                   
+use single_file_io_mod,    only : finalize_singlefile_output
 
 use quality_control_mod,   only : set_input_qc, initialize_qc
 
 use ensemble_manager_mod,  only : set_num_extra_copies ! should this be through ensemble_manager?
+
 use distributed_state_mod, only : create_state_window, free_state_window
 
 use forward_operator_mod, only : get_expected_obs_distrib_state
@@ -172,6 +174,7 @@
 
 type(file_info_type) :: file_info_input
 type(file_info_type) :: file_info_output
+type(file_info_type) :: file_info_true
 
 character(len=256), allocatable :: input_filelist(:), output_filelist(:)
 integer :: nfilesin, nfilesout
@@ -278,6 +281,11 @@
 call set_file_metadata(file_info_input,  1, input_filelist, 'perfect_input', 'pmo initial condition')
 call set_io_copy_flag( file_info_input,  1, READ_COPY) 
 
+! True State
+call io_filenames_init(file_info_true, 1, cycling=has_cycling, single_file=single_file_out)
+call set_file_metadata(file_info_true, 1, (/'true_state.nc'/), 'true_state', 'true state')
+call set_io_copy_flag( file_info_true, 1, 1, WRITE_COPY, num_output_ens=1)
+
 ! Perfect Restart
 call io_filenames_init(file_info_output, 1, cycling=has_cycling, single_file=single_file_out)
 call set_file_metadata(file_info_output, 1, output_filelist, 'perfect_restart', 'pmo restart')
@@ -410,7 +418,7 @@
       call all_copies_to_all_vars(ens_handle)
 
       if (ens_handle%my_pe == 0) call advance_state(ens_handle, 1, next_ens_time, async, &
-                    adv_ens_command, tasks_per_model_advance, file_info_output, file_info_input)
+                    adv_ens_command, tasks_per_model_advance, file_info_true, file_info_input)
 
       call all_vars_to_all_copies(ens_handle)
 
@@ -454,11 +462,11 @@
    if((output_interval > 0) .and. &
       (time_step_number / output_interval * output_interval == time_step_number)) then
 
-      call trace_message('Before updating output file')
+      call trace_message('Before updating true state')
       if(write_output_state_to_file) then
-         call write_state(ens_handle, file_info_output)
+         call write_state(ens_handle, file_info_true)
       endif
-      call trace_message('After  updating output file')
+      call trace_message('After  updating true state')
 
    endif
 
@@ -569,7 +577,6 @@
 
 end do AdvanceTime
 
-
 ! if logging errors, close unit
 if(output_forward_op_errors) call close_file(forward_unit)
 
@@ -585,10 +592,13 @@
 ! Output a restart file if requested
 call trace_message('Before writing state restart file if requested')
 if(write_output_state_to_file) then
+   call write_state(ens_handle, file_info_true)
    call write_state(ens_handle, file_info_output)
+   call finalize_singlefile_output(file_info_true)
+   call finalize_singlefile_output(file_info_output)
 endif
+
 call trace_message('After  writing state restart file if requested')
-
 call trace_message('Before ensemble and obs memory cleanup')
 
 !  Release storage for ensemble


More information about the Dart-dev mailing list