5.3 Geophysical setups

Having gone through the ways in which one can set up problems in rectangular geometries, let us now move on to situations that are directed more towards the kinds of things we want to use ASPECT for: the simulation of convection in the rocky mantles of planets or other celestial bodies.

To this end, we need to go through the list of issues that have to be described and that were outlined in Section 5.1, and address them one by one:

This discussion shows that there are in fact many pieces with which one can play and for which the answers are in fact not always clear. We will address some of them in the cookbooks below. Recall in the descriptions we use in the input files that ASPECT uses physical units, rather than non-dimensionalizing everything. The advantage, of course, is that we can immediately compare outputs with actual measurements. The disadvantage is that we need to work a bit when asked for, say, the Rayleigh number of a simulation.

5.3.1 Simple convection in a quarter of a 2d annulus

Let us start this sequence of cookbooks using a simpler situation: convection in a quarter of a 2d shell. We choose this setup because 2d domains allow for much faster computations (in turn allowing for more experimentation) and because using a quarter of a shell avoids a pitfall with boundary conditions we will discuss in the next section. Because it’s simpler to explain what we want to describe in pictures than in words, Fig. 35 shows the domain and the temperature field at a few time steps. In addition, you can find a movie of how the temperature evolves over this time period at http://www.youtube.com/watch?v=d4AS1FmdarU.30


PIC PIC PIC

Figure 35: Simple convection in a quarter of an annulus: Snapshots of the temperature field at times t = 0, t = 1.2 107 years (time step 2135), and t = 109 years (time step 25,662). The bottom right part of each figure shows an overlay of the mesh used during that time step.

Let us just start by showing the input file (which you can find in cookbooks/shell_simple_2d.prm):

 
set ??                              = 2   
set ?? = true   
set ??                               = 1.5e9   
set ??                       = output-shell_simple_2d  
 
 
subsection ?? 
  set ?? = simple   
 
  subsection ?? 
    set ?? = 4e-5   
    set ??                     = 1e22   
  end 
end 
 
 
subsection ?? 
  set ?? = spherical shell   
 
  subsection ?? 
    set ??  = 3481000   
    set ??  = 6336000   
    set ?? = 90   
  end 
end 
 
 
subsection ?? 
  set ??       = inner  
  set ?? = outer, left, right  
end 
 
 
subsection ?? 
  set ?? = inner, outer  
  set ?? = spherical constant  
 
  subsection ?? 
    set ?? = 4273   
    set ?? = 973   
  end 
end 
 
 
subsection ?? 
  set ?? =  shear heating  
end 
 
 
subsection ?? 
  set ?? = spherical hexagonal perturbation   
end 
 
 
subsection ?? 
  set ?? = ascii data  
end 
 
 
subsection ?? 
  set ??          = 5   
  set ??        = 4   
  set ??                           = temperature   
  set ?? = 15   
end 
 
 
subsection ?? 
  set ?? = visualization, velocity statistics, temperature statistics, ...  
                               ... heat flux statistics, depth average 
 
  subsection ?? 
    set ??                 = vtu   
    set ?? = 1e6   
    set ??       = 0   
  end 
 
  subsection ?? 
    set ?? = 1e6   
  end 
end

In the following, let us pick apart this input file:

  1. Lines 1–4 are just global parameters. Since we are interested in geophysically realistic simulations, we will use material parameters that lead to flows so slow that we need to measure time in years, and we will set the end time to 1.5 billion years – enough to see a significant amount of motion.
  2. The next block (lines 7–14) describes the material that is convecting (for historical reasons, the remainder of the parameters that describe the equations is in a different section, see the fourth point below). We choose the simplest material model ASPECT has to offer where the viscosity is constant (here, we set it to η = 1022Pas) and so are all other parameters except for the density which we choose to be ρ(T) = ρ0(1 α(T Tref)) with ρ0 = 3300kgm3, α = 4 105K1 and Tref = 293K. The remaining material parameters remain at their default values and you can find their values described in the documentation of the simple material model in Sections ?? and ??.
  3. Lines 17–25 then describe the geometry. In this simple case, we will take a quarter of a 2d shell (recall that the dimension had previously been set as a global parameter) with inner and outer radii matching those of a spherical approximation of Earth.
  4. The second part of the model description and boundary values follows in lines 28–42. The boundary conditions require us to look up how the geometry model we chose (the spherical shell model) assigns boundary indicators to the four sides of the domain. This is described in Section ?? where the model announces that boundary indicator zero is the inner boundary of the domain, boundary indicator one is the outer boundary, and the left and right boundaries for a 2d model with opening angle of 90 degrees as chosen here get boundary indicators 2 and 3, respectively. In other words, the settings in the input file correspond to a zero velocity at the inner boundary and tangential flow at all other boundaries. We know that this is not realistic at the bottom, but for now there are of course many other parts of the model that are not realistic either and that we will have to address in subsequent cookbooks. Furthermore, the temperature is fixed at the inner and outer boundaries (with the left and right boundaries then chosen so that no heat flows across them, emulating symmetry boundary conditions) and, further down, set to values of 700 and 4000 degrees Celsius – roughly realistic for the bottom of the crust and the core-mantle boundary.
  5. Lines 45–47 describe that we want a model where equation (3) contains the shear heating term 2ηε(u) : ε(u) (noting that the default is to use an incompressible model for which the term 1 3(u)1 in the shear heating contribution is zero). Considering a reasonable choice of heating terms is not the focus of this simple cookbook, therefore we will leave a discussion of possible and reasonable heating terms to another cookbook.
  6. The description of what we want to model is complete by specifying that the initial temperature is a perturbation with hexagonal symmetry from a linear interpolation between inner and outer temperatures (see Section ??), and what kind of gravity model we want to choose (one reminiscent of the one inside the Earth mantle, see Section ??).
  7. The remainder of the input file consists of a description of how to choose the initial mesh and how to adapt it (lines 60–65) and what to do at the end of each time step with the solution that ASPECT computes for us (lines 68–81). Here, we ask for a variety of statistical quantities and for graphical output in VTU format every million years.

Note: Having described everything to ASPECT, you may want to view the video linked to above again and compare what you see with what you expect. In fact, this is what one should always do having just run a model: compare it with expectations to make sure that we have not overlooked anything when setting up the model or that the code has produced something that doesn’t match what we thought we should get. Any such mismatch between expectation and observed result is typically a learning opportunity: it either points to a bug in our input file, or it provides us with insight about an aspect of reality that we had not foreseen. Either way, accepting results uncritically is, more often than not, a way to scientifically invalid results.

The model we have chosen has a number of inadequacies that make it not very realistic (some of those happened more as an accident while playing with the input file and weren’t a purposeful experiment, but we left them in because they make for good examples to discuss below). Let us discuss these issues in the following.

Dimension. This is a cheap shot but it is nevertheless true that the world is three-dimensional whereas the simulation here is 2d. We will address this in the next section.

Incompressibility, adiabaticity and the initial conditions. This one requires a bit more discussion. In the model selected above, we have chosen a model that is incompressible in the sense that the density does not depend on the pressure and only very slightly depends on the temperature. In such models, material that rises up does not cool down due to expansion resulting from the pressure dropping, and material that is transported down does not adiabatically heat up. Consequently, the adiabatic temperature profile would be constant with depth, and a well-mixed model with hot inner and cold outer boundary would have a constant temperature with thin boundary layers at the bottom and top of the mantle. In contrast to this, our initial temperature field was a perturbation of a linear temperature profile.

There are multiple implications of this. First, the temperature difference between outer and inner boundary of 3300 K we have chosen in the input file is much too large. The temperature difference that drives the convection, is the difference in addition to the temperature increase a volume of material would experience if it were to be transported adiabatically from the surface to the core-mantle boundary. This difference is much smaller than 3300 K in reality, and we can expect convection to be significantly less vigorous than in the simulation here. Indeed, using the values in the input file shown above, we can compute the Rayleigh number for the current case to be31

Ra = gαΔTρL3 κη = 10ms2 × 4 105K1 × 3300K × 3300kgm3 × (2.86 106m)3 106m2s1 × 1022kgm1s1 .

Second, the initial temperature profile we chose is not realistic – in fact, it is a completely unstable one: there is hot material underlying cold one, and this is not just the result of boundary layers. Consequently, what happens in the simulation is that we first overturn the entire temperature field with the hot material in the lower half of the domain swapping places with the colder material in the top, to achieve a stable layering except for the boundary layers. After this, hot blobs rise from the bottom boundary layer into the cold layer at the bottom of the mantle, and cold blobs sink from the top, but their motion is impeded about half-way through the mantle once they reach material that has roughly the same temperature as the plume material. This impedes convection until we reach a state where these plumes have sufficiently mixed the mantle to achieve a roughly constant temperature profile.

This effect is visible in the movie linked to above where convection does not penetrate the entire depth of the mantle for the first 20 seconds (corresponding to roughly the first 800 million years). We can also see this effect by plotting the root mean square velocity, see the left panel of Fig. 36. There, we can see how the average velocity picks up once the stable layering of material that resulted from the initial overturning has been mixed sufficiently to allow plumes to rise or sink through the entire depth of the mantle.


PIC PIC

Figure 36: Simple convection in a quarter of an annulus. Left: Root mean square values of the velocity field. The initial spike (off the scale) is due to the overturning of the unstable layering of the temperature. Convection is suppressed for the first 800 million years due to the stable layering that results from it. The maximal velocity encountered follows generally the same trend and is in the range of 2–3 cm/year between 100 and 800 million years, and 4–8 cm/year following that. Right: Average temperature at various depths for t = 0, t = 800,000 years, t = 5 108 years, and t = 109 years.

The right panel of Fig. 36 shows a different way of visualizing this, using the average temperature at various depths of the model (this is what the depth average postprocessor computes). The figure shows how the initially linear unstable layering almost immediately reverts completely, and then slowly equilibrates towards a temperature profile that is constant throughout the mantle (which in the incompressible model chosen here equates to an adiabatic layering) except for the boundary layers at the inner and outer boundaries. (The end points of these temperature profiles do not exactly match the boundary values specified in the input file because we average temperatures over shells of finite width.)

A conclusion of this discussion is that if we want to evaluate the statistical properties of the flow field, e.g., the number of plumes, average velocities or maximal velocities, then we need to restrict our efforts to times after approximately 800 million years in this simulation to avoid the effects of our inappropriately chosen initial conditions. Likewise, we may actually want to choose initial conditions more like what we see in the model for later times, i.e., constant in depth with the exception of thin boundary layers, if we want to stick to incompressible models.

Material model. The model we use here involves viscosity, density, and thermal property functions that do not depend on the pressure, and only the density varies (slightly) with the temperature. We know that this is not the case in nature.

Shear heating. When we set up the input file, we started with a model that includes the shear heating term 2ηε(u) : ε(u) in eq. (3). In hindsight, this may have been the wrong decision, but it provides an opportunity to investigate whether we think that the results of our computations can possibly be correct.

We first realized the issue when looking at the heat flux that the heat flux statistics postprocessor computes. This is shown in the left panel of Fig. 37.32 There are two issues one should notice here. The more obvious one is that the flux from the mantle to the air is consistently higher than the heat flux from core to mantle. Since we have no radiogenic heating model selected (see the List of model names parameter in the Heating model section of the input file; see also Section ??), in the long run the heat output of the mantle must equal the input, unless is cools. Our misconception was that after the 800 million year transition, we believed that we had reached a steady state where the average temperature remains constant and convection simply moves heat from the core-mantle boundary the surface. One could also be tempted to believe this from the right panel in Fig. 36 where it looks like the average temperature does at least not change dramatically. But, it is easy to convince oneself that that is not the case: the temperature statistics postprocessor we had previously selected also outputs data about the mean temperature in the model, and it looks like shown in the left panel of Fig. 38. Indeed, the average temperature drops over the course of the 1.2 billion years shown here. We could now convince ourselves that indeed the loss of thermal energy in the mantle due to the drop in average temperature is exactly what fuels the persistently imbalanced energy outflow. In essence, what this would show is that if we kept the temperature at the boundaries constant, we would have chosen a mantle that was initially too hot on average to be sustained by the boundary values and that will cool until it will be in energetic balance and on longer time scales, in- and outflow of thermal energy would balance each other.


PIC PIC

Figure 37: Simple convection in a quarter of an annulus. Left: Heat flux through the core-mantle and mantle-air boundaries of the domain for the model with shear heating. Right: Same for a model without shear heating.


PIC PIC

Figure 38: Simple convection in a quarter of an annulus. Left: Average temperature throughout the model for the model with shear heating. Right: Same for a model without shear heating.

However, there is a bigger problem. Fig. 37 shows that at the very beginning, there is a spike in energy flux through the outer boundary. We can explain this away with the imbalanced initial temperature field that leads to an overturning and, thus, a lot of hot material rising close to the surface that will then lead to a high energy flux towards the cold upper boundary. But, worse, there is initially a negative heat flux into the mantle from the core – in other words, the mantle is losing energy to the core. How is this possible? After all, the hottest part of the mantle in our initial temperature field is at the core-mantle boundary, no thermal energy should be flowing from the colder overlying material towards the hotter material at the boundary! A glimpse of the solution can be found in looking at the average temperature in Fig. 38: At the beginning, the average temperature rises, and apparently there are parts of the mantle that become hotter than the 4273 K we have given the core, leading to a downward heat flux. This heating can of course only come from the shear heating term we have accidentally left in the model: at the beginning, the unstable layering leads to very large velocities, and large velocities lead to large velocity gradients that in turn lead to a lot of shear heating! Once the initial overturning has subsided, after say 100 million years (see the mean velocity in Fig. 36), the shear heating becomes largely irrelevant and the cooling of the mantle indeed begins.

Whether this is really the case is of course easily verified: The right panels of Fig.s 37 and 38 show heat fluxes and average temperatures for a model where we have switched off the shear heating by setting

 
subsection ?? 
  set ?? =  
