# Gravity field generated by mantle density variations
*This section was contributed by C. Thieulot and L. Jeanniot.*
The gravity postprocessor has been benchmarked in
{ref}`sec:benchmarks:thin-shell-gravity` and
{ref}`sec:benchmarks:thick-shell-gravity`. We use it here in an Earth-like
context: the tomography model S40RTS {cite}`ritsema:etal:2011` is used and scaled
so as to provide temperature anomalies, which themselves incorporated in the
Simple material model yield a density distribution for the entire Earth mantle
minus the lithosphere, i.e.
$R_\text{inner} \leq r \leq R_\text{outer}$ with
$R_\text{inner}=3480~\text{ km}$ and
$R_\text{outer}=6251~\text{ km}$. The use of the S20RTS/S40RTS
tomography model and its parameterization is detailed in
{ref}`sec:cookbooks-S20RTS`.
We set the global refinement to 3 so that the mesh counts
$12\times 16^3=49,152$ cells. This means that the radial resolution is
$(R_\text{outer}-R_\text{inner})/16\simeq 173~\text{ km}$ while
the lateral resolution is
$(4\pi R_\text{outer}^2/(12\times 16^2))^{1/2} \simeq 400~\text{ km}$ at
the surface and
$(4\pi R_\text{inner}^2/(12\times 16^2))^{1/2} \simeq 220~\text{ km}$ at
the CMB. The mesh and the density field are shown in {numref}`fig:grav_mantle1` and {numref}`fig:grav_mantle3`.
The temperature anomaly ranges from approximately $-342~\text{ k}$ to
approximately $+331~\text{ k}$ and geodynamical features such as the
mid-oceanic ridge or the Afar region are visible in the form of positive
temperature anomalies, indicating that mantle material is present in these
areas. Note that these values are not necessarily meaningful since we here
assume that density variations are 100% due to temperature variations as there
is only a single material in the domain (i.e. no change in composition in
space). Nevertheless this simple setup provides us with a complex-enough
density distribution to test the gravity postprocessor.
```{figure-md} fig:grav_mantle1
Mantle gravity cookbook (mesh). Coastlines are available for Paraview at https://www.earthmodels.org/date-and-tools/coastlines/los-alamos. Once opened the data must be scaled up (simply set the scale of the lower left menu in Paraview to the desired outer radius of your model). Grid lines are also available on the same site.
```
```{figure-md} fig:grav_mantle2
Mantle gravity cookbook (temperature anomaly). Coastlines are available for Paraview at https://www.earthmodels.org/date-and-tools/coastlines/los-alamos. Once opened the data must be scaled up (simply set the scale of the lower left menu in Paraview to the desired outer radius of your model). Grid lines are also available on the same site.
```
```{figure-md} fig:grav_mantle3
Mantle gravity cookbook (density). Coastlines are available for Paraview at https://www.earthmodels.org/date-and-tools/coastlines/los-alamos. Once opened the data must be scaled up (simply set the scale of the lower left menu in Paraview to the desired outer radius of your model). Grid lines are also available on the same site.
```
The gravity postprocessor computes the gravitational potential, acceleration
vector and gradient at a given radius (here chosen to be
$6371+250=6621~\text{ km}$) on a regular $2^\circ$-latitude-longitude grid
(see also the cookbook of
{ref}`sec:benchmarks:thin-shell-gravity`) and returns the
results in the `gravity-00000` file to be found in the `output-gravity` folder
inside the regular output folder.
The python script `convert_gravity_ascii_to_vtu_map.py` converts the ascii
output to `vtu` format in order to view the results in ParaView. It is
provided in the folder of this cookbook and can be used as follows:
```{code-block} ksh
python3 convert_gravity_ascii_to_vtu_map.py gravity-00000 181 91
```
The first argument is the ascii file, while the following two arguments are
the number of longitude and latitude points as specified in the `prm` file.
The resulting `gravity-00000_map.vtu` file is then visualised with ParaView
and is shown in {numref}`fig:grav_mantle4`/{numref}`fig:grav_mantle5`. Note that on a modern laptop the calculations
resulting from running the provided `prm` file in the cookbook folder takes a
bit less than 2 hours on a single thread: about 1250 s are spent in the
setup phase (using the spherical harmonics coefficients to compute the
temperature field on the mesh nodes) and about 4700 s in the gravity
postprocessor itself. This time can be substantially decreased by running in
parallel on $n$ threads: the processor can then make use of the domain
decomposition and is almost $n$ times faster.
As shown in the thin shell gravity benchmark the constant component of the
density $\rho_0=3300~\text{ kg}/\text{m}^3$ generates a constant gravity
field at the measurement radius so it can be filtered out. In general, the
contribution to the gravity signal of any density distribution that solely
depends on $r$ can and should be removed as it does not contain any valuable
information.
```{figure-md} fig:grav_mantle4
Mantle gravity: gravitational acceleration |g| computed at radius 6621 km.
```
```{figure-md} fig:grav_mantle5
Mantle gravity: gravitational potential computed at radius 6621 km.
```