Commit b90b54ac authored by PIACIBELLO Cyrille's avatar PIACIBELLO Cyrille Committed by MIJIEUX Thomas

Adding a cold restart if least square residual is small enough but it's not...

Adding a cold restart if least square residual is small enough but it's not true for the real residual, and SVD of residual kept 0 directions
parent 05839a83
......@@ -240,6 +240,20 @@ struct Arnoldi_IB
}
std::cout<<"Decomposition SVD done !\n\t\tSingular Values kept "
<<nbKrylovDirection<<" !"<<std::endl;
if (nbKrylovDirection == 0) {//Suspicious ...
if (!evalConv.hasConverged){ //Even more suspicious
FABULOUS_FATAL_ERROR("Directions kepts during SVD of residuals"
"is equal to 0, but residual itself has "
"not converged. That shouldn't be possible.");
}else{//Cold Restart
//WARNING : Do not DR there because Arnoldi
//relation would be false from the begining
Block Sol{SizeBlock,dim};
ComputeCurrSol(A,X0,base,Y,Sol);
X0.CopyBlock(Sol);
return {returned_struct.sizeKrylovSpace,j,false};
}
}
if (nbKrylovDirection != SizeBlock)
IB_happened = true;
//here : If no inexact breakdowns occured, updates procedures are easier
......
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