One could reformulate equation (1) somewhat. To this end, let us say that we would want to represent the pressure as the sum of two parts that we will call static and dynamic, . If we assume that is already given, then we can replace (1) by
One typically chooses as the pressure one would get if the whole medium were at rest – i.e., as the hydrostatic pressure. This pressure can be computed noting that (1) reduces to
in the absence of any motion where is some static temperature field (see also Section 2.6). This, our rewritten version of (1) would look like this:
In this formulation, it is clear that the quantity that drives the fluid flow is in fact the buoyancy caused by the variation of densities, not the density itself.
This reformulation has a number of advantages and disadvantages:
Thus, if we compute adiabatic pressures and temperatures under the assumption of a thermal boundary layer worth 900 Kelvin at the top, and we get a corresponding density profile , but after running for a few million years the temperature turns out to be so that the top boundary layer has a jump of only 800 Kelvin with corresponding adiabatic pressures and temperatures , then a more appropriate density profile would be .
The problem is that it may well be that the erroneously computed density profile does not lead to a separation where because, especially if the material undergoes phase changes, there will be entire areas of the computational domain in which but . Consequently the benefits of lesser requirements on the iterative linear solver would not be realized.
We do note that most of the codes available today and that we are aware of split the pressure into static and dynamic parts nevertheless, either internally or require the user to specify the density profile as the difference between the true and the hydrostatic density. This may, in part, be due to the fact that historically most codes were written to solve problems in which the medium was considered incompressible, i.e., where the definition of a static density was simple.
On the other hand, we intend ASPECT to be a code that can solve more general models for which this definition is not as simple. As a consequence, we have chosen to solve the equations as stated originally – i.e., we solve for the full pressure rather than just its dynamic component. With most traditional methods, this would lead to a catastrophic loss of accuracy in the dynamic pressure since it is many orders of magnitude smaller than the total pressure at the bottom of the earth mantle. We avoid this problem in ASPECT by using a cleverly chosen iterative solver that ensures that the full pressure we compute is accurate enough so that the dynamic pressure can be extracted from it with the same accuracy one would get if one were to solve for only the dynamic component. The methods that ensure this are described in detail in [KHB12] and in particular in the appendix of that paper.