PROGRAM create_real_obs

Overview

Translating NCEP BUFR files into DART obs_seq.out files (input file to filter) is a 2 stage process. The first stage uses NCEP software to translate the BUFR file into an “intermediate” text file. This is described in PROGRAM prepbufr. The second step is to translate the intermediate files into an obs_seq.out files, which is done by create_real_obs, as described in this document.

This program provides a number of options to select several observation types (radiosonde, aircraft, and satellite data, etc.) and the DART observation variables (U, V, T, Q, Ps) which are specified in its optional namelist interface &ncepobs_nml which may be read from file input.nml.

Instructions

  • Go to DART/observations/obs_converters/NCEP/ascii_to_obs/work

  • Use quickbuild.sh to compile all executable programs in the directory.

  • Make appropriate changes to the &ncep_obs_nml namelist in input.nml, as follows.

  • run create_real_obs.

The selection of any combinations of the specific observation fields (T, Q, U/V, and surface pressure) and types (radiosonde, aircraft reports, or satellite wind, etc.) is made in the namelist &ncepobs_nml. All the available combinations of fields X types (i.e. ADPUPA and obs_U) will be written to the obs_seq file. (You will be able to select which of those to use during an assimilation in another namelist (assimilate_these_obs, in &obs_kind_nml), so be sure to include all the fields and types you might want.) You should change Obsbase to the pathname of the decoded PREPBUFR text data files. Be sure that daily_file is set to .TRUE. to create a single 24 hour file; .FALSE. converts input files one-for-one with output files. The default action is to tag each observation with the exact time it was taken and is the recommended setting. However, if you want to bin the observations in time, for example to do additional post-processing, the time on all observations in the window can be overwritten and set to the nearest synoptic time (e.g. 0Z, 6Z, 12Z, or 18Z), by setting obs_time to false.

Generally you will want to customize the namelist for your own use. For example, here is a sample namelist:

&ncepobs_nml
  year = 2007,
  month = 3,
  day = 1,
  tot_days = 31,
  max_num = 700000,
  ObsBase = '../prep_bufr/work/temp_obs.'
  select_obs  = 1,
  ADPUPA = .true.,
  AIRCAR = .false.,
  AIRCFT = .true.,
  SATEMP = .false.,
  SFCSHP = .false.,
  ADPSFC = .false.,
  SATWND = .true.,
  obs_U  = .true.,
  obs_V  = .true.,
  obs_T  = .true.,
  obs_PS = .false.,
  obs_QV = .false.,
  daily_file = .true.
  obs_time = .true.,
/

&obs_sequence_nml
  write_binary_obs_sequence = .false.
/

This will produce daily observation sequence files for the period of March 2007, which have the selected observation types and fields; T, U, and V from radiosondes (ADPUPA) and aircraft (AIRCFT). No surface pressure or specific humidity would appear in the obs_seq files, nor observations from ACARS, satellites, and surface stations. The output files look like “obs_seq200703dd”, with dd = 1,…,31.

Namelist

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.

&ncepobs_nml
   year       = 2003,
   month      = 1,
   day        = 1,
   tot_days   = 31,
   max_num    = 800000,
   select_obs = 0,
   ObsBase    = 'temp_obs.',
   ADPUPA     = .false.,
   AIRCAR     = .false.,
   AIRCFT     = .false.,
   SATEMP     = .false.,
   SFCSHP     = .false.,
   ADPSFC     = .false.,
   SATWND     = .false.,
   obs_U      = .false.,
   obs_V      = .false.,
   obs_T      = .false.,
   obs_PS     = .false.,
   obs_QV     = .false.,
   daily_file = .true.,
   obs_time   = .true.,
   lon1       =   0.0,
   lon2       = 360.0,
   lat1       = -90.0,
   lat2       =  90.0
/

Item

Type

Description

year, month, day

integer

Beginning year, month, day of the observation period.

tot_days

integer

Total days in the observation period. The converter cannot cross month boundaries.

max_num

integer

Maximum observation number for the current one day files.

select_obs

integer

Controls whether to select a subset of observations from the NCEP BUFR decoded daily ascii files.

  • 0 = All observations are selected.

  • 1 = Select observations using the logical parameters below.

daily_file

logical

Controls timespan of observations in each obs_seq file:

  • true = 24 hour spans (3:01Z to 3:00Z of the next day). Filenames have the form obs_seqYYYYMMDD.

  • false = 6 hour spans (3:01Z to 9:00Z, 9:01Z to 15:00Z, 15:01Z to 21:00Z, and 21:01Z to 3:00Z of the next day. Filenames have the form obs_seqYYYYMMDDHH, where HH is 06, 12, 18, and 24.

ObsBase

character(len=129)

Path that contains the decoded NCEP BUFR daily observation files. To work with the example scripts this should be ‘temp_obs.’, or if it includes a pathname then it should end with a ‘/temp_obs.’

include_specific_humidity, include_relative_humidity, include_dewpoint

logical

Controls which moisture observations are created. The default is to create only specific humidity obs, but any, all, or none can be requested. Set to .TRUE. to output that obs type, .FALSE. skips it.

ADPUPA

logical

Select the NCEP type ADPUPA observations which includes land and ship launched radiosondes and pibals as well as a few profile dropsonde. This involves, at 00Z and 12Z, about 650 - 1000 stations, and at 06Z and 18Z (which are mostly pibals), about 150 - 400 stations.

AIRCFT

logical

Select the NCEP type AIRCFT observations, which includes commercial, some military and reconnaissance reports. They are flight level reports.

AIRCAR

logical

Select the NCEP type AIRCAR observations, which includes data from aircraft takeoff and landings. Sometimes referred to as ACARS obs.

SATEMP

logical

Select the NCEP type SATEMP observations, which includes NESDIS ATOVS virtual temperature soundings.

SFCSHP

logical

Select the NCEP type SFCSHP observations, which includes surface marine (ship, buoy, c-man) reports.

ADPSFC

logical

Select the NCEP type ADPSFC observations, which includes surface land synoptic station reports.

SATWND

logical

Select the NCEP type SATWND observations, which includes winds derived from satellite cloud drift analysis.

obs_U

logical

Select u-component of wind observations.

obs_V

logical

Select v-component of wind observations.

obs_T

logical

Select temperature observations.

obs_PS

logical

Select surface pressure observations.

obs_QV

logical

Select specific humidity observations.

lon1

real

Western longitude bound of observations to keep.

lon2

real

Eastern longitude bound of observations to keep. Can be less than lon1 if region crosses prime meridian.

lat1

real

Lower latitude bound of observations to keep.

lat2

real

upper latitude bound of observations to keep.

obs_time

logical

If .true. use the full time in the input data. To force all observation times in the output to the synoptic time (e.g. 0Z, 6Z, 12Z, or 18Z) set this to .false. (not recommended).


Modules used

types_mod
utilities_mod
obs_utilities_mod
obs_sequence_mod
obs_kind_mod
obs_def_mod
assim_model_mod
model_mod
cov_cutoff_mod
location_mod
random_seq_mod
time_manager_mod
null_mpi_utilities_mod
real_obs_mod

Files

  • temp_obs.yyyymmdd; (input) NCEP BUFR (decoded/intermediate) observation file(s) Each one has 00Z of the next day on it.

  • input.nml; the namelist file used by create_real_obs.

  • obs_seqYYYYMMDD[HH]; (output) the obs_seq files used by DART.

References

  • DART/observations/obs_converters/NCEP/prep_bufr/docs (NCEP text files describing the BUFR files)