# PARALUTION

- Download PARALUTION from http://www.paralution.com/.
- Compile, build PARALUTION, and copy headers, and libraries so that Hermes’s CMake system can find them (as with other dependencies)
- On Linux, installing PARALUTION to default install directories is sufficient, on Windows some paths have to be set

- In your CMake.vars file (or directly in CMakeLists.txt) in the root of Hermes (see step 0) add “set(WITH_PARALUTION YES)”
- It is on by default, so by default one has to include PARALUTION to build Hermes

- That is it, build Hermes, it will automatically link to PARALUTION, include headers and make it usable.

# How to use PARALUTION

- Read the doxygen manual of the classes
- Hermes::Algebra::ParalutionMatrix
- Hermes::Algebra::ParalutionVector
- Hermes::Preconditioners::ParalutionPrecond
- Hermes::Solvers::IterativeParalutionLinearMatrixSolver
- Hermes::Solvers::AMGParalutionLinearMatrixSolver
- and all classes that these inherit from / use

- If you want to see Hermes & PARALUTION readily work together, take any test example in the /hermes2d folder in the Hermes root and add one of these lines at the beginning of your main()
- HermesCommonApi.set_integral_param_value(matrixSolverType, SOLVER_PARALUTION_ITERATIVE); // to use iterative solver
- HermesCommonApi.set_integral_param_value(matrixSolverType, SOLVER_PARALUTION_AMG); // to use AMG solver

- Solver classes of Hermes (NewtonSolver, PicardSolver, LinearSolver, ...) will then take this API setting into account and use PARALUTION as the matrix solver.