4#include "krylov/fgmres.h"
6namespace rsmesh::krylov {
7 fgmres::fgmres(
const linear_operator& op,
const valuesd& rhs, index_t max_iter)
8 : gmres(op, rhs, max_iter) {}
10 valuesd fgmres::solution_vector()
const {
13 valuesd y = valuesd::Zero(iter_);
14 for (index_t j = iter_ - 1; j >= 0; j--) {
16 for (index_t i = j + 1; i <= iter_ - 1; i++) {
17 y(j) -= r_(j, i) * y(i);
23 for (index_t i = 0; i < iter_; i++) {
24 x += y(i) * zs_.at(i);
30 void fgmres::add_preconditioned_krylov_basis(
const valuesd& z) { zs_.push_back(z); }