Commit 3369777f authored by MIJIEUX Thomas's avatar MIJIEUX Thomas

Remove useless code add Add wrapper for ortho

parent 974a2568
......@@ -266,6 +266,7 @@ public:
compute_solution(A, X);
if (_cold_restart) {
FABULOUS_WARNING("cold restart");
_base.reset();
} else if (restarter && !convergence) {
int M = _hess.get_nb_vect() + _nbRHS;
......
......@@ -176,6 +176,15 @@ private:
return minmaxconv;
}
template<class Matrix>
void do_ortho(Matrix &A, OrthoParam &orthoparm)
{
Orthogonalizer ortho{orthoparm};
_logger.notify_ortho_begin();
ortho.run(_F, _base, _WP, A); // Ortho and filling of L (the (IB) Hessenberg)
_logger.notify_ortho_end();
}
template<class Matrix, class Block, class Epsilon, class Restarter>
void initial_iteration(Matrix &A, Block &X, Block &B, Restarter &restarter,
const Epsilon &epsilon, const Epsilon &inv_epsilon)
......@@ -438,25 +447,13 @@ public:
Block<S> Vj = _base.get_Vj();
W_AMV(A, Vj, _WP); // W <- A*M*Vj: perform matrix multiplication
// Ortho and filling of L (the (IB) Hessenberg)
Orthogonalizer ortho{orthoparm};
_logger.notify_ortho_begin();
ortho.run(_F, _base, _WP, A);
_logger.notify_ortho_end();
do_ortho(A, orthoparm);
auto MinMaxConv = check_least_square_residual(epsilon);
bool proj_convergence = std::get<2>(MinMaxConv);
convergence = check_real_residual_if(proj_convergence, A, X, B, epsilon);
if (!convergence) {
do_R_criterion(proj_convergence, epsilon, inv_epsilon, A, X, restarter);
} else if (restarter) {
Block<S> PR{_F.get_nb_vect()+_nbRHS, _nbRHS};
_F.compute_proj_residual(PR);
restarter.save_LS(PR);
Block<S> H = _F.get_hess_block();
restarter.save_hess(H);
restarter.save_WP(_WP);
}
_size_krylov_space = _base.get_nb_vect();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment