Plate driven flow did not converge

Hi all,

I had a problem, when I generate the plate-driven flow in the model.

When I tested with low viscosity and large grid, it was successfully converged.

I extended my model with larger number of repetitions, its solution did not converge anymore.

To solve this problem, I tried to use large number of iterations, coarse grid, removing null-space (net rotation, net surface rotation).

Could you please share your any opinion about this issues?

Thank you in advance,

Here is my input prm file and error massage below.
original.prm (3.4 KB)

Additional information:
The iterative Stokes solver in Simulator::solve_stokes did not
converge.

The initial residual was: 4.490404e+22
The final residual is: 4.024511e+18
The required residual for convergence is: 2.661754e+16
See
/data/dynamics/output/spherical/solver_history.txt
for the full convergence history.

The solver reported the following error:

--------------------------------------------------------
An error occurred in line <1287> of file
</opt/dealii/deal.II-v9.4.0/include/deal.II/lac/solver_gmres.h>
in function
void dealii::SolverFGMRES<VectorType>::solve(const MatrixType&,
VectorType&, const VectorType&, const PreconditionerType&) [with
MatrixType = aspect::internal::StokesBlock; PreconditionerType =
aspect::internal::BlockSchurPreconditioner<dealii::TrilinosWrappers::PreconditionAMG,
dealii::TrilinosWrappers::PreconditionBase>; VectorType =
dealii::TrilinosWrappers::MPI::BlockVector]
The violated condition was:
false
Additional information:
Iterative method reported convergence failure in step 1000. The
residual in the last step was 4.02451e+18.

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.

Hi @kjun825,

There could be quite a few reasons why the solver is not converging with a higher resolution, such as more localized deformation leading to lower viscosities.

Can you send us an image of the model results for the case of convergence versus non-convergence?

Does the model converge when you decrease the min/max viscosity contrast? Currently it is 1e18 - 1e25 Pa s?

John

In addition to @jbnaliboff’s comments, I also note that your velocity boundary condition doesn’t correspond to motion of a rigid plate. Presumably that is what you want, but it isn’t what your function does.

Hi @jbnaliboff ,

Thanks for your comments first.

Could you explain what “image of the model results” is?

Because in the case of non-convergence, ASPECT just created log.txt, solver_history.txt, original.prm, parameters.prm, parameters.json, parameters.tex files.

I will try to run ASPECT with smaller viscosity contrast first.

Hi @bobmyhill ,

Thank you for comments.

You are right. I tried to simulate the motion of a rigid plate.

I searched that how to generate plate-driven flow in this Forum.
People looks like assign some velocity on the top velocity boundary.

Could you please let me know how I should modify the current function to simulate the motion of a rigid plate?

The easiest way is to translate and rotate your entire domain (outside of ASPECT) such that the Euler pole lies on the North pole. Then the velocity is always zero in the direction of latitude change, and scales with the cosine of the latitude.

If you want to keep the chunk in its current orientation, the mathematics are a little more complex. If you are unfamiliar with Euler poles, this page will help: 4.7: Plate Motions on a Sphere - Geosciences LibreTexts

Best wishes,
Bob

Yes, as you mentioned, aligning the Euler pole with the North pole is the easiest way to generate plate motion.

I hadn’t considered that before.

Thanks for your kind comments.

Best,
Kyeongjun

1 Like