Hi,
I'm having a problem for some values of parameters in my code.
I get an error "dealii::SolverControl::NoConvergence", almost instantly after the start of the solving process. The status at the end is this :
"Iterative method reported convergence failure in step 1959. The residual in the last step was nan."
Here is some details about my problem.
I'm solving this equation in phi :
with u and v, speeds that are calculated in another part of the code.
Since it is a non linear problem in phi, i'm using a Newton method to solve it.
I have developped my Newton Method and calculated the part that I'm assembling.
As you can see, it is a non symmetric problem because of the advection term and as such, i'm using the Bicgstab solver like this :
SolverControl solver_control(phi_system_rhs.size()*2,1e-10);
SolverBicgstab<Vector<double>> solver(solver_control);
PreconditionJacobi<> preconditioner;
preconditioner.initialize(phi_system_matrix, 1.0);
solver.solve(phi_system_matrix, phi_update, phi_system_rhs, preconditioner);
phi_constraints.distribute(phi_update);
Note that if I use a direct solver like this :
SparseDirectUMFPACK A_direct;
A_direct.initialize(phi_system_matrix);
A_direct.vmult(phi_update, phi_system_rhs);
phi_constraints.distribute(phi_update);
I don't get an error but it is of course much slower (and the newton method painfully converge but I knew this was gonna be difficult).
"The other situation where this error may occur is when your matrix
is not invertible (e.g., your matrix has a null-space), or if you try
to apply the wrong solver to a matrix (e.g., using CG for a matrix that
is not symmetric or not positive definite). In these cases, the residual
in the last iteration is likely going to be large."
This message at the end of the error made me wonder if I was choosing a bad solver for this task and tried to find the Bicgstab recquirements. Unfortunately, I was not able to find the recquirements for the Bicgstab in the documentation.
I found
this page that tells me to go to the solver base for requirements but I could not find the solverBase page with this information.
So could someone point me in the right direction and/or tell me if they have an idea of why this solver is not converging in my case ?
Thanks again for developing dealii that is very useful to my research.