[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