[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