tec-suite

Overview

tec-suite is a tool for reconstruction of the slant total electron content (TEC) value in the ionosphere. It uses data of Global Navigation Satellite Systems such as GPS and GLONASS. To determine TEC value along “receiver-satellite” line-of-sight, tec-suite uses phase and pseudorange derived from RINEX files [RNX].

For the moment tec-suite supports:

  • Navigation systems:
    • GPS
    • GLONASS
    • Galileo
    • Compass/BeiDou
    • GEO (geostationary satellites, part of SBAS)
    • IRNSS
  • RINEX versions:
    • v.2 (2.0 - 2.11)
    • v.3 (3.0 - 3.03)
  • File types:
    • RINEX observation files
    • Hatanaka-compressed RINEX observation files [CRNX]
    • RINEX navigation files
    • compressed (.Z or .gz) files

Contents

Installation

Just download and extract tec-suite archive wherever you want.

Downloads:

Requirements

crx2rnx
To decompress Hatanaka-compressed RINEX files, tec-suite uses crx2rnx.
gunzip
To unarchive .z, .Z or .gz, files tec-sutie uses gunzip. If your system is Linux or macOS you probably have it installed. You can find the Windows version at GnuWin site.

Note

tec-suite for Windows comes with crx2rnx and gzip executables. In case of Linux or macOS put crx2rnx to a dir where tecs could find it, e.g. to the dir which contains tecs binary or to any dir in $PATH variable.

Usage

Synopsis

tec-suite is a command line tool. There is an executable named tecs (or tecs.exe) you should invoke to make work done.

In general, the command line looks like:

tecs [-v] [-c config_file] [--save-coordinates]

Command line

All the arguments are optional.

-c file
Use the given config file instead of tecs.cfg.
-v
Print the version and exit.
--save-coordinates
Save the coordinates of the sites found in obsDir into coordinates.txt. TEC values are not calculated, the file is saved in a directory which contains configuration file.

Configuration

The configuration file contains a set of variables that affect the tecs behaviour. If not set explicitly with -c file, tecs will look for tecs.cfg in the working dir.

The syntax is simple; white-spaces are ignored, the # symbol begins comment to the end of the line, blank lines are ignored. All other lines are identified as setting variables, in the form name = value. The variable names are case sensitive.

Variables
obsDir dir [, dir, …]
Directory with the RINEX observation files. It can contain a list of the directories separated by a comma.
navDir dir [, dir, …]
Directory with the RINEX navigation files. It can contain a list of the directories separated by a comma.
outDir dir
Output directory; output files will be saved in it.
outFileMode mode
Output file format. The only one format available by now, and it is the text format (outFileMode = text). Output data will be saved in multicolumn text files. The set and the order of data columns are defined by the recFields variable.
recFields ‘rec format’
Set and order of output file columns. A complete list of the columns (“fields”) is given in the Output file section.
datetimeFormat ‘date format’
Date/time format in output file; see the Date/time section for details.
samplingInterval seconds
Interval in seconds to pick values from an observation file. Values of TEC, azimuth and elevation will be calculated with the interval. In case of samplingInterval = 0 all the data will be read.
navPriorityGPS site1, site2, …, siteN
Priority of search of navigation files for GPS. Here, site is a 4-symbol code of the station (the first 4 symbols of RINEX file name). First, tecs searches for site1 navigation file. If it does not find it, it searches for site2 file and so on to siteN. If tecs does not find any navigation file from the list, it takes the first available file.
navPriorityGLO site1, site2, …, siteN
It is an analogue of navPriorityGPS for GLONASS.
navPriorityGEO site1, site2, …, siteN
It is an analogue of navPriorityGPS for SBAS.
navIgnoreAbsence [True|False]
When True, absence of navigation files for all satellite systems besides GLONASS is ignored. The values of elevation and azimuth are not calculated and are written as 0. Note that for GLONASS the navigation file is required to calculate frequencies.
logLevel (DEBUG|INFO|WARNING|ERROR|CRITICAL)
Sets the logging level. ERROR is usually enough.
Output file

