|
dune-istl 2.11
|
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.
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;}) | |
Classes for using UMFPack with ISTL matrices.