# [aspect-devel] nonlinear dependence on viscosity in instantaneous model

Juliane Dannberg dannberg at gfz-potsdam.de
Fri Sep 11 07:06:00 PDT 2015

```Hi Magali,

I think you already found the right options for what you want to do :-)

The difference between the two nonlinear solvers is that the iterated
IMPES solver iterates over all of the equations, and the iterated Stokes
solver only over the Stokes equation. If you want to run an
instantaneous model, I would guess that all of your nonlinearities come
from the Stokes system (the viscosity depends on the strain rate), so
you do not need to solve the temperature or composition advection
equations more than once, so you probably want to use the iterated
Stokes solver.

For example input files, you could have a look at the two cookbooks that
use nonlinear solvers ("Morency and Doin" and "Crustal Deformation", and
the latter one uses iterated Stokes).
There are basically three important parameters:

set Nonlinear solver scheme                = iterated Stokes
set Nonlinear solver tolerance             = 1e-8
set Max nonlinear iterations                = 100

the solver you want to use, its tolerance, and the maximum number of
iterations the solver does before it goes on to the next timestep (or in
your case the postprocessing), even if the tolerance is not reached.

For the way the convergence is checked, I am more familiar with the
iterated IMPES solver, but I think it should be similar for the iterated
Stokes:
We calculate an initial residual in the first iteration, where we use
our solution for the pressure, but a velocity of zero as solution, and
see what residual this solution would give us by multiplying matrix *
solution and comparing it to the right-hand side. In all of the
following iterations, we compute the residual for our new solution, and
compare it to the initial residual, and convergence is reached when

stokes_residual/initial_stokes_residual < parameters.nonlinear_tolerance

So this is different than what is implemented in Citcom: it is not
enough that the solution does not change any more, but the residual has
to become smaller by a certain number you define in the input file.
I hope that helps a bit!

Best,
Juliane

On 09/10/2015 06:25 PM, Magali Billen wrote:
> Hello,
> I would like to run an instantaneous model of subduction using a
> material model that includes viscosity that depends on the strain-rate
> (non-linear rheology).  However, I am unsure of the current state of
> Aspect in terms of dealing with non-linear rheology.
>
> I have written my own material model (following the plugin from
> morency and doin) so I have the required lines that tell the simulator
> that my viscosity depends on strain-rate.
>
> When I look in the manual  for information on how nonlinear dependence
> is handled, it says that the use of these is future work.  However,
> when I hunt around the code a bit I find that this information is
> passed to a function  called "stokes_matrix_depends_on_solution",
> which is used in core.cc <http://core.cc> within
> Simulator::solve_timestep. Within this part of the code I find four
> options for nonlinear solvers.
>
> I think that I should be using either NonlinearSolver::iterated_IMPES
> or NonlinearSolver::iterated_Stokes. These
> both appear to iterate within the time-step by checking a residual
> value against a nonlinear_tolerance. Please note, I am on a steep
> learning curve with C++ and Aspect this summer, so I'm not completely
> confident that I'm following everything in the code.
>
> Since I can't find anything in the manual about this - is there
> someone on the list that is familiar with these iterative solvers who
> can point me to which of these (if either) I should be using to make
> sure that even though I will only run for a single time-step many
> iterations will be done to make the solution consistent with the
> viscosity. It would also be helpful if someone could walk me through
> the "convergence" logic (I'm most familiar with how this was
> implemented in Citcom - leaves loop when difference between current
> and previous velocity solution is less than tolerance value), and
> share an input file that shows the input parameters that I need to
> include to specify the tolerance and any other values.
>
> Thank you in advance,
> Magali
>
> -----------------------------------------------------------
> Professor of Geophysics
> Chair, Geology Graduate Program
> Earth & Planetary Sciences Dept., UC Davis
> Davis, CA 95616
> Room 2129 Earth & Physical Sciences Bldg.
> Office Phone: (530) 752-4169
> http://mygeologypage.ucdavis.edu/billen/
> -----------------------------------------------------------
>
>
>
> _______________________________________________
> Aspect-devel mailing list
> Aspect-devel at geodynamics.org
> http://lists.geodynamics.org/cgi-bin/mailman/listinfo/aspect-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.geodynamics.org/pipermail/aspect-devel/attachments/20150911/652e86e4/attachment-0001.html>
```