File: INSTALL

package info (click to toggle)
rheolef 7.2-4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 88,012 kB
  • sloc: cpp: 110,259; sh: 16,733; makefile: 5,438; python: 1,391; yacc: 218; javascript: 203; xml: 191; awk: 61; sed: 5
file content (384 lines) | stat: -rw-r--r-- 15,158 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
The simplest install procedure is as the `root` user:

    ./configure
    make
    sudo make install

The `configure` program is a script that runs tests of your system
and the availability of some required and optional libraries for Rheolef.
Upon termination, it prints a summary and generates two files:
`config/config.mk` and `config/config.h`.
The `make` program then runs the conpilation and
the `make install` stage copies the produced files.
By default, the main destination directory is `/usr/local`.
Commands are installed in `/usr/local/bin`, libraries in `/usr/local/lib`,
headers in `/usr/local/include` and the documentation in `/usr/local/share`.

Alternative install directory
=============================

Since the default install prefix is `/usr/local`, it requires to
be logged as `root` in order to install.
If you are not the `root` user, or prefer
an alternative install directory, e.g. `$HOME/sys`, enter:

    ./configure --prefix="$HOME/sys"

In that case, you have to add the following lines at the end
of your `.profile` or `.bash_profile` file:

    export PATH="$HOME/sys/bin:$PATH"
    export LD_LIBRARY_PATH="$HOME/sys/lib:$LD_LIBRARY_PATH"
    export MANPATH="$HOME/sys/man:$MANPATH"

Assuming you are using the `sh` or the `bash` unix interpreter.
Conversely, if you are using `csh` or `tcsh`, add
at the bottom of your `.cshrc` file:

    set path = ("$HOME/sys/bin" $path)
    setenv LD_LIBRARY_PATH "$HOME/sys/lib:$LD_LIBRARY_PATH"
    setenv MANPATH "$HOME/sys/man:$MANPATH"

If you are unsure about unix interpreter, get the SHELL value:

    echo $SHELL

Then, you have to `source` the modified file, e.g.:

    source ~/.bashrc

HPUX users should replace `LD_LIBRARY_PATH` by `SHLIB_PATH`.
If you are unsure, get the shared library path variable:

    rheolef-config --shlibpath-var

Check also your installation by compiling a sample
program with the installed library:

    make installcheck

Since it is a common mistake, you can later, at each time, test
your run-time environment sanity with:

    rheolef-config --check

Required libraries
==================

The following required libraries are available as precompiled packages under
Debian GNU/Linux and Ubuntu systems.

The `boost` library.
  It provides useful extensions of the c++ standard template library.
  See http://www.boost.org .

The `eigen` library.
  It provides efficient c++ linear algebra subroutines.
  See http://eigen.tuxfamily.org .

Recommended libraries
=====================
The following libraries are optional but highly recommended.

The `umfpack` library.
  It provides a multifrontal sparse direct solver.
  Rheolef solvers run faster when using this library.
  See http://faculty.cse.tamu.edu/davis/suitesparse.html .

The `cgal` library.
  It provide an easy access to efficient and reliable geometric algorithms.
  With it, Rheolef implements the characteristic method and interpolation from one mesh to another.
  This library is optional, but allows, when available, extended Rheolef features.
  See http://www.cgal.org .

Parallel computations
=====================

With the optional following libraries, Rheolef is able to run in parallel and
and with distributed memory.
By default, the Rheolef `configure` script tries to autodetect these
libraries and be able to run in parallel.
When these libraries are not found, the distributed features are turned off.
If your libraries are installed in a non-standard location, you should
indicate it by a suitable `configure` option. See below for these options.

A `mpi` library.
  Rheolef bases on `mpi`, the message passing interface standard.
  A popular implementation is the `openmpi` library.
  When no `mpi` library is found, the distributed feature is turned off.

The `mumps` library.
  It is a massively distributed sparse direct solver.
  The use of implicit numerical schemes leads to the
  resolution of large sparse linear systems.
  See http://graal.ens-lyon.fr/MUMPS .
  When `mumps` is not found, the distributed feature is turned off.

Either the `scotch` or the `metis` library.
  It provides the distributed mesh partitioning.
  For `scotch` see http://www.labri.fr/perso/pelegrin/scotch 
  and for `metis` see http://www.cs.umn.edu/~metis .
  When neither `scotch` nor `metis` are founded, the distributed feature is turned off.

The `trilinos/ifpack` library.
  It provides a distributed preconditioner used for iterative solvers.
  See http://trilinos.sandia.gov .
  When `trilinos` is not available, a less efficient builtin IC0 preconditioner is used.
  The `trilinos` support is actually broken, it will be available in a forthcoming version.

Run-time tools
==============

Using Rheolef suggests the use of the following optional tools
for pre- and post-processing purpose:

    gmsh
    gnuplot
    paraview

None of these tools are required when building and installing Rheolef.

Tools for developpers
=====================

These tools are required if you build from the development version,
from the `git` repository:

