Spec-Zone.ru › Eigen3

Eigen::DGMRES

template<typename _MatrixType, typename _Preconditioner>
class Eigen::DGMRES< _MatrixType, _Preconditioner >

A Restarted GMRES with deflation. This class implements a modification of the GMRES solver for sparse linear systems. The basis is built with modified Gram-Schmidt. At each restart, a few approximated eigenvectors corresponding to the smallest eigenvalues are used to build a preconditioner for the next cycle. This preconditioner for deflation can be combined with any other preconditioner, the IncompleteLUT for instance. The preconditioner is applied at right of the matrix and the combination is multiplicative.

Template Parameters
_MatrixType тип разреженной матрицы A, может быть плотной или разреженной.
_Preconditioner тип предобуславливателя. По умолчанию — DiagonalPreconditioner Типичное использование:
SparseMatrix<double> A;
VectorXd x, b; 
//Fill A and b ...
DGMRES<SparseMatrix<double> > solver;
solver.set_restart(30); // Set restarting value
solver.setEigenv(1); // Set the number of eigenvalues to deflate
solver.compute(A);
x = solver.solve(b);

DGMRES также можно использовать в контексте без матриц, см. следующий пример.

Ссылки: [1] D. NUENTSA WAKAM and F. PACULL, Memory Efficient Hybrid Algebraic Solvers for Linear Systems Arising from Compressible Flows, Computers and Fluids, In Press, https://doi.org/10.1016/j.compfluid.2012.03.023
[2] K. Burrage and J. Erhel, On the performance of various adaptive preconditioned GMRES strategies, 5(1998), 101-121. [3] J. Erhel, K. Burrage and B. Pohl, Restarted GMRES preconditioned by deflation,J. Computational and Applied Mathematics, 69(1996), 303-318.

Inheritance graph
Индекс deflSize ()
DGMRES ()
template<typename MatrixDerived >
DGMRES (const EigenBase< MatrixDerived > &A)
Индекс restart ()
void set_restart (const Индекс restart)
void setEigenv (const Индекс neig)
void setMaxEigenv (const Индекс maxNeig)
template<typename Rhs , typename Dest >
void dgmres (const MatrixType &mat, const Rhs &rhs, Dest &x, const Preconditioner &precond) const
Выполнить несколько циклов перезапуска GMRES с изменённым градиентным спуском. Подробнее...
template<typename Dest >
Индекс dgmresCycle (const MatrixType &mat, const Preconditioner &precond, Dest &x, DenseVector &r0, RealScalar &beta, const RealScalar &normRhs, Индекс &nbIts) const
Выполнить один цикл перезапуска DGMRES. Подробнее...

DGMRES() [1/2]

template<typename _MatrixType , typename _Preconditioner >
Eigen::DGMRES< _MatrixType, _Preconditioner >::DGMRES ( )
inline

Конструктор по умолчанию.

DGMRES() [2/2]

template<typename _MatrixType , typename _Preconditioner >
template<typename MatrixDerived >
Eigen::DGMRES< _MatrixType, _Preconditioner >::DGMRES ( const EigenBase< MatrixDerived > & A )
inlineexplicit

Инициализирует решатель матрицей A для дальнейшего Ax=b решения.

Этот конструктор — сокращение для конструктора по умолчанию, за которым следует вызов compute().

Предупреждение
Этот класс хранит ссылку на матрицу A, а также некоторые предварительно вычисленные значения, которые зависят от неё. Поэтому, если A изменена, этот класс становится недействительным. Вызовите compute(), чтобы обновить его новой матрицей A, или измените копию A.

deflSize()

template<typename _MatrixType , typename _Preconditioner >
Индекс Eigen::DGMRES< _MatrixType, _Preconditioner >::deflSize ( )
inline

Получить размер подпространства дефляции

dgmres()

template<typename _MatrixType , typename _Preconditioner >
template<typename Rhs , typename Dest >
void Eigen::DGMRES< _MatrixType, _Preconditioner >::dgmres ( const MatrixType & mat,
const Rhs & rhs,
Dest & x,
const Preconditioner & precond
) const
protected

Выполнить несколько циклов перезапуска GMRES с изменённым градиентным спуском.

Используется предобуславливатель справа в сочетании с дефляцией.

dgmresCycle()

шаблон<typename _MatrixType , typename _Preconditioner >
шаблон<typename Dest >
Индекс Eigen::DGMRES< _MatrixType, _Preconditioner >::dgmresCycle ( const MatrixType & mat,
const Preconditioner & precond,
Dest & x,
DenseVector & r0,
RealScalar & beta,
const RealScalar & normRhs,
Индекс & nbIts
) const
protected

Выполнить один цикл перезапуска для DGMRES.

Параметры
mat Матрица коэффициентов
precond Предусловие
x новое приближенное решение
r0 Вектор начального остатка
beta Норма вычисленного остатка до сих пор
normRhs Норма вектора правой части
nbIts Количество итераций

restart()

шаблон<typename _MatrixType , typename _Preconditioner >
Индекс Eigen::DGMRES< _MatrixType, _Preconditioner >::restart ( )
inline

Получить значение перезапуска

set_restart()

шаблон<typename _MatrixType , typename _Preconditioner >
void Eigen::DGMRES< _MatrixType, _Preconditioner >::set_restart ( const Индекс restart )
inline

Установить значение перезапуска (по умолчанию 30)

setEigenv()

шаблон<typename _MatrixType , typename _Preconditioner >
void Eigen::DGMRES< _MatrixType, _Preconditioner >::setEigenv ( const Индекс neig )
inline

Установить количество собственных значений для дефляции на каждом перезапуске

setMaxEigenv()

шаблон<typename _MatrixType , typename _Preconditioner >
void Eigen::DGMRES< _MatrixType, _Preconditioner >::setMaxEigenv ( const Индекс maxNeig )
inline

Установить максимальный размер подпространства дефляции


Документация для этого класса была сгенерирована из следующего файла:
  • DGMRES.h

© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/unsupported/classEigen_1_1DGMRES.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API