# Benchmarks

# Benchmarks#

Benchmarks are used to verify that a solver solves the problem correctly,
i.e., to *verify* correctness of a code.1 Over the past decades, the
geodynamics community has come up with a large number of benchmarks.

Depending on the goals of their original inventors, they describe stationary problems in
which only the solution of the flow problem is of interest (but the flow may
be compressible or incompressible, with constant or variable viscosity, etc),
or they may actually model time-dependent processes. Some of them have
solutions that are analytically known and can be compared with, while for
others, there are only sets of numbers that are approximately known. We have
implemented a number of them in ASPECT to
convince ourselves (and our users) that ASPECT
indeed works as intended and advertised. Some of these benchmarks are
discussed below. Numerical results for several of these benchmarks are also
presented in a number of papers (such as Fraters *et al.* [2019], Heister *et al.* [2017], Kronbichler *et al.* [2012], Tosi *et al.* [2015]) in much
more detail than shown here.

Before going on with showing these benchmarks, let us mention that the data shown below (and in the papers mentioned above) reflect the state of ASPECT at a particular time. On the other hand, ASPECT has become more accurate and faster over time, for example by implementing better stabilization schemes for the advection equations and improving assembly and solver times. We occasionally update sections of the manual, but when reading through the sections on individual benchmarks below, it is worthwhile keeping in mind that ASPECT may yield different (and often better) results than the one shown.

- Running benchmarks that require code
- Onset of convection benchmark
- The van Keken thermochemical composition benchmark
- Computation of the van Keken Problem with the Volume-of-Fluid Interface Tracking Method
- The Bunge et al. mantle convection experiments
- The Rayleigh-Taylor instability
- Polydiapirism
- The sinking block benchmark
- The SolCx Stokes benchmark
- The SolKz Stokes benchmark
- The “inclusion” Stokes benchmark
- The Burstedde variable viscosity benchmark
- The corresponding body force of the Stokes equation can then be computed by inserting this solution into the momentum equation, $\({\nabla} p - \nabla \cdot (2 \mu {\epsilon(\mathbf u)}) = \rho \mathbf g. \label{eq:burstedde-momentum}\)\( Using equations [\[eq:burstedde-velocity\]][1], [\[eq:burstedde-pressure\]][2] and [\[eq:burstedde-mu\]][3] in the momentum equation [\[eq:burstedde-momentum\]][4], the following expression for the body force \)\rho\mathbf g\( can be found: \)$\begin{gathered} {\rho\mathbf g}
- The slab detachment benchmark
- The hollow sphere benchmark
- The 2D annulus benchmark
- The “Stokes’ law” benchmark
- Viscosity grooves benchmark
- Latent heat benchmark
- The 2D cylindrical shell benchmarks by Davies et al.
- The Crameri et al. benchmarks
- The solitary wave benchmark
- Benchmarks for operator splitting
- The Tosi et al. benchmarks
- Layered flow with viscosity contrast
- Donea & Huerta 2D box geometry benchmark
- Advection stabilization benchmarks
- Yamauchi & Takei anelastic shear wave velocity-temperature conversion benchmark
- Thin shell gravity benchmark
- The Gauss-Legendre Quadrature (GLQ) algorithm is central to the code as it is used to compute the elemental integrals stemming from the discretization of the weak form of the PDEs. Logically, the gravity postprocessor is also based on the GLQ since the potential \(U\) at any location in space is given by the integral $\(U({\mathbf r}) = \iiint_\Omega \frac{G \rho({\mathbf r}')}{|{\mathbf r}-{\mathbf r}'|} d{\mathbf r}' = \sum_K \iiint_{\Omega_K} \frac{G \rho({\mathbf r}')}{|{\mathbf r}-{\mathbf r}'|} d{\mathbf r}',\)\( where the sum runs over all cells of the mesh and \){G}=6.67430\times 10^{-11}~\si{\cubic\meter\per\kg\per\square\second}\( is the gravitational constant. The gravity acceleration vector is obtained via \){\mathbf g}=-{\mathbf \nabla} U\(, or \)${\mathbf g}({\mathbf r}) = \iiint_\Omega \frac{G \rho({\mathbf r}’)}{|{\mathbf r}-{\mathbf r}’|^2} d{\mathbf r}’
- Thick shell gravity benchmark
- 2D Lithosphere flexure benchmark with infill
- Gravity field generated by mantle density variations
- Brittle thrust wedges benchmark

- 1
*Verification*is the first half of the*verification and validation*(V&V) procedure:*verification*intends to ensure that the mathematical model is solved correctly, while*validation*intends to ensure that the mathematical model is correct. Obviously, much of the aim of computational geodynamics is to validate the models that we have.