From cc3c7240b10b82783b44f14b5228e735dd7578be Mon Sep 17 00:00:00 2001
From: Matthias Maier
deal.II is mostly developed on Linux using the
- GCC compiler. However, it is
+ GCC compiler. However, it is
not platform specific and we strive to keep the source code
compliant with
the C++ 2014
@@ -90,47 +90,47 @@
The library generates output in formats readable by
- GNUPLOT,
- GMV
+ GNUPLOT,
+ GMV
(general mesh viewer),
- Tecplot (ASCII and binary),
- Visualization Toolkit (Vtk),
- AVS Explorer,
- Open DX,
- Povray, and directly to Encapsulated Postscript.
+ Tecplot (ASCII and binary),
+ Visualization Toolkit (Vtk),
+ AVS Explorer,
+ Open DX,
+ Povray, and directly to Encapsulated Postscript.
@@ -167,7 +167,7 @@
deal.II uses the
- CMake integrated configuration and build system. Unpacking will create a subdirectory deal.II/ in the current directory. Then do the following steps to configure the build process (make sure the installation directory is not the same as the location where you unpacked deal.II/):
-
dot
, which is part of the
- GraphViz package
+ Perl 5.x,
+ doxygen and dot
, which is part of the
+ GraphViz package
gnuplot
and a postscript viewer (for eps
) should be available almost everywhere. In the last few years, most new visualization programs have moved to support
vtk
/vtu
format. There are a number of excellent programs that can read vtk
and
vtu
, such as
- VisIt,
- ParaView, as well as others. Povray is freely available for almost all platforms. AVS is a commercial program available for most Unix flavors. Tecplot is a commercial program available
+ VisIt,
+ ParaView, as well as others. Povray is freely available for almost all platforms. AVS is a commercial program available for most Unix flavors. Tecplot is a commercial program available
for Windows and most Unix platforms.
mkdir build @@ -267,8 +267,8 @@Configuring and building the documentation
- All the documentation about the version that you downloaded and that can be found at the - http://www.dealii.org/ domain can also be generated locally. To do so, invoke
cmake
in the build instructions above as follows: + All the documentation about the version that you downloaded and that can be found at the + https://www.dealii.org/ domain can also be generated locally. To do so, invokecmake
in the build instructions above as follows:@@ -280,8 +280,8 @@As usual, you can pass
-jN
tomake
in order to use more than one processor. - For this to succeed, you will need Perl 5.x, - doxygen anddot
(which is part of the GraphViz package) to be installed. + For this to succeed, you will need Perl 5.x, + doxygen anddot
(which is part of the GraphViz package) to be installed.@@ -327,13 +327,13 @@
Threading: By default, deal.II supports parallelism between multiple cores on the same machine using threads and a task-based model built on the
- Threading Building Blocks. You can switch threading inside the library off by passing the -DDEAL_II_WITH_TBB=OFF
argument to cmake
.
+ Threading Building Blocks. You can switch threading inside the library off by passing the -DDEAL_II_WITH_TBB=OFF
argument to cmake
.
- MPI: To enable parallel computations beyond a single node using the Message
+ MPI: To enable parallel computations beyond a single node using the Message
Passing Interface (MPI), pass the
-DDEAL_II_WITH_MPI=ON
argument to cmake
. If cmake
found MPI but you specifically do not want to use it, then pass -DDEAL_II_WITH_MPI=OFF
.
The minimal supported version is MPI-3.0.
@@ -365,7 +365,7 @@
When configuring interfacing to external libraries, the
cmake
script by default tries to find all of these libraries in a number of standard locations on your file system. For optional interfaces, it gives up if the library is not found and deal.II will be built
- without support for them. However, there is one interface that we need to have: BOOST 1.59 or newer. If it is not found externally cmake
will resort to the bundled boost version
+ without support for them. However, there is one interface that we need to have: BOOST 1.59 or newer. If it is not found externally cmake
will resort to the bundled boost version
that is part of the deal.II tar file.
- ARPACK is a library for computing large scale eigenvalue problems.
- ARPACK should be readily packaged by most Linux distributions. To use a self compiled version, pass
+ ARPACK is a library for computing large scale eigenvalue problems.
+ ARPACK should be readily packaged by most Linux distributions. To use a self compiled version, pass
-DARPACK_DIR=/path/to/arpack
to the deal.II CMake call. For a detailed description on how to compile ARPACK and linking with deal.II, see
this page.
- is a portable Open Source library to import various well-known 3D model formats in a uniform manner. A subset of these formats can be read from within deal.II to generate two-dimensional
+ is a portable Open Source library to import various well-known 3D model formats in a uniform manner. A subset of these formats can be read from within deal.II to generate two-dimensional
meshes, possibly embedded in a three-dimensional space.
- Assimp should be readily packaged by most Linux distributions. To use a self compiled version, pass
+ Assimp should be readily packaged by most Linux distributions. To use a self compiled version, pass
-DASSIMP_DIR=/path/to/assimp
to the deal.II CMake call.
- BLAS (the Basic Linear Algebra Subroutines) and - LAPACK ( + BLAS (the Basic Linear Algebra Subroutines) and + LAPACK ( Linear Algebra Package) are two packages that support low-level linear algebra operations on vectors and dense matrices. Both libraries should be packaged by almost all Linux distributions and found automatically whenever available. (You might have to install development versions of the libraries for deal.II being able to use them). For details on how to set up deal.II with a non standard BLAS/LAPACK implementation, see this page. @@ -505,10 +505,10 @@
- Gmsh + Gmsh is a 3D mesh generator. The executable can be used to create meshes from within deal.II by specifying the relevant input data. Gmsh should be readily @@ -520,20 +520,20 @@
- The GNU Scientific Library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting.
- GSL should be readily packaged by most Linux distributions. To use a self compiled version, pass
+ The GNU Scientific Library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting.
+ GSL should be readily packaged by most Linux distributions. To use a self compiled version, pass
-DGSL_DIR=/path/to/gsl
to the deal.II CMake call.
- The HDF5 library provides graphical output capabilities in HDF5/XDMF
format.
- HDF5 should be readily packaged by most Linux distributions. To use a self compiled version, pass
+ The HDF5 library provides graphical output capabilities in HDF5/XDMF
format.
+ HDF5 should be readily packaged by most Linux distributions. To use a self compiled version, pass
-DHDF5_DIR=/path/to/hdf5
to the deal.II CMake call.
- METIS is a library that provides various methods to partition graphs. deal.II uses it in programs like the step-17 tutorial to partition
+ METIS is a library that provides various methods to partition graphs. deal.II uses it in programs like the step-17 tutorial to partition
a mesh for parallel computing. To use a self compiled version, pass
-DMETIS_DIR=/path/to/metis
to the deal.II CMake call.
deal.II supports METIS 5 and later.
@@ -569,32 +569,32 @@
- muparser is a library that allows to enter functions in text form and have them interpreted at run time. This is particularly useful in input parameter files. cmake
will usually
+ muparser is a library that allows to enter functions in text form and have them interpreted at run time. This is particularly useful in input parameter files. cmake
will usually
find the version of this library that comes bundled with deal.II, but you can specify -DMUPARSER_DIR=/path/to/muparser
if desired.
- p4est is a library that deal.II uses to distribute very large meshes across multiple processors (think meshes with a billion cells on 10,000 processors). Using and
+ p4est is a library that deal.II uses to distribute very large meshes across multiple processors (think meshes with a billion cells on 10,000 processors). Using and
installing p4est is discussed here. To use a self compiled version, pass the argument
-DP4EST_DIR=/path/to/p4est
to the
cmake
command.
@@ -602,13 +602,13 @@
- PETSc is a library that supports parallel linear algebra and many other things.
+ PETSc is a library that supports parallel linear algebra and many other things.
- PETSc is already packaged by some Linux distributions and should be found automatically if present. To use a
+ PETSc is already packaged by some Linux distributions and should be found automatically if present. To use a
self compiled version of PETSc, add -DPETSC_DIR=/path/to/petsc
-DPETSC_ARCH=architecture
to the argument list for
cmake
. The values for these arguments must be the same as those specified when building PETSc.
@@ -623,11 +623,11 @@
- scalapack is a library of high-performance linear algebra routines for parallel distributed memory machines. ScaLAPACK solves dense and banded linear systems, least squares problems, eigenvalue
+ scalapack is a library of high-performance linear algebra routines for parallel distributed memory machines. ScaLAPACK solves dense and banded linear systems, least squares problems, eigenvalue
problems, and singular value problems. In order to enable this feature, add
-DSCALAPACK_DIR=/path/to/scalapack
to the argument list for
cmake
. If ScaLAPACK does not have embedded BLACS, you might need to pass -DBLACS_DIR=/path/to/blacs
as well.
@@ -669,23 +669,23 @@
- The Threading Building Blocks (TBB) is a library that provides advanced services for using multiple processor cores on a single machine and is used in deal.II to parallelize many operations. If not found in a system-wide location, cmake
will resort to the version bundled as part of the deal.II download. It is always enabled unless threads are explicitly disabled,
+ The Threading Building Blocks (TBB) is a library that provides advanced services for using multiple processor cores on a single machine and is used in deal.II to parallelize many operations. If not found in a system-wide location, cmake
will resort to the version bundled as part of the deal.II download. It is always enabled unless threads are explicitly disabled,
see above.
- Trilinos is a library for
parallel linear algebra and all sorts of other
things as well. To interface with a self compiled
- version of Trilinos
add -DTRILINOS_DIR=/path/to/trilinos
to the argument list
@@ -704,11 +704,11 @@
- UMFPACK, which is part of SuiteSparse, is a sparse direct solver that we often use in prototype codes where the goal is to simply get a linear system solved robustly.
+ UMFPACK, which is part of SuiteSparse, is a sparse direct solver that we often use in prototype codes where the goal is to simply get a linear system solved robustly.
The interface will be enabled by default, either using a version installed on your system of using a version that comes bundled with
deal.II. It can be disabled explicitly by using the
-DDEAL_II_WITH_UMFPACK=OFF
argument. To use a self compiled version, pass the argument
@@ -722,7 +722,7 @@
with it. You can find the license of SuiteSparse inside
the SuiteSparse download at the link given above. We
include UMFPACK in the deal.II repository courtesy of
- its author, Timothy A. Davis.
+ its author, Timothy A. Davis.
- zlib is a software library used for lossless data-compression. It is used in deal.II whenever compressed data is to be written.
- zlib should be readily packaged by most Linux distributions. To use a self compiled version, pass
+ zlib is a software library used for lossless data-compression. It is used in deal.II whenever compressed data is to be written.
+ zlib should be readily packaged by most Linux distributions. To use a self compiled version, pass
-DZLIB_DIR=/path/to/zlib
to the deal.II CMake call.
The deal.II library is free software; you can use it, redistribute it, and/or modify it under the terms of the - GNU Lesser General + GNU Lesser General Public License (LGPL) as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This allows you to use the library free of charge for private, academic, or commercial use (under the terms of the LGPL v2.1 or later). You are guaranteed full access to the source code and are encouraged to help in the further development of the library. Follow - this + this link for detailed information.
@@ -784,7 +784,7 @@