[Dart-dev] DART/branches Revision: 12546
dart at ucar.edu
dart at ucar.edu
Thu Apr 19 16:32:21 MDT 2018
hendric at ucar.edu
2018-04-19 16:32:21 -0600 (Thu, 19 Apr 2018)
225
adding new routine to insert variable into a netcdf file that already exists.
this is useful for filling inflation files from a single file and can be
refactored to make some of the direct_netcdf_mod.f90 code more modular.
Modified: DART/branches/rma_fill_inf/assimilation_code/modules/io/direct_netcdf_mod.f90
===================================================================
--- DART/branches/rma_fill_inf/assimilation_code/modules/io/direct_netcdf_mod.f90 2018-04-19 21:21:18 UTC (rev 12545)
+++ DART/branches/rma_fill_inf/assimilation_code/modules/io/direct_netcdf_mod.f90 2018-04-19 22:32:21 UTC (rev 12546)
@@ -1571,8 +1571,6 @@
!> Create the output files
!>
!> A 'blank' domain is one variable called state, with dimension = model size.
-!> It is used when the model has not supplied any netcdf info but
-!> direct_netcdf_write = .true.
!> The file is intentionally left OPEN.
!-------------------------------------------------------------------------------
Modified: DART/branches/rma_fill_inf/assimilation_code/modules/utilities/netcdf_utilities_mod.f90
===================================================================
--- DART/branches/rma_fill_inf/assimilation_code/modules/utilities/netcdf_utilities_mod.f90 2018-04-19 21:21:18 UTC (rev 12545)
+++ DART/branches/rma_fill_inf/assimilation_code/modules/utilities/netcdf_utilities_mod.f90 2018-04-19 22:32:21 UTC (rev 12546)
@@ -917,6 +917,22 @@
!--------------------------------------------------------------------
+function nc_get_dimension_id(ncid, dimname)
+
+integer, intent(in) :: ncid
+character(len=*), intent(in) :: dimname
+logical :: nc_get_dimension_id
+
+character(len=*), parameter :: routine = 'nc_get_dimension_id'
+integer :: ret, dimid
+
+ret = nf90_inq_dimid(ncid, dimname, dimid)
+nc_get_dimension_id = dimid
+
+end function nc_get_dimension_id
+
+!--------------------------------------------------------------------
+
function nc_variable_exists(ncid, varname)
integer, intent(in) :: ncid
Modified: DART/branches/rma_fill_inf/assimilation_code/programs/fill_inflation_restart/fill_inflation_restart.f90
===================================================================
--- DART/branches/rma_fill_inf/assimilation_code/programs/fill_inflation_restart/fill_inflation_restart.f90 2018-04-19 21:21:18 UTC (rev 12545)
+++ DART/branches/rma_fill_inf/assimilation_code/programs/fill_inflation_restart/fill_inflation_restart.f90 2018-04-19 22:32:21 UTC (rev 12546)
@@ -21,12 +21,13 @@
use time_manager_mod, only : time_type, set_time, print_time, print_date, operator(-), &
get_calendar_type, NO_CALENDAR
-use ensemble_manager_mod, only : init_ensemble_manager, ensemble_type
-
+use ensemble_manager_mod, only : init_ensemble_manager, ensemble_type, get_copy, &
+ map_pe_to_task, map_task_to_pe
use state_vector_io_mod, only : state_vector_io_init, read_state, write_state
-use state_structure_mod, only : get_num_domains, get_model_variable_indices, &
- state_structure_info
+use state_structure_mod, only : state_structure_info, get_model_variable_indices, &
+ get_num_domains, get_num_variables, get_io_num_dims, &
+ get_variable_name, get_dim_name, get_dim_length
use io_filenames_mod, only : io_filenames_init, file_info_type, &
stage_metadata_type, get_stage_metadata, &
@@ -34,6 +35,13 @@
set_file_metadata, file_info_dump, &
set_io_copy_flag, READ_COPY, WRITE_COPY
+use direct_netcdf_mod, only : finalize_single_file_io, write_augmented_state
+
+use netcdf_utilities_mod, only : nc_open_file_readwrite, nc_add_attribute_to_variable, &
+ nc_begin_define_mode, nc_end_define_mode, &
+ nc_define_real_variable, nc_define_dimension, &
+ nc_close_file, nc_put_variable, nc_variable_exists
+
use model_mod, only : static_init_model, get_model_size, &
get_state_meta_data, model_interpolate
@@ -199,25 +207,39 @@
do idom = 1, num_domains
! do imem = 1, num_ens
imem = 1
- write(*, *) '- Reading File : ', idom, imem, trim(get_restart_filename(input_restart_files, copy=imem, domain=idom))
+ write(*, *) '- Reading File : ', trim(get_restart_filename(input_restart_files, copy=imem, domain=idom))
! enddo
enddo
call read_state(ens_handle, file_info_input, read_time_from_file, model_time)
-! Test the write portion.
-call io_filenames_init(file_info_output, &
- ncopies = num_ens, &
- cycling = single_file, &
- single_file = single_file, &
- restart_files = file_array_output)
+if(single_file) then
+ call nc_insert_varialble('filter_input.nc', varname='prior_inf_mean', copynum=1)
+ return
+else
-if(write_prior_inf) then
More information about the Dart-dev
mailing list