Contents

1 Introduction
 1.1 Referencing ASPECT
 1.2 Acknowledgments
2 Equations, models, coefficients
 2.1 Basic equations
  2.1.1 A comment on adiabatic heating
  2.1.2 Boundary conditions
  2.1.3 Two-dimensional models
  2.1.4 Comments on the final set of equations
 2.2 Coefficients
 2.3 Dimensional or non-dimensionalized equations?
 2.4 Static or dynamic pressure?
 2.5 Pressure normalization
 2.6 Initial conditions and the adiabatic pressure/temperature
 2.7 Compositional fields
 2.8 Constitutive laws
 2.9 Numerical methods
 2.10 Approximate equations
  2.10.1 The anelastic liquid approximation (ALA)
  2.10.2 The truncated anelastic liquid approximation (TALA)
  2.10.3 The Boussinesq approximation (BA)
  2.10.4 The isothermal compression approximation (ICA)
 2.11 Choosing a formulation in ASPECT
  2.11.1 Mass conservation approximation
  2.11.2 Temperature equation approximation
  2.11.3 Approximation of the buoyancy term
  2.11.4 Reference state: The adiabatic profile
  2.11.5 Combined formulations
 2.12 Free surface calculations
  2.12.1 Arbitrary Lagrangian-Eulerian implementation
  2.12.2 Free surface stabilization
 2.13 Calculations with melt transport
 2.14 Nullspace removal
 2.15 Particles
3 Installation
 3.1 Docker Container
  3.1.1 Installing Docker and downloading the ASPECT image
  3.1.2 Running ASPECT models
  3.1.3 Developing ASPECT within a container
 3.2 Virtual Machine
  3.2.1 Installing VM software and setting up the virtual machine
  3.2.2 Running ASPECT models
 3.3 Local installation
  3.3.1 System prerequisites
  3.3.2 Using candi to compile dependencies
  3.3.3 Obtaining ASPECT and initial configuration
  3.3.4 Compiling ASPECT and generating documentation
4 Running ASPECT
 4.1 Overview
 4.2 Selecting between 2d and 3d runs
 4.3 Debug or optimized mode
 4.4 Visualizing results
  4.4.1 Visualization the graphical output using Visit
  4.4.2 Visualizing statistical data
  4.4.3 Large data issues for parallel computations
 4.5 Checkpoint/restart support
 4.6 Making ASPECT run faster
  4.6.1 Debug vs. optimized mode
  4.6.2 Adjusting solver tolerances
  4.6.3 Adjusting solver preconditioner tolerances
  4.6.4 Using lower order elements for the temperature/compositional discretization
  4.6.5 Limiting postprocessing
  4.6.6 Switching off pressure normalization
  4.6.7 Regularizing models with large coefficient variation
  4.6.8 Using multithreading
 4.7 Input parameter files
  4.7.1 The structure of parameter files
  4.7.2 Categories of parameters
  4.7.3 A note on the syntax of formulas in input files
  4.7.4 Compatibility of input files with newer ASPECT versions
 4.8 A graphical user interface for editing ASPECT parameter files
  4.8.1 Installing parameter-GUI
  4.8.2 Using ASPECT-GUI
5 Cookbooks
 5.1 How to set up computations
 5.2 Simple setups
  5.2.1 Convection in a 2d box
  5.2.2 Convection in a 3d box
  5.2.3 Convection in a box with prescribed, variable velocity boundary conditions
  5.2.4 Using passive and active compositional fields
  5.2.5 Using particles
  5.2.6 Using a free surface
  5.2.7 Using a free surface in a model with a crust
  5.2.8 Averaging material properties
  5.2.9 Prescribed internal velocity constraints
  5.2.10 Artificial viscosity smoothing
  5.2.11 Tracking finite strain
  5.2.12 Reading in compositional initial composition files generated with geomIO
 5.3 Geophysical setups
  5.3.1 Simple convection in a quarter of a 2d annulus
  5.3.2 Simple convection in a spherical 3d shell
  5.3.3 Postprocessing spherical 3D convection
  5.3.4 3D convection with an Earth-like initial condition
  5.3.5 Using reconstructed surface velocities by GPlates
  5.3.6 2D compressible convection with a reference profile and material properties from BurnMan
  5.3.7 Reproducing rheology of Morency and Doin, 2004
  5.3.8 Crustal deformation
  5.3.9 Continental extension
  5.3.10 Inner core convection
  5.3.11 Melt migration in a 2D mantle convection model
  5.3.12 Melt migration in a 2D mid-ocean ridge model
 5.4 Benchmarks
  5.4.1 Running benchmarks that require code
  5.4.2 Onset of convection benchmark
  5.4.3 The van Keken thermochemical composition benchmark
  5.4.4 The SolCx Stokes benchmark
  5.4.5 The SolKz Stokes benchmark
  5.4.6 The “inclusion” Stokes benchmark
  5.4.7 The Burstedde variable viscosity benchmark
  5.4.8 The hollow sphere benchmark
  5.4.9 The 2D annulus benchmark
  5.4.10 The “Stokes’ law” benchmark
  5.4.11 Latent heat benchmark
  5.4.12 The 2D cylindrical shell benchmarks by Davies et al.
  5.4.13 The Crameri et al. benchmarks
  5.4.14 The solitary wave benchmark
  5.4.15 Benchmarks for operator splitting
6 Extending and contributing to ASPECT
 6.1 The idea of plugins and the SimulatorAccess and Introspection classes
 6.2 How to write a plugin
 6.3 Materials, geometries, gravitation and other plugin types
  6.3.1 Material models
  6.3.2 Heating models
  6.3.3 Geometry models
  6.3.4 Gravity models
  6.3.5 Initial conditions
  6.3.6 Prescribed velocity boundary conditions
  6.3.7 Temperature boundary conditions
  6.3.8 Postprocessors: Evaluating the solution after each time step
  6.3.9 Visualization postprocessors
  6.3.10 Mesh refinement criteria
  6.3.11 Criteria for terminating a simulation
 6.4 Compatibility of plugins with newer ASPECT versions
 6.5 Extending ASPECT through the signals mechanism
 6.6 Extending the basic solver
 6.7 Testing ASPECT
  6.7.1 Running tests
  6.7.2 Writing tests
 6.8 Contributing to ASPECT’s development
7 Future plans for ASPECT
8 Finding answers to more questions
A Run-time input parameters