end

Indeed, doing so leads to a model where the heat flux from core to mantle is always positive, and where the average temperature strictly drops!

Summary. As mentioned, we will address some of the issues we have identified as unrealistic in the following sections. However, despite all of this, some things are at least at the right order of magnitude, confirming that what ASPECT is computing is reasonable. For example, the maximal velocities encountered in our model (after the 800 million year boundary) are in the range of 6–7cm per year, with occasional excursions up to 11cm. Clearly, something is going in the right direction.

5.3.2 Simple convection in a spherical 3d shell

The setup from the previous section can of course be extended to 3d shell geometries as well – though at significant computational cost. In fact, the number of modifications necessary is relatively small, as we will discuss below. To show an example up front, a picture of the temperature field one gets from such a simulation is shown in Fig. 39. The corresponding movie can be found at http://youtu.be/j63MkEc0RRw.


PIC

Figure 39: Convection in a spherical shell: Snapshot of isosurfaces of the temperature field at time t 1.06 109 years with a quarter of the geometry cut away. The surface shows vectors indicating the flow velocity and direction.

The input file. Compared to the input file discussed in the previous section, the number of changes is relatively small. However, when taking into account the various discussions about which parts of the model were or were not realistic, they go throughout the input file, so we reproduce it here in its entirety, interspersed with comments (the full input file can also be found in cookbooks/shell_simple_3d.prm). Let us start from the top where everything looks the same except that we set the dimension to 3:

 
set ??                              = 3   
set ?? = true   
set ??                               = 1.5e9   
set ??                       = output-shell_simple_3d  
 
 
subsection ?? 
  set ?? = simple   
 
  subsection ?? 
    set ?? = 4e-5   
    set ??                     = 1e22   
  end 
end

The next section concerns the geometry. The geometry model remains unchanged at “spherical shell” but we omit the opening angle of 90 degrees as we would like to get a complete spherical shell. Such a shell of course also only has two boundaries (the inner one has indicator zero, the outer one indicator one) and consequently these are the only ones we need to list in the “Boundary velocity model” section:

 
subsection ?? 
  set ?? = spherical shell   
 
  subsection ?? 
    set ??  = 3481000   
    set ??  = 6336000   
  end 
end 
 
 
subsection ?? 
  set ??       = inner  
  set ?? = outer  
end

Next, since we convinced ourselves that the temperature range from 973 to 4273 was too large given that we do not take into account adiabatic effects in this model, we reduce the temperature at the inner edge of the mantle to 1973. One can think of this as an approximation to the real temperature there minus the amount of adiabatic heating material would experience as it is transported from the surface to the core-mantle boundary. This is, in effect, the temperature difference that drives the convection (because a completely adiabatic temperature profile is stable despite the fact that it is much hotter at the core mantle boundary than at the surface). What the real value for this temperature difference is, is unclear from current research, but it is thought to be around 1000 Kelvin, so let us choose these values.

 
subsection ?? 
  set ?? = inner, outer  
  set ?? = spherical constant  
 
  subsection ?? 
    set ?? = 1973   
    set ?? = 973   
  end 
end

The second component to this is that we found that without adiabatic effects, an initial temperature profile that decreases the temperature from the inner to the outer boundary makes no sense. Rather, we expected a more or less constant temperature with boundary layers at both ends. We could describe such an initial temperature field, but since any initial temperature is mostly arbitrary anyway, we opt to just assume a constant temperature in the middle between the inner and outer temperature boundary values and let the simulation find the exact shape of the boundary layers itself:

 
subsection ?? 
  set ?? = function   
  subsection ?? 
    set ?? = 1473   
  end 
end 
 
subsection ?? 
  set ?? = ascii data  
end

As before, we need to determine how many mesh refinement steps we want. In 3d, it is simply not possible to have as much mesh refinement as in 2d, so we choose the following values that lead to meshes that have, after an initial transitory phase, between 1.5 and 2.2 million cells and 50–75 million unknowns:

 
subsection ?? 
  set ??          = 2   
  set ??        = 3   
  set ??                           = temperature   
  set ?? = 15   
end

Second to last, we specify what we want ASPECT to do with the solutions it computes. Here, we compute the same statistics as before, and we again generate graphical output every million years. Computations of this size typically run with  1000 MPI processes, and it is not efficient to let every one of them write their own file to disk every time we generate graphical output; rather, we group all of these into a single file to keep file systems reasonably happy. Likewise, to accommodate the large amount of data, we output depth averaged fields in VTU format since it is easier to visualize:

 
subsection ?? 
  set ?? = visualization, velocity statistics, \  
                temperature statistics, heat flux statistics, \ 
                depth average 
 
  subsection ?? 
    set ??                 = vtu   
    set ?? = 1e6   
    set ??       = 1   
  end 
 
  subsection ?? 
    set ?? = 1.5e6   
    set ??                 = vtu   
  end 
end

Finally, we realize that when we run very large parallel computations, nodes go down or the scheduler aborts programs because they ran out of time. With computations this big, we cannot afford to just lose the results, so we checkpoint the computations every 50 time steps and can then resume it at the last saved state if necessary (see Section 4.5):

 
subsection ?? 
  set ?? = 50   
end

Evaluation. Just as in the 2d case above, there are still many things that are wrong from a physical perspective in this setup, notably the no-slip boundary conditions at the bottom and of course the simplistic material model with its fixed viscosity and its neglect for adiabatic heating and compressibility. But there are also a number of things that are already order of magnitude correct here.

For example, if we look at the heat flux this model produces, we find that the convection here produces approximately the correct number. Wikipedia’s article on Earth’s internal heat budget33 states that the overall heat flux through the Earth surface is about 47 1012 W (i.e., 47 terawatts) of which an estimated 12–30 TW are primordial heat released from cooling the Earth and 15–41 TW from radiogenic heating.34 Our model does not include radiogenic heating (though ASPECT has a number of Heating models to switch this on, see Section ??) but we can compare what the model gives us in terms of heat flux through the inner and outer boundaries of our shell geometry. This is shown in the left panel of Fig. 40 where we plot the heat flux through boundaries zero and one, corresponding to the core-mantle boundary and Earth’s surface. ASPECT always computes heat fluxes in outward direction, so the flux through boundary zero will be negative, indicating the we have a net flux into the mantle as expected. The figure indicates that after some initial jitters, heat flux from the core to the mantle stabilizes at around 4.5 TW and that through the surface at around 10 TW, the difference of 5.5 TW resulting from the overall cooling of the mantle. While we cannot expect our model to be quantitatively correct, this can be compared with estimates heat fluxes of 5–15 TW for the core-mantle boundary, and an estimated heat loss due to cooling of the mantle of 7–15 TW (values again taken from Wikipedia).


PIC PIC

Figure 40: Evaluating the 3d spherical shell model. Left: Outward heat fluxes through the inner and outer boundaries of the shell. Right: Average and maximal velocities in the mantle.

A second measure of whether these results make sense is to compare velocities in the mantle with what is known from observations. As shown in the right panel of Fig. 40, the maximal velocities settle to values on the order of 3 cm/year (each of the peaks in the line for the maximal velocity corresponds to a particularly large plume rising or falling). This is, again, at least not very far from what we know to be correct and we should expect that with a more elaborate material model we should be able to get even closer to reality.

5.3.3 Postprocessing spherical 3D convection

This section was contributed by Jacqueline Austermann, Ian Rose, and Shangxin Liu

There are several postprocessors that can be used to turn the velocity and pressure solution into quantities that can be compared to surface observations. In this cookbook (cookbooks/shell_3d_postprocess.prm) we introduce two postprocessors: dynamic topography and the geoid. We initialize the model with a harmonic perturbation of degree 4 and order 2 and calculate the instantaneous solution. Analogous to the previous setup we use a spherical shell geometry model and a simple material model.

The relevant section in the input file that determines the postprocessed output is as follows:

 
subsection ?? 
  set ?? = velocity statistics, dynamic topography, visualization, basic statistics, geoid  
 
  subsection ?? 
    set ??                 = vtu  
    set ??      = geoid, dynamic topography, density, viscosity, gravity  
    set ??       = 1  
  end 
end

This initial condition results in distinct flow cells that cause local up- and downwellings (Figure 41). This flow deflects the top and bottom boundaries of the mantle away from their reference height, a process known as dynamic topography. The deflection of the surfaces and density perturbations within the mantle also cause a perturbation in the gravitational field of the planet relative to the hydrostatic equilibrium ellipsoid.

Dynamic topography at the surface and core mantle boundary. Dynamic topography is calculated at the surface and bottom of the domain through a stress balancing approach where we assume that the radial stress at the surface is balanced by excess (or deficit) topography. We use the consistent boundary flux (CBF) method to calculate the radial stress at the surface [ZGH93]. For the bottom surface we define positive values as up (out) and negative values are down (in), analogous to the deformation of the upper surface. Dynamic topography can be outputted in text format (which writes the Euclidean coordinates followed by the corresponding topography value) or as part of the visualization. The upwelling and downwelling flow along the equator causes alternating topography high and lows at the top and bottom surface (Figure 41). In Figure 41 c, d we have subtracted the mean dynamic topography from the output field as a postproceesing step outside of Aspect. Since mass is conserved within the Earth, the mean dynamic topography should always be zero, however, the outputted values might not fullfill this constraint if the resolution of the model is not high enough to provide an accurate solution. This cookbook only uses a refinement of 2, which is relatively low resolution.

Geoid anomalies. Geoid anomalies are perturbations of the gravitational equipotential surface that are due to density variations within the mantle as well as deflections of the surface and core mantle boundary. The geoid anomalies are calculated using a spherical harmonic expansion of the respective fields. The user has the option to specify the minimum and maximum degree of this expansion. By default, the minimum degree is 2, which conserves the mass of the Earth (by removing degree 0) and chooses the Earth’s center of mass as reference frame (by removing degree 1). In this model, downwellings coincide with lows in the geoid anomaly. That means the mass deficit caused by the depression at the surface is not fully compensated by the high density material below the depression that drags the surface down. The geoid postprocessor uses a spherical harmonic expansion and can therefore only be used with the 3D spherical shell geometry model.


PIC

Figure 41: Panel (a) shows an equatorial cross section of the temperature distribution and resulting flow from a harmonic perturbation. Panel (b) shows the resulting geoid, and panels (c) and (d) show the resulting surface and bottom topography. Note that we have subtracted the mean surface and bottom topography in the respective panels (c and d) as a postprocessing step outside of Aspect.

5.3.4 3D convection with an Earth-like initial condition

This section was contributed by Jacqueline Austermann

For any model run with ASPECT we have to choose an initial condition for the temperature field. If we want to model convection in the Earth’s mantle we want to choose an initial temperature distribution that captures the Earth’s buoyancy structure. In this cookbook we present how to use temperature perturbations based on the shear wave velocity model S20RTS [RvH00] to initialize a mantle convection calculation.

The input shear wave model. The current version of ASPECT can read in the shear wave velocity models S20RTS [RvH00] and S40RTS [RDvHW11], which are located in data/initial-_conditions/S40RTS/. Those models provide spherical harmonic coefficients up do degree 20 and 40, respectively, for 21 depth layers. The interpolation with depth is done through a cubic spline interpolation. The input files S20RTS.sph and S40RTS.sph were downloaded from http://www.earth.lsa.umich.edu/~jritsema/Research.html and have the following format (this example is S20RTS):

 
             20 111111111111111111111  24 000111111111111111111111 
  0.1534E-01 
  0.1590E-01 -0.1336E-01  0.3469E-02 
 -0.3480E-02  0.1165E-01  0.8376E-02  0.2158E-01 -0.9923E-02 
  ...

The first number in the first line denotes the maximum degree. This is followed in the next line by the spherical harmonic coefficients from the surface down to the CMB. The coefficients are arranged in the following way:

a00
a10 a11 b11
a20 a21 b21 a22 b22
...

ayz is the cosine coefficient of degree y and order z and byz is the sine coefficient of degree y and order z. The depth layers are specified in the file Spline_knots.txt by a normalized depth value ranging from the CMB (3480km, normalized to -1) to the Moho (6346km, normalized to 1). This is the original format provided on the homepage.

Any other perturbation model in this same format can also be used, one only has to specify the different filename in the parameter file (see next section). For models with different depth layers one has to adjust the Spline_knots.txt file as well as the number of depth layers, which is hard coded in the current code. A further note of caution when switching to a different input model concerns the normalization of the spherical harmonics, which might differ. After reading in the shear wave velocity perturbation one has several options to scale this into temperature differences, which are then used to initialize the temperature field.

Setting up the ASPECT model. For this cookbook we will use the parameter file provided in cookbooks/S20RTS.prm, which uses a 3d spherical shell geometry similar to section 5.3.2. This plugin is only sensible for a 3D spherical shell with Earth-like dimensions.

The relevant section in the input file is as follows:

 
subsection ?? 
  set ?? = S40RTS perturbation  
  subsection ?? 
    set ??                    = $ASPECT_SOURCE_DIR/data/initial-temperature/S40RTS/  
    set ??       = S20RTS.sph  
    set ??      = Spline_knots.txt  
    set ?? = false  
    set ??             = 0.15   
    set ?? = 3e-5  
    set ??             = 1600  
  end 
end

For this initial condition model we need to first specify the data directory in which the input files are located as well as the initial condition file (S20RTS.sph or S40RTS.sph) and the file that contains the normalized depth layers (Spline knots depth file name). We next have the option to remove the degree 0 perturbation from the shear wave model. This might be the case if we want to make sure that the depth average temperature follows the background (adiabatic or constant) temperature.

