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

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

`#include <complex>`
`#include <type_traits>`
`#include <umfpack.h>`
`#include <dune/common/exceptions.hh>`
`#include <dune/common/fmatrix.hh>`
`#include <dune/common/fvector.hh>`
`#include <dune/istl/bccsmatrixinitializer.hh>`
`#include <dune/istl/bcrsmatrix.hh>`
`#include <dune/istl/matrix.hh>`
`#include <dune/istl/foreach.hh>`
`#include <dune/istl/multitypeblockmatrix.hh>`
`#include <dune/istl/multitypeblockvector.hh>`
`#include <dune/istl/solvers.hh>`
`#include <dune/istl/solvertype.hh>`
`#include <dune/istl/solverfactory.hh>`

Go to the source code of this file.

## Classes

struct | Dune::UMFPackMethodChooser< T >
struct | Dune::UMFPackMethodChooser< double >
struct | Dune::UMFPackMethodChooser< std::complex< double > >
class | Dune::UMFPack< M >
| The UMFPack direct sparse solver. More...
struct | Dune::IsDirectSolver< UMFPack< M > >
struct | Dune::StoresColumnCompressed< UMFPack< BCRSMatrix< T, A > > >
struct | Dune::UMFPackImpl::isValidBlock< OpTraits, class >

struct

Dune::UMFPackImpl::isValidBlock< OpTraits, std::enable_if_t< std::is_same_v< Impl::UMFPackDomainType< typename OpTraits::matrix_type >, typename OpTraits::domain_type > &&std::is_same_v< Impl::UMFPackRangeType< typename OpTraits::matrix_type >, typename OpTraits::range_type > &&std::is_same_v< typename FieldTraits< typename OpTraits::domain_type::field_type >::real_type, double > &&std::is_same_v< typename FieldTraits< typename OpTraits::range_type::field_type >::real_type, double > > >

## Namespaces

namespace | Dune
namespace | Dune::UMFPackImpl

## Functions

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

## Detailed Description

Classes for using UMFPack with ISTL matrices.

Author
  Dominic Kempf