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

Magali Billen mibillen at ucdavis.edu
Sat Sep 12 20:20:07 PDT 2015

Hello Juliane,

Thank you for the confirmation (makes me feel good that the many hours reading the code paid off and I'm getting to
understand how things are set up and where to look for information) and for the additional information on the solver
reaches a solution.
I will be giving this a try for simple test problems first and then for some subduction models.
I'm very excited to finally be at this point with using Aspect!

On Sep 11, 2015, at 7:06 AM, Juliane Dannberg <dannberg at gfz-potsdam.de> wrote:

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

Professor of Geophysics & UCD Chancellor Fellow
Chair, Geology Graduate Program
Earth & Planetary Sciences Dept., UC Davis
Davis, CA 95616
Room 2129 Earth & Physical Sciences Bldg.
Office Phone: (530) 752-4169

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.geodynamics.org/pipermail/aspect-devel/attachments/20150912/ca41a9a5/attachment.html>

More information about the Aspect-devel mailing list