geodynamics / aspect

A parallel, extensible finite element code to simulate convection in both 2D and 3D models.
https://aspect.geodynamics.org/
Other
223 stars 236 forks source link

Non-convergence of advection solver in parallel #938

Closed gassmoeller closed 7 years ago

gassmoeller commented 8 years ago

The attached parameter file crashes with 2 MPI processes in the 7th time step (mesh refinement happens in 5th timestep), but runs in serial.

spherical_shell.txt

bangerth commented 8 years ago

Can you show the error?

gassmoeller commented 8 years ago

*\ Timestep 7: t=2.96465e+07 years Solving temperature system...


Exception on processing:


An error occurred in line <477> of file </home/rengas/Software/Aspect-Versionen/aspect/source/simulator/solver.cc> in function double aspect::Simulator::solve_advection(const aspect::Simulator::AdvectionField&) [with int dim = 2] The violated condition was: false The name and call sequence of the exception was: ExcMessage (std::string("The iterative advection solver " "did not converge. It reported the following error:\n\n") + exc.what()) Additional Information: The iterative advection solver did not converge. It reported the following error:


An error occurred in line <1109> of file </home/rengas/Software/deal.II-dev/include/deal.II/lac/solver_gmres.h> in function void dealii::SolverGMRES::solve(const MatrixType&, VectorType&, const VectorType&, const PreconditionerType&) [with MatrixType = dealii::TrilinosWrappers::SparseMatrix; PreconditionerType = dealii::TrilinosWrappers::PreconditionILU; VectorType = dealii::TrilinosWrappers::MPI::Vector] The violated condition was: iteration_state == SolverControl::success The name and call sequence of the exception was: SolverControl::NoConvergence (accumulated_iterations, last_res) Additional Information: Iterative method reported convergence failure in step 1000. The residual in the last step was 1.94167e+19.

This error message can indicate that you have simply not allowed a sufficiently large number of iterations for your iterative solver to converge. This often happens when you increase the size of your problem. In such cases, the last residual will likely still be very small, and you can make the error go away by increasing the allowed number of iterations when setting up the SolverControl object that determines the maximal number of iterations you allow.

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.


Aborting!


mpirun noticed that the job aborted, but has no info as to the process

that caused that situation.

log.txt

gassmoeller commented 7 years ago

Whatever the problem was it is gone in the current development version. Closing this issue for now.