[aspect-devel] Progress in writing the mantle convection code Aspect

Wolfgang Bangerth bangerth at math.tamu.edu
Mon Sep 30 20:49:03 PDT 2013

there has been some criticism recently that CIG doesn't sufficiently well 
communicate what it is working on. I think I share in this problem, not 
communicating well what we do with Aspect. Thus, allow me this slightly 
longish email. I hope to do these sorts of things periodically in the future, 
and I hope that this sparks a conversation about what people want/need and how 
this meshes with what we're doing.

To start with: Aspect is a mantle convection code whose development is 
supported by CIG. It has three main goals:

- Modern numerical methods for discretizations, solver, and software
   design; building on well-tested and widely used software libraries.
- Designed to make extending the code simple. In particular, to change
   the rheology, geometry, postprocessing, etc, you need not know
   anything about how Aspect discretizes and solves the actual equations.
- Designed to scale to large problems on large parallel machines.

The code's website is here:
The manual (currently 129 pages) is here:
The central numerical methods are described in paper #34 here:

I won't go into more detail on what this code is, but wanted to update you on 
what has been happening recently:

1/ Aspect has modules that allow the advection of what we call "compositional 
fields" (originally implemented by Juliane Dannberg) -- essentially, these are 
quantities you can initialize at the beginning and then they will simply be 
advected along with the flow. The idea is that you can, for example, mark 
material from a ULVZ by setting the compositional field there to one and zero 
elsewhere, and see where this stuff is transported. All material parameters 
can of course depend on these field values as well.

That said, in geodynamics, the role of compositional fields has traditionally 
been filled by tracer particles. Eric Heien had previously implemented tracers 
but in their current implementation they lack the ability to carry information 
about where they came from without having to modify the code (i.e., by setting 
something in the input file). Among the projects we've been working on is to 
rewrite this functionality in a way that allows attaching information to 

2/ I had Sarah Stamps, a postdoc at MIT, here a couple of weeks ago. Her goal 
is to model flow under Africa, and this has provided me with an opportunity to 
see how people want to use Aspect. We did have a model with real topography, a 
realistic initial temperature field, appropriate boundary conditions and a 
temperature-dependent viscosity working by the end of the week, which I took 
as a pretty good sign for what can be done with Aspect.

In addition to choosing appropriate parameters in the input file, this 
exercise required writing code to describe the surface topography, material 
model, initial temperature, and other bits and pieces. This did require decent 
C++ knowledge, but maybe a bit to my surprise, some of it also required a good 
working knowledge of deal.II (one of the libraries upon which Aspect builds). 
Observing and participating in this exercise made me realize that we need to 
document these parts better -- currently, the documentation states that 
certain classes have to be implemented (if you know C++, you know what this 
means) but there were no concrete examples of actually doing so. My conclusion 
is that we will need to provide more extensive and hands-on documentation, 
which I hope to put into the manual over the next few months.

These are the two big projects currently on my plate. As I stated above, I 
hope to send similar updates again in the future. Let me know of any feedback 
or questions you may have!


Wolfgang Bangerth               email:            bangerth at math.tamu.edu
                                 www: http://www.math.tamu.edu/~bangerth/

More information about the Aspect-devel mailing list