MODULES / NAMELIST / FILES / REFERENCES / ERRORS / BUGS / PLANS PRIVATE COMPONENTS

PROGRAM littler_tf_dart

Contact: Tim Hoar
Reviewers:  
Revision: $Revision: 1.1 $
Release Name: $Name: iceland $
Change Date: $Date: 2005/10/19 05:49:34 $
Change history: see CVS log

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 DIRECTLY 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
random_nr_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




FUTURE PLANS

  • Develop the program to support all observations in DART and WRF 3D-Var.
  • 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 
    

    Description

    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 
    

    Description

    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) 
    

    Description

    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) 
    

    Description

    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) 
    

    Description

    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 
    

    Description

    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 
    

    Description

    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 
    

    Description

    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 
    

    Description

    Do a log-linear interpolation.


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

    Description

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