Loading...
Searching...
No Matches
superlu.hh File Reference
Iterative Solvers Template Library (ISTL)

Classes for using SuperLU with ISTL matrices. More...

`#include "superlufunctions.hh"`
`#include "solvers.hh"`
`#include "supermatrix.hh"`
`#include <algorithm>`
`#include <functional>`
`#include "bcrsmatrix.hh"`
`#include "bvector.hh"`
`#include "istlexception.hh"`
`#include <dune/common/fmatrix.hh>`
`#include <dune/common/fvector.hh>`
`#include <dune/common/stdstreams.hh>`
`#include <dune/istl/solvertype.hh>`
`#include <dune/istl/solverfactory.hh>`

Go to the source code of this file.

## Classes

struct | Dune::SuperLUSolveChooser< T >
struct | Dune::SuperLUDenseMatChooser< T >
struct | Dune::SuperLUQueryChooser< T >
struct | Dune::QuerySpaceChooser< T >
class | Dune::SuperLU< M >
| SuperLu Solver. More...
struct | Dune::IsDirectSolver< SuperLU< BCRSMatrix< T, A > > >
struct | Dune::StoresColumnCompressed< SuperLU< BCRSMatrix< T, A > > >

## Namespaces

namespace | Dune

## Functions

Dune::DUNE_REGISTER_SOLVER ("superlu", [](auto opTraits, const auto &op, const Dune::ParameterTree &config) -> std::shared_ptr< typename decltype(opTraits)::solver_type > { using OpTraits=decltype(opTraits);using M=typename OpTraits::matrix_type;if constexpr(OpTraits::isParallel){ if(opTraits.getCommOrThrow(op).communicator().size() > 1) DUNE_THROW(Dune::InvalidStateException, "SuperLU works only for sequential operators.");} if constexpr(OpTraits::isAssembled &&std::is_same_v< typename FieldTraits< M >::real_type, double >){ if constexpr(std::is_convertible_v< SuperLU< M > *, Dune::InverseOperator< typename OpTraits::domain_type, typename OpTraits::range_type > * >){ const auto &A=opTraits.getAssembledOpOrThrow(op);const M &mat=A->getmat();int verbose=config.get("verbose", 0);return std::make_shared< Dune::SuperLU< M > >(mat, verbose);} } DUNE_THROW(UnsupportedType, "Unsupported Type in SuperLU (only double and std::complex<double> supported)");})

## Detailed Description

Classes for using SuperLU with ISTL matrices.

Author
  Markus Blatt