The next input parameters describe the scaling from the shear wave velocity perturbation to the final temperature field. The shear wave velocity perturbation δvsvs (that is provided by S20RTS) is scaled into a density perturbation δρρ with a constant that is specified in the initial condition section of the input parameter file as ‘Vs to density scaling’. Here we choose a constant scaling of 0.15. This perturbation is further translated into a temperature difference ΔT by multiplying it by the negative inverse of thermal expansion, which is also specified in this section of the parameter file as ‘Thermal expansion coefficient in initial temperature scaling’. This temperature difference is then added to the background temperature, which is the adiabatic temperature for a compressible model or the reference temperature (as specified in this section of the parameter file) for an incompressible model. Features in the upper mantle such as cratons might be chemically buoyant and therefore isostatically compensated, in which case their shear wave perturbation would not contribute buoyancy variations. We therefore included an additional option to zero out temperature perturbations within a certain depth, however, in this example we don’t make use of this functionality. The chemical variation within the mantle might require a more sophisticated ‘Vs to density’ scaling that varies for example with depth or as a function of the perturbation itself, which is not captured in this model. The described procedure provides an absolute temperature for every point, which will only be adjusted at the boundaries if indicated in the Boundary temperature model. In this example we chose a surface and core mantle boundary temperature that differ from the reference mantle temperature in order to approximate thermal boundary layers.

Visualizing 3D models. In this cookbook we calculate the instantaneous solution to examine the flow field. Figures 42 and 43 show some of the output for a resolution of 2 global refinement steps (42c and 43a, c, e) as used in the cookbook, as well as 4 global refinement steps (other panels in these figures). Computations with 4 global refinements are expensive, and consequently this is not the default for this cookbook. For example, as of 2017, it takes 64 cores approximately 2 hours of walltime to finish this cookbook with 4 global refinements. Figure 42a and b shows the density variation that has been obtained from scaling S20RTS in the way described above. One can see the two large low shear wave velocity provinces underneath Africa and the Pacific that lead to upwelling if they are assumed to be buoyant (as is done in this case). One can also see the subducting slabs underneath South America and the Philippine region that lead to local downwelling. Figure 42c and d shows the heat flux density at the surface for 2 refinement steps (c, colorbar ranges from 13 to 19 mW/m2) and for 4 refinement steps (d, colorbar ranges from 35 to 95 mW/m2). A first order correlation with upper mantle features such as high heat flow at mid ocean ridges and low heat flow at cratons is correctly initialized by the tomography model. The mantle flow and bouyancy variations produce dynamic topography on the top and bottom surface, which is shown for 2 refinement steps (43a and c, respectively) and 4 refinement steps (43b and d, respectively). One can see that subduction zones are visible as depressed surface topography due to the downward flow, while regions such as Iceland, Hawaii, or mid ocean ridges are elevated due to (deep and) shallow upward flow. The core mantle boundary topography shows that the upwelling large low shear wave velocity provinces deflect the core mantle boundary up. Lastly, Figure 43e and f show geoid perturbations for 2 and 4 global refinement steps, respectively. The geoid anomalies show a strong correlation with the surface dynamic topography. This is in part expected given that the geoid anomalies are driven by the deflection of the upper and lower surface as well as internal density variations. The relative importance of these different contributors is dictated by the Earth’s viscosity profile. Due to the isoviscous assumption in this cookbook, we don’t properly recover patterns of the observed geoid.

As discussed in the previous cookbook, dynamic topography does not necessarily average to zero if the resolution is not high enough. While one can simply subtract the mean as a postprocessing step this should be done with caution since a non-zero mean indicates that the refinement is not sufficiently high to resolve the convective flow. In Figure 43a-d we refrained from subtracting the mean but indicated it at the bottom left of each panel. The mean dynamic topography approaches zero for increasing refinement. Furthermore, the mean bottom dynamic topography is closer to zero than the mean top dynamic topography. This is likely due to the larger magnitude of dynamic topography at the surface and the difference in resolution between the top and bottom domain (for a given refinement, the resolution at the core mantle boundary is higher than the resolution at the surface). The average geoid height is zero since the minimum degree in the geoid anomaly expansion is set to 2.

This model uses a highly simplified material model that is incompressible and isoviscous and does therefore not represent real mantle flow. More realistic material properties, density scaling as well as boundary conditions will affect the magnitudes and patterns shown here.


PIC

Figure 42: Panels (a) and (b) show the density distribution as prescribed from the shear wave velocity model S20RTS and the resulting flow for a global refinement of 4. This model assumes a constant scaling between shear wave and density perturbations. Panel (c) shows the great circle (dashed blue line) along which the top slices are evaluated. Panels (c) and (d) show the resulting heat flux density for a global refinement of 2 (c, cookbook) and 4 (d). The colorbar ranges from 13 to 19 mW/m2 for panel (c) and from 35 to 95 mW/m2 for panel (d).


PIC

Figure 43: The first row of this figure shows the surface dynamic topography resulting from the flow shown in Figure 42 for a global refinement of 2 (a, cookbook) and 4 (b). The colorbar ranges from -2400m to 400m for panel (a) and from -2000m to 1600m for panel (b). The second row shows the dynamic topography at the core mantle boundary for the same model and a refinement of 2 (c, cookbook) and 4 (d). Averages of the dynamic topography fields are indicated at the bottom left of each panel. The bottom row shows the geoid anomalies from this model at the surface for refinement of 2 (e, cookbook) and 4 (f).

5.3.5 Using reconstructed surface velocities by GPlates

This section was contributed by René Gaßmöller

In a number of model setups one may want to include a surface velocity boundary condition that prescribes the velocity according to a specific geologic reconstruction. The purpose of this kind of models is often to test a proposed geologic model and compare characteristic convection results to present-day observables in order to gain information about the initially assumed geologic input. In this cookbook we present ASPECT’s interface to the widely used plate reconstruction software GPlates, and the steps to go from a geologic plate reconstruction to a geodynamic model incorporating these velocities as boundary condition.

