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.
types_mod obs_sequence_mod obs_def_mod obs_kind_mod location/threed_sphere/location_mod time_manager_mod utilities_mod
assim_model_mod models/wrf/model_mod models/wrf/module_map_utils random_seq_mod
The program does not have its own namelist. However, an input.nml
file is required for the modules used by the
program.
- input namelist ;
input.nml
- Input - output observation files;
obs_seq.out
andlittle-r.dat
- Input - output littler observation error files ;
obserr.txt
If there are no observation error at a particular pressure level, the default value of -1 is written in obserr.txt
.
call set_str_date(timestring, dart_time)
type(time_type), intent(in) :: dart_time character(len=20), intent(out) :: timestring
call set_dart_time(tstring, dart_time)
character(len=20), intent(in) :: tstring type(time_type), intent(out) :: dart_time
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)
level_index = GetClosestLevel(ilev, vlev, nlev)
integer, intent(in) :: nlev, ilev integer, intent(in) :: vlev(nlev)
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)
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
f_sensor = sensor(line)
CHARACTER (LEN= 80), intent(in) :: line
val = intplin(x,xx,yy)
INTEGER, DIMENSION (:), intent(in) :: xx REAL(r8), DIMENSION (:), intent(in) :: yy REAL(r8), intent(in) :: x
val = intplog(x,xx,yy)
INTEGER, DIMENSION (:), intent(in) :: xx REAL(r8), DIMENSION (:), intent(in) :: yy REAL(r8), intent(in) :: x
index = locate(x,xx)
INTEGER, DIMENSION (:), intent(in) :: xx REAL(r8), intent(in) :: x