Install the TELEMAC system

This article describes how to download, configure and compile a full installation of the TELEMAC system to be used with ESTEL-2D and ESTEL-3D.

= Downloading the TELEMAC system =

To download the code, it is recommended to use " subversion" and the meta project systel90-meta. This will download from the server the full dependencies for ESTEL-3D and ESTEL-2D.

From now on, we assume that the user wants to install the TELEMAC system into the  folder located at. Starting from the directory, the subversion command to use is:

This will create a systel90 folder containing all necessary source files for the TELEMAC system. The typical folder tree obtained after downloading is shown at the bottom of this page.

= Configuration = Before being able to compile the TELEMAC system, a few configuration steps are necessary.

Paths
The executable files for the TELEMAC system are located in the  directory of the  tree. The directory needs to be added to the  variable of the user. Moreover, the TELEMAC launching scripts require the current directory to be in the   as well. A typical entry in a user login file (for instance  ) would be:

systel.ini
The folder  contains an example configuration file. By default, the TELEMAC system looks for configuration files in the  directory of the   tree. To get started, one can simply rename  to  :

Then, the file  in   needs editing. This files contains a number of sections.

The [GENERAL] section
The [GENERAL] section starts with the default language and version number for each modules in the TELEMAC system. This consists of a long list of  (use for the default language) and   (used for the version) lines. By default, this file is setup for the English language (value2, French is value 1) and version "v5p7". For instance, for ESTEL-3D, the entries are:

This section finish with the location of the  tree (variable  )and the type of machine (variable  ).

If the  tree is installed in , then the   variable should be set.

There is no predefined value to enter for the  variable, the user is free to set the   freely but it is usual to use a string which can be used to identify a combination of the type computer, the operating system and the Fortran compiler. For instance, if the machine is a 32-bit Linux machine (x86 type) using the Portland Group compiler, one could use "linux-x86-pgf90". For a 64-bit machine (x86_64 type) using the Intel Fortran compiler, one could use "linux-x86_64-ifort", this is the string used in the example  but is merely an example.

These values are used at a later stage to recognise which compiler option and which pre-compiled versions of the libraries to use at runtime, see below.

The [PERL] section
The [PERL] section is used to give the location of the perl executable and the location of the perl library. On a typical Linux system, these two locations can be easily found by looking into the file system:

Note that Linux systems sometimes include several versions of the perl library, the highest number of the perl 5 library is appropriate. Therefore, on this particular system, the [PERL] section would be:

The hosttype configurations
The final section of the  file is a list of configuration options for a given. There can be several lists, they are identified by an entry inside square brackets. One of these entries must match the  variable defined in the [GENERAL] section of the file. This is a convenient way of changing configuration options by editing one single line in the  file.

A list of configuration options consists of series of a set of keywords related to the compiler, the linker, the archiver (and the MPI library if installed). For instance when using the Intel Fortran compiler of a 64-bit Linux machine, one could have:

Give more detail!

Refer to the documentation about the compiler to understand these options.

The section with the variables ending in "_MPI" is required when the TELEMAC system will be run in parallel on a cluster or network of computers. This is described below.

cfgmak.mak
When the configuration of  is done, one must create a configuration file for the compilation. This is done automatically when issuing the command:

This will create a file called  in the same directory as. should not be edited manually, any configuration change should be done in  and the command   will update   accordingly.

= Compilation = After the  file has been created, it is possible to start to compile the TELEMAC system. This is a simple but long operation unless a compilation script is used to automate the process. Each module in the TELEMAC system needs to be compiled, in a particular order. Furthermore, some modules (parallel and estel3d have external dependencies which need to be dealt with before the compilation.

The maktel command
The standard way to compile a module of the TELEMAC system consist of going into the  directory of the module and using the command:

This will delete all existing objects in the  directory, recompile the module and install the module library in a folder called after the   entry in the   file. For instance using the linux-x86_64-ifort example the library for estel3d v5p7 would go in.

If only some source files are updated,  will recompile the source files and   will install the library into its destination.

Compilation order
The modules need to be compiled in the following order:
 * 1) damocles
 * 2) paravoid
 * 3) parallel (attention, requires extra operations)
 * 4) bief
 * 5) special
 * 6) sisyphe
 * 7) telemac2d
 * 8) estel2d
 * 9) estel3d (attention, requires extra operations)

For each module, navigate into the  directory of the version of the module defined in the   file and issue the command:

Note that parallel and estel3d require some extra steps, see below.

parallel
parallel is an optional library. The TELEMAC system can be compiled and used without it. The parallel module is used to run the TELEMAC system on a parallel computer or network of computers. It requires the "metis" and "MPI" libraries to be installed.

metis
metis is a mesh partitionning library. Although not developed as part of the TELEMAC project, it is distributed with parallel for convenience. The compilation of metis is simple on Linux but requires some manual steps. It requires a C compiler to be installed. In particular, the destination library needs to be created by hand:

MPI
The "MPI" message parsing interface is also required to compile parallel and use the TELEMAC system in parallel.

MPI can be downloaded from http://www-unix.mcs.anl.gov/mpi/mpich2/. Install MPI and the MPI Fortran 90 compiler according to the MPI documentation. From now on, we assume that MPI is installed in the directory  which contains the ,   and   directories. Furthermore, the MPI Fortran 90 compiler  needs to be in the user's  ; which often requires the following entry in the user's   file:

When MPI is installed and configured, the  can be adjusted if necessary. It contains 4 lines related to the MPI configuration at the end of each hosttype section. Usually, only the  variable needs adjusting:

Compilation
before being able to compile parallel, the makefile in the  directory needs to be edited to point to the relevant MPI   folder:

estel3d
It is recommended to activate the Tecplot binary output for estel3d to increase performance and reduce results file size. A few manual steps are required for this purpose.

Install the Tecplot library
Your installation of Tecplot provides the Tecplot TecIO library called  (32-bit machines) or   (64-bit machines) and located in the   directory of the Tecplot install. It is necessary to copy this file into the  tree.

Modify the makefile
Tecplot 10:

Tecplot 11 (360):

No Tecplot library:

Compile estel3d
= Final TELEMAC tree =
 * systel90
 * bief
 * bief_v5p7
 * sources
 * bief_v5p8
 * sources
 * bin
 * config-template
 * damocles
 * damo_v5p7
 * sources
 * damo_v5p8
 * sources
 * estel2d
 * estel2d_v5p7
 * lib
 * sources
 * test.gb
 * estel2d_v5p8
 * lib
 * sources
 * test.gb
 * estel3d
 * estel2d_v5p7
 * sources
 * test.gb
 * estel2d_v5p8
 * sources
 * test.gb
 * parallel
 * parallel_v5p7
 * metis_distrib
 * sources
 * parallel_v5p8
 * metis_distrib
 * sources
 * paravoid
 * paravoid_v5p7
 * sources
 * paravoid_v5p8
 * sources
 * special
 * special_v5p7
 * sources
 * special_v5p8
 * sources
 * sisyphe
 * sisyphe_v5p7
 * lib
 * sources
 * sources_util
 * sisyphe_v5p8
 * lib
 * sources
 * sources_util
 * telemac2d
 * tel2d_v5p7
 * lib
 * sources
 * tel2d_v5p8
 * lib
 * sources