From: Wolfgang Bangerth yes
indicates whether some subroutines from
the HSL have been explicitely installed and shall be used
by the library. no
otherwise.
+ (See the
+ ReadMe
+ file for more information on installation of HSL subroutines.)
Path and name of the library that contains the HSL subroutines explicitely installed. + (See the + ReadMe + file for more information on installation of HSL + subroutines.)
+ The Harwell Subroutine Library (HSL) is a collection of + Fortran77 files that implement various methods to solve linear + systems of equations, but also cover various other aspects of + mathematical algorithms. deal.II is presently + able to use two of the sparse direct solvers implemented in that + library: +
MA27: A modified Gauss elimination method for sparse + symmetric indefinite systems.
+MA47: A frontal elimination method for sparse symmetric + indefinite systems.
+SparseDirectMA27
and SparseDirectMA47
+ (see the online reference in the LAC sublibrary for more
+ information).
+
+
+ + With respect to the integration of these functions into + deal.II, there are two problems: Firstly, for + license reasons, we can not, however, include these solvers in the + standard distribution of the library, so you have to download them + yourself, if you want to use them. Secondly, these functions are + usually downloaded as single files, rather than as a complete + library, so one does not usually build up a whole library against which + a deal.II program could be linked, but is left + with the individual files. +
+ ++ Our solution to this problem is as follows: +
+ If you want to use any of these subroutines, then you have to + download them from the HSL server. Note that the license is rather + restrictive. +
+ ++ For MA27, you have to have the main file, while for MA47 + there are two files, one for the main algorithm and one with + support functions. +
+ +
+ Drop these files into the directory
+ deal.II/contrib/hsl/source
, with names
+ ma27.f
(for MA27), and ma47.f
and
+ ma47dep.f
(for MA47). There should already be a
+ file called ma27sup.f
. Note that the exact names
+ (including letter case) of the files matter.
+
+ Run (or re-run) the ./configure
script in the
+ top level directory of deal.II. It should,
+ at one point, print a message which functions from HSL it has
+ found. This sets some flags for subsequent compilations
+ (preprocessor defines HAVE_HSL_MA27,
+ HAVE_HSL_MA47
and Makefile variable
+ USE_CONTRIB_HSL=yes
) that
+ these functions have been found and can be used, rather than
+ dummy functions that only display an error and abort the
+ program if called.
+
+ +
+ Compile the library (a description of how to do so is found
+ in the ReadMe
+ file). If you had already made it, first clean the directory
+ by calling make clean
in the top level directory.
+
+ Note that if the respective functions have not been found at + configure time, then the classes using them are still available to + programs, but when called will issue an error message and abort + the program with an exception. +
+ +
+ If HSL functions have been found, then we also have some Fortran77
+ code in the system. Of course, the requires that some F77 compiler
+ has been found at configure time, but note that this also changes
+ the libraries that need to be linked to the program. For example,
+ on Sun, these are the libraries -lF77 -lsunmath
+ -lM77
. Usually, the right set of additional libraries
+ should be detected automatically at configure time, and the
+ respective flags should also be set correctly without user
+ interaction.
+
SparseDirectMA27
and
+ SparseDirectMA47
+ for the sparse direct solvers MA27 and MA47.
+ (See the ReadMe
+ file for more information on installation of HSL
+ subroutines.)
- It is also possible to use some subroutines from the ... + It is also possible to use some subroutines from the + Harwell Subroutine Library (HSL) to make use + of some sparse direct solvers. For a description of how to + include these functions, see + this page.
diff --git a/deal.II/lac/include/lac/sparse_direct.h b/deal.II/lac/include/lac/sparse_direct.h index 3f89fd2f07..fa9fd11881 100644 --- a/deal.II/lac/include/lac/sparse_direct.h +++ b/deal.II/lac/include/lac/sparse_direct.h @@ -35,6 +35,9 @@ * etc. It also manages allocation of the right amount of temporary * storage required by these functions. * + * For a description of the steps necessary for the installation of + * HSL subroutines, read the section on external libraries in the + * deal.II ReadMe file. * * @section3{Interface and Method} *