[aspect-devel] Development update: ASPECT-GUI, Docker container, Solver defaults

Rene Gassmoeller rene.gassmoeller at mailbox.org
Mon Apr 3 13:31:41 PDT 2017


Hi all,

this is an additional development update, somewhat out of the line of 
the usual newsletters. In the last weeks there have been some 
potentially useful, important additions and changes to ASPECT that in my 
opinion justify this additional notice. Lets look at them one at a time:

1. ASPECT-GUI: Because ASPECT is growing at a steady pace the number of 
input parameter file options today is probably larger than any single 
person, including the maintainers, can remember. Looking up parameters 
in the manual or in output files is the current solution, but that 
requires a lot of searching through walls of text. Luckily since several 
years there is a little program for deal.II called 'parameter_gui' 
(https://github.com/dealii/parameter_gui) that can visualize the 
structure of parameter files in a tree-like structure and allows to 
change and save these parameters. Thanks to a concerted effort of the 
maintainers we improved this program, and now provide a script inside 
ASPECT that allows to browse all ASPECT input parameters (including 
their type, documentation, and default value) in a graphical way, change 
values, and write a parameter file that can afterwards be used to start 
a regular ASPECT model. Installation and usage of this script is 
described in a new section in the manual, and we want to encourage you 
to try this new feature. We have found it can make creating new models 
or modifying existing models much more intuitive, and have discovered 
some options we had forgotten about! Of course, since the GUI only 
produces a parameter file that is then started the traditional way there 
is nothing wrong with writing your parameter files by hand, and we will 
continue to support this way of starting models.

Discussions during the development of this feature can be found here:
https://github.com/geodynamics/aspect/pull/1419
https://github.com/geodynamics/aspect/pull/1414
https://github.com/dealii/parameter_gui/pulls?q=is%3Apr+is%3Aclosed

2. ASPECT docker container: Due to its list of dependencies the 
installation of ASPECT was always somewhat tedious and prone to 
problems. Following a discussion on the mailing list a few weeks back, 
and with the growing use of container-based distribution systems we now 
provide an ASPECT Docker image that allows to install ASPECT with a 
single shell command if you have a Docker engine running on your machine 
(try 'docker pull gassmoeller/aspect'). This is likely not the solution 
for massively parallel computations, but it allows you to run smaller 
models or tests on your local machine. Again more detailed information 
is available in the current manual 
(http://www.math.clemson.edu/~heister/manual.pdf). As a side note: This 
allows the use of ASPECT on Microsoft Windows in a nearly native look 
and feel.

Discussions about the development of this feature can be found here:
https://github.com/geodynamics/aspect/pull/1402

3. Stokes solver defaults: As you know ASPECT is used to model a vast 
variety of different geodynamic scenarios. In particular the performance 
of the Stokes solver can depend crucially on some input parameters and 
the type of problem that is modelled. This makes choosing sensible 
default values very hard. In general, ASPECT uses a two-stage Stokes 
solver that first tries to solve the system using a less accurate, but 
very cheap preconditioner. Upon a failure to reach a specified residual 
tolerance after a specified number of iterations it switches to a much 
more expensive but also much more accurate preconditioner. Parameters 
that can be tuned in this process are in particular: 1. The tolerance up 
to which the full Stokes system is solved. 2. The number of cheap solver 
iterations, before the expensive preconditioner is used. 3. The accuracy 
of the expensive preconditioner (it is itself the solution of a linear 
system).

In the last week we have re-examined our default choice for the number 
of cheap solver iterations. The old ASPECT default values were chosen 
and tuned to allow simple models (e.g. with constant viscosity) to 
converge within the cheap solver iterations, while the expensive 
preconditioner was the default method for most other models. However our 
tests with more realistic models have shown that nearly all models even 
with realistic viscosity contrasts (>= 4 orders of magnitude, including 
plasticity) benefit from more cheap solver iterations. While the number 
of iterations usually increases significantly (up to a factor of 5) the 
cheaper preconditioner offsets this easily (each iteration is around 40 
times faster). The amount of achieved Stokes solver speedup depends on 
the model, but can reach anything from 10% to a factor of 40. There are 
a few consequences of these results:

- We think the new default for the number of cheap Stokes solver 
iterations (200 instead of 30) benefits most models, while we can not 
guarantee it helps all models.
- You can optimize individual models further. Playing with the above 
mentioned parameters can significantly speed up model runtimes, in 
particular if your model is limited by the time spend in the Stokes 
solver. You can use the 'Stokes residual' postprocessor to investigate 
convergence behavior of your particular model.
- Our old suggestion that setting the Number of cheap Stokes solver 
iterations to 0 is helpful for plasticity models, does not seem to hold 
any more in our tests.

Discussions during the development of this feature and results of our 
convergence tests can be found here:
https://github.com/geodynamics/aspect/pull/1421


Since all of the above changes are recent, they might contain bugs, or 
unknown side effects we have not discovered yet. Let us know about them 
via the mailing list, open a Github issue, or (ideally :-)) go ahead and 
submit a fix in form of a pull request on Github.


Thanks for reading,

Rene, on behalf of the ASPECT maintainers

-- 

Rene Gassmoeller
http://www.math.colostate.edu/~gassmoel/



More information about the Aspect-devel mailing list