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:

The first 5 data types also allow numerical expressions as input in addition to pure numbers. In addition to these basic types, there are a large number of complex data types called classes, which are described in section Classes.

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.xml
runs 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.