Acquiring a plate reconstruction. The plate reconstruction that is used in this cookbook is included in the data/velocity-boundary-conditions/gplates/ directory of your ASPECT installation. For a new model setup however, a user eventually needs to create her own data files, and so we will briefly discuss the process of acquiring a usable plate reconstruction and transferring it into a format usable by ASPECT. Both the necessary software and data are provided by the GPlates project. GPlates is an open-source software for interactive visualization of plate tectonics. It is developed by the EarthByte Project in the School of Geosciences at the University of Sydney, the Division of Geological and Planetary Sciences (GPS) at CalTech and the Center for Geodynamics at the Norwegian Geological Survey (NGU). For extensive documentation and support we refer to the GPlates website (http://www.gplates.org). Apart from the software one needs the actual plate reconstruction that consists of closed polygons covering the complete model domain. For our case we will use the data provided by [GTZ+12] that is available from the GPlates website under “Download Download GPlates-compatible data Global reconstructions with continuously closing plates from 140 Ma to the present”. The data is provided under a Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/licenses/by/3.0/).

Converting GPlates data to ASPECT input. After loading the data files into GPlates (*.gpml for plate polygons, *.rot for plate rotations over time) the user needs to convert the GPlates data to velocity information usable in ASPECT. The purpose of this step is to convert from the description GPlates uses internally (namely a representation of plates as polygons that rotate with a particular velocity around a pole) to one that can be used by ASPECT (which needs velocity vectors defined at individual points at the surface).

With loaded plate polygon and rotation information the conversion from GPlates data to ASPECT-readable velocity files is rather straightforward. First the user needs to generate (or import) so-called “velocity domain points”, which are discrete sets of points at which GPlates will evaluate velocity information. This is done using the “Features Generate Velocity Domain Points Latitude Longitude” menu option. Because ASPECT is using an adaptive mesh it is not possible for GPlates to generate velocity information at the precise surface node positions like for CitcomS or Terra (the other currently available interfaces). Instead GPlates will output the information on a general Latitude/Longitude grid with nodes on all crossing points. ASPECT then internally interpolates this information to the current node locations during the model run. This requires the user to choose a sensible resolution of the GPlates output, which can be adjusted in the “Generate Latitude/Longitude Velocity Domain Points” dialog of GPlates. In general a resolution that resolves the important features is necessary, while a resolution that is higher than the maximal mesh size for the ASPECT model is unnecessary and only increases the computational cost and memory consumption of the model.

Important note: The Mesh creation routine in GPlates has significantly changed from version 1.3 to 1.4. In GPlates 1.4 and later the user has to make sure that the number of longitude intervals is set as twice the number of latitude intervals, the “Place node points at centre of latitude/longitude cells” box is unchecked and the “Latitude/Longitude extents” are set to “Use Global Extents”. ASPECT does check for most possible combinations that can not be read and will cancel the calculation in these cases, however some mistakes can not be checked against from the information provided in the GPlates file.

After creating the Velocity Domain Points the user should see the created points and their velocities indicated as points and arrows in GPlates. To export the calculated velocities one would use the “Reconstruction Export” menu. In this dialog the user may specify the time instant or range at which the velocities shall be exported. The only necessary option is to include the “Velocities” data type in the “Add Export” sub-dialog. The velocities need to be exported in the native GPlates *.gpml format, which is based on XML and can be read by ASPECT. In case of a time-range the user needs to add a pattern specifier to the name to create a series of files. The %u flag is especially suited for the interaction with ASPECT, since it can easily be replaced by a calculated file index (see also 5.3.5).

Setting up the ASPECT model. For this cookbook we will use the parameter file provided in cookbooks/gplates-_2d.prm which uses the 2d shell geometry previously discussed in Section 5.3.1. ASPECT’s GPlates plugin allows for the use of two- and three-dimensional models incorporating the GPlates velocities. Since the output by GPlates is three-dimensional in any case, ASPECT internally handles the 2D model by rotating the model plane to the orientation specified by the user and projecting the plate velocities into this plane. The user specifies the orientation of the model plane by prescribing two points that define a plane together with the coordinate origin (i.e. in the current formulation only great-circle slices are allowed). The coordinates need to be in spherical coordinates θ and ϕ with θ being the colatitude (0 at north pole) and ϕ being the longitude (0 at Greenwich meridian, positive eastwards) both given in radians. The approach of identifying two points on the surface of the Earth along with its center allows to run computations on arbitrary two-dimensional slices through the Earth with realistic boundary conditions.

The relevant section of the input file is then as follows:

 
subsection ?? 
  set ??   = inner, outer  
end 
 
subsection ?? 
  set ?? = outer:gplates   
  set ?? = inner  
  subsection ?? 
    set ?? = $ASPECT_SOURCE_DIR/data/boundary-velocity/gplates/   
    set ?? = current_day.gpml   
    set ?? = 1e6   
    set ?? = 1.5708,4.87   
    set ?? = 1.5708,5.24   
    set ?? = 2000000   
  end 
end

In the “Boundary velocity model” subsection the user prescribes the boundary that is supposed to use the GPlates plugin. Although currently nothing forbids the user to use GPlates plugin for other boundaries than the surface, its current usage and the provided sample data only make sense for the surface of a spherical shell (boundary number 1 in the above provided parameter file). In case you are familiar with this kind of modeling and the plugin you could however also use it to prescribe mantle movements below a lithosphere model. All plugin specific options may be set in section ??. Possible options include the data directory and file name of the velocity file/files, the time step (in model units, mostly seconds or years depending on the “Use years in output instead of seconds” flag) and the points that define the 2D plane. The parameter “Interpolation width” is used to smooth the provided velocity files by a moving average filter. All velocity data points within this distance are averaged to determine the actual boundary velocity at a certain mesh point. This parameter is usually set to 0 (no interpolation, use nearest velocity point data) and is only needed in case the original setting is unstable or slowly converging.

Comparing and visualizing 2D and 3D models. The implementation of plate velocities in both two- and three-dimensional model setups allows for an easy comparison and test for common sources of error in the interpretation of model results. The left top figure in Fig. 44 shows a modification of the above presented parameter file by setting “Dimension = 3” and “Initial global refinement = 3”. The top right plot of Fig. 44 shows an example of three independent two-dimensional computations of the same reduced resolution. The models were prescribed to be orthogonal slices by setting:

 
    set ?? = 3.1416,0.0   
    set ?? = 1.5708,0.0 

and

 
    set ?? = 3.1416,1.5708  
    set ?? = 1.5708,1.5708

The results of these models are plotted simultaneously in a single three-dimensional figure in their respective model planes. The necessary information to rotate the 2D models to their respective planes (rotation axis and angle) is provided by the GPlates plugin in the beginning of the model output. The bottom plot of Fig. 44 finally shows the results of the original cookbooks/gplates-_2d.prm also in the three mentioned planes.

Now that we have model output for otherwise identical 2D and 3D models with equal resolution and additional 2D output for a higher resolution an interesting question to ask would be: What additional information can be created by either using three-dimensional geometry or higher resolution in mantle convection models with prescribed boundary velocities. As one can see in the comparison between the top right and bottom plot in Fig. 44 additional resolution clearly improves the geometry of small scale features like the shape of up- and downwellings as well as the maximal temperature deviation from the background mantle. However, the limitation to two dimensions leads to inconsistencies, that are especially apparent at the cutting lines of the individual 2D models. Note for example that the Nacza slab of the South American subduction zone is only present in the equatorial model plane and is not captured in the polar model plane west of the South American coastline. The (coarse) three-dimensional model on the other hand shows the same location of up- and downwellings but additionally provides a consistent solution that is different from the two dimensional setups. Note that the Nazca slab is subducting eastward, while all 2D models (even in high resolution) predict a westward subduction.

Finally we would like to emphasize that these models (especially the used material model) are way too simplified to draw any scientific conclusion out of it. Rather it is thought as a proof-of-concept what is possible with the dimension independent approach of ASPECT and its plugins.


PIC

Figure 44: Using GPlates for velocity boundary conditions: The top left figure shows the results of a three-dimensional model using the present day plate velocities provided by GPlates as surface boundary condition. The top right figure shows three independent computations on two-dimensional slices through Earth. The boundary conditions for each of these slices (white arrows) are tangential to the slices and are projections of the three-dimensional velocity vectors into the two-dimensional plane occupied by the slice. While the two top models are created with the same mesh resolution the bottom figure shows three independent two-dimensional models using a higher resolution. The view is centered on South America with Antarctica being near the bottom of the figure (coastlines provided by NGU and the GPlates project).

Time-dependent boundary conditions. The example presented above uses a constant velocity boundary field that equals the present day plate movements. For a number of purposes one may want to use a prescribed velocity boundary condition that changes over time, for example to investigate the effect of trench migration on subduction. Therefore ASPECT’s GPlates plugin is able to read in multiple velocity files and linearly interpolate between pairs of files to the current model time. To achieve this, one needs to use the %d wildcard in the velocity file name, which represents the current velocity file index (e.g. time_dependent.%d.gpml). This index is calculated by dividing the current model time by the user-defined time step between velocity files (see parameter file above). As the model time progresses the plugin will update the interpolation accordingly and if necessary read in new velocity files. In case it can not read the next velocity file, it assumes the last velocity file to be the constant boundary condition until the end of the model run. One can test this behavior with the provided data files data/velocity_boundary_conditions/gplates/time_dependent.%d.gpml with the index d ranging from 0 to 3 and representing the plate movements of the last 3 million years corresponding to the same plate reconstruction as used above. Additionally, the parameter Velocity file start time allows for a period of no-slip boundary conditions before starting the use of the GPlates plugin. This is a comfort implementation, which could also be achieved by using the checkpointing possibility described in section 4.5.

5.3.6 2D compressible convection with a reference profile and material properties from BurnMan

This section was contributed by Juliane Dannberg and René Gassmöller

In this cookbook we will set up a compressible mantle convection model that uses the (truncated) anelastic liquid approximation (see Sections 2.10.1 and 2.10.2), together with a reference profile read in from an ASCII data file. The data we use here is generated with the open source mineral physics toolkit BurnMan (http://www.burnman.org) using the python example program simple_adiabat.py. This file is available as a part of BurnMan, and provides a tutorial for how to generate ASCII data files that can be used together with ASPECT. The computation is based on the Birch-Murnaghan equation of state, and uses a harzburgitic composition. However, in principle, other compositions or equations of state can be used, as long as the reference profile contains data for the reference temperature, pressure, density, gravity, thermal expansivity, specific heat capacity and compressibility. Using BurnMan to generate the reference profile has the advantage that all the material property data are consistent, for example, the gravity profile is computed using the reference density.


PIC

Figure 45: Reference profile generated using BurnMan.

The reference profile is shown in Figure 45, and the corresponding data file is located at data/adiabatic-_conditions/ascii-_data/isentrope_properties.txt.

Setting up the ASPECT model. In order to use this profile, we have to import and use the data in the adiabatic conditions model, in the gravity model and in the material model, which is done using the corresponding ASCII data plugins. The input file is provided in cookbooks/burnman.prm, and it uses the 2d shell geometry previously discussed in Section 5.3.1 and surface velocities imported from GPlates as explained in Section 5.3.5.

To use the BurnMan data in the material model, we have to specify that we want to use the ascii reference profile model. This material model makes use of the functionality provided by the AsciiData classes in ASPECT, which allow plugins such as material models, boundary or initial conditions models to read in ASCII data files (see for example Section 5.2.12). Hence, we have to provide the directory and file name of the data to be used in the separate subsection Ascii data model, and the same functionality and syntax will also be used for the adiabatic conditions and gravity model.

The viscosity in this model is computed as the product of a profile ηr(z), where z corresponds to the depth direction of the chosen geometry model, and a term that describes the dependence on temperature:

η(z,T) = ηr(z)η0 exp AT Tadi Tadi ,

where A and η0 are constants determined in the input file via the parameters Viscosity and Thermal viscosity exponent, and ηr(z) is a stepwise constant function that determines the viscosity profile. This function can be specified by providing a list of Viscosity prefactors and a list of depths that describe in which depth range each prefactor should be applied, in other words, at which depth the viscosity changes. By default, it is set to viscosity jumps at 150 km depth, between upper mantle and transition zone, and between transition zone and lower mantle). The prefactors used here lead to a low-viscosity asthenosphere, and high viscosities in the lower mantle. To make sure that these viscosity jumps do not lead to numerical problems in our computation (see Section 5.2.8), we also use harmonic averaging of the material properties.

 
subsection Material model 
  set Model name = ascii reference profile 
 
  subsection Ascii data model 
    set Data file name = isentrope_properties.txt 
    set Data directory = $ASPECT_SOURCE_DIR/data/adiabatic-conditions/ascii-data/ 
  end 
 
  subsection Ascii reference profile 
    set Thermal viscosity exponent = 10.0 
    set Viscosity prefactors = 1.0, 0.1, 1.0, 10.0 
  end 
 
  set Material averaging = harmonic average 
end

As the reference profile has a depth dependent density and also contains data for the compressibility, this material model supports compressible convection models.

For the adiabatic conditions and the gravity model, we also specify that we want to use the respective ascii data plugin, and provide the data directory in the same way as for the material model. The gravity model automatically uses the same file as the adiabatic conditions model.

 
subsection Adiabatic conditions model 
  set Model name = ascii data 
 
  subsection Ascii data model 
    set Data directory = $ASPECT_SOURCE_DIR/data/adiabatic-conditions/ascii-data/ 
    set Data file name = isentrope_properties.txt 
  end 
end
 
subsection Gravity model 
  set Model name = ascii data 
end

To make use of the reference state we just imported from BurnMan, we choose a formulation of the equations that employs a reference state and compressible convection, in this case the anelastic liquid approximation (see Section 2.10.1).

 
subsection Formulation 
  set Formulation = anelastic liquid approximation 
end

This means that the reference profiles are used for all material properties in the model, except for the density in the buoyancy term (on the right-hand side of the force balance equation (1), which in the limit of the anelastic liquid approximation becomes Equation (21)). In addition, the density derivative in the mass conservation equation (see Section 2.11.1) is taken from the adiabatic conditions, where it is computed as the depth derivative of the provided reference density profile (see also Section 2.11.5).

Visualizing the model output. If we look at the output of our model (for example in ParaView), we can see how cold, highly viscous slabs are subducted and hot plumes rise from the core-mantle boundary. The final time step of the model is shown in Figure 46, and the full model evolution can be found at https://youtu.be/nRBOpw5kp-_4. Visualizing material properties such as density, thermal expansivity or specific heat shows how they change with depth, and reveals abrupt jumps at the phase transitions, where properties change from one mineral phase to the next. We can also visualize the gravity and the adiabatic profile, to ensure that the data we provided in the data/adiabatic-_conditions/ascii-_data/isentrope_properties.txt file is used in our model.


PIC PIC

Figure 46: Compressible convection in a 2d spherical shell, using a reference profile exported form BurnMan, which is based on the Birch-Murnaghan equation of state. The figure shows the state at the end of the model evolution over 260Ma.

Comparing different model approximations. For the model described above, we have used the anelastic liquid approximation. However, one might want to use different approximations that employ a reference state, such as the truncated anelastic liquid approximation (TALA, see Section 2.10.2), which is also supported by the ascii reference profile material model. In this case, the only change compared to ALA is in the density used in the buoyancy term, the only place where the temperature-dependent density instead of the reference density is used. For the TALA, this density only depends on the temperature (and not on the dynamic pressure, as in the ALA). Hence, we have to make this change in the appropriate place in the material model (while keeping the formulation of the equations set to anelastic liquid approximation):

 
subsection Material model 
  subsection Ascii reference profile 
    set Use TALA = true 
  end 
end

We now want to compare these commonly used approximations to the “isothermal compression approximation” (see Section 2.10.4) that is unique to ASPECT. It does not require a reference state and uses the full density everywhere in the equations except for the right-hand side mass conservation, where the compressibility is used to compute the density derivative with regard to pressure. Nevertheless, this formulation can make use of the reference profile computed by BurnMan and compute the dependence of material properties on temperature and pressure in addition to that by taking into account deviations from the reference profile in both temperature and pressure. As this requires a modification of the equations outside of the material model, we have to specify this change in the Formulation (and remove the lines for the use of TALA discussed above).

 
subsection Formulation 
  set Formulation = isothermal compression 
end

As the “isothermal compression approximation” is also ASPECT’s default for compressible models, the same model setup can also be achieved by just removing the lines that specify which Formulation should be used.

The Figures 47 and 48 show a comparison between the different models. They demonstrate that upwellings and downwellings may occur in slightly different places and at slightly different times when using a different approximation, but averaged model properties describing the state of the model – such as the root mean square velocity – are similar between the models.


PIC

Figure 47: Comparison between the anelastic liquid approximation, the truncated anelastic liquid approximation and the isothermal compression approximation, showing the temperature distribution for the different models at the end of the model evolution at 260Ma.


PIC

Figure 48: Comparison between the anelastic liquid approximation, the truncated anelastic liquid approximation and the isothermal compression approximation, showing the evolution of the root mean square velocity.

5.3.7 Reproducing rheology of Morency and Doin, 2004

This section was contributed by Jonathan Perry-Houts

Modeling interactions between the upper mantle and the lithosphere can be difficult because of the dynamic range of temperatures and pressures involved. Many simple material models will assign very high viscosities at low temperature thermal boundary layers. The pseudo-brittle rheology described in [MD04] was developed to limit the strength of lithosphere at low temperature. The effective viscosity can be described as the harmonic mean of two non-Newtonian rheologies:

veff = 1 veffv + 1 veffp 1

where

veffv = B ϵ̇ ϵ̇ref 1+1nv exp Ea + V aρmgz nvRT , veffp = (τ 0 + γρmgz) ϵ̇1+1np ϵ̇ref1np ,

where B is a scaling constant; ϵ̇ is defined as the quadratic sum of the second invariant of the strain rate tensor and a minimum strain rate, ϵ̇0; ϵ̇ref is a reference strain rate; nv, and np are stress exponents; Ea is the activation energy; V a is the activation volume; ρm is the mantle density; R is the gas constant; T is temperature; τ0 is the cohesive strength of rocks at the surface; γ is a coefficient of yield stress increase with depth; and z is depth.

By limiting the strength of the lithosphere at low temperature, this rheology allows one to more realistically model processes like lithospheric delamination and foundering in the presence of weak crustal layers. A similar model setup to the one described in [MD04] can be reproduced with the files in the directory cookbooks/morency_doin_2004. In particular, the following sections of the input file are important to reproduce the setup:

Note: [MD04] defines the second invariant of the strain rate in a nonstandard way. The formulation in the paper is given as ϵII = 1 2(ϵ112 + ϵ122), where ϵ is the strain rate tensor. For consistency, that is also the formulation implemented in ASPECT. Because of this irregularity it is inadvisable to use this material model for purposes beyond reproducing published results.

Note: The viscosity profile in Figure 1 of [MD04] appears to be wrong. The published parameters do not reproduce those viscosities; it is unclear why. The values used here get very close. See Figure 49 for an approximate reproduction of the original figure.
 
subsection ?? 
  set ?? = box  
 
  subsection ?? 
    set ??      = 3000e3  
    set ??      = 750e3  
    set ?? = 4  
  end 
end 
 
subsection ?? 
  set ?? = 2  
  set ??  = upper_crust, lower_crust  
end 
 
subsection ?? 
  set ?? = function  
 
  subsection ?? 
    set ?? = x,y  
    set ?? = if(y>=725e3,1,0);if((y<725e3&y>700e3),1,0)  
  end 
end 
 
subsection ?? 
  set ?? = function  
 
  subsection ?? 
    set ?? = x,y  
    set ?? = h=750e3, w=3000e3, mantleT=1350 # deg C  
    set ?? = \  
      if( y < 100e3, \ 
        (100e3-y)/100e3*(1600-mantleT)+mantleT+293, \ 
        if(y>650e3, \ 
          (h-y)/(100e3)*mantleT+293, \ 
          mantleT+293)) 
  end 
end 
 
subsection ?? 
  set ?? = Morency and Doin  
 
  subsection ?? 
    set ?? = 3300,2920,2920  
    set ?? = 500,320,320  
    set ?? = 0.25  
    set ?? = 3.5e-5  
    set ?? = 3  
    set ?? = 30  
    set ?? = 0.8e-6  
    set ?? = 1.25e3  
    set ?? = 6.4e-6  
    set ?? = 6.4e-16  
    set ?? = 7e11 ## Value used in paper is 1.24e14  
    set ?? = 117  
    set ?? = 293  
    set ?? = 5e-19                             ## Value used in paper is 1.4e-20  
  end 
end

PIC

Figure 49: Approximate reproduction of figure 1 from [MD04] using the ‘morency doin’ material model with almost all default parameters. Note the low-viscosity Moho, enabled by the low activation energy of the crustal component.

5.3.8 Crustal deformation

This section was contributed by Cedric Thieulot, and makes use of the Drucker-Prager material model written by Anne Glerum and the free surface plugin by Ian Rose.

This is a simple example of an upper-crust undergoing compression or extension. It is characterized by a single layer of visco-plastic material subjected to basal kinematical boundary conditions. In compression, this setup is somewhat analogous to [Wil99], and in extension to [AHT11].

Brittle failure is approximated by adapting the viscosity to limit the stress that is generated during deformation. This “cap” on the stress level is parameterized in this experiment by the pressure-dependent Drucker Prager yield criterion and we therefore make use of the Drucker-Prager material model (see Section ??) in the cookbooks/crustal_model_2D.prm.

The layer is assumed to have dimensions of 80km × 16km and to have a density ρ = 2800 kg/m3. The plasticity parameters are specified as follows:

 
subsection Material model 
  set Model name = drucker prager 
  subsection Drucker Prager 
    set Reference density = 2800 
    subsection Viscosity 
       set Minimum viscosity = 1e19 
       set Maximum viscosity = 1e25 
       set Reference strain rate = 1e-20 
       set Angle internal friction = 30 
       set Cohesion = 20e6 
    end 
  end 
end

The yield strength σy is a function of pressure, cohesion and angle of friction (see Drucker-Prager material model in Section ??), and the effective viscosity is then computed as follows:

μeff = 1 σy 2ϵ̇ + μmin + 1 μmax1

where ϵ̇ is the square root of the second invariant of the deviatoric strain rate. The viscosity cutoffs insure that the viscosity remains within computationally acceptable values.

During the first iteration of the first timestep, the strain rate is zero, so we avoid dividing by zero by setting the strain rate to Reference strain rate.

The top boundary is a free surface while the left, right and bottom boundaries are subjected to the following boundary conditions:

 
subsection Boundary velocity model 
  subsection Function 
    set Variable names      = x,y 
    set Function constants  = cm=0.01, year=1 
    set Function expression =  if (x<40e3 , 1*cm/year, -1*cm/year) ; 0 
  end 
end

Note that compressive boundary conditions are simply achieved by reversing the sign of the imposed velocity.

The free surface will be advected up and down according to the solution of the Stokes solve. We have a choice whether to advect the free surface in the direction of the surface normal or in the direction of the local vertical (i.e., in the direction of gravity). For small deformations, these directions are almost the same, but in this example the deformations are quite large. We have found that when the deformation is large, advecting the surface vertically results in a better behaved mesh, so we set the following in the free surface subsection:

 
subsection Free surface 
  set Surface velocity projection = vertical 
end

We also make use of the strain rate-based mesh refinement plugin:

 
subsection Mesh refinement 
  set Initial adaptive refinement        = 1 
  set Initial global refinement          = 3 
  set Refinement fraction                = 0.95 
  set Strategy                           = strain rate 
  set Coarsening fraction                = 0.05 
  set Time steps between mesh refinement = 1 
  set Run postprocessors on initial refinement = true 
end

Setting set Initial adaptive refinement = 4 yields a series of meshes as shown in Fig. (50), all produced during the first timestep. As expected, we see that the location of the highest mesh refinement corresponds to the location of a set of conjugated shear bands.

If we now set this parameter to 1 and allow the simulation to evolve for 500kyr, a central graben or plateau (depending on the nature of the boundary conditions) develops and deepens/thickens over time, nicely showcasing the unique capabilities of the code to handle free surface large deformation, localised strain rates through visco-plasticity and adaptive mesh refinement as shown in Fig. (51).


PIC

Figure 50: Mesh evolution during the first timestep (refinement is based on strain rate).

Deformation localizes at the basal velocity discontinuity and plastic shear bands form at an angle of approximately 53 to the bottom in extension and 35 in compression, both of which correspond to the reported Arthur angle [Kau10Bui12].


PIC

Figure 51: Finite element mesh, velocity, viscosity and strain rate fields in the case of extensional boundary conditions (top) and compressive boundary conditions (bottom) at t=500kyr.

Extension to 3D. We can easily modify the previous input file to produce crustal_model_3D.prm which implements a similar setup, with the additional constraint that the position of the velocity discontinuity varies with the y-coordinate, as shown in Fig. (52). The domain is now 128 × 96 × 16km and the boundary conditions are implemented as follows:

 
subsection Boundary velocity model 
  subsection Function 
    set Variable names      = x,y,z 
    set Function constants  = cm=0.01, year=1 
    set Function expression =  if (x<56e3 && y<=48e3 | x<72e3 && y>48e3,-1*cm/year,1*cm/year);0;0 
  end 
end

The presence of an offset between the two velocity discontinuity zones leads to a transform fault which connects them.


PIC

Figure 52: Basal velocity boundary conditions and corresponding strain rate field for the 3D model.

The Finite Element mesh, the velocity, viscosity and strain rate fields are shown in Fig. (53) at the end of the first time steps. The reader is encouraged to run this setup in time to look at how the two grabens interact as a function of their initial offset [AHT11AHT12AHFT13].


PIC

Figure 53: Finite element mesh, velocity, viscosity and strain rate fields at the end of the first time step after one level of strain rate-based adaptive mesh refinement.

5.3.9 Continental extension

This section was contributed by John Naliboff

In the crustal deformation examples above, the viscosity depends solely on the Drucker Prager yield criterion defined by the cohesion and internal friction angle. While this approximation works reasonably well for the uppermost crust, deeper portions of the lithosphere may undergo either brittle or viscous deformation, with the latter depending on a combination of composition, temperature, pressure and strain-rate. In effect, a combination of the Drucker-Prager and Diffusion dislocation material models is required. The visco-plastic material model is designed to take into account both brittle (plastic) and non-linear viscous deformation, thus providing a template for modeling complex lithospheric processes. Such a material model can be used in ASPECT using the following set of input parameters:

 
subsection Material model 
  set Model name = visco plastic 
  subsection Visco Plastic

This cookbook provides one such example where the continental lithosphere undergoes extension. Notably, the model design follows that of numerous previously published continental extension studies [HB11BHPeGeS14NB15, and references therein].

Continental Extension The 2D Cartesian model spans 400 (x) by 100 (y) km and has a finite element grid with uniform 2 km spacing. Unlike the crustal deformation cookbook (see Section 5.3.8, the mesh is not refined with time.

 
subsection Geometry model 
  set Model name = box 
  subsection Box 
    set X repetitions = 200 
    set Y repetitions = 50 
    set X extent      = 400e3 
    set Y extent      = 100e3 
  end 
end 
 
subsection Mesh refinement 
  set Initial adaptive refinement        = 0 
  set Initial global refinement          = 0 
  set Time steps between mesh refinement = 0 
end

Similar to the crustal deformation examples above, this model contains a free surface. Deformation is driven by constant horizontal (x-component) velocities (0.25 cm/yr) on the side boundaries (y-velocity component unconstrained), while the bottom boundary has vertical inflow to balance the lateral outflow. The top, and bottom boundaries have fixed temperatures, while the sides are insulating. The bottom boundary is also assigned a fixed composition, while the top and sides are unconstrained.

 
subsection Boundary composition model 
  set Fixed composition boundary indicators   = bottom 
end 
 
subsection Free surface 
  set Free surface boundary indicators        = top 
end 
 
subsection Boundary velocity model 
  set Prescribed velocity boundary indicators = left x: function, right x:function, bottom y:function 
  subsection Function 
    set Variable names      = x,y 
    set Function constants  = cm=0.01, year=1 
    set Function expression = if (x<200e3 , -0.25*cm/year, 0.25*cm/year) ; 0.125*cm/year; 
  end 
end 
 
subsection Boundary temperature model 
  set Fixed temperature boundary indicators   = bottom, top 
  set List of model names = box 
  subsection Box 
    set Bottom temperature = 1573 
    set Top temperature    =  273 
  end 
end

Sections of the lithosphere with distinct properties are represented by compositional fields for the upper crust (20 km thick), lower crust (10 km thick) and mantle lithosphere (70 km thick). A mechanically weak seed within the mantle lithosphere helps localize deformation. Material (viscous flow law parameters, cohesion, internal friction angle) and thermodynamic properties for each compositional field are based largely on previous numerical studies. Dislocation creep viscous flow parameters are taken from published deformation experiments for wet quartzite [RB04], wet anorthite [RGWD06] and dry olivine [HK04].

 
subsection Compositional fields 
  set Number of fields = 4 
  set Names of fields = upper, lower, mantle, seed 
end 
 
subsection Initial composition model 
  set Model name = function 
  subsection Function 
    set Variable names      = x,y 
    set Function expression = if(y>=80.e3, 1, 0); \ 
                              if(y<80.e3 && y>=70.e3, 1, 0); \ 
                              if(y<70.e3 && y>-100.e3,1, 0); \ 
                              if(y<68.e3 && y>60.e3 && x>=198.e3 && x<=202.e3 , 1, 0); 
  end 
end

The initial thermal structure, radiogenic heating model and associated thermal properties are consistent with the prescribed thermal boundary conditions and produce a geotherm characteristic of the continental lithosphere. The equations defining the initial geotherm [Cha86] follow the form

T(z) = TT + qT k z Az2 2k (48)

where T is temperature, z is depth, TT is the temperature at the layer surface (top), qT is surface heat flux, k is thermal conductivity, and A is radiogenic heat production.

For a layer thickness Δz, the basal temperature (TB) and heat flux (qB) are

TB = TT + qT k Δz AΔz2 2k , (49) qB = qT AΔz. (50)

In this example, specifying the top (273 K) and bottom temperature (1573 K), thermal conductivity of each layer and radiogenic heat production in each layer provides enough constraints to successively solve for the temperature and heat flux at the top of the lower crust and mantle.

As noted above, the mechanically weak seed placed within the mantle localizes the majority of deformation onto two conjugate shear bands that propagate from the surface of the seed to the free surface. After 5 million years of extension background ‘stretching’ is clearly visible in the strain-rate field, but deformation is still largely focused within the set of conjugate shear bands originating at the weak seed (Fig. 54). As expected, crustal thickness and surface topography patterns reveal a relatively symmetric horst and graben structure, which arises from displacements along the shear bands (Fig. 55). While deformation along the two major shear bands dominates at this early stage of extension, additional shear bands often develop within the horst-graben system leading to small inter-graben topographic variations. This pattern is illustrated in a model with double the numerical resolution (initial 1 km grid spacing) after 10 million years of extension (Fig. 56).

With further extension for millions of years, significant crustal thinning and surface topography development should occur in response to displacement along the conjugate shear bands. However, given that the model only extends to 100 km depth, the simulation will not produce a realistic representation of continental breakup due to the lack of an upwelling asthenosphere layer. Indeed, numerical studies that examine continental breakup, rather than just the initial stages of continental extension, include an asthenospheric layer or modified basal boundary conditions (e.g. Winkler boundary condition [BHPeGeS14, for example]) as temperature variations associated with lithospheric thinning exert a first-order influence on the deformation patterns. As noted below, numerous additional parameters may also affect the temporal evolution of deformation patterns.

Note: It is important to consider that the non-linearity of visco-plastic rheologies and mesh-dependence of brittle shear bands make lithospheric deformation models highly sensitive to a large number of parameters. In order to ensure the conclusions drawn from a series of numerical experiments are robust, one should complete a sensitivity test for a large range of parameters including grid resolution, model geometry, boundary conditions, initial composition and temperature conditions, material properties, composition discretization, CFL number and solver settings. If you are new to modeling lithospheric processes, a reasonable starting point is to try and reproduce results from a relevant previous study and then perform a sensitivity test for the parameters listed above. While highly time consuming, completing this procedure will prove invaluable when you design and assess the results of your own numerical study.

PIC

Figure 54: Strain rate (s1) after 5e6 years of extension. The black line marks the 550 C isotherm.


PIC

Figure 55: Compositional field after 5e6 years of extension. The black line marks the 550 C isotherm.


PIC

Figure 56: Strain rate(s1) after 10e6 years of extension. The black line marks the 550 C isotherm. The numerical resolution (1 km) is double that of the previous model.

5.3.10 Inner core convection

This section was contributed by Juliane Dannberg, and the model setup was inspired by discussions with John Rudge. Additional materials and comments by Mathilde Kervazo and Marine Lasbleis.

This is an example of convection in the inner core of the Earth. The model is based on a spherical geometry, with a single material. Three main particularities are constitutive of this inner core dynamics modeling: it consists of a self-gravitating sphere where the gravity decreases linearly from the boundary to zero at the center of the inner core; the boundary conditions combine normal stress and normal velocity, and take into account the rate of phase change (melting/freezing) at the inner-outer core boundary; the material has a temperature dependent density that makes the density profile unstably stratified as temperature increases towards the center of the core. Note that we do not actually compute self-gravitation, but instead define a linear gravity profile. Since the density variations are very small, this is a good approximation.

The setup is analogous to the models described in [DAC13], and all material properties are chosen in a way so that the equations are non-dimensional.

The required heating model and changes to the material model are implemented in a shared library (cookbooks/inner_core_convection/inner_core_convection.cc).

In the non-dimensional form of the equations derived by [DAC13], we solve for the potential temperature T = T̃ Tis (T̃ is the temperature field, Tis the isentropic – also called adiabatic – temperature). This allows to solve the temperature field with simple boundary conditions (T = 0), even if the temperature of the inner core boundary evolves with time, defined as the intersection between the isentrope and the liquidus of the material in the outer core. The equations for inner core convection in the approximation of no growth (equation 59 for the potential temperature) are

σ = RaTg, (51) u = 0, (52) T t + u T 2T = H, (53) where Ra is the Rayleigh number and H is the ’source term’, constructed when removing the adiabatic temperature from the temperature field to obtain the potential temperature T. H describes the time-evolution of the adiabatic temperature over time, due to secular cooling of the outer core. In spherical geometry, H = 6.

Mechanical boundary. The mechanical boundary conditions for the inner core are tangential stress-free and continuity of the normal stress at the inner-outer core boundary. For the non-dimensional equations, that means that we define a “phase change number” P (see [DAC13]) so that the normal stress at the boundary is Pur with the radial velocity ur. This number characterizes the resistance to phase change at the boundary, with P corresponding to infinitely slow melting/freezing (or a free slip boundary), and P 0 corresponding to instantaneous melting/freezing (or a zero normal stress, corresponding to an open boundary).

In the weak form, this results in boundary conditions of the form of a surface integral:

SP(u n)(v n)dS,

with the normal vector n.

This phase change term is added to the matrix in the cookbooks/inner_core_convection/inner_core_assembly.cc plugin by using a signal (as described in Section 6.5). The signal connects the function set_assemblers_phase_boundary, which is only called once at the beginning of the model run. It creates the new assembler PhaseBoundaryAssembler for the boundary faces of the Stokes system and adds it to the list of assemblers executed in every time step. The assembler contains the function phase_change_boundary_conditions that loops over all faces at the model boundary, queries the value of P from the material model, and adds the surface integral given above to the matrix:

 
#include <aspect/simulator_access.h> 
#include <aspect/global.h> 
#include <aspect/simulator.h> 
#include <aspect/simulator/assemblers/interface.h> 
 
#include <deal.II/base/quadrature_lib.h> 
#include <deal.II/fe/fe_values.h> 
 
 
#include "inner_core_convection.cc" 
 
namespace aspect 
{ 
  /** 
   * A new assembler class that implements boundary conditions for the 
   * normal stress and the normal velocity that take into account the 
   * rate of phase change (melting/freezing) at the inner-outer core 
   * boundary. The model is based on Deguen, Alboussiere, and Cardin 
   * (2013), Thermal convection in EarthâĂŹs inner core with phase change 
   * at its boundary. GJI, 194, 1310-133. 
   * 
   * The mechanical boundary conditions for the inner core are 
   * tangential stress-free and continuity of the normal stress at the 
   * inner-outer core boundary. For the non-dimensional equations, that 
   * means that we can define a phase change number $\mathcal{P}$ so 
   * that the normal stress at the boundary is $-\mathcal{P} u_r$ with 
   * the radial velocity $u_r$. This number characterizes the resistance 
   * to phase change at the boundary, with $\mathcal{P}\rightarrow\infty$ 
   * corresponding to infinitely slow melting/freezing (free slip 
   * boundary), and $\mathcal{P}\rightarrow0$ corresponding to 
   * instantaneous melting/freezing (zero normal stress, open boundary). 
   * 
   * In the weak form, this results in boundary conditions of the form 
   * of a surface integral: 
   * $$\int_S \mathcal{P} (\mathbf u \cdot \mathbf n) (\mathbf v \cdot \mathbf n) dS,$$, 
   * with the normal vector $\mathbf n$. 
   * 
   * The function value of $\mathcal{P}$ is taken from the inner core 
   * material model. 
   */ 
  template <int dim> 
  class PhaseBoundaryAssembler : 
    public aspect::Assemblers::Interface<dim>, 
    public SimulatorAccess<dim> 
  { 
 
    public: 
 
      virtual 
      void 
      execute (internal::Assembly::Scratch::ScratchBase<dim>   &scratch_base, 
               internal::Assembly::CopyData::CopyDataBase<dim> &data_base) const 
      { 
        internal::Assembly::Scratch::StokesSystem<dim> &scratch = dynamic_cast<internal::Assembly::Scratch::StokesSystem<dim>& > (scratch_base); 
        internal::Assembly::CopyData::StokesSystem<dim> &data = dynamic_cast<internal::Assembly::CopyData::StokesSystem<dim>& > (data_base); 
 
        const Introspection<dim> &introspection = this->introspection(); 
        const FiniteElement<dim> &fe            = this->get_fe(); 
        const unsigned int stokes_dofs_per_cell = data.local_dof_indices.size(); 
        const unsigned int n_q_points           = scratch.face_finite_element_values.n_quadrature_points; 
 
        //assemble force terms for the matrix for all boundary faces 
        if (scratch.cell->face(scratch.face_number)->at_boundary()) 
          { 
            scratch.face_finite_element_values.reinit (scratch.cell, scratch.face_number); 
 
            for (unsigned int q=0; q<n_q_points; ++q) 
              { 
                const double P = dynamic_cast<const MaterialModel::InnerCore<dim>&> 
                                 (this->get_material_model()).resistance_to_phase_change 
                                 .value(scratch.material_model_inputs.position[q]); 
 
                for (unsigned int i = 0, i_stokes = 0; i_stokes < stokes_dofs_per_cell; /*increment at end of loop*/) 
                  { 
                    if (introspection.is_stokes_component(fe.system_to_component_index(i).first)) 
                      { 
                        scratch.phi_u[i_stokes] = scratch.face_finite_element_values[introspection 
                                                                                     .extractors.velocities].value(i, q); 
                        ++i_stokes; 
                      } 
                    ++i; 
                  } 
 
                const Tensor<1,dim> normal_vector = scratch.face_finite_element_values.normal_vector(q); 
                const double JxW = scratch.face_finite_element_values.JxW(q); 
 
                // boundary term: P*u*n*v*n*JxW(q) 
                for (unsigned int i=0; i<stokes_dofs_per_cell; ++i) 
                  for (unsigned int j=0; j<stokes_dofs_per_cell; ++j) 
                    data.local_matrix(i,j) += P * 
                                              scratch.phi_u[i] * 
                                              normal_vector * 
                                              scratch.phi_u[j] * 
                                              normal_vector * 
                                              JxW; 
              } 
          } 
      } 
  }; 
 
  template <int dim> 
  void set_assemblers_phase_boundary(const SimulatorAccess<dim> &simulator_access, 
                                     Assemblers::Manager<dim> &assemblers) 
  { 
    AssertThrow (dynamic_cast<const MaterialModel::InnerCore<dim>*> 
                 (&simulator_access.get_material_model()) != 0, 
                 ExcMessage ("The phase boundary assembler can only be used with the " 
                             "material model inner core material’!")); 
 
    PhaseBoundaryAssembler<dim> *phase_boundary_assembler = new PhaseBoundaryAssembler<dim>(); 
    assemblers.stokes_system_on_boundary_face.push_back (std_cxx11::unique_ptr<PhaseBoundaryAssembler<dim> > (phase_boundary_assembler)); 
  } 
} 
 
template <int dim> 
void signal_connector (aspect::SimulatorSignals<dim> &signals) 
{ 
  signals.set_assemblers.connect (&aspect::set_assemblers_phase_boundary<dim>); 
} 
 
ASPECT_REGISTER_SIGNALS_CONNECTOR(signal_connector<2>, 
                                  signal_connector<3>)

Instructions for how to compile and run models with a shared library are given in Section 5.4.1.

Governing parameters. Analyzing Equations (51)–(53), two parameters determine the dynamics of convection in the inner core: the Rayleigh number Ra and the phase change number P. Three main areas can be distinguished: the stable area, the plume convection area and the translation mode of convection area (Figure 57). For low Rayleigh numbers (below the critical value Rac), there is no convection and thermal diffusion dominates the heat transport. However, if the inner core is convectively unstable (Ra>Rac), the convection regime depends mostly on P. For low P (<29), the convective translation mode dominates, where material freezes at one side of the inner core and melts at the other side, so that the velocity field is uniform, pointing from the freezing to the melting side. Otherwise, at high P (>29), convection takes the usual form of thermal convection with shear free boundary and no phase change, that is the one-cell axisymmetric mode at the onset, and chaotic plume convection for larger Rayleigh number. In this case, melting and solidification at the ICB have only a small dynamic effect. At intermediate values of P, the first unstable mode is a linear combination of the high-P convection mode and of the small-P translation mode.


PIC

Figure 57: Stability diagram for convection in a sphere with phase change at its outer boundary. The stability curves for the first unstable mode (l=1) and the translation are obtained from [DAC13]. Each dot (no convection) and triangle (blue: translation, yellow: plume convection) is one model run done with ASPECT. The highest the Ra and P are, the more refinement is required (see text).

Changing the values of Ra and P in the input file allows switching between the different regimes. The Rayleigh number can be changed by adjusting the magnitude of the gravity:

 
# The gravity has its maximum value at the boundary of inner and 
# outer core, and decreases approximately linearly to zero towards 
# the center of the core. 
# The Rayleigh number used in the model is given by the magnitude 
# of the gravity at the inner core/outer core boundary. 
subsection Gravity model 
  set Model name = radial linear 
 
  subsection Radial linear 
    set Magnitude at bottom = 0.0 
    set Magnitude at bottom = 0.0 
    set Magnitude at surface = 2     # <-- Ra 
  end 
end

The phase change number is implemented as part of the material model, and as a function that can depend on the spatial coordinates and/or on time:

 
subsection Material model 
  set Model name = inner core material 
 
# The inner core material model also contains a function that 
# represents the resistance to melting/freezing at the inner core 
# boundary. 
# For P-->inifinity, the boundary is a free slip boundary, and for 
# P-->0, the boundary is an open boundary (with zero normal stress). 
  subsection Inner core 
    subsection Phase change resistance function 
      set Variable names      = x,y,z 
      set Function expression = 1e-2     # <-- P 
    end 
  end 
end

Figure 58 shows examples of the three regimes with Ra = 3000,P = 1000 (plume convection), Ra = 105,P = 0.01 (translation), Ra = 10,P = 30 (no convection).


PIC PIC PIC PIC PIC PIC PIC PIC PIC

Figure 58: Convection regimes in the inner core for different values of Ra and P. From left to right: no convection, translation, plume convection; the 2D slices at the top are with the default temperature scale for all panels, while in the second row an adaptive scale is used. The bottom row features slightly different model parameters (that are still in the same regime as the models in the respective panels above) and also shows the velocity as arrows.

Mesh refinement. The temperature is set to 0 at the outer boundary and a large temperature gradient can develop at the boundary layer, especially for the translation regime. The adaptive mesh refinement allows it to resolve this layer at the inner core boundary. Another solution is to apply a specific initial refinement, based on the boundary layer thickness scaling law δ Ra0.236, and to refine specifically the uppermost part of the inner core.

In order to have a mesh that is much finer at the outer boundary than in the center of the domain, this expression for the mesh refinement subsection can be used in the input file:

 
subsection Mesh refinement 
  set Initial global refinement          = 4  #this may be more expensive, and should be run on a cluster. 
  set Initial adaptive refinement        = 1 
  set Strategy                           = minimum refinement function 
  set Time steps between mesh refinement = 0 
 
  subsection Minimum refinement function 
    set Variable names = depth, phi, theta 
    set Function expression = if(depth>0.1,if(depth>0.2,2,5),6) 
  end 
end

Scaling laws. In addition, [DAC13] give scaling laws for the velocities in each regime derived from linear stability analysis of perfect translation, and show how numerical results compare to them. In the regimes of low P, translation will start at a critical ratio of Rayleigh number and phase change number Ra P = 175 2 with steady-state translation velocities being zero below this threshold and tending to v0 = 175 2 6 5 Ra P going towards higher values of Ra P . In the same way, translation velocities will decrease from v0 with increasing P, with translation transitioning to plume convection at P 29. Both trends are shown in Figure 59 and can be compared to Figure 8 and 9 in [DAC13].


PIC PIC

Figure 59: Translation rate (approximated by the average of the velocity component in the direction of translation), normalized to the low P limit estimate given in [DAC13], as a function of Ra P for P = 102 (left) and as a function of P for Ra = 105 (right). The dashed gray line gives the translation velocity predicted in the limit of low P. Disagreement for larger values of P indicates that higher order terms (not included in the low P approximation) become important. Additionally, differences between the analytical and numerical model might be the result of limited resolution (only 12 elements in radial direction).

5.3.11 Melt migration in a 2D mantle convection model

This section was contributed by Juliane Dannberg and is based on a section in [DH16] by Juliane Dannberg and Timo Heister.

The following cookbook will explain how to use ASPECT’s implementation of coupled magma/mantle dynamics (see Section 2.13) to set up a model of mantle convection that also includes melting and freezing of mantle rock, and the transport of melt according to the two-phase flow equations. The model setup is described in detail in [DH16], which can be found here, and in the following we will go over a slightly simplified version in lower resolution. We will start by looking at a global mantle convection without melt migration, and will then discuss how the input file has to be modified in order to add melt transport. A movie that compares the evolution of the temperature field and the amount of melt present in both models in higher resolution can be found online.

The model setup is a 2D box with dimensions of 2900 × 8700 km, and it is heated from the bottom and cooled from the top. A full description can be found in Section 4.7 “Influence of melt migration on a global-scale convection model” in [DH16]. In the first model we will look at, melting and freezing is only included passively: We use the melt fraction visualization postprocessor to compute how much melt is present for a given temperature and pressure at every given point in time and space in our model, but the presence of melt does not influence material properties like density or viscosity, and melt does not move relative to the solid. This also means that because melt is not extracted, the bulk composition of the material always stays the same, and melt only freezes again once advection or conduction causes the temperature of the solid rock to be below the solidus. The following input file (which can be found in cookbooks/global_no_melt.prm) contains a detailed description of the different options required to set up such a model:

 
# Model setup for mantle convection in a 2D box without melting. 
# This file is used as a starting point for a cookbook that 
# explains how to add melting and melt transport to a mantle 
# convection simulation. 
 
set Dimension                              = 2 
set Adiabatic surface temperature          = 1600 
set Maximum time step                      = 1e6 
set Output directory                       = no_melt 
set Use years in output instead of seconds = true 
 
# The end time of the simulation. Because we want to see how upwellings 
# and downwellings evolve over time, and if differences develop between 
# the model with and without melt migration, we set the end time to 140 Ma. 
set End time                               = 1.4e8 
 
# We choose a stricter than default linear Stokes solver tolerance, 
# to be consistent with the global_melt cookbook. 
subsection Solver parameters 
  subsection Stokes solver parameters 
    set Linear solver tolerance = 1e-8 
    set Number of cheap Stokes solver steps = 100 
  end 
end 
 
# We prescribe free-slip boundary conditions on all 
# sides. 
subsection Boundary velocity model 
  set Tangential velocity boundary indicators = left, right, top, bottom 
end 
 
# We also choose relatively large values for the stabilization parameters: 
# The model resolution is very coarse (in order for this model to run in a 
# short time), so we want to make sure that no temperature over- and 
# undershoots will develop. In a model with melting this would be 
# particularly problematic, as large amounts of melt could be generated 
# by temperature spikes, and we want to be consistent between the model 
# with and without melt transport. 
subsection Discretization 
  subsection Stabilization parameters 
    set beta  = 0.5 
    set cR    = 1 
  end 
end 
 
##################### Initial conditions ######################## 
 
# We choose an adiabatic temperature profile as initial condition, 
# with conductive temperature profiles in the top and bottom boundary 
# layers, which were computed using a half space cooling model. 
# The cold top boundary layer corresponds to an age of 300 Ma, 
# and the hot top boundary layer corresponds to an age of 500 Ma. 
# A small temperature perturbation is added at the bottom of the 
# domain. To make the model asymmetric, we place it in a distance of 
# x = 2900 km from the left boundary. 
# Temperatures from both initial temperature models we specify are 
# added (by default). 
subsection Initial temperature model 
  set List of model names = adiabatic, function 
  subsection Adiabatic 
    set Age bottom boundary layer = 5e8 
    set Age top boundary layer    = 3e8 
 
    subsection Function 
      set Function expression       = 0;0 
    end 
  end 
 
  subsection Function 
    set Function constants        = r=350000, amplitude=50 
    set Function expression       = if((x-2900000)*(x-2900000)+y*y<r,amplitude,0) 
  end 
end 
 
##################### Boundary conditions ######################## 
 
# As boundary conditions for the temperature, we just use the 
# initial conditions again. This temperature is applied as a prescribed 
# temperature at the top and bottom boundary, as specified above. 
subsection Boundary temperature model 
  set Fixed temperature boundary indicators = top, bottom 
  set List of model names = initial temperature 
 
  subsection Initial temperature 
    set Minimal temperature = 293 
    set Maximal temperature = 3700 
  end 
end 
 
##################### Model geometry ######################## 
 
# The model geometry is a box with an aspect ratio of 3, 
# extending to the base of the mantle in vertical direction. 
subsection Geometry model 
  set Model name = box 
 
  subsection Box 
    set X extent = 8700000 
    set Y extent = 2900000 
    set X repetitions = 3 
  end 
 
end 
 
################ Gravity and material properties ################## 
 
# The model has a constant gravity. 
subsection Gravity model 
  set Model name = vertical 
 
  subsection Vertical 
    set Magnitude = 9.81 
  end 
end 
 
# We use the melt global material model, which is one of the 
# material models that works with melt transport, as it also 
# specifies the material properties needed for melt migration, 
# such as the permeability, the melt density and the melt 
# viscosity. 
# It also works without melt transport, and in this case these 
# properties are not used, so we do not have to specify them 
# here. 
subsection Material model 
 
  set Model name = melt global 
  subsection Melt global 
    set Thermal conductivity              = 4.7 
    set Reference solid density           = 3400 
    set Thermal expansion coefficient     = 2e-5 
    set Reference shear viscosity         = 5e21 
    set Thermal viscosity exponent        = 7 
    set Reference temperature             = 1600 
    set Solid compressibility             = 4.2e-12 
  end 
end 
 
##################### Mesh refinement ######################### 
 
# For the model without melt migration, we do not have to use 
# mesh adaptivity, because time- and length scales of material 
# motion does do not vary a lot across the model, and a global 
# resolution of 4 is sufficient to capture the behaviour of 
# upwellings and downwellings. 
subsection Mesh refinement 
  set Initial adaptive refinement              = 0 
  set Initial global refinement                = 4 
  set Time steps between mesh refinement       = 0 
end 
 
# As the model is compressible and has an adiabatic temperature profile, we include 
# adiabatic heating in the list of heating models. 
subsection Heating model 
  set List of model names = adiabatic heating 
end 
 
##################### Postprocessing ######################## 
 
# In addition to the visualization output, we select a number 
# of postprocessors that allow us to compute some statistics 
# about the output (to see how much the model without and the 
# model with melt migration differ), and in particular we use 
# the "depth average" postprocessor that will allow us to plot 
# depth-averaged model quantities over time. 
subsection Postprocess 
  set List of postprocessors = visualization, composition statistics, velocity statistics, temperature statistics, melt statistics, depth average 
 
  # For the model without melt migration, we only compute the 
  # equilibrium melt fraction in dependence of temperature and 
  # pressure. This is done as a postprocessing step, by adding 
  # "melt fraction" to the list of visualization postprocessors. 
 
  subsection Visualization 
    set List of output variables      = material properties, nonadiabatic temperature 
 
    subsection Material properties 
      set List of material properties = density, viscosity, melt fraction 
    end 
 
    set Number of grouped files       = 0 
    set Output format                 = vtu 
    set Time between graphical output = 6e5 
    set Interpolate output            = true 
  end 
 
  subsection Depth average 
    set Number of zones = 12 
    set Time between graphical output = 6e5 
  end 
 
end 
 
# We write a checkpoint approximately every half an hour, 
# so that we are able to restart the computation from that 
# point. 
subsection Checkpointing 
  set Time between checkpoint = 1700 
end

When we look at visualization output of this model, we can see that over time, first upwellings, and then downwellings start to form. Both are more or less stable over time, and only change their positions slowly. As melt does not move relative to the solid, broad stable zones of melting with melt fraction of 10% or more form in areas where material is upwelling.

In the second model, melt is an active component of the model. Temperature, pressure and composition control how much of the rock melts, and as soon as that happens, melt can migrate relative to the solid rock. As material only melts partially, that means that the composition of the rock changes when it melts and melt is extracted, and we track this change in composition using a compositional field with the name peridotite. Positive values mark depletion (the composition of the residual host rock as more and more melt is extracted), and negative values mark enrichment (the composition of generated melt, or regions where melt freezes again). Both the fraction of melt (tracked by the compositional field with the name porosity) and the changes in composition influence the material properties such as density and viscosity. Moreover, there are additional material properties that describe how easily melt can move through the host rock, such as the permeability, or properties of the melt itself, such as the fluid viscosity. The following input file (a complete version of which can be found in cookbooks/global_melt.prm) details the changes we have to make from the first model to set up a model with melt migration:

 
# Cookbook for a global-scale 2D box mantle convection model 
# with melt migration. 
# In this file we will go through all of the steps that are 
# required for adding melting and melt transport to a mantle 
# convection simulation. 
 
# For models with melt migration, there is a nonlinear coupling between 
# the Stokes system, the temperature, and the advection equation for the 
# porosity (several material properties, such as the viscosities and the 
# permeability depend nonlinearly on the porosity; and changes in temperature 
# determine how much material is melting or freezing). 
# Because of that, we use a nonlinear solver scheme (’iterated Advection and Stokes’) 
# that iterates between all of these equations, and we have to set its 
# solver tolerance and the maximum number of iterations separately from 
# the linear solver parameters. 
set Nonlinear solver scheme                = iterated Advection and Stokes 
set Max nonlinear iterations               = 20 
set Nonlinear solver tolerance             = 1e-5 
 
# In addition, melting and freezing normally happens on a much faster 
# time scale than the flow of melt, so we want to decouple the advection 
# of melt (and temperature) and the melting process itself. To do that, 
# we use the operator splitting scheme, and define that for every 
# advection time step, we want to do at least 10 reaction time steps. 
# If these time steps would be larger than 10,000 years, we will do 
# more reaction time steps (so that reaction time step size never exceeds 
# 10,000 years).  Here, we also specify the Stokes linear solver tolerance 
# and maximum number of cheap Stokes solver steps to improve the nonlinear 
# convergence behavior. 
set Use operator splitting                     = true 
subsection Solver parameters 
  subsection Operator splitting parameters 
    set Reaction time step                     = 1e4 
    set Reaction time steps per advection step = 10 
  end 
  subsection Stokes solver parameters 
    set Linear solver tolerance = 1e-8 
    set Number of cheap Stokes solver steps = 100 
  end 
end 
 
subsection Melt settings 
  # In addition, we now also specify in the model settings that we want to 
  # run a model with melt transport. 
  set Include melt transport                  = true 
end 
 
##################### Settings for melt transport ######################## 
 
# In models with melt transport, we always need a compositional field with 
# the name porosity’. Only the field with that name will be advected with 
# the melt velocity, all other compositional fields will continue to work 
# as before. Material model will typically query for the field with the 
# name porosity to compute all melt material properties. 
# In addition, the melt global model also requires a field with the name 
# peridotite’. This field is used to track how much material has been 
# molten at each point of the model, so it tracks the information how the 
# composition of the rock changes due to partial melting events (sometimes 
# also called depletion). This is important, because usually less melt is 
# generated for a given temperature and pressure if the rock has undergone 
# melting before. Typically, material properties like the density are also 
# different for more or less depleted material. 
subsection Compositional fields 
  set Number of fields = 2 
  set Names of fields = porosity, peridotite 
end 
 
##################### Initial conditions ######################## 
 
# Now that our model uses compositional fields, we also need initial 
# conditions for the composition. 
# We use the function plugin to set both fields to zero at the beginning 
# of the model run. 
subsection Initial composition model 
  set Model name = function 
  subsection Function 
    set Function expression = 0; 0 
    set Variable names      = x,y 
  end 
end 
 
##################### Boundary conditions ######################## 
 
# We again choose the initial composition as boundary condition 
# for all compositional fields. 
subsection Boundary composition model 
  set List of model names = initial composition 
end 
 
# Models with melt transport also need an additional boundary condition: 
# the gradient of the fluid pressure at the model boundaries. This boundary 
# condition indirectly also prescribes boundary conditions for the melt velocity, 
# as the melt velocity is related to the fluid pressure gradient via Darcys law. 
# If we choose the fluid pressure gradient = solid density * gravity, melt will 
# flow in and out of the model (even if the solid can not flow out) according to 
# the dynamic fluid pressure in the model. Conversely, if we choose the 
# fluid pressure gradient = fluid density * gravity, melt will flow in or out 
# with the same velocity as the solid (so for a closer boundary, no melt will 
# flow in or out). This is what we choose as our boundary condition here. 
subsection Boundary fluid pressure model 
  set Plugin name = density 
  subsection Density 
    set Density formulation = fluid density 
  end 
end 
 
##################### Material properties ######################## 
 
# In addition to the material properties for the solid rock, 
# we also have to specify properties for the melt. 
subsection Material model 
 
  set Model name = melt global 
  subsection Melt global 
 
    # First we describe the parameters for the solid, in the same way 
    # we did in the model without melt transport 
    set Thermal conductivity              = 4.7 
    set Reference solid density           = 3400 
    set Thermal expansion coefficient     = 2e-5 
    set Reference shear viscosity         = 5e21 
    set Thermal viscosity exponent        = 7 
    set Reference temperature             = 1600 
    set Solid compressibility             = 4.2e-12 
 
    # The melt usually has a different (lower) density than the solid. 
    set Reference melt density            = 3000 
 
    # The permeability describes how well the pores of a porous material 
    # are connected (and hence how fast melt can flow through the rock). 
    # It is computed as the product of the reference value given here 
    # and the porosity cubed. This means that the lower the porosity is 
    # the more difficult it is for the melt to flow. 
    set Reference permeability            = 1e-8 
 
    # The bulk viscosity describes the resistance of the rock to dilation 
    # and compaction. Melt can only flow into a region that had no melt 
    # before if the matrix of the solid rock expands, so this parameter 
    # also limits how fast melt can flow upwards. 
    # The bulk viscosity is computed as the reference value given here times 
    # a term that scales with one over the porosity. This means that for zero 
    # porosity, the rock can not dilate/compact any more, which is the same 
    # behaviour that we have for solid mantle convection. 
    set Reference bulk viscosity          = 1e19 
 
    # In dependence of how much melt is present, we also weaken the shear 
    # viscosity: The more melt is present, the weaker the rock gets. 
    # This scaling is exponential, following the relation 
    # viscosity ~ exp(-alpha * DeltaT), 
    # where alpha is the parameter given here, and DeltaT is the deviation from the 
    # reference temperature. 
    set Exponential melt weakening factor = 10 
 
    # In the same way the shear viscosity is reduced with increasing temperature, 
    # we also prescribe the temperature-dependence of the bulk viscosity. 
    set Thermal bulk viscosity exponent   = 7 
 
    # Analogous the the compressibility of the solid rock, we also define a 
    # comressibility for the melt (which is generally higher than for the solid). 
    # As we do not want our compressibility to depend on depth, we set the 
    # pressure derivative to zero. 
    set Melt compressibility              = 1.25e-11 
    set Melt bulk modulus derivative      = 0.0 
 
    # Finally, we prescribe the viscosity of the melt, which is used in Darcys 
    # law. The lower this viscosity, the faster melt can flow. 
    set Reference melt viscosity          = 1 
 
    # change the density contrast of depleted material (in kg/m^3) 
    set Depletion density change          = -200.0 
 
    # How much melt has been generated and subsequently extracted from a particular 
    # volume of rock (how depleted that volume of rock is) usually changes the 
    # solidus. The more the material has been molten already, the less melt will be 
    # generated afterwards for the same pressure and temperature conditions. We 
    # model this using a simplified, linear relationship, saying that to melt 100% 
    # of the rock the temperature has to be 200 K higher than to melt it initially. 
    set Depletion solidus change          = 200 
 
    # We also have to determine how fast melting and freezing should happen. 
    # Here, we choose a time scale of 10,000 years, which is a relatively long time 
    # (or in other words, slow melting rate), but because this is a global model 
    # and the time steps are big, it should be sufficient. 
    set Melting time scale for operator splitting = 1e4 
  end 
end 
 
##################### Mesh refinement ######################### 
 
# For the model with melt migration, we use adaptive refinement. 
# We make use of two different refinement criteria: we set a minimum of 4 global 
# refinements everywhere in the model (which is the same resolution as for the 
# model without melt), and we refine in regions where melt is present, to be 
# precise, everywhere where the porosity is bigger than 1e-5. 
# We adapt the mesh every 5 time steps. 
subsection Mesh refinement 
  set Coarsening fraction                      = 0.05 
  set Refinement fraction                      = 0.8 
 
  set Initial adaptive refinement              = 2 
  set Initial global refinement                = 4 
  set Strategy                                 = composition threshold, minimum refinement function 
  set Time steps between mesh refinement       = 4 
 
  # minimum of 4 global refinements 
  subsection Minimum refinement function 
    set Coordinate system   = depth 
    set Function expression = 4 
    set Variable names      = depth,phi 
  end 
 
  # refine where the porosity is bigger than 1e-5 
  subsection Composition threshold 
    set Compositional field thresholds = 1e-5,1.0 
  end 
end 
 
##################### Postprocessing ######################## 
 
# In addition to the visualization output, we select a number 
# of postprocessors that allow us to compute some statistics 
# about the output (to see how much the model without and the 
# model with melt migration differ), and in particular we use 
# the "depth average" postprocessor that will allow us to plot 
# depth-averaged model quantities over time. 
subsection Postprocess 
 
  set List of postprocessors = visualization, composition statistics, velocity statistics, temperature statistics, depth average 
 
  # For the model with melt migration, also add a visualization 
  # postprocessor that computes the material properties relevant 
  # to migration (permeability, viscosity of the melt, etc.). 
 
  subsection Visualization 
    set List of output variables      = material properties, nonadiabatic temperature, strain rate, melt material properties 
 
    subsection Material properties 
      set List of material properties = density, viscosity, thermal expansivity 
    end 
 
    subsection Melt material properties 
      set List of properties = fluid density, permeability, fluid viscosity, compaction viscosity, p_c 
    end 
end

In the first few tens of millions of years, this models evolves similarly to the model without melt migration. Upwellings rise in the same locations, and regions where material starts to melt are similar. However, once melt is formed, the model evolutions start to deviate. In the model with melt migration, melt moves upwards from the region where it is generated much faster than the flow of solid material, so that it reaches cold regions – where it freezes again – in a shorter amount of time. Because of that, the overall amount of melt is smaller in this model at any given point in time. In addition, enriched material, present in places where melt has crystallized, has a higher density than average or depleted mantle material. This means that in regions above stable upwellings, instabilities of dense, enriched material start to form, which leads to small-scale downwellings. Hence, both areas where material is partially molten and the location of the upwellings themselves have a much shorter wavelength and change much faster over time in comparison to the model without melt migration.


PIC

Figure 60: Evolution of the model without (left) and with (right) melt migration.

Figure 60 shows the time evolution of both models. A more complete comparison of the two models can be found in Section 4.7 “Influence of melt migration on a global-scale convection model” in [DH16].

5.3.12 Melt migration in a 2D mid-ocean ridge model

This section was contributed by Juliane Dannberg.

The following cookbook will explain how to set up a model of a mid-ocean ridge that uses ASPECT’s implementation of coupled magma/mantle dynamics (see Section 2.13) and melting and freezing of mantle rock. In particular, it will outline

  1. how to use operator splitting to accurately compute melting and freezing of melt,
  2. how to use traction boundary conditions to set up the flow field of a mid-ocean ridge,
  3. useful strategies for how to refine the mesh in models with melt migration.

How to set up a model with melt migration in general is explained in the previous cookbook 5.3.11.

As the flow at mid-ocean ridges can be assumed to be roughly symmetric with respect to the ridge axis in the center, we only model one half of the ridge in a 2d Cartesian box with dimensions of 105 × 70 km. Solid material is flowing in from the bottom with a prescribed temperature and melting due to decompression as is rises. The model is cooled from the top so that melt freezes again as it approaches this boundary. In addition, a fixed plate velocity away from the ridge axis is prescribed at the top boundary, inducing corner flow. Material can flow out freely at the right model boundary. The model shows both how melt is focused towards the ridge axis, and how melting and freezing induces chemical heterogeneity in the mantle, generating the crust and lithosphere. A movie of the full model evolution can be found online.

The input file. One important problem in models with melting and freezing (and other reactions) is that these reactions can be much faster than the time step of the model. For mid-ocean ridges, melt is generally assumed to be in equilibrium with the solid, which means that the reaction is basically instantaneous. To model these type of processes, ASPECT uses operator splitting (see also Section 5.4.15): Reactions are solved on a different time scale than advection. For this model, this means that at the beginning of each time step, all melting reactions, including their latent heat effects, are solved using several shorter sub-time steps. In the input file, we have to choose both the size of these sub-time steps and the rate (or characteristic time scale) of melting, and they have to be consistent in the sense that the operator splitting time step can not be larger than the reaction time scale. The melting model we use here is the anhydrous mantle melting model of [KSL03] for a peridotitic rock composition, as implemented in the “melt simple” material model.

 
##################### Melting and freezing ######################## 
 
# Because the model includes reactions that might be on a faster time scale 
# than the time step of the model (melting and the freezing of melt), we use 
# the operator splitting scheme. 
set Use operator splitting                     = true 
 
subsection Solver parameters 
  subsection Operator splitting parameters 
    # We choose the size of the reaction time step as 200 years, small enough 
    # so that it can accurately model melting and freezing. 
    set Reaction time step                     = 2e2 
 
    # Additionally, we always want to do at least 10 operator splitting time 
    # steps in each model time step, to accurately compute the reactions. 
    set Reaction time steps per advection step = 10 
  end 
end 
 
# We use the melt simple material model that includes melting and freezing of 
# melt for an average mantle composition that is characteristic for a mid-ocean 
# ridge setting, and mainly use its default parameters. 
# In particular, we have to define how fast melting and freezing should be. 
# We assume that both reactions happen on a time scale of 200 years (or a rate 
# of 5e-3/year), which should be substantially shorter than the time step size, 
# so that the melt fraction will always be close to equilibrium. 
# As the model includes melting and freezing, we do not have to extract any melt. 
 
subsection Material model 
  set Model name = melt simple 
  subsection Melt simple 
    set Reference permeability = 1e-7 
    set Melt extraction depth = 0.0 
    set Freezing rate         = 0.005 
    set Melting time scale for operator splitting = 2e2 
  end 
end

To make sure we reproduce the characteristic triangular melting region of a mid-ocean ridge, we have to set up the boundary conditions in a way so that they will lead to corner flow. At the top boundary, we can simply prescribe the half-spreading rate, and at the left boundary we can use a free-slip boundary, as material should not cross this centerline. However, we do not know the inflow and outflow velocities at the bottom and right side of the model. Instead, what we can do here is prescribing the lithostatic pressure as a boundary condition for the stress. We accomplish this by using the “initial lithostatic pressure” model. This plugin will automatically compute a 1d lithostatic pressure profile at a given point at the time of the model start and apply it as a boundary traction.

 
##################### Velocity ######################## 
 
# To model the divergent velocitiy field of a mid-ocean ridge, we prescribe 
# the plate velocity (pointing away from the ridge) at the top boundary. 
# We use a closed boundary with free slip conditions as the left boundary, which 
# marks the ridge axis and also acts as a center line for our model, so that 
# material can not cross this boundary. 
# We prescribe the velocity at the top boundary using a function: 
# At the ridge axis, the velocity is zero, at a distance of 10 km from the ridge 
# axis or more, the rigid plate uniformly moves away from the ridge with a constant 
# speed, and close to the ridge we interpolate between these two conditions. 
subsection Boundary velocity model 
  set Prescribed velocity boundary indicators = top:function 
  set Tangential velocity boundary indicators = left 
  subsection Function 
    # We choose a half-spreading rate of u0=3cm/yr. 
    set Function constants  = u0=0.03, x0=10000 
    set Variable names      = x,z 
    set Function expression = if(x<x0,(1-(x/x0-1)*(x/x0-1))*u0,u0); 0 
  end 
end 
 
# We prescribe the lithostatic pressure as a boundary traction on 
# the bottom and right side of the model, so that material can flow in and out 
# according to the flow induced by the moving plate. 
subsection Boundary traction model 
  set Prescribed traction boundary indicators = right:initial lithostatic pressure, bottom:initial lithostatic pressure 
 
  subsection Initial lithostatic pressure 
    # We calculate the pressure profile at the right model boundary. 
    set Representative point         = 105000, 70000 
  end 
end

Finally, we have to make sure that the resolution is high enough to model melt migration. This is particularly important in regions where the porosity is low, but still high enough that the two-phase flow equations are solved (instead of the Stokes system, which is solved if there is no melt present in a cell). At the boundary between these regions, material properties like the compaction viscosity may jump, and there may be strong gradients or jumps in some solution variables such as the melt velocity and the compaction pressure. In addition, the characteristic length scale for melt transport, the compaction length δ, depends on the porosity:

δ = (ξ + 4η3)k ηf . (54)

While the melt viscosity ηf is usually assumed to be constant, and the shear and compaction viscosities η and ξ increase with decreasing porosity ϕ, the permeability k ϕ2 or k ϕ3 dominates this relation, so that the compaction length becomes smaller for lower porosities. As the length scale of melt migration is usually smaller than for mantle convection, we want to make sure that regions where melt is present have a high resolution, and that this high resolution extends to all cells where the two-phase flow equations are solved.

 
##################### Mesh refinement ######################### 
 
# We use adaptive mesh refinement to increase the resolution in regions where 
# melt is present, and otherwise use a uniform grid. 
subsection Mesh refinement 
  set Coarsening fraction                      = 0.5 
  set Refinement fraction                      = 0.5 
 
  # A refinement level of 5 (4 global + 1 adaptive refinements) corresponds to 
  # a cell size of approximately 1 km. 
  set Initial adaptive refinement              = 1 
  set Initial global refinement                = 4 
  set Strategy                                 = minimum refinement function, composition threshold 
  set Time steps between mesh refinement       = 5 
 
  subsection Minimum refinement function 
    set Coordinate system   = cartesian 
    set Function expression = 4 
    set Variable names      = x,y 
  end 
 
  # We use a very small refinement threshold for the porosity to make sure that 
  # all cells where the two-phase flow equations are solved (melt cells) have 
  # the higher resolution. 
  subsection Composition threshold 
    set Compositional field thresholds = 1e-6, 1.0 
  end 
end

ASPECT also supports an alternative method to make sure that regions with melt are sufficiently well resolved, relying directly on the compaction length, and we will discuss this method as a possible modification to this cookbook at the end of this section.

The complete input file is located at cookbooks/mid_ocean_ridge.prm.

Model evolution.


PIC

Figure 61: Mid-ocean ridge model after 8 million years. The top panel shows the depletion and porosity fields (with the characteristic triangular melting region), the bottom panel shows the temperature distribution and the melt velocity, indicated by the arrows.

When we look at the visualization output of this model (see also Figure 61), we can see how the hot material flowing in from the bottom starts to melt as it reaches lower and lower pressures and crosses the solidus. Simultaneously, melting makes the residual solid rock more depleted (as indicated by the positive values of the compositional field called ‘peridotite’). Once material approaches the surface, it is cooled from the cold boundary layer above, and melt starts to crystallize again, generating ‘enriched’ basaltic crust where is freezes (as indicated by the negative values of the compositional field called ‘peridotite’). As the temperature gradients are much sharper close to the surface, this transition from melt to solid rock is much sharper than in the melting region. Once material crystallizes, it is transported away from the ridge axis due to the flow field induced by the prescribed plate velocity at the top boundary. This way, over time, the classical triangular melting region develops at the ridge axis, and the material transported away from the ridge shows two distinct layers: The top 7 km are enriched material, and form the basaltic crust (negative peridotite field), and the 50 km below are depleted material, and form the lithosphere (positive peridotite field). A vertical profile at a distance of 80 km from the ridge axis showing this composition can be found in Figure 62.


PIC

Figure 62: Vertical profile through the model domain at a distance of 80 km from the ridge axis at the end of the model run, showing the distribution of depletion and enrichment as indicated by the peridotite field.

Mesh refinement. Another option for making sure that melt migration is resolved properly in the model is using a refinement criterion that directly relates to the compaction length. This can be done in the mesh refinement section of the input file:

 
subsection Mesh refinement 
  set Coarsening fraction                      = 0.5 
  set Refinement fraction                      = 0.5 
 
  # Note that we allow for more adaptive refinements than before, as only cells 
  # with a small compaction length will be marked for refinement (as opposed to 
  # all melt cells), and we want to properly resolve the compaction length. 
  set Initial adaptive refinement              = 3 
  set Initial global refinement                = 4 
  set Strategy                                 = minimum refinement function, compaction length 
  set Time steps between mesh refinement       = 5 
 
  subsection Minimum refinement function 
    set Coordinate system   = cartesian 
    set Function expression = 4 
    set Variable names      = x,y 
  end 
 
  # We want the cells to be 8 times smaller than the compaction length. 
  subsection Compaction length 
    set Mesh cells per compaction length = 8.0 
  end 
end

This will lead to a higher resolution particularly in regions with low (but not zero) porosity, and can be useful to resolve the strong gradients in the melt velocity and compaction pressure that are to be expected in these places (see Figure 63). Of course it is also possible to combine both methods for refining the mesh.


PIC

Figure 63: Mesh after a time of 3.6 million years for a model using the composition threshold refinement strategy (left) and the compaction length refinement strategy (right) Background colors indicate the melt velocity. Its sharp gradients at the interface between regions with and without melt can only be resolved using the compaction length refinement strategy.

Extending the model. There are a number of parameters that influence the amount of melting, how fast the melt moves, and ultimately the distribution of crustal and lithospheric material. Some ideas for adapting the model setup:

30In YouTube, click on the gear symbol at the bottom right of the player window to select the highest resolution to see all the details of this video.

31Note that the density in 2d has units kgm2

32The heat flux statistics postprocessor computes heat fluxes through parts of the boundary in outward direction, i.e., from the mantle to the air and to the core. However, we are typically interested in the flux from the core into the mantle, so the figure plots the negative of the computed quantity.

33Not necessarily the most scientific source, but easily accessible and typically about right in terms of numbers. The numbers stated here are those listed on Wikipedia at the time this section was written in March 2014.

34As a point of reference, for the mantle an often used number for the release of heat due to radioactive decay is 7.4 1012 W/kg. Taking a density of 3300kgm3 and a volume of 1012m3 would yield roughly 2.4 1013 W of heat produced. This back of the envelope calculation lies within the uncertain range stated above.