[Dart-dev] DART/branches Revision: 11480

dart at ucar.edu dart at ucar.edu
Thu Apr 13 15:44:15 MDT 2017


nancy at ucar.edu
2017-04-13 15:44:14 -0600 (Thu, 13 Apr 2017)
80
from soyoung ha; convert gps-ro obs from a bufr format
file instead of netcdf.




Added: DART/branches/rma_trunk/observations/obs_converters/gps/convert_gpsro_bufr.f90
===================================================================
--- DART/branches/rma_trunk/observations/obs_converters/gps/convert_gpsro_bufr.f90	                        (rev 0)
+++ DART/branches/rma_trunk/observations/obs_converters/gps/convert_gpsro_bufr.f90	2017-04-13 21:44:14 UTC (rev 11480)
@@ -0,0 +1,731 @@
+! 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_gpsro_bufr
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+!   convert_gpsro_bufr - program that reads a COSMIC GPS observation 
+!                        in BUFR format and writes the data to a DART 
+!                        observation sequence file. 
+!
+!   For platforms with little-endian binary file format (e.g. Intel, AMD®, and
+!   non-MIPS SGI processors), you may need to first run the byte-swapping program
+!   DART/observations/NCEP/prep_bufr/exe/grabbufr.x over the bufr file 
+!   before running this program. For the info, check
+!   DART/observations/NCEP/prep_bufr/prep_bufr.html. 
+!
+!   created August 2015 Soyoung Ha, NCAR/MMM
+!
+!   Tested with gdas.gpsro.2012060100 for local operator only.
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+use          types_mod, only : r8
+use   time_manager_mod, only : time_type, set_calendar_type, GREGORIAN, set_time,&
+                               increment_time, get_time, set_date, operator(-),  &
+                               operator(>=), operator(<), operator(>), operator(<=), &
+                               print_date, decrement_time
+use      utilities_mod, only : initialize_utilities, find_namelist_in_file,    &
+                               check_namelist_read, nmlfileunit, do_nml_file,   &
+                               get_next_filename, error_handler, E_ERR, E_MSG, &
+                               nc_check, find_textfile_dims, do_nml_term
+use       location_mod, only : VERTISHEIGHT, set_location
+use   obs_sequence_mod, only : obs_sequence_type, obs_type, read_obs_seq,       &
+                               static_init_obs_sequence, init_obs, destroy_obs, &
+                               write_obs_seq, init_obs_sequence, get_num_obs,   &
+                               insert_obs_in_seq, destroy_obs_sequence,         &
+                               set_copy_meta_data, set_qc_meta_data, set_qc,    & 
+                               set_obs_values, set_obs_def
+use   obs_def_mod,      only : obs_def_type, set_obs_def_time, set_obs_def_kind, &
+                               set_obs_def_error_variance, set_obs_def_location, &
+                               set_obs_def_key
+use    obs_def_gps_mod, only : set_gpsro_ref
+use       obs_kind_mod, only : GPSRO_REFRACTIVITY
+use  obs_utilities_mod, only : add_obs_to_seq
+
+
+implicit none
+
+! version controlled file description for error handling, do not edit
+character(len=256), parameter :: source   = &
+   "$URL$"
+character(len=32 ), parameter :: revision = "$Revision$"
+character(len=128), parameter :: revdate  = "$Date$"
+
+
+integer, parameter ::   num_copies = 1,   &   ! number of copies in sequence
+                        num_qc     = 1        ! number of QC entries
+
+character (len=129) :: msgstring, next_infile
+character (len=80)  :: name
+character (len=6)   :: subset
+integer :: nlevels, nfiles, num_new_obs, oday, osec, &
+           iyear, imonth, iday, ihour, imin, isec, obs_num, &
+           io, iunit, filenum, dummy
+logical :: file_exist, first_obs, did_obs, from_list = .false.
+real(r8) :: oerr, qc, nx, ny, nz, &
+            rfict, obsval, obs_val(1), qc_val(1)
+
+!real(r8), allocatable :: lat(:), lon(:), hght(:), refr(:), azim(:), & 
+!                         hghtp(:), refrp(:)
+
+type(obs_def_type)      :: obs_def
+type(obs_sequence_type) :: obs_seq
+type(obs_type)          :: obs, prev_obs
+type(time_type)         :: obs_time, prev_time
+type(time_type)         :: anal_time, window_min, window_max
+
+integer :: gday, gsec, dsec, bsec, bday, esec, eday, num_excluded_bytime
+logical :: use_bending_angle = .false.      ! Reserve for later.
+!------------------------------------------------------------------------
+! Array for bufr data
+!------------------------------------------------------------------------
+ character(len=80)  hdr1a
+ character(len=10)  nemo
+ character(len=8)   subsetb
+ character(len=1)   cflg
+ character(len=7)   obstype
+ character(len=120) crecord
+
+ integer, parameter:: unit_in=91
+ integer, parameter:: unit_aux=92
+ integer, parameter:: n1ahdr=10


More information about the Dart-dev mailing list