Loading...
Searching...
No Matches
Dune::SPQR< BCRSMatrix< FieldMatrix< T, n, m >, A > > Class Template Referenceabstract
Iterative Solvers Template Library (ISTL)

The SPQR direct sparse solver for matrices of type BCRSMatrix. More...

`#include <dune/istl/spqr.hh>`

Inheritance diagram for Dune::SPQR< BCRSMatrix< FieldMatrix< T, n, m >, A > >:

## Public Types

typedef Dune::BCRSMatrix< FieldMatrix< T, n, m >, A > | Matrix
| The matrix type.
typedef Dune::BCRSMatrix< FieldMatrix< T, n, m >, A > | matrix_type
typedef ISTL::Impl::BCCSMatrix< T, int > | SPQRMatrix
| The corresponding SuperLU Matrix type.
typedef ISTL::Impl::BCCSMatrixInitializer< BCRSMatrix< FieldMatrix< T, n, m >, A >, int > | MatrixInitializer
| Type of an associated initializer class.
typedef Dune::BlockVector< FieldVector< T, m >, typename std::allocator_traits< A >::template rebind_alloc< FieldVector< T, m > > > | domain_type
| The type of the domain of the solver.
typedef Dune::BlockVector< FieldVector< T, n >, typename std::allocator_traits< A >::template rebind_alloc< FieldVector< T, n > > > | range_type
| The type of the range of the solver.
typedef BlockVector< FieldVector< T, m >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, m > > >::field_type | field_type
| The field type of the operator.
typedef FieldTraits< field_type >::real_type | real_type
| The real type of the field type (is the same if using real numbers, but differs for std::complex).
typedef Simd::Scalar< real_type > | scalar_real_type
| scalar type underlying the field_type

## Public Member Functions

SolverCategory::Category | category () const override
| Category of the solver (see SolverCategory::Category).
| SPQR (const Matrix &matrix, int verbose=0)
| Construct a solver object from a BCRSMatrix.
| SPQR (const Matrix &matrix, int verbose, bool)
| Constructor for compatibility with SuperLU standard constructor.
| SPQR (const Matrix &matrix, const ParameterTree &config)
| Constructs the SPQR solver.
| SPQR ()
| Default constructor.
virtual | ~SPQR ()
| Destructor.
void | apply (domain_type &x, range_type &b, InverseOperatorResult &res) override
| Apply inverse operator,.
void | apply (domain_type &x, range_type &b, double reduction, InverseOperatorResult &res) override
| apply inverse operator, with given convergence criteria.
void | setOption (unsigned int option, double value)
void | setMatrix (const Matrix &matrix)
| Initialize data from given matrix.
template<class S>
void | setSubMatrix (const Matrix &matrix, const S &rowIndexSet)
void | setVerbosity (int v)
| Sets the verbosity level for the solver.
SuiteSparseQR_factorization< T > * | getFactorization ()
| Return the matrix factorization.
SPQRMatrix & | getInternalMatrix ()
| Return the column coppressed matrix.
void | free ()
| Free allocated space.
const char * | name ()
| Get method name.
virtual void | apply (BlockVector< FieldVector< T, m >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, m > > > &x, BlockVector< FieldVector< T, n >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, n > > > &b, InverseOperatorResult &res)=0
| Apply inverse operator,.

## Protected Types

enum |

## Protected Member Functions

void | printHeader (std::ostream &s) const
| helper function for printing header of solver output
void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm, const DataType &norm_old) const
| helper function for printing solver output

## Friends

template<class M, class X, class TM, class TD, class T1>
class | SeqOverlappingSchwarz
struct | SeqOverlappingSchwarzAssemblerHelper< SPQR< Matrix >, true >

## Detailed Description

template<typename T, typename A, int n, int m>
class Dune::SPQR< BCRSMatrix< FieldMatrix< T, n, m >, A > >

The SPQR direct sparse solver for matrices of type BCRSMatrix.

Specialization for the Dune::BCRSMatrix. SPQR will always go double precision and supports complex numbers too (use std::complex<double> for that).

Template Parameters

  T | Number type. Only double and std::complex<double> is supported
  A | STL-compatible allocator type
  n | Number of rows in a matrix block
  m | Number of columns in a matrix block

Note
  This will only work if dune-istl has been configured to use SPQR

## Member Typedef Documentation

## field_type

typedef BlockVector< FieldVector< T, m >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, m > > >::field_type Dune::InverseOperator< BlockVector< FieldVector< T, m >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, m > > >, BlockVector< FieldVector< T, n >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, n > > > >::field_type

inherited

The field type of the operator.

## real_type

typedef FieldTraits<field_type>::real_type Dune::InverseOperator< BlockVector< FieldVector< T, m >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, m > > >, BlockVector< FieldVector< T, n >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, n > > > >::real_type

inherited

The real type of the field type (is the same if using real numbers, but differs for std::complex).

## scalar_real_type

typedef Simd::Scalar<real_type> Dune::InverseOperator< BlockVector< FieldVector< T, m >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, m > > >, BlockVector< FieldVector< T, n >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, n > > > >::scalar_real_type

inherited

scalar type underlying the field_type

## Member Enumeration Documentation

## anonymous enum

anonymous enum

protected inherited

## Member Function Documentation

## apply()

virtual void Dune::InverseOperator< BlockVector< FieldVector< T, m >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, m > > >, BlockVector< FieldVector< T, n >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, n > > > >::apply | ( | BlockVector< FieldVector< T, m >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, m > > > & | x,
|  | BlockVector< FieldVector< T, n >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, n > > > & | b,
|  | InverseOperatorResult & | res )

pure virtual inherited

Apply inverse operator,.

Warning
  Note: right hand side b may be overwritten!

Parameters

  x | The left hand side to store the result in.
  b | The right hand side
  res | Object to store the statistics about applying the operator.

Exceptions

  SolverAbort | When the solver detects a problem and cannot continue

## printHeader()

void Dune::InverseOperator< BlockVector< FieldVector< T, m >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, m > > >, BlockVector< FieldVector< T, n >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, n > > > >::printHeader | ( | std::ostream & | s | ) | const

inline protected inherited

helper function for printing header of solver output

## printOutput()

void Dune::InverseOperator< BlockVector< FieldVector< T, m >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, m > > >, BlockVector< FieldVector< T, n >, std::allocator_traits< A >::template rebind_alloc< FieldVector< T, n > > > >::printOutput | ( | std::ostream & | s,
|  | const CountType & | iter,
|  | const DataType & | norm,
|  | const DataType & | norm_old ) const

inline protected inherited

helper function for printing solver output

The documentation for this class was generated from the following file:

- spqr.hh