GPS Observations

DART project logo

Jump to DART Documentation Main Index
version information for this file:
$Id: gps.html 6382 2013-08-07 20:45:16Z nancy $



GPS Radio Occultation data are being returned from a series of satellites as part of the COSMIC project. The programs in this directory extract the data from the distribution files and put them into DART observation sequence (obs_seq) file format.

The COSMIC satellites measure the phase delay caused by deviation of the straight-line path of the GPS satellite signal as it passes through the Earth's atmosphere when the GPS and COSMIC satellites rise and set relative to each other. This deviation results from changes in the angle of refraction of light as it passes through regions of varying density of atmosphere. These changes are a result of variations in the temperature, pressure, and moisture content. Vertical profiles of temperature and moisture can be derived as the signal passes through more and more atmosphere until it is obscured by the earth's horizon. There are thousands of observations each day distributed around the globe, including in areas which previously were poorly observed.



Data from COSMIC is available by signing up on the data access web page. It is delivered in netCDF file format. The files we use as input to these conversion programs are the Level 2 data, Atmospheric Profiles (filenames include the string 'atmPrf').

Currently each vertical profile is stored in a separate file, and there are between 1000-3000 profiles/day, so converting a day's worth of observations involves downloading many individual files. There are plans in place by the data providers to bundle these profiles together in a tar file to make it simpler to download the raw data.

The scripts in the shell_scripts directory now by default try to download profiles from any of the available satellites that return GPS RO data to the CDAAC web site. See the do_convert.csh script for a list of what satellites are checked by default.



The data are distributed in netCDF file format. DART requires all observations to be in a proprietary format often called DART "obs_seq" format. The files in this directory (a combination of C shell scripts and a Fortran source executable) do this data conversion.

The shell_scripts directory contains several example scripts, including one which downloads the raw data files a day at a time (download_script.csh), and one which executes the conversion program (convert_script.csh). These scripts make 6 hour files by default, but have options for other times. Each profile is stored in a separate netcdf file and there are usually between 1000-3000 files/day, so the download process can be lengthy. You probably want to download as a separate preprocess step and do not use the script options to automatically delete the input files. Keep the files around until you are sure you are satisified with the output files and then delete them by hand.

The conversion executable convert_cosmic_gps_cdf, reads the namelist &convert_cosmic_gps_nml from the file input.nml.

The namelist lets you select from one of two different forward operators. The 'local' forward operator computes the expected observation value at a single point: the requested height at the tangent point of the ray between satellites. The 'non-local' operator computes values along the ray-path and does an integration to get the expected value. The length of the integration segments and height at which to end the integration are given in the namelist. In some experiments the difference between the two types of operators was negligible. This choice is made at the time of the conversion, and the type of operator is stored in the observation, so at runtime the corresponding forward operator will be used to compute the expected observation value.

The namelist also lets you specify at what heights you want observations to be extracted. The raw data is very dense in the vertical; using all values would not results in a set of independent observations. The current source code no longer does an intermediate interpolation; the original profiles appear to be smooth enough that this is not needed. The requested vertical output heights are interpolated directly from the full profile.



This namelist is read from the file input.nml. Namelists start with an ampersand '&' and terminate with a slash '/'. Character strings that contain a '/' must be enclosed in quotes to prevent them from prematurely terminating the namelist.

  obs_levels             = -1.0
  local_operator         = .true.
  ray_ds                 = 5000.0
  ray_htop               = 15000.0
  gpsro_netcdf_file      = ''
  gpsro_netcdf_filelist  = 'cosmic_gps_input_list'
  gpsro_out_file         = 'obs_seq.gpsro'

Item Type Description
obs_levels integer(200) A series of heights, in kilometers, where observations from this profile should be interpolated. (Note that the other distances and heights in the namelist are specified in meters.) The values should be listed in increasing height order.
local_operator logical If .true. compute the observation using a method which assumes all effects occur at the tangent point. If .false. integrate along the tangent line and do ray-path reconstruction.
ray_ds real(r8) For the non-local operator only, the delta stepsize, in meters, to use for the along-path integration in each direction out from the tangent point.
ray_htop real(r8) For the non-local operator only, stop the integration when one of the endpoints of the next integration step goes above this height. Specify in meters.
gpsro_netcdf_file character(len=128) The input filename when converting a single profile. Only one of the file or filelist items can have a valid value, so to use the single filename set the list name 'gpsro_netcdf_filelist' to the empty string (' ').
gpsro_netcdf_filelist character(len=128) To convert a series of profiles in a single execution create a text file which contains each input file, in ascii, one filename per line. Set this item to the name of that file, and set 'gpsro_netcdf_file' to the empty string (' ').
gpsro_out_file character(len=128) The output file to be created. To be compatible with earlier versions of this program, if this file already exists it will be read in and the new data will be appended to that file.





Some COSMIC files seem to have internal times which differ from the times encoded in the filenames by as much as 2-3 minutes. If it is important to get all the observations within a particular time window files with filenames from a few minutes before and after the window should be converted. Times really outside the window can be excluded in a separate step using the obs_sequence_tool.



The current code bins the data into 200 vertical bins as a first step, and then reinterpolates again onto the requested vertical heights. The original intent was to smooth out any noise in the dense profiles before interpolating onto the final heights, but plots have shown that the original data is smooth and can be used directly. There are plans to remove the intermediate binning step.


Terms of Use

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

Contact: nancy collins
Revision: $Revision: 6382 $
Source: $URL: $
Change Date: $Date: 2013-08-07 14:45:16 -0600 (Wed, 07 Aug 2013) $
Change history:  try "svn log" or "svn diff"