PROGRAM littler_tf_dart

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

  • input namelist ; input.nml

  • Input - output observation files; obs_seq.out and little-r.dat

  • Input - output littler observation error files ; obserr.txt

File formats

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

References

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).