- Re-generating some source files, as initiated with the `bootstrap` command,
  requires the `autotools` suite: `autoconf`, `automake` and `libtool`.
- It requires also `flex` and `bison` for building file format parsers.

Portability issues
==================

Rheolef is based on standard C++ and the `boost` library.
Therefore you need a compiler that supports at least the 2011 C++ standards.

Current distributed version of Rheolef has been heavily tested with GNU C++, CLANG C++
and INTEL C++ on debian, ubuntu, mint, suse and redhat GNU/Linux systems for various
32 and 64 bits architectures, with massively distributed memories and processes.
Successful installation from sources on MAC-OS-X systems has been also repported 
recently.

- The GNU C++ compiler `g++` is a free software
  available at http://www.gnu.org .
- The CLANG C++ compiler `clang++` is also a free software
  available at http://clang.llvm.org .
- The Intel C++ compiler is a privative software.

So, the Rheolef library is expected to compile without problems
with one of these compilers.
If you are running a another compiler and operating system combination,
please run the non-regression test suite:

    make check

Please, send mails and bug reports to the mailing list mailto:rheolef@grenet.fr .


Older Rheolef 5.x versions was tested also on the
KAI  C++ compiler (KCC-3.2b) and the
CRAY C++ compiler (CC-3.0.2.0)
on the following operating systems:

- mac os x (i386-apple-darwin9.8.0), using GNU C++
- sun solaris 2.8, ultrasparc, using GNU C++
- compacq OSF1 alpha (V5.1, V4.0), using Compacq C++
- aix 4.1 ibm sp2, multiprocessor based on rs6000
- cray unicos t3e, multiprocessor based on 64 bits dec alpha
- cray unicos c94
- hpux 9.05 and 10.20, hppa
- sgi irix 6.3, mips
- sun solaris 2.5.1, sparc

where

- The KAI C++ is available at http://www.kai.com .
- The CRAY C++ is available on CRAY platforms.

Nevertheless, the current version has no more been tested
on these old compilers and systems.

Configure options
=================

If the required libraries are located in a non-standard directory, please use
the configure options:

    ./configure --help

and also consider the CXX, CXXFLAGS and LIBS variables, as in the following more complex
configure command:

    CXX=clang++ CXXFLAGS=-I/misc/include LIBS="-L/misc/lib" ./configure

Finaly, if troubles still persist after the configure step, you can also edit
directly the config/config.mk and config/config.h files. In these cases please also post
to the mailling list mailto:rheolef@grenet.fr for any portability problem.

Here are all the supported configure command line options.