The results are written into multicolumn text files. The name of an output file is formed as follows:

site_SN_DDD_YY.dat, where

site - site name, S - satellite system identifier, N - satellite number, DDD - day of the year, YY - year without century.

The order and the set of the output record fields are set by the recFields variable. The recFields value is a single quoted string which contains field names separated by a comma. For example,

recFields = 'datetime, el, az, tec.l1l2, tec.p1p2'

Therefore, it is possible to set the format of an output record so that it contains only desired values. The field names listed in The TEC fields list and The output fields list.

The following is the list of TEC reconstruction variants, which values can be written into an output file.

The TEC fields list
Notation Meaning
tec.p1p2 TEC value reconstructed using pseudorange P1 and P2 values
tec.c1p2 The same but using C1 and P2 values
tec.c1c2 The same but using C1 and C2 values
tec.c1c5 The same but using C1 and C5 values
tec.c2c5 The same but using C2 and C5 values
tec.c2c6 The same but using C2 and C6 values
tec.c2c7 The same but using C2 and C7 values
tec.c6c7 The same but using C6 and C7 values
tec.l1l2 TEC value reconstructed using phase L1 and L2 values
tec.l1l5 The same but using L1 and L2 values
tec.l2l5 The same but using L2 and L5 values
tec.l2l6 The same but using L2 and L6 values
tec.l2l7 The same but using L2 and L7 values
tec.l6l7 The same but using L6 and L7 values
tec.l1c1 TEC value reconstructed using phase L1 and pseudorange C1 values
tec.l2c2 TEC value reconstructed using phase L2 and pseudorange C2 values

The following is the list of other fields which can be inserted into recFields variable.

The output fields list
Notation Meaning
Date and time
tsn Time of the observation t_{sn} = sec/dt, where sec - number of seconds from the beginning of the day, dt - the observation interval in seconds.
hour Time of the observation in fractions of an hour.
datetime Date and time of the observation. You can control date/time string using the datetimeFormat variable (see Date/time section).
Coordinates
site.x Geocentric coordinate X of a receiver.
site.y Geocentric coordinate Y of a receiver.
site.z Geocentric coordinate Z of a receiver.
site.l Geographic longitude L of a receiver.
site.b Geographic latitude B of a receiver.
site.h Altitude B of a receiver.
sat.x Geocentric coordinate X of a satellite.
sat.y Geocentric coordinate Y of a satellite.
sat.z Geocentric coordinate Z of a satellite.
el Elevation to a satellite.
az Azimuth to a satellite.
Observable values
p1 P1 pseudorange value.
p2 P2 pseudorange value.
l1 L1 carrier phase value.
l2 L2 carrier phase value.
l5 L5 carrier phase value.
s1 S1 raw signal strength value.
s2 S2 raw signal strength value.
s5 S5 raw signal strength value.
c1 С1 pseudorange value.
c2 С2 pseudorange value.
c5 C5 pseudorange value.
p1.lli P1 Loss of Lock Indicator (LLI) value.
p2.lli P2 LLI.
l1.lli L1 LLI.
l2.lli L2 LLI.
l5.lli L5 LLI.
s1.lli S1 LLI.
s2.lli S2 LLI.
s5.lli S5 LLI.
c1.lli C1 LLI.
c2.lli C2 LLI.
c5.lli C5 LLI.
Date/time

Using the datetimeFormat variable one can set the format of the datetime field which will be written into an output file. Note that the datetime field should be put into the recFields string.

The datetimeFormat string can include:

  • any printable character;
  • date/time codes (according to the С standard 1989 version).

For example, %Y-%m-%d %H:%M:%S corresponds to 2015-06-23 12:00:00. The following is the list of codes.

Code Meaning
%a Weekday as locale’s abbreviated name.
%A Weekday as locale’s full name.
%w Weekday as a decimal number, where 0 is Sunday and 6 is Saturday.
%d Day of the month as a zero-padded decimal number.
%b Month as locale’s abbreviated name.
%B Month as locale’s full name.
%m Month as a zero-padded decimal number.
%y Year without century as a zero-padded decimal number.
%Y Year with century as a decimal number.
%H Hour (24-hour clock) as a zero-padded decimal number.
%I Hour (12-hour clock) as a zero-padded decimal number.
%p Locale’s equivalent of either AM or PM.
%M Minute as a zero-padded decimal number.
%S Second as a zero-padded decimal number.
%f Microsecond as a decimal number, zero-padded on the left.
%z UTC offset in the form +HHMM or -HHMM (empty string if the object is naive).
%Z Time zone name (empty string if the object is naive).
%j Day of the year as a zero-padded decimal number.
%U Week number of the year (Sunday as the first day of the week) as a zero padded decimal number. All days in a new year preceding the first Sunday are considered to be in week 0.
%W Week number of the year (Monday as the first day of the week) as a decimal number. All days in a new year preceding the first Monday are considered to be in week 0.
%c Locale’s appropriate date and time representation.
%x Locale’s appropriate date representation.
%X Locale’s appropriate time representation.
%% A literal ‘%’ character.

Moving receiver

Change of site location (i.e. change of the values of geocentric coordinates X, Y, Z during the file reading) is taken into account in the calculation of elevation and azimuth values. Moreover, there is a possibility to set the coordinates for required moments of time. To do that, one should put a file with the values of time and geocentric coordinates corresponding to them into a directory with an observation file. Running into such a file, tecs will read the coordinates and changes the values of X, Y and Z for each time moment listed in the file.

File with coordinates

The name of a file with coordinates should correspond to the name of an observation file and has an extension xyz. For example,

  • usud0700.11d.Z and usud0700.11d.xyz;
  • usud0700.11o and usud0700.11o.xyz;
  • usud070a00.11o and usud070a00.11o.xyz.

Time stamp is set as YYYY-MM-DD HH:MM:SS followed by values of the X, Y and Z (in meters) separated by spaces. The # symbol begins a comment. For example,

# Site: USUD
# Datum: IGS08
# datetime, x (meters), y (meters), z (meters)
2011-03-11 05:00:00  -3855263.0771  3427432.6022  3741020.3066
2011-03-11 05:00:30  -3855263.0833  3427432.6068  3741020.3148
2011-03-11 05:01:00  -3855263.0761  3427432.6020  3741020.3089
...

Appendices

Constants

List and meaning of the constants which are used for calculation.

  • Conversion of geocentric coordinates into geodesic coordinates:
    • ellipsoid semi-major axis: 6378137, m;
    • ellipsoid semi-minor axis: 6356752.314245, m.
  • Calculation of elevation and azimuth:
    • Earth’s radius: 6371 \cdot 10^3, m.
  • Calculation of geocentric coordinates of the GPS, GLONASS and GEO satellites:
    • Earth’s angular velocity: 7.2921151467 \cdot 10^{-5}, rad/s;
    • Earth’s gravitational field constant: 39860044 \cdot 10^7, m^3/s^2;
    • second zonal harmonic of geopotential expansion into a series of spherical functions: 1082625.7 \cdot 10^{-9};
    • ellipsoid semi-major axis: 6378136, m (for GLONASS, according to PZ-90).

Satellite system identifiers

The following is the list of the satellites system identifiers according to the RINEX format [RNX]:

  • G - GPS
  • R - GLONASS
  • E - Galileo
  • S - SBAS
  • C - BeiDou

Bibliography

[RNX]The Receiver Independent Exchange Format.
[CRNX]Hatanaka, Y., A Compression Format and Tools for GNSS Observation Data, Bulletin of the GSI, V. 55, pp. 21-30, 2008.