Issues with pressure on top surface

Hi all,

I have always had an issue with pressure on the top surface.

How can I make the pressure at a free upper surface to have a specified value?

I have tried:

a) Setting normalization

set Pressure normalization = surface
set Surface pressure = 1e5

for example if I want a typical atmospheric pressure on the top surface of the model. I guess in this case Aspect integrates the Stokes eqs., and finally at the moment of postprocessing it adds a constant so that the pressure field starts at my desired value.

b) Prescribing a traction BC at that upper surface

subsection Boundary traction model
set Prescribed traction boundary indicators = top: function

subsection Function
set Coordinate system = cartesian
set Variable names = x,y,z
set Function constants = Ptop=1e5
set Function expression = 0 ; 0 ; Ptop

 ##### I also tried Function expression = 0 ; 0 ; -Ptop    to account for the vector nature 



I guess in these cases Aspect integrates the component term dp/dz using that prescribed value equal to ±Ptop.

c) I also tried setting (a) and (b) simultaneously.

But when I plot the model results in Paraview, I don’t get the desired value of positive pressure 1e5 Pa. Usually I get a negative pressure (which is not exactly equal to -Ptop).
I totally know this is not a problem, Aspect does calculate the pressure field inside correctly, as on the plots it varies as it should. Simple calculus tells that when integrating the Stokes flow equation, the pressure needs a constant if we want absolute values.

But sometimes, I would like to have a pressure plot, and having negative values on top looks odd and reckless.
Most importantly, sometimes I certainly want my model to actually have a pressure on top ( I think in some cases, if internal stresses are not too high, and if the model runs for a long time, that surface pressure may potentially be a small controlling factor).

I have tried this in several models, sometimes also with a loaded topography. The results are always similar: pressure field has the correct variation, it was seemingly well calculated but without the integration constant as what I see on top is never the value I want.

It may be an error in Paraview when reading the data…

What should I do?


Hi Felipe,

There are multiple ways to prescribe a traction on the top boundary. You noted one method with the set Pressure normalization and set Surface Pressure parameters.

The value you selected (1e5) is only 0.1 MPa, and thus negative non-lithostatic pressures can easily arise. You could use a value of 1 or 10 MPa (depending on magnitude of negative surface pressures), which is equivalent to ~ 100 or 1000 m of water overburden.

Using a boundary traction on the upper surface also allows you to prescribe a surface overburden, but of course changes the dynamics of deformation near the surface as material can pass through that boundary.

There are also examples of how to combine a free surface with a surface boundary traction, which match analytical solutions:

So, my suggestion is to follow one of these three methods and just prescribe a higher surface traction (pressure) if you don’t want to see negative pressures in your plots. Start with the examples linked above, as those have been well documented.