`-h`, `--help`
>       Display a summary of command line options and exit
`--help=short`
>       Display only options specific to Rheolef and exit
`--with-float`=option
>       Turns on/off the extended arithmetic feature.
>       The *option* could be either
>       `float128` (quadruple precision, 32 digits),
>       or the default `double` (double precision, 16 digits).
`--enable-permissive`
>       The compiler do not turns all warnings into errors and becomes permissive.
>       This feature is for code developers and is off by default.
`--enable-debian-packaging`
>       Install files in the debian way 
>       by respecting the `Debian Policy Manual`.
>       This is not the default behavior.
`--enable-documentation`
>       By default, both the reference manual and the users guide
>       documentations are generated when required tools are available.
>       The required tool for the reference manual is `doxygen`.
>       The required tools for the users guide are
>       `pdflatex`, `bibtex`, `makeindex`, `gs`, `pdffonts`, `fig2dev`, `gnuplot`, `cairosvg`. `pdfcrop`
>       This option allows one to turn off the generation of these
>       documentation.
`--with-bigfloat`=digits10
>       Turn on Bruno Haible's `cln` arbitrary
>       precision float library with *digits10* precision,
>       See http://clisp.cons.org/~haible/packages-cln.html .
>       Default is off.
>       The *digits10* argument value is optional and
>       default value is *digits10*=60.
>       This feature is still under development.
`--with-cln`=clndir
>       Set the home directory for the `cln` library
>       used by the `--with-bigfloat` previous option.
>       Default *clndir* is `/usr/local/math`.
`--enable-maintainer-mode`
>       This option is off by default.
>       When false, it turns off by default the `ginac` feature (see below).
>       If you are not a Rheolef library code developper,
>       you could safely turn it off.
>       This option is provided for compatibility with the Debian packaging
>       system `debhelper`.
`--enable-ginac`
>       This option is off by default.
>       Ginac is computer algebra system in C++
>       that is used to automatically generate the C++ code
>       for some low-order FEM basis (P1, bubble, etc).
>       If you are not a Rheolef library code developper,
>       you could safely turn it off.
`--with-boost-incdir`=incdir_boost
>       Specifies the include directory
>       for the `boost` library.
>       This library is required by rheolef.
`--with-boost-libdir`=libdir_boost
>       Specifies the corresponding library directory.
`--with-eigen-incdir`=incdir_eigen
>       Specifies the include directory
>       for the `eigen` library.
>       This library is required by rheolef.
`--with-eigen-libdir`=libdir_eigen
>       Specifies the corresponding library directory.
`--enable-debug`
>       Produce a `c++ -g` like code and turn on some runtime checks.
`--enable-dmalloc`
>       With debugging, also uses dynamic allocation runtime checking
>	     with `dmalloc` when available.
`--enable-mpi`
>       Turns on/off the distributed computation features.
>       Default is on when distributed is on. This feature is currently in development.
>       When on, configure try to detect either the scotch or the parmetis libraries.
`--with-scotch-incdir`=incdir_scotch
>       Specifies the include directory
>       for the `scocth` distributed mesh partitioner.
>       Default is to auto-detect when mpi is available.
`--with-scotch-libdir`=libdir_scotch
>       Specifies the corresponding library directory.
>       Check in *libdir_scotch* for `libptscotchparmetis.so`, 
>       `libptscotch.so` and `libptscotcherrexit.so` or
>       corresponding `.a` libraries.
`--with-scotch-libs`=libs_scotch
>       Specifies some alternating library compile flag e.g.
>       `-lscotch`. 
`--with-parmetis-incdir`=incdir_parmetis
>       Specifies the include directory
>       for the `parmetis` distributed mesh partitioner.
>       Default is to autodetect when mpi is available and scotch is unavailable.
`--with-parmetis-libdir`=libdir_parmetis
>       Specifies the corresponding library directory.
>       Check in *libdir_parmetis* for `libparmetis.so`,
>       `libparmetis.a` and also `libmetis.a`
>       `libmetis.so`.
`--with-blas-libdidr`=rheo_libdir_blas
>       Specifies the include directory
>       for the `blas` linear algebra library.
>       Default is to auto-detect.
`--with-blas-libs`=rheo_libs_blas
>       Specifies the corresponding library directory.
`--with-scalapack-libdir`=rheo_libdir_scalapack
>       Specifies the library directory
>       for the `scalapack` library.
>       Default is to auto-detect when `mpi` is available.
`--with-scalapack-libs`=rheo_libs_scalapack
>       Specifies some alternating library compile flag e.g.
>       `-lscalapack`. 
`--with-mumps-incdir`=incdir_mumps
>       Specifies the include directory
>       for the `mumps` linear algebra library.
>       Default is to auto-detect.
`--with-mumps-libdir`=libdir_mumps
>       Specifies the corresponding library directory.
`--with-mumps-libs`=libs_mumps
>       Specifies some alternating library compile flag e.g.
>       `-lmumps`. 
`--with-trilinos`=libdir_trilinos
>       Specifies the library directory
>       for the `trilinos/ifpack` preconditioner library.
>       Check in *libdir_trilinos* for `libtrilinos_ifpack.so`, 
>       or the corresponding `.a` libraries.
>       The `trilinos` support is actually broken.
`--with-cholmod-incdir`=incdir_cholmod
>       Specifies the include directory
>       for the `cholmod` direct solver library
>       for sparse symmetric definite positive matrix.
>       Default is to auto-detect.
`--with-cholmod-libdir`=libdir_cholmod
>       Specifies the corresponding library directory.
>       Default *incdir_cholmod* is *libdir_cholmod*\ .
>       Check in *libdir_cholmod* for `libcholmod.so` or
>       `libcholmod.a` and for header
>       *incdir_cholmod*\ `/cholmod.h` or *incdir_cholmod*\ `/cholmod/cholmod.h`.
`--with-cholmod-libs`=libs_cholmod
>       Specifies some alternating library compile flag e.g.
>       `-lcholmod`. 
`--with-umfpack-incdir`=incdir_umfpack
>       Specifies the include directory
>       for the `umfpack` direct solver library
>       for sparse unsymmetric matrix.
>       Default is to auto-detect.
`--with-umfpack-libdir`=libdir_umfpack
>       Specifies the corresponding library directory.
>       Default *incdir_umfpack* is *libdir_umfpack*\ .
>       Check in *libdir_umfpack* for `libumfpack.so` or
>       `libumfpack.a` and for header
>       *incdir_umfpack*\ `/umfpack.h`
>       or *incdir_umfpack*\ `/umfpack/umfpack.h`.
`--with-umfpack-libs`=libs_umfpack
>       Specifies some alternating library compile flag e.g.
>       `-lumfpack`. 
`--with-cgal-incdir`=incdir_cgal
>       Specifies the include directory
>       for the `cgal` discrete geometry library.
>       Default is to auto-detect.
`--with-cgal-libdir`=libdir_cgal
>       Check in *libdir_cgal* for `libcgal.so`, 
>       or the corresponding `.a` libraries.
`--with-cgal-libs`=libs_cgal
>       Specifies some alternating library compile flag e.g.
        `-lCGAL`. 
`--enable-optim`
>       Turns compile-time optimization to maximum available.
>       Include architecture-dependent compilation (e.g. on intel, executable
>       are less portable across intel variants).
>       Default is on.