PROGRAM MIDAS_to_obs
Overview
MIDAS netCDF file to DART observation converter
Alex Chartier (University of Bath, UK) contributed the code.
“MIDAS runs in Matlab. The raw observations come from GPS receivers as RINEX files, but we can’t use them directly just yet … Currently, the ‘slant’ (satellite-to-receiver path) observations are inverted by MIDAS to make vertical, column-integrated ‘observations’ of plasma density.”
Data sources
The original files have been converted to netCDF files that are then converted to DART observation sequence files. The netCDF files have a pretty simple format:
netcdf Test {
dimensions:
latitude = 5 ;
longitude = 6 ;
height = 30 ;
time = UNLIMITED ; // (1 currently)
variables:
double latitude(latitude) ;
latitude:units = "degrees_north" ;
latitude:long_name = "latitude" ;
latitude:standard_name = "latitude" ;
double longitude(longitude) ;
longitude:units = "degrees_east" ;
longitude:long_name = "longitude" ;
longitude:standard_name = "longitude" ;
double height(height) ;
height:units = "metres" ;
height:long_name = "height" ;
height:standard_name = "height" ;
double time(time) ;
time:units = "Days since 1601-01-01" ;
time:long_name = "Time (UT)" ;
time:standard_name = "Time" ;
double Ne(height, latitude, longitude) ;
Ne:grid_mapping = "standard" ;
Ne:units = "1E11 e/m^3" ;
Ne:long_name = "electron density" ;
Ne:coordinates = "latitude longitude" ;
double TEC(time, latitude, longitude) ;
TEC:grid_mapping = "standard" ;
TEC:units = "1E16 e/m^2" ;
TEC:long_name = "total electron content" ;
TEC:coordinates = "latitude longitude" ;
double Variance(time, latitude, longitude) ;
Variance:grid_mapping = "standard" ;
Variance:units = "1E16 e/m^2" ;
Variance:long_name = "Variance of total electron content" ;
Variance:coordinates = "latitude longitude" ;
Variance:standard_name = "TEC variance" ;
// global attributes:
:Conventions = "CF-1.5" ;
}
Programs
MIDAS_to_obs.f90
file is the source code for the main converter program.MIDAS/work
subdirectory and run the quickbuild.sh
script to build the
converter and a couple of general purpose utilities. The
program obs_sequence_tool manipulates (i.e. combines, subsets)
DART observation files once they have been created. The default observations supported are those defined in
observations/forward_operators/obs_def_upper_atm_mod.f90. If
you need additional observation types, you will have to add the appropriate obs_def_XXX_mod.f90
file to the
input.nml
&preprocess_nml:input_files
variable and run quickbuild.sh
again. It rebuilds the table of
supported observation types before compiling the source code.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.
&MIDAS_to_obs_nml
input_file = 'infile.nc'
obs_out_file = 'obs_seq.out',
verbose = .false.
/
Item |
Type |
Description |
---|---|---|
input_file |
character(len=256) |
Name of the input netCDF MIDAS file to read. |
obs_out_file |
character(len=256) |
Name of the output observation sequence file that is created. |
verbose |
logical |
Controls how much informational output is printed during a conversion.
|
Example
&MIDAS_to_obs_nml
input_file = '../data/Test.nc',
obs_out_file = 'obs_seq.out',
verbose = .TRUE.,