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

Class for using LDL with ISTL matrices. More...

`#include <iostream>`
`#include <memory>`
`#include <type_traits>`
`#include <dune/common/exceptions.hh>`
`#include <dune/istl/bccsmatrixinitializer.hh>`
`#include <dune/istl/solvers.hh>`
`#include <dune/istl/solvertype.hh>`
`#include <dune/istl/solverregistry.hh>`

Go to the source code of this file.

## Classes

class | Dune::LDL< Matrix >
| Use the LDL package to directly solve linear systems – empty default class. More...
class | Dune::LDL< BCRSMatrix< FieldMatrix< T, n, m >, A > >
| The LDL direct sparse solver for matrices of type BCRSMatrix. More...
struct | Dune::IsDirectSolver< LDL< BCRSMatrix< FieldMatrix< T, n, m >, A > > >
struct | Dune::StoresColumnCompressed< LDL< BCRSMatrix< FieldMatrix< T, n, m >, A > > >

## Namespaces

namespace | Dune

## Functions

Dune::DUNE_REGISTER_SOLVER ("ldl", [](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, "LDL works only for sequential operators.");} if constexpr(std::is_convertible_v< LDL< M > *, Dune::InverseOperator< typename OpTraits::domain_type, typename OpTraits::range_type > * > &&std::is_same_v< typename FieldTraits< M >::field_type, double >){ const auto &A=opTraits.getAssembledOpOrThrow(op);const M &mat=A->getmat();int verbose=config.get("verbose", 0);return std::make_shared< LDL< M > >(mat, verbose);} DUNE_THROW(UnsupportedType, "Unsupported Type in LDL (only FieldMatrix<double,...> supported)");})

## Detailed Description

Class for using LDL with ISTL matrices.

Author
  Marco Agnese, Andrea Sacconi