PROGRAM littler_tf_dart

DART project logo

Jump to DART Documentation Main Index
version information for this file:
$Id: littler_tf_dart.html 11305 2017-03-14 17:52:08Z hendric@ucar.edu $

DATA SOURCES / PROGRAMS / MODULES / NAMELIST / ERRORS / FUTURE PLANS / TERMS OF USE

Overview

Programs to convert littler data files into DART observation sequence files, and vice versa. The capability of the program is limited to wind and temperature from radiosondes.

The littler data files do not contain observation errors. The observation errors are in a separate file called obserr.txt. The littler file generated here has to be preprocessed by the program 3dvar_obs.exe before beeing ingested in the WRF 3D-Var system.


MODULES USED

types_mod
obs_sequence_mod
obs_def_mod
obs_kind_mod
location/threed_sphere/location_mod
time_manager_mod
utilities_mod

MODULES INDIRECTLY USED

assim_model_mod
models/wrf/model_mod
models/wrf/module_map_utils
random_seq_mod



NAMELIST

The program does not have its own namelist. However, an input.nml file is required for the modules used by the program.


FILES

File formats

If there are no observation error at a particular pressure level, the default value of -1 is written in obserr.txt.


REFERENCES


ERROR CODES and CONDITIONS

RoutineMessageComment
littler_tf_dart Did not get all obs There is observation before dart time (0, 0) or beyond day 200000 in the Gregorian calendar in the obs_seq.out file.
littler_tf_dart No vertical coordinate. Only vertical pressure coordinate is supported.
littler_tf_dart Error when reading or writing header of sounding. Problem with littler file.
littler_tf_dart Error when reading or writing sounding. Problem with littler file.
littler_tf_dart Error when reading or writing footer of the sounding. Problem with littler file.
intplin, intplog arrays xx and yy must have same size Each x value needs a corresponding y value.
intplin, intplog bad value in yy It is assumed that the input yy contains rms errors and should not be negative. That should be traced back to the file obserr.txt.

KNOWN BUGS

none


FUTURE PLANS

  1. Develop the program to support all observations in DART and WRF 3D-Var.
  2. Use the preprocessor to include the observation list provided by obs_kind_mod.

PRIVATE COMPONENTS


call set_str_date(timestring, dart_time)
type(time_type),   intent(in)  ::  dart_time 
character(len=20), intent(out) ::  timestring 

Given a dart_time (seconds, days), returns date as bbbbbbyyyymmddhhmmss, where b is a blank space.



call set_dart_time(tstring, dart_time)
character(len=20), intent(in)  ::  tstring 
type(time_type),   intent(out) ::  dart_time 

Given a date as bbbbbbyyyymmddhhmmss, where b is a blank space, returns the dart_time (seconds, days).



call StoreObsErr(obs_err_var, pres, plevel, nlev, obs_err_std)
integer,  intent(in)    ::  nlev, pres 
real(r8), intent(in)    ::  obs_err_var 
integer,  intent(in)    ::  plevel(nlev) 
real(r8), intent(inout) ::  obs_err_std(nlev) 

If the incoming pres corresponds exactly to a pressure level in plevel, then transfers the incoming obs_err_var into the array obs_err_std at the corresponding level.



level_index = GetClosestLevel(ilev, vlev, nlev)
integer,  intent(in) ::  nlev, ilev 
integer,  intent(in) ::  vlev(nlev) 

Returns the index of the closest level in vlev to the incoming ilev.



call READ_OBSERR(filein, platform, sensor_name, err, nlevels)
CHARACTER (LEN=80), intent(in)  ::  filein 
CHARACTER (LEN=80), intent(in)  ::  platform 
CHARACTER (LEN=80), intent(in   ::  sensor_name 
INTEGER,            intent(in)  ::  nlevels 
REAL(r8),           intent(out) ::  err(nlevels) 

Read observational error on pressure levels (in hPa) from the incoming filein and store the result in the array err. It is assumed that filein has the same format as WRF 3D-Var obserr.txt file. It reads observational error for a specific platform (e.g. RAOBS) and a specific sensor (e.g. WIND SENSOR ERRORS).



f_obstype = obstype(line)
CHARACTER (LEN= 80), intent(in) ::  line 

Read in a line the string present after keyword 'BOGUS', which should be the sensor name.



f_sensor = sensor(line)
CHARACTER (LEN= 80), intent(in) ::  line 

Read in a line the string present after numbers, which should be the platform name.



val = intplin(x,xx,yy)
INTEGER,  DIMENSION (:), intent(in) ::  xx 
REAL(r8), DIMENSION (:), intent(in) ::  yy 
REAL(r8),                intent(in) ::  x 

Do a linear interpolation.



val = intplog(x,xx,yy)
INTEGER,  DIMENSION (:), intent(in) ::  xx 
REAL(r8), DIMENSION (:), intent(in) ::  yy 
REAL(r8),                intent(in) ::  x 

Do a log-linear interpolation.



index = locate(x,xx)
INTEGER, DIMENSION (:), intent(in) ::  xx 
REAL(r8),               intent(in) ::  x 

Return the index in xx such that xx(index) < x < xx(index+1).



Terms of Use

DART software - Copyright 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

Contact: DART core group
Revision: $Revision: 11305 $
Source: $URL: https://svn-dares-dart.cgd.ucar.edu/DART/releases/Manhattan/observations/obs_converters/var/littler_tf_dart.html $
Change Date: $Date: 2017-03-14 11:52:08 -0600 (Tue, 14 Mar 2017) $
Change history:  try "svn log" or "svn diff"