[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