How does ASPECT compute adiabatic temperature?

Dear users,

I wanted to create a Python script that can compute an adiabatic profile similar to what ASPECT does in the Steinberger model, and then use it in ASPECT as an ASCII file.

I want to do this to have more control over my temperature profile (Python is easier than muparser), but I didn’t understand how to do that.

The manual says that the adiabatic temperature is calculated based on Perplex’s file for the Steinberger material model. The same applies to the Burnman compressible model, but it uses Burnman’s file, which is created from Perplex’s file after choosing a reference temperature. This might not be suitable for every occasion because you don’t choose an adiabatic surface temperature (except when you create the file, am I wrong)?

From what I understood, when ASPECT uses the Steinberger model, it computes the adiabatic temperature based on the surface adiabatic temperature using Perplex’s file. I tried to create an adiabatic profile using Python but failed. Unlike Burnman’s ASCII file (where density, temperature, gravity, etc. are well plotted), in the original Perplex file, there is every case of temperature vs. pressure, etc. So, I didn’t understand which values I should keep fixed to have an adiabatic profile that aligns with density, etc. I tried to keep the entropy fixed, but the results are not as good as the Burnman ASCII file:

Left: Perpplex (density is incorrect, so the result must be wrong, with a fixed entropy of 2000). Right Burnman (the density is correct)

Thank you in advance for the help

Dear Francesco,

I can tell you what ASPECT does to compute the adiabatic profile (the implementation is in aspect/source/adiabatic_conditions/ at main · geodynamics/aspect · GitHub). ASPECT starts at the adiabatic surface temperature and the surface pressure, it takes the gravity from the gravity profile (which you provide as a user), and then integrates downwards. It computes the pressure gradient from the density for the current temperature and pressure and it computes the temperature gradient from the thermal expansivity / specific heat for the current temperature and pressure. So if you’re using a look-up table, you would take your current temperature and pressure, look up density, thermal expansivity, and specific heat, and use these to compute the next pressure/temperature along the profile.

Now why your python script does not do what you expect is a completely different question that is not really related to ASPECT. Would it be worth using BurnMan rather than making your own script?


I used Burnman and it works much better it doesn’t make sense to compute everything from 0. Thank you so much!


1 Like