[Dart-dev] DART/branches Revision: 11979

dart at ucar.edu dart at ucar.edu
Fri Oct 13 09:44:58 MDT 2017


thoar at ucar.edu
2017-10-13 09:44:57 -0600 (Fri, 13 Oct 2017)
159
Believe this converter to be working.  It reads streamflow data in a format
that is used by the wrfHydro people in RAL (James McCreight, Arezoo RafieeiNasab)




Added: DART/branches/wrfHydro/observations/USGS/convert_streamflow.f90
===================================================================
--- DART/branches/wrfHydro/observations/USGS/convert_streamflow.f90	                        (rev 0)
+++ DART/branches/wrfHydro/observations/USGS/convert_streamflow.f90	2017-10-13 15:44:57 UTC (rev 11979)
@@ -0,0 +1,398 @@
+! DART software - Copyright 2004 - 2013 UCAR. This open source software is
+! provided by UCAR, "as is", without charge, subject to all terms of use at
+! http://www.image.ucar.edu/DAReS/DART/DART_download
+!
+! $Id$
+
+program convert_streamflow
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! convert_streamflow - reads streamflow data and writes a DART 
+!                      obs_seq file using the DART library routines.
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+use         types_mod, only : r8, missing_r8
+
+use      location_mod, only : VERTISHEIGHT
+
+use     utilities_mod, only : nc_check, initialize_utilities, finalize_utilities, &
+                              nmlfileunit, do_nml_file, do_nml_term, &
+                              find_namelist_in_file, check_namelist_read, &
+                              error_handler, E_ERR, E_MSG
+
+use  time_manager_mod, only : time_type, set_calendar_type, set_date, operator(>=), &
+                              increment_time, get_time, operator(-), GREGORIAN
+
+use  obs_sequence_mod, only : obs_sequence_type, obs_type, read_obs_seq, &
+                              static_init_obs_sequence, init_obs, write_obs_seq, &
+                              init_obs_sequence, get_num_obs, &
+                              set_copy_meta_data, set_qc_meta_data
+
+use      obs_kind_mod, only : STREAM_FLOW
+
+use obs_utilities_mod, only : getvar_real, getvar_int, get_or_fill_QC, add_obs_to_seq, &
+                              create_3d_obs, getvar_int, getdimlen, set_missing_name
+
+use netcdf
+
+implicit none
+
+! version controlled file description for error handling, do not edit
+character(len=*), parameter :: source   = &
+   "$URL$"
+character(len=*), parameter :: revision = "$Revision$"
+character(len=*), parameter :: revdate  = "$Date$"
+character(len=*), parameter :: routine  = 'convert_streamflow:'
+
+character(len=512) :: string1, string2 ! strings for messages
+
+! input file has data quality control fields, whether to use or ignore them.
+
+integer, parameter :: NUM_COPIES = 1     ! number of copies in sequence
+integer, parameter :: NUM_QC     = 1     ! number of QC entries
+
+integer :: nobs, n, i, nlinks, iunit, io, indx
+integer :: ncid_d, ncid_l, varid
+logical :: file_exist, first_obs
+
+type(obs_sequence_type) :: obs_seq
+type(obs_type)          :: prev_obs
+type(time_type)         :: time_obs, prev_time
+
+! These should/must match what is in the netCDF files ... should error check
+! or at least provide a decent error message.
+
+integer, parameter :: IDLength = 15
+integer, parameter :: stationIdStrLen = 15
+integer, parameter :: timeStrLen = 19
+
+character(len=timeStrLen),      allocatable ::    time_string(:)
+character(len=stationIdStrLen), allocatable :: station_string(:)
+character(len=IDLength),        allocatable ::    gage_string(:)
+integer,                        allocatable :: discharge_quality(:)
+
+! variables needed for create_3d_obs 
+
+real(r8), allocatable :: lat(:)
+real(r8), allocatable :: lon(:)
+real(r8), allocatable :: altitude(:)
+real(r8), allocatable :: discharge(:)
+real(r8)              :: oerr, qc
+integer               :: oday, osec
+type(obs_type)        :: obs
+
+! namelist variables
+
+character(len=256) :: input_file    = 'input.nc'
+character(len=256) :: location_file = 'location.nc'
+character(len=256) :: output_file   = 'obs_seq.out'
+real(r8)           :: obs_err_var_fraction = 0.01
+integer            :: verbose = 0
+
+namelist / convert_streamflow_nml / input_file, output_file, location_file, &
+                                    obs_err_var_fraction, verbose
+


More information about the Dart-dev mailing list