Project

General

Profile

Introducing the RC files

By providing inputs to scripts around TM5 and also to the TM5
executable at runtime, TM5 Resource Configuration (rc) files became the
main interface with the model.

TM5 works with one main rc file, which refers to 3 other rcfiles: one
for the meteo settings, one for advanced model settings, and one for
the hardware settings. The latter may itself include a compiler
specific rc file. When using the chemistry module, another file with
emissions information is also included.

Basics

An rc file is an ASCII (text) file that defines variables in a flexible way.
A value is simply assigned to a variable (or key) name as:
name : value
where value can be a anything, numbers or characters, lists,
but also some special variables described below. Finally:

  • Lines that start with an exclamation mark (!) are comments.
  • Empty lines are ignored.

Special Variables

There are four types of special variables.

Parameter Substitution

Basic variable expansion in rc file is available and similar to
variable expansion found in Unix/Linux shells. The variables
${var} or $var are expanded when read by the script that
process rc files. Two cases are possible:

  • If var refers to another key in the rc file, the value of that key is used, even if it appears after in the file, or in an encapsulated file.
  • If var refers to an environment variable, the value of that variable will be used. For example, ${PWD} will be replaced by the path to current directory when the file is read.

Predefined keys

Two predefined keys are available:
  • ${pid} : evaluates to the process id of the calling script
  • ${script} : evaluates to the name of the calling script

<var> keys

Defined only for post/pre-processing, <...> variables are only expanded
by the underlying python script that uses the pre/postprocessing keys.
Currently available are:

  • <output.dir> : fully qualified path to the main (top) output directory
  • <rcfile> : name of the rc file
  • <bindir> : bin directory, where the executable is found

%{var} keys

Those are similar to ${..} but expanded only at the end of the run in the "rs" file. See post-processing settings, where this
type of key is used, for details and example. If no "rs" file is found, the rc file is searched for the key.

Convention

  • Rc file names have typically the ".rc" extension. It is recommended to follow this convention.
  • The my.* keys are just intermediate keys and not read by the scripts or the program. They are only used to fill other keys in the rc file.

Encapsulation

Additional flexibility is obtained with the possibility to include one
rc file into another. The syntax is:

#include /path/to/another/rcfile.rc

The path can be relative to the current directory. TM5 uses this
feature to separate advanced meteo and hardware settings from the main rc file.

Script Snippet

It is also possible to include python code within an rc file. This technique should be used with parsimony, and limited to "if..then..else" tests. You can find several examples in the
distributed rc files.

Coloured syntax in emacs

Add the following to your .emacs file:

(require 'generic-x)
(setq auto-mode-alist (append '(("\\.rc$" . x-resource-generic-mode)) auto-mode-alist))

Coloured syntax in Vi, Vim, gVim

You need the rc.vim file, which is available in the rc directory of the model. Put it in your

~/.vim/syntax/

To link the extension *.rc to the filetype rc in vim, open (or create if missing):

~/.vim/filetypes.vim

and add this line:

au BufNewFile,BufRead *.rc    setf rc

This literally means: If you open or read a file of which the name fulfills '*.rc', then set the file type to 'rc'. The latter means that for syntax highlighting ~/.vim/rc.vim is taken.

It is possible that this line is already in filetype.vim because of another format with the name 'rc'. Just replace it then.