[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 
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!


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>

More information about the Aspect-devel mailing list