Config files
GROOPS is controlled by XML configuration files. One or more configuration files must be passed as arguments to GROOPS:
groops config1.xml config2.xml [...]These files can be created with the graphical user interface program
groopsGui
in a convenient way (see section GUI).
A complete formal (computer readable) description of a configuration file
in the form of an XSD schema file can be created with the command
groops --xsd groops.xsd
A configuration file consists of a list of programs that are executed in sequential order. Each program comes with its own config options and they work independently without any internal communication between programs. Data flow between programs is realized via files. An outputfile of one program can serve as an inputfile for the next program. Most programs are deliberately kept small and focused on a specific task. This modularity combined with the general purpose design of many programs enables the creation of complex workflows with little effort. Including loops and conditions in a config file provides even more flexibility.
Individual programs (and also other optional config elements) can be disabled
and are ignored during execution. Mandatory config elements are indicated by a star (*
).
Empty optional elements are ignored or a meaningful default value is assumed.
The elements of a configuration file can be one of the following basic data types:
int
: integer number-
uint
: unsigned integer number -
double
: floating point number -
angle
: given in degree -
time
: given in modified Julian date (MJD) -
boolean
: 0: false, 1: true -
string
: text -
filename
: absolute path to a file or path relative to the working directory -
expression
: numerical expression evaluated during execution -
doodson
: Doodson number or Darwin's name of a tidal frequency -
gnssType
: GNSS observation type according to the RINEX 3 definition
Variables
In addition to programs a config file can also include elements called variables. These elements are comparable to read-only variables in programming and can be referenced from any program and config element. This can be done by either linking an element directly to a variable or by using the name as a variable in an expression of an input field (see section Parsers and variables). While elements can only be directly linked to variables of the same type, this also supports complex data types such as gravityfield. Thus it is possible to, for example, define a reference gravity field once in the global section and use it multiple times in different programs.
Variables can be declared anywhere in the configuration file. Variables in locations other than the global section have a local scope and hide global variables or variables from a hierarchy level above. They are valid after declaration until the end of the hierarchy level is reached or a new variable with the same name is declared.
Variables are not evaluated directly when they are declared, but only later when they are used in a config element.
This means, for example, that a variable satelliteFile
with data/swarm_orbit_{loopTime:%D}.dat
can be declared in the global section without the variable loopTime
having to be known at this time.
One special variable is groopsDataDir
, which is used as a variable in most default
file paths throughout many GROOPS programs. Since this variable is going to be needed in
most config files, it is recommended to define it in a template file that is used when creating
new config files in the GUI. See section Graphical User Interface (GUI)
for details on how to set up a template file.
Global variables can be manipulated when running a config file by passing the argument --global <name>=<value>
.
For example, running the command
groops --global timeStart=58849 --global satellite=swarm config.xmlruns the config file
config.xml
but replaces the values of the global variable timeStart
and satellite
with 58849
and swarm
, respectively. If a global variable passed as
an argument does not already exist in the config file, it will be added with the type string
.
Only the basic data types listed above are supported. This feature can be useful when running GROOPS
from the command line or from an external script file.