![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Restarted GMRES for a block of right-hand sides sharing one coefficient matrix. More...
#include <cstddef>#include <vector>#include "line/api/mc/ctmc_gmres.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::mc::GmresMultiResult< T > |
Namespaces | |
| namespace | line |
| namespace | line::mc |
Functions | |
| template<class T> | |
| GmresMultiResult< T > | line::mc::ctmc_gmres_multi (const Matrix< T > &A, const Matrix< T > &B, double tol=1e-12, long restart=0, long maxit=0) |
| Restarted GMRES for a block of right-hand sides sharing one coefficient matrix. | |
Restarted GMRES for a block of right-hand sides sharing one coefficient matrix.
Templated port of matlab/src/api/mc/ctmc_gmres_multi.m and the multi-column overload of jar/src/main/java/jline/api/mc/Ctmc_gmres.java. Every column is solved against the SAME equilibration, reordering and ILUT factorization, and each column starts from the previous column's solution: this is the shape of the stochastic complement, whose right-hand side is a whole block of the generator, and refactorizing per column would cost more than the direct solve the method replaces.
FLAG is zero only when every column converged. On any other value the result matrix is empty and the caller must fall back to the direct solve; returning a partially converged block would leave the fallback ambiguous, which is the reference's rule and is kept.
GATED ON TRANSCENDENTAL ARITHMETIC, for the reason given in ctmc_gmres: the iteration stops on a residual tolerance and normalizes by a Euclidean norm.
Definition in file ctmc_gmres_multi.h.