Hi~
I just ran this cookbook after updating the ASPECT from repository.
I also test from the newest version of the docker container.
It seems like a problem on the solver converge exists.
And the program forces to stop from error message:
Blockquote
The linear solver tolerance is set to 0.01.
Solving Stokes system… 0±--------------------------------------------------------
TimerOutput objects finalize timed values printed to the
screen by communicating over MPI in their destructors.
Since an exception is currently uncaught, this
synchronization (and subsequent output) will be skipped
to avoid a possible deadlock.
Exception ‘ExcMessage (exception_message.str())’ on rank 0 on processing:
--------------------------------------------------------
An error occurred in line <3035> of file </home/dealii/aspect/source/utilities.cc> in function
void aspect::Utilities::throw_linear_solver_failure_exception(const string&, const string&, const std::vectordealii::SolverControl&, const std::exception&, MPI_Comm, const string&)
The violated condition was:
false
Additional information:
The iterative Stokes solver in
StokesMatrixFreeHandlerImplementation::solve did not converge.
The initial residual was: 9.063574e+12
The final residual is: 9.063574e+12
The required residual for convergence is: 9.063574e+10
See output-continental_extension/solver_history.txt for the full
convergence history.
The solver reported the following error:
--------------------------------------------------------
An error occurred in line <3035> of file
</home/dealii/aspect/source/utilities.cc> in function
void aspect::Utilities::throw_linear_solver_failure_exception(const
string&, const string&, const std::vector<dealii::SolverControl>&,
const std::exception&, MPI_Comm, const string&)
The violated condition was:
false
Additional information:
The iterative (bottom right) solver in
BlockSchurGMGPreconditioner::vmult did not converge.
The initial residual was: 1.182574e-02
The final residual is: 2.005318e-06
The required residual for convergence is: 1.182574e-08
The solver reported the following error:
--------------------------------------------------------
An error occurred in line <1337> of file
</usr/include/deal.II/lac/solver_cg.h> in function
void dealii::SolverCG<VectorType>::solve(const MatrixType&,
VectorType&, const VectorType&, const PreconditionerType&) [with
MatrixType = aspect::MatrixFreeStokesOperators::MassMatrixOperator<2,
1, double>; PreconditionerType = dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double>,
dealii::MGTransferMatrixFree<2, double> >; VectorType =
dealii::LinearAlgebra::distributed::Vector<double>]
The violated condition was:
solver_state == SolverControl::success
Additional information:
Iterative method reported convergence failure in step 100. The
residual in the last step was 2.00532e-06.
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.
Stacktrace:
-----------
#0 aspect-release: void
dealii::SolverCG<dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>
>::solve<aspect::MatrixFreeStokesOperators::MassMatrixOperator<2, 1,
double>, dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >
>(aspect::MatrixFreeStokesOperators::MassMatrixOperator<2, 1, double>
const&, dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>&,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host> const&, dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >
const&)
#1 aspect-release:
aspect::internal::BlockSchurGMGPreconditioner<aspect::MatrixFreeStokesOperators::StokesOperator<2,
2, double>, aspect::MatrixFreeStokesOperators::ABlockOperator<2, 2,
double>, aspect::MatrixFreeStokesOperators::MassMatrixOperator<2, 1,
double>, dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >,
dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >
>::vmult(dealii::LinearAlgebra::distributed::BlockVector<double>&,
dealii::LinearAlgebra::distributed::BlockVector<double> const&) const
#2 aspect-release: void
dealii::SolverFGMRES<dealii::LinearAlgebra::distributed::BlockVector<double>
>::solve<aspect::MatrixFreeStokesOperators::StokesOperator<2, 2,
double>,
aspect::internal::BlockSchurGMGPreconditioner<aspect::MatrixFreeStokesOperators::StokesOperator<2,
2, double>, aspect::MatrixFreeStokesOperators::ABlockOperator<2, 2,
double>, aspect::MatrixFreeStokesOperators::MassMatrixOperator<2, 1,
double>, dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >,
dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >
> >(aspect::MatrixFreeStokesOperators::StokesOperator<2, 2, double>
const&, dealii::LinearAlgebra::distributed::BlockVector<double>&,
dealii::LinearAlgebra::distributed::BlockVector<double> const&,
aspect::internal::BlockSchurGMGPreconditioner<aspect::MatrixFreeStokesOperators::StokesOperator<2,
2, double>, aspect::MatrixFreeStokesOperators::ABlockOperator<2, 2,
double>, aspect::MatrixFreeStokesOperators::MassMatrixOperator<2, 1,
double>, dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >,
dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >
> const&)
#3 aspect-release: aspect::StokesMatrixFreeHandlerImplementation<2,
2>::solve()
#4 aspect-release: aspect::Simulator<2>::solve_stokes()
#5 aspect-release:
aspect::Simulator<2>::do_one_defect_correction_Stokes_step(aspect::DefectCorrectionResiduals&,
bool)
#6 aspect-release:
aspect::Simulator<2>::solve_single_advection_and_iterated_newton_stokes(bool)
#7
aspect-release: aspect::Simulator<2>::solve_timestep()
#8 aspect-release: aspect::Simulator<2>::run()
#9 aspect-release: void
run_simulator<2>(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&,
std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, bool, bool, bool, bool)
#10 aspect-release: main
--------------------------------------------------------
Stacktrace:
-----------
#0 aspect-release:
aspect::Utilities::throw_linear_solver_failure_exception(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&,
std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::vector<dealii::SolverControl,
std::allocator<dealii::SolverControl> > const&, std::exception const&,
ompi_communicator_t*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)
#1 aspect-release:
aspect::internal::BlockSchurGMGPreconditioner<aspect::MatrixFreeStokesOperators::StokesOperator<2,
2, double>, aspect::MatrixFreeStokesOperators::ABlockOperator<2, 2,
double>, aspect::MatrixFreeStokesOperators::MassMatrixOperator<2, 1,
double>, dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >,
dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >
>::vmult(dealii::LinearAlgebra::distributed::BlockVector<double>&,
dealii::LinearAlgebra::distributed::BlockVector<double> const&) const
#2 aspect-release: void
dealii::SolverFGMRES<dealii::LinearAlgebra::distributed::BlockVector<double>
>::solve<aspect::MatrixFreeStokesOperators::StokesOperator<2, 2,
double>,
aspect::internal::BlockSchurGMGPreconditioner<aspect::MatrixFreeStokesOperators::StokesOperator<2,
2, double>, aspect::MatrixFreeStokesOperators::ABlockOperator<2, 2,
double>, aspect::MatrixFreeStokesOperators::MassMatrixOperator<2, 1,
double>, dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >,
dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >
> >(aspect::MatrixFreeStokesOperators::StokesOperator<2, 2, double>
const&, dealii::LinearAlgebra::distributed::BlockVector<double>&,
dealii::LinearAlgebra::distributed::BlockVector<double> const&,
aspect::internal::BlockSchurGMGPreconditioner<aspect::MatrixFreeStokesOperators::StokesOperator<2,
2, double>, aspect::MatrixFreeStokesOperators::ABlockOperator<2, 2,
double>, aspect::MatrixFreeStokesOperators::MassMatrixOperator<2, 1,
double>, dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >,
dealii::PreconditionMG<2,
dealii::LinearAlgebra::distributed::Vector<double,
dealii::MemorySpace::Host>, dealii::MGTransferMatrixFree<2, double> >
> const&)
#3 aspect-release: aspect::StokesMatrixFreeHandlerImplementation<2,
2>::solve()
#4 aspect-release: aspect::Simulator<2>::solve_stokes()
#5 aspect-release:
aspect::Simulator<2>::do_one_defect_correction_Stokes_step(aspect::DefectCorrectionResiduals&,
bool)
#6 aspect-release:
aspect::Simulator<2>::solve_single_advection_and_iterated_newton_stokes(bool)
#7
aspect-release: aspect::Simulator<2>::solve_timestep()
#8 aspect-release: aspect::Simulator<2>::run()
#9 aspect-release: void
run_simulator<2>(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&,
std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, bool, bool, bool, bool)
#10 aspect-release: main
--------------------------------------------------------
Stacktrace:
-----------
#0 aspect-release: aspect::Utilities::throw_linear_solver_failure_exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<dealii::SolverControl, std::allocator<dealii::SolverControl> > const&, std::exception const&, ompi_communicator_t*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
#1 aspect-release: aspect::StokesMatrixFreeHandlerImplementation<2, 2>::solve()
#2 aspect-release: aspect::Simulator<2>::solve_stokes()
#3 aspect-release: aspect::Simulator<2>::do_one_defect_correction_Stokes_step(aspect::DefectCorrectionResiduals&, bool)
#4 aspect-release: aspect::Simulator<2>::solve_single_advection_and_iterated_newton_stokes(bool)
#5 aspect-release: aspect::Simulator<2>::solve_timestep()
#6 aspect-release: aspect::Simulator<2>::run()
#7 aspect-release: void run_simulator<2>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, bool, bool, bool)
#8 aspect-release: main
--------------------------------------------------------
Aborting!
----------------------------------------------------
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
with errorcode 1.
NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
Is there any solution?
Regards
Grace