<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="application/xml" href="parameters.xsl"?>

<ParameterHandler>
<Additional_20shared_20libraries>
<value/>
<default_value/>
<documentation>
A list of names of additional shared libraries that should be loaded upon starting up the program. The names of these files can contain absolute or relative paths (relative to the directory in which you call ASPECT). In fact, file names that do not contain any directory information (i.e., only the name of a file such as &lt;libmyplugin.so&gt; will not be found if they are not located in one of the directories listed in the \texttt{LD_LIBRARY_PATH} environment variable. In order to load a library in the current directory, use &lt;./libmyplugin.so&gt; instead.

If you specify &lt;./libmyplugin.so&gt;, ASPECT will open either &lt;./libmyplugin.debug.so&gt; or &lt;./libmyplugin.release.so&gt; depending on the current ASPECT build type.

The typical use of this parameter is so that you can implement additional plugins in your own directories, rather than in the ASPECT source directories. You can then simply compile these plugins into a shared library without having to re-compile all of ASPECT. See the section of the manual discussing writing extensions for more information on how to compile additional files into a shared library.
</documentation>
<pattern>
1
</pattern>
<pattern_description>
[List of &lt;[FileName (Type: input)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Additional_20shared_20libraries>
<Adiabatic_20surface_20temperature>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
In order to make the problem in the first time step easier to solve, we need a reasonable guess for the temperature and pressure. To obtain it, we use an adiabatic pressure and temperature field. This parameter describes what the `adiabatic&apos; temperature would be at the surface of the domain (i.e. at depth zero). Note that this value need not coincide with the boundary condition posed at this point. Rather, the boundary condition may differ significantly from the adiabatic value, and then typically induce a thermal boundary layer.

For more information, see the section in the manual that discusses the general mathematical model.
</documentation>
<pattern>
18
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Adiabatic_20surface_20temperature>
<CFL_20number>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
In computations, the time step $k$ is chosen according to $k = c \min_K \frac {h_K} {\|u\|_{\infty,K} p_T}$ where $h_K$ is the diameter of cell $K$, and the denominator is the maximal magnitude of the velocity on cell $K$ times the polynomial degree $p_T$ of the temperature discretization. The dimensionless constant $c$ is called the CFL number in this program. For time discretizations that have explicit components, $c$ must be less than a constant that depends on the details of the time discretization and that is no larger than one. On the other hand, for implicit discretizations such as the one chosen here, one can choose the time step as large as one wants (in particular, one can choose $c&gt;1$) though a CFL number significantly larger than one will yield rather diffusive solutions. Units: None.
</documentation>
<pattern>
8
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</CFL_20number>
<Dimension>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
The number of space dimensions you want to run this program in. ASPECT can run in 2 and 3 space dimensions.
</documentation>
<pattern>
0
</pattern>
<pattern_description>
[Integer range 2...3 (inclusive)]
</pattern_description>
</Dimension>
<End_20time>
<value>
0.0
</value>
<default_value>
5.69e+300
</default_value>
<documentation>
The end time of the simulation. The default value is a number so that when converted from years to seconds it is approximately equal to the largest number representable in floating point arithmetic. For all practical purposes, this equals infinity. Units: Years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
434
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</End_20time>
<Max_20nonlinear_20iterations>
<value>
10
</value>
<default_value>
10
</default_value>
<documentation>
The maximal number of nonlinear iterations to be performed.
</documentation>
<pattern>
3
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Max_20nonlinear_20iterations>
<Max_20nonlinear_20iterations_20in_20pre_2drefinement>
<value>
2147483647
</value>
<default_value>
2147483647
</default_value>
<documentation>
The maximal number of nonlinear iterations to be performed in the pre-refinement steps. This does not include the last refinement step before moving to timestep 1. When this parameter has a larger value than max nonlinear iterations, the latter is used.
</documentation>
<pattern>
4
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Max_20nonlinear_20iterations_20in_20pre_2drefinement>
<Maximum_20first_20time_20step>
<value>
5.69e+300
</value>
<default_value>
5.69e+300
</default_value>
<documentation>
Set a maximum time step size for only the first timestep. Generally the time step based on the CFL number should be sufficient, but for complicated models or benchmarking it may be useful to limit the first time step to some value, especially when using the free surface, which needs to settle to prevent instabilities. This should in that case be combined with a value set for ``Maximum relative increase in time step&apos;&apos;. The default value is a value so that when converted from years into seconds it equals the largest number representable by a floating point number, implying an unlimited time step. Units: Years or seconds, depending on the ``Use years in output instead of seconds&apos;&apos; parameter.
</documentation>
<pattern>
10
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20first_20time_20step>
<Maximum_20relative_20increase_20in_20time_20step>
<value>
91.0
</value>
<default_value>
91.0
</default_value>
<documentation>
Set a percentage with which the length of the time step is limited to increase. Generally the time step based on the CFL number should be sufficient, but for complicated models which may suddenly drastically change behavior, it may be useful to limit the increase in the time step, without limiting the time step size of the whole simulation to a particular number. For example, if this parameter is set to $50$, then that means that the length of a time step can at most increase by 50\% from one time step to the next, or by a factor of 1.5. 

Here, the default value is set to be 91\% because the best available step-size ratio bound guaranteeing stability in the PDE context seems to be 1.91, see \cite{Denner:2014}. In that thesis, the bound was proved in the context of semilinear parabolic problem, but it appears reasonable to also use this value as an upper bound in the current context.

Units: \%.
</documentation>
<pattern>
11
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20relative_20increase_20in_20time_20step>
<Maximum_20time_20step>
<value>
5.69e+300
</value>
<default_value>
5.69e+300
</default_value>
<documentation>
Set a maximum time step size for the solver to use. Generally the time step based on the CFL number should be sufficient, but for complicated models or benchmarking it may be useful to limit the time step to some value. The default value is a value so that when converted from years into seconds it equals the largest number representable by a floating point number, implying an unlimited time step.Units: Years or seconds, depending on the ``Use years in output instead of seconds&apos;&apos; parameter.
</documentation>
<pattern>
9
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20time_20step>
<Nonlinear_20solver_20failure_20strategy>
<value>
continue with next timestep
</value>
<default_value>
continue with next timestep
</default_value>
<documentation>
Select the strategy on what to do if the nonlinear solver scheme fails to converge. The options are:
`continue with next timestep`: ignore error and continue to the next timestep
`cut timestep size`: reduce the current timestep size by a specified factor and redo the timestep
`abort program`: abort the program with an error message.
</documentation>
<pattern>
14
</pattern>
<pattern_description>
[Selection continue with next timestep|cut timestep size|abort program ]
</pattern_description>
</Nonlinear_20solver_20failure_20strategy>
<Nonlinear_20solver_20scheme>
<value>
single Advection, single Stokes
</value>
<default_value>
single Advection, single Stokes
</default_value>
<documentation>
The kind of scheme used to resolve the nonlinearity in the system. `single Advection, single Stokes&apos; means that no nonlinear iterations are done, and the temperature, compositional fields and Stokes equations are solved exactly once per time step, one after the other. The `iterated Advection and Stokes&apos; scheme iterates this decoupled approach by alternating the solution of the temperature, composition and Stokes systems. The `single Advection, iterated Stokes&apos; scheme solves the temperature and composition equation once at the beginning of each time step and then iterates out the solution of the Stokes equation. The `no Advection, iterated Stokes&apos; scheme only solves the Stokes system, iterating out the solution, and ignores compositions and the temperature equation (careful, the material model must not depend on the temperature or composition; this is mostly useful for Stokes benchmarks).  The `no Advection, single Stokes&apos; scheme only solves the Stokes system once per timestep. This is also mostly useful for Stokes benchmarks. The `single Advection, no Stokes&apos; scheme only solves the temperature and other advection systems once, and instead of solving for the Stokes system, a prescribed velocity and pressure is used. The `iterated Advection and Newton Stokes&apos; scheme iterates by alternating the solution of the temperature, composition and Stokes equations, using Picard iterations for the temperature and composition, and Newton iterations for the Stokes system. The `single Advection, iterated Newton Stokes&apos; scheme solves the temperature and composition equations once at the beginning of each time step and then iterates out the solution of the Stokes equation, using Newton iterations for the Stokes system. The `iterated Advection and defect correction Stokes&apos; scheme iterates by alternating the solution of the temperature, composition and Stokes equations, using Picard iterations for the temperature and composition, and defect correction Picard iterations for the Stokes system. The `single Advection, iterated defect correction Stokes&apos; scheme solves the temperature and composition equations once at the beginning of each time step and then iterates out the solution of the Stokes equation, using defect correction Picard iterations for the Stokes system. The `no Advection, iterated defect correction Stokes&apos; scheme solves the temperature and composition equations once at the beginning of each time step and then iterates out the solution of the Stokes equation, using defect correction Picard iterations for the Stokes system. The `first timestep only, single Stokes&apos; scheme solves the Stokes equations exactly once, at the first time step. No nonlinear iterations are done, and the temperature and composition systems are not solved.
</documentation>
<pattern>
13
</pattern>
<pattern_description>
[Selection single Advection, single Stokes|iterated Advection and Stokes|single Advection, iterated Stokes|no Advection, iterated Stokes|no Advection, single Stokes|no Advection, iterated defect correction Stokes|single Advection, iterated defect correction Stokes|iterated Advection and defect correction Stokes|iterated Advection and Newton Stokes|single Advection, iterated Newton Stokes|single Advection, no Stokes|first timestep only, single Stokes|no Advection, no Stokes ]
</pattern_description>
</Nonlinear_20solver_20scheme>
<Nonlinear_20solver_20tolerance>
<value>
1e-5
</value>
<default_value>
1e-5
</default_value>
<documentation>
A relative tolerance up to which the nonlinear solver will iterate. This parameter is only relevant if the `Nonlinear solver scheme&apos; does nonlinear iterations, in other words, if it is set to something other than `single Advection, single Stokes&apos; or `single Advection, no Stokes&apos;.
</documentation>
<pattern>
15
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Nonlinear_20solver_20tolerance>
<Output_20directory>
<value>
output
</value>
<default_value>
output
</default_value>
<documentation>
The name of the directory into which all output files should be placed. This may be an absolute or a relative path. ASPECT will write output such as statistics files or visualization files into this directory or into directories further nested within.
</documentation>
<pattern>
19
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Output_20directory>
<Output_20directory_20LFS_20stripe_20count>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Many large clusters use the Lustre file system (LFS) that allows to &apos;stripe&apos; files, i.e., to use multiple file servers to store a single file. This is useful when writing very large files from multiple MPI processes, such as when creating graphical output or creating checkpoints. In those cases, if all MPI processes try to route their data to a single file server, that file server and the disks it manages may be saturated by data and everything slows down. File striping instead ensures that the data is sent to several file servers, improving performance. A description of how Lustre manages file striping can be found at https://doc.lustre.org/lustre_manual.xhtml#managingstripingfreespace . How file striping can be configured is discussed at https://wiki.lustre.org/Configuring_Lustre_File_Striping .

When this parameter is set to anything other than zero, ASPECT will call the Lustre support tool, `lst`, as follows: `lst setstripe -c N OUTPUT_DIR`, where `N` is the value of the input parameter discussed here, and `OUTPUT_DIR` is the directory into which ASPECT writes its output. The file striping so set on the output directory are also inherited by the sub-directories ASPECT creates within it.

In order to use this parameter, your cluster must obviously be using the Lustre file system. What the correct value for the stripe count is is something you will have to find out from your cluster&apos;s local documentation, or your cluster administrator. It depends on the physical details and configuration of the file servers attached to a cluster.
</documentation>
<pattern>
20
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Output_20directory_20LFS_20stripe_20count>
<Pressure_20normalization>
<value>
surface
</value>
<default_value>
surface
</default_value>
<documentation>
If and how to normalize the pressure after the solution step. This is necessary because depending on boundary conditions, in many cases the pressure is only determined by the model up to a constant. On the other hand, we often would like to have a well-determined pressure, for example for table lookups of material properties in models or for comparing solutions. If the given value is `surface&apos;, then normalization at the end of each time steps adds a constant value to the pressure in such a way that the average pressure at the surface of the domain is what is set in the `Surface pressure&apos; parameter; the surface of the domain is determined by asking the geometry model whether a particular face of the geometry has a zero or small `depth&apos;. If the value of this parameter is `volume&apos; then the pressure is normalized so that the domain average is zero. If `no&apos; is given, the no pressure normalization is performed.
</documentation>
<pattern>
16
</pattern>
<pattern_description>
[Selection surface|volume|no ]
</pattern_description>
</Pressure_20normalization>
<Resume_20computation>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
A flag indicating whether the computation should be resumed from a previously saved state (if true) or start from scratch (if false). If auto is selected, models will be resumed if there is an existing checkpoint file, otherwise started from scratch.
</documentation>
<pattern>
2
</pattern>
<pattern_description>
[Selection true|false|auto ]
</pattern_description>
</Resume_20computation>
<Start_20time>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The start time of the simulation. Units: Years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
5
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Start_20time>
<Surface_20pressure>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The value the pressure is normalized to in each time step when `Pressure normalization&apos; is set to `surface&apos; with default value 0. This setting is ignored in all other cases.

The mathematical equations that describe thermal convection only determine the pressure up to an arbitrary constant. On the other hand, for comparison and for looking up material parameters it is important that the pressure be normalized somehow. We do this by enforcing a particular average pressure value at the surface of the domain, where the geometry model determines where the surface is. This parameter describes what this average surface pressure value is supposed to be. By default, it is set to zero, but one may want to choose a different value for example for simulating only the volume of the mantle below the lithosphere, in which case the surface pressure should be the lithostatic pressure at the bottom of the lithosphere.

For more information, see the section in the manual that discusses the general mathematical model.
</documentation>
<pattern>
17
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Surface_20pressure>
<Timing_20output_20frequency>
<value>
100
</value>
<default_value>
100
</default_value>
<documentation>
How frequently in timesteps to output timing information. This is generally adjusted only for debugging and timing purposes. If the value is set to zero it will also output timing information at the initiation timesteps.
</documentation>
<pattern>
6
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Timing_20output_20frequency>
<Use_20conduction_20timestep>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Mantle convection simulations are often focused on convection dominated systems. However, these codes can also be used to investigate systems where heat conduction plays a dominant role. This parameter indicates whether the simulator should also use heat conduction in determining the length of each time step.
</documentation>
<pattern>
12
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20conduction_20timestep>
<Use_20operator_20splitting>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
If set to true, the advection and reactions of compositional fields and temperature are solved separately, and can use different time steps. Note that this will only work if the material/heating model fills the reaction\_rates/heating\_reaction\_rates structures. Operator splitting can be used with any existing solver schemes that solve the temperature/composition equations.
</documentation>
<pattern>
21
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20operator_20splitting>
<Use_20years_20in_20output_20instead_20of_20seconds>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
When computing results for mantle convection simulations, it is often difficult to judge the order of magnitude of results when they are stated in MKS units involving seconds. Rather, some kinds of results such as velocities are often stated in terms of meters per year (or, sometimes, centimeters per year). On the other hand, for non-dimensional computations, one wants results in their natural unit system as used inside the code. If this flag is set to `true&apos; conversion to years happens; if it is `false&apos;, no such conversion happens.

Contrary to the word ``output&apos;&apos; in the name of this parameter, a number of plugins also use this parameter to determine how to interpret their \textit{inputs}. For example, when `true&apos;, several of the boundary velocity models described in Section~\ref{parameters:Boundary_20velocity_20model} interpret both specific times in years instead of seconds, and velocities in meters per year instead of meters per second.

For the purposes of this parameter, a year consists of 60*60*24*365.2425 seconds. In other words, a year is taken to have 365.2425 days.
</documentation>
<pattern>
7
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20years_20in_20output_20instead_20of_20seconds>
<World_20builder_20file>
<value/>
<default_value/>
<documentation>
Name of the world builder file. If empty, the world builder is not initialized.
</documentation>
<pattern>
22
</pattern>
<pattern_description>
[FileName (Type: input)]
</pattern_description>
</World_20builder_20file>
<Adiabatic_20conditions_20model>
<Model_20name>
<value>
compute profile
</value>
<default_value>
compute profile
</default_value>
<documentation>
Select one of the following models:

`ascii data&apos;: A model in which the adiabatic profile is read from a file that describes the reference state. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of points in the reference state as for example `# POINTS: 3&apos;. Following the comment lines there has to be a single line containing the names of all data columns, separated by arbitrarily many spaces. Column names are not allowed to contain spaces. The file can contain unnecessary columns, but for this plugin it needs to at least provide columns named `temperature&apos;, `pressure&apos;, and `density&apos;. Note that the data lines in the file need to be sorted in order of increasing depth from 0 to the maximal depth in the model domain. Points in the model that are outside of the provided depth range will be assigned the maximum or minimum depth values, respectively. Points do not need to be equidistant, but the computation of properties is optimized in speed if they are.

`compute entropy profile&apos;: A model in which the adiabatic profile is calculated by solving the hydrostatic equations for pressure and entropy in depth. Of course the entropy along an adiabat is constant. This plugin requires the material model to provide an additional output object of type PrescribedTemperatureOutputs. It also requires that there is a compositional field of type &apos;entropy&apos; that represents the entropy of the material.

`compute profile&apos;: A model in which the adiabatic profile is calculated by solving the hydrostatic equations for pressure and temperature in depth. The gravity is assumed to be in depth direction and the composition is either given by the initial composition at reference points or computed as a reference depth-function. All material parameters are computed by the material model plugin. The surface conditions are either constant or changing over time as prescribed by a user-provided function.

`function&apos;: A model in which the adiabatic profile is specified by a user defined function. The supplied function has to contain temperature, pressure, and density as a function of depth in this order.
</documentation>
<pattern>
1420
</pattern>
<pattern_description>
[Selection ascii data|compute entropy profile|compute profile|function ]
</pattern_description>
</Model_20name>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/tests/adiabatic-conditions/ascii-data/test/
</value>
<default_value>
$ASPECT_SOURCE_DIR/tests/adiabatic-conditions/ascii-data/test/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1421
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value/>
<default_value/>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1422
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1423
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20data_20model>
<Compute_20entropy_20profile>
<Number_20of_20points>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
The number of points we use to compute the adiabatic profile. The higher the number of points, the more accurate the downward integration from the adiabatic surface conditions will be.
</documentation>
<pattern>
1424
</pattern>
<pattern_description>
[Integer range 5...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20points>
<Surface_20entropy>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The surface entropy for the profile.
</documentation>
<pattern>
1425
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Surface_20entropy>
</Compute_20entropy_20profile>
<Compute_20profile>
<Composition_20reference_20profile>
<value>
initial composition
</value>
<default_value>
initial composition
</default_value>
<documentation>
Select how the reference profile for composition is computed. This profile is used to evaluate the material model, when computing the pressure and temperature profile.
</documentation>
<pattern>
1429
</pattern>
<pattern_description>
[Selection initial composition|function ]
</pattern_description>
</Composition_20reference_20profile>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1428
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1427
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Number_20of_20points>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
The number of points we use to compute the adiabatic profile. The higher the number of points, the more accurate the downward integration from the adiabatic surface temperature will be.
</documentation>
<pattern>
1430
</pattern>
<pattern_description>
[Integer range 5...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20points>
<Use_20surface_20condition_20function>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use the &apos;Surface condition function&apos; to determine surface conditions, or the &apos;Adiabatic surface temperature&apos; and &apos;Surface pressure&apos; parameters. If this is set to true the reference profile is updated every timestep. The function expression of the function should be independent of space, but can depend on time &apos;t&apos;. The function must return two components, the first one being reference surface pressure, the second one being reference surface temperature.
</documentation>
<pattern>
1431
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20surface_20condition_20function>
<Variable_20names>
<value>
x,t
</value>
<default_value>
x,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1426
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
<Surface_20condition_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1434
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0; 0
</value>
<default_value>
0; 0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1433
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,t
</value>
<default_value>
x,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1432
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Surface_20condition_20function>
</Compute_20profile>
<Function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1437
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0.0; 0.0; 1.0
</value>
<default_value>
0.0; 0.0; 1.0
</default_value>
<documentation>
Expression for the adiabatic temperature, pressure, and density separated by semicolons as a function of `depth&apos;.
</documentation>
<pattern>
1438
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
depth
</value>
<default_value>
depth
</default_value>
<documentation/>
<pattern>
1439
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
</Adiabatic_20conditions_20model>
<Boundary_20composition_20model>
<Allow_20fixed_20composition_20on_20outflow_20boundaries>
<value>
false for models without melt
</value>
<default_value>
false for models without melt
</default_value>
<documentation>
When the composition is fixed on a given boundary as determined by the list of &apos;Fixed composition boundary indicators&apos;, there might be parts of the boundary where material flows out and one may want to prescribe the composition only on those parts of the boundary where there is inflow. This parameter determines if compositions are only prescribed at these inflow parts of the boundary (if false) or everywhere on a given boundary, independent of the flow direction (if true). By default, this parameter is set to false, except in models with melt transport (see below). Note that in this context, `fixed&apos; refers to the fact that these are the boundary indicators where Dirichlet boundary conditions are applied, and does not imply that the boundary composition is time-independent. 

Mathematically speaking, the compositional fields satisfy an advection equation that has no diffusion. For this equation, one can only impose Dirichlet boundary conditions (i.e., prescribe a fixed compositional field value at the boundary) at those boundaries where material flows in. This would correspond to the ``false&apos;&apos; setting of this parameter, which is correspondingly the default. On the other hand, on a finite dimensional discretization such as the one one obtains from the finite element method, it is possible to also prescribe values on outflow boundaries, even though this may make no physical sense. This would then correspond to the ``true&apos;&apos; setting of this parameter. Note however that this parameter is only taken into account for the continuous field method and is not applied to the Discontinuous Galerkin (DG) field method. 

A warning for models with melt transport: In models with fluid flow, some compositional fields (in particular the porosity) might be transported with the fluid velocity, and would need to set the constraints based on the fluid velocity. However, this is currently not possible, because we reuse the same matrix for all compositional fields, and therefore can not use different constraints for different fields. Consequently, we set this parameter to true by default in models where melt transport is enabled. Be aware that if you change this default setting, you will not use the melt velocity, but the solid velocity to determine on which parts of the boundaries there is outflow.
</documentation>
<pattern>
1393
</pattern>
<pattern_description>
[Selection true|false|false for models without melt ]
</pattern_description>
</Allow_20fixed_20composition_20on_20outflow_20boundaries>
<Fixed_20composition_20boundary_20indicators>
<value/>
<default_value/>
<documentation>
A comma separated list of names denoting those boundaries on which the composition is fixed and described by the boundary composition object selected in its own section of this input file. All boundary indicators used by the geometry but not explicitly listed here will end up with no-flux (insulating) boundary conditions.

The names of the boundaries listed here can either be numbers (in which case they correspond to the numerical boundary indicators assigned by the geometry object), or they can correspond to any of the symbolic names the geometry object may have provided for each part of the boundary. You may want to compare this with the documentation of the geometry model you use in your model.

This parameter only describes which boundaries have a fixed composition, but not what composition should hold on these boundaries. The latter piece of information needs to be implemented in a plugin in the BoundaryComposition group, unless an existing implementation in this group already provides what you want.
</documentation>
<pattern>
1392
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Fixed_20composition_20boundary_20indicators>
<List_20of_20model_20names>
<value/>
<default_value/>
<documentation>
A comma-separated list of boundary composition models that will be used to initialize the composition. These plugins are loaded in the order given, and modify the existing composition field via the operators listed in &apos;List of model operators&apos;.

The following boundary composition models are available:

`ascii data&apos;: Implementation of a model in which the boundary composition is derived from files containing data in ascii format. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `composition1&apos;, `composition2&apos;, etc. in a 2d model and `x&apos;, `y&apos;, `composition1&apos;, `composition2&apos;, etc., in a 3d model, according to the number of compositional fields, which means that there has to be a single column for every composition in the model. Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates.If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`box&apos;: A model in which the composition is chosen constant on the sides of a box which are selected by the parameters Left/Right/Top/Bottom/Front/Back composition

`box with lithosphere boundary indicators&apos;: A model in which the composition is chosen constant on all the sides of a box. Additional boundary indicators are added to the lithospheric parts of the vertical boundaries. This model is to be used with the &apos;Two Merged Boxes&apos; Geometry Model.

`function&apos;: Implementation of a model in which the boundary composition is given in terms of an explicit formula that is elaborated in the parameters in section ``Boundary composition model|Function&apos;&apos;. 

Since the symbol $t$ indicating time may appear in the formulas for the prescribed composition, it is interpreted as having units seconds unless the global input parameter ``Use years in output instead of seconds&apos;&apos; is set, in which case we interpret the formula expressions as having units year.

The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`initial composition&apos;: A model in which the composition at the boundary is chosen to be the same as given in the initial conditions.

Because this class simply takes what the initial composition had described, this class can not know certain pieces of information such as the minimal and maximal composition on the boundary. For operations that require this, for example in post-processing, this boundary composition model must therefore be told what the minimal and maximal values on the boundary are. This is done using parameters set in section ``Boundary composition model/Initial composition&apos;&apos;.

`spherical constant&apos;: A model in which the composition is chosen constant on the inner and outer boundaries of a sphere, spherical shell, chunk or ellipsoidal chunk. Parameters are read from subsection &apos;Spherical constant&apos;.
</documentation>
<pattern>
1389
</pattern>
<pattern_description>
[MultipleSelection ascii data|box|box with lithosphere boundary indicators|function|initial composition|spherical constant ]
</pattern_description>
</List_20of_20model_20names>
<List_20of_20model_20operators>
<value>
add
</value>
<default_value>
add
</default_value>
<documentation>
A comma-separated list of operators that will be used to append the listed composition models onto the previous models. If only one operator is given, the same operator is applied to all models.
</documentation>
<pattern>
1390
</pattern>
<pattern_description>
[MultipleSelection add|subtract|minimum|maximum|replace if valid ]
</pattern_description>
</List_20of_20model_20operators>
<Model_20name>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Select one of the following models:

`ascii data&apos;: Implementation of a model in which the boundary composition is derived from files containing data in ascii format. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `composition1&apos;, `composition2&apos;, etc. in a 2d model and `x&apos;, `y&apos;, `composition1&apos;, `composition2&apos;, etc., in a 3d model, according to the number of compositional fields, which means that there has to be a single column for every composition in the model. Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates.If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`box&apos;: A model in which the composition is chosen constant on the sides of a box which are selected by the parameters Left/Right/Top/Bottom/Front/Back composition

`box with lithosphere boundary indicators&apos;: A model in which the composition is chosen constant on all the sides of a box. Additional boundary indicators are added to the lithospheric parts of the vertical boundaries. This model is to be used with the &apos;Two Merged Boxes&apos; Geometry Model.

`function&apos;: Implementation of a model in which the boundary composition is given in terms of an explicit formula that is elaborated in the parameters in section ``Boundary composition model|Function&apos;&apos;. 

Since the symbol $t$ indicating time may appear in the formulas for the prescribed composition, it is interpreted as having units seconds unless the global input parameter ``Use years in output instead of seconds&apos;&apos; is set, in which case we interpret the formula expressions as having units year.

The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`initial composition&apos;: A model in which the composition at the boundary is chosen to be the same as given in the initial conditions.

Because this class simply takes what the initial composition had described, this class can not know certain pieces of information such as the minimal and maximal composition on the boundary. For operations that require this, for example in post-processing, this boundary composition model must therefore be told what the minimal and maximal values on the boundary are. This is done using parameters set in section ``Boundary composition model/Initial composition&apos;&apos;.

`spherical constant&apos;: A model in which the composition is chosen constant on the inner and outer boundaries of a sphere, spherical shell, chunk or ellipsoidal chunk. Parameters are read from subsection &apos;Spherical constant&apos;.

\textbf{Warning}: This parameter provides an old and deprecated way of specifying boundary composition models and shouldn&apos;t be used. Please use &apos;List of model names&apos; instead.
</documentation>
<pattern>
1391
</pattern>
<pattern_description>
[Selection ascii data|box|box with lithosphere boundary indicators|function|initial composition|spherical constant|unspecified ]
</pattern_description>
</Model_20name>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/boundary-composition/ascii-data/test/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/boundary-composition/ascii-data/test/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1394
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
box_2d_%s.%d.txt
</value>
<default_value>
box_2d_%s.%d.txt
</default_value>
<documentation>
The file name of the model data. Provide file in format: (File name).\%s\%d, where \%s is a string specifying the boundary of the model according to the names of the boundary indicators (of the chosen geometry model), and \%d is any sprintf integer qualifier specifying the format of the current file number.
</documentation>
<pattern>
1397
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Data_20file_20time_20step>
<value>
1e6
</value>
<default_value>
1e6
</default_value>
<documentation>
Time step between following data files. Depending on the setting of the global `Use years in output instead of seconds&apos; flag in the input file, this number is either interpreted as seconds or as years. The default is one million, i.e., either one million seconds or one million years.
</documentation>
<pattern>
1398
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Data_20file_20time_20step>
<Decreasing_20file_20order>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
In some cases the boundary files are not numbered in increasing but in decreasing order (e.g. `Ma BP&apos;). If this flag is set to `True&apos; the plugin will first load the file with the number `First data file number&apos; and decrease the file number during the model run.
</documentation>
<pattern>
1401
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Decreasing_20file_20order>
<First_20data_20file_20model_20time>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The `First data file model time&apos; parameter has been deactivated and will be removed in a future release. Do not use this parameter and instead provide data files starting from the model start time.
</documentation>
<pattern>
1399
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</First_20data_20file_20model_20time>
<First_20data_20file_20number>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Number of the first velocity file to be loaded when the model time is larger than `First velocity file model time&apos;.
</documentation>
<pattern>
1400
</pattern>
<pattern_description>
[Integer range -2147483648...2147483647 (inclusive)]
</pattern_description>
</First_20data_20file_20number>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1396
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20data_20model>
<Box>
<Bottom_20composition>
<value/>
<default_value/>
<documentation>
A comma separated list of composition boundary values at the bottom boundary (at minimal $y$-value in 2d, or minimal $z$-value in 3d). This list must have as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1404
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Bottom_20composition>
<Left_20composition>
<value/>
<default_value/>
<documentation>
A comma separated list of composition boundary values at the left boundary (at minimal $x$-value). This list must have as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1402
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Left_20composition>
<Right_20composition>
<value/>
<default_value/>
<documentation>
A comma separated list of composition boundary values at the right boundary (at maximal $x$-value). This list must have as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1403
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Right_20composition>
<Top_20composition>
<value/>
<default_value/>
<documentation>
A comma separated list of composition boundary values at the top boundary (at maximal $y$-value in 2d, or maximal $z$-value in 3d). This list must have as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1405
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Top_20composition>
</Box>
<Box_20with_20lithosphere_20boundary_20indicators>
<Bottom_20composition>
<value/>
<default_value/>
<documentation>
A comma separated list of composition boundary values at the bottom boundary (at minimal $y$-value in 2d, or minimal $z$-value in 3d). This list must have as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1418
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Bottom_20composition>
<Left_20composition>
<value/>
<default_value/>
<documentation>
A comma separated list of composition boundary values at the left boundary (at minimal $x$-value). This list must have as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1414
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Left_20composition>
<Left_20composition_20lithosphere>
<value/>
<default_value/>
<documentation>
A comma separated list of composition boundary values at the left boundary (at minimal $x$-value). This list must have as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1416
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Left_20composition_20lithosphere>
<Right_20composition>
<value/>
<default_value/>
<documentation>
A comma separated list of composition boundary values at the right boundary (at maximal $x$-value). This list must have as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1415
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Right_20composition>
<Right_20composition_20lithosphere>
<value/>
<default_value/>
<documentation>
A comma separated list of composition boundary values at the right boundary (at maximal $x$-value). This list must have as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1417
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Right_20composition_20lithosphere>
<Top_20composition>
<value/>
<default_value/>
<documentation>
A comma separated list of composition boundary values at the top boundary (at maximal $y$-value in 2d, or maximal $z$-value in 3d). This list must have as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1419
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Top_20composition>
</Box_20with_20lithosphere_20boundary_20indicators>
<Function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are &apos;cartesian&apos;, &apos;spherical&apos;, and &apos;depth&apos;. &apos;spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. &apos;depth&apos; will create a function, in which only the first parameter is non-zero, which is interpreted to be the depth of the point.
</documentation>
<pattern>
1406
</pattern>
<pattern_description>
[Selection cartesian|spherical|depth ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1409
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1408
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1407
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<Initial_20composition>
<Maximal_20composition>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximal composition. Units: none.
</documentation>
<pattern>
1411
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximal_20composition>
<Minimal_20composition>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimal composition. Units: none.
</documentation>
<pattern>
1410
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimal_20composition>
</Initial_20composition>
<Spherical_20constant>
<Inner_20composition>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
A comma separated list of composition boundary values at the bottom boundary (at minimal radius). This list must have one entry or as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1413
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Inner_20composition>
<Outer_20composition>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
A comma separated list of composition boundary values at the top boundary (at maximal radius). This list must have one entry or as many entries as there are compositional fields. Units: none.
</documentation>
<pattern>
1412
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Outer_20composition>
</Spherical_20constant>
</Boundary_20composition_20model>
<Boundary_20fluid_20pressure_20model>
<Plugin_20name>
<value>
density
</value>
<default_value>
density
</default_value>
<documentation>
Select one of the following plugins:

`density&apos;: A plugin that prescribes the fluid pressure gradient at the boundary based on fluid/solid density from the material model.
</documentation>
<pattern>
110
</pattern>
<pattern_description>
[Selection density ]
</pattern_description>
</Plugin_20name>
<Density>
<Density_20formulation>
<value>
solid density
</value>
<default_value>
solid density
</default_value>
<documentation>
The density formulation used to compute the fluid pressure gradient at the model boundary.

`solid density&apos; prescribes the gradient of the fluid pressure as solid density times gravity (which is the lithostatic pressure) and leads to approximately the same pressure in the melt as in the solid, so that fluid is only flowing in or out due to differences in dynamic pressure.

`fluid density&apos; prescribes the gradient of the fluid pressure as fluid density times gravity and causes melt to flow in with the same velocity as inflowing solid material, or no melt flowing in or out if the solid velocity normal to the boundary is zero.

&apos;average density&apos; prescribes the gradient of the fluid pressure as the averaged fluid and solid density times gravity (which is a better approximation for the lithostatic pressure than just the solid density) and leads to approximately the same pressure in the melt as in the solid, so that fluid is only flowing in or out due to differences in dynamic pressure.
</documentation>
<pattern>
111
</pattern>
<pattern_description>
[Selection solid density|fluid density|average density ]
</pattern_description>
</Density_20formulation>
</Density>
</Boundary_20fluid_20pressure_20model>
<Boundary_20heat_20flux_20model>
<Fixed_20heat_20flux_20boundary_20indicators>
<value/>
<default_value/>
<documentation>
A comma separated list of names denoting those boundaries on which the heat flux is fixed and described by the boundary heat flux object selected in the &apos;Model name&apos; parameter. All boundary indicators used by the geometry but not explicitly listed here or in the list of &apos;Fixed temperature boundary indicators&apos; in the &apos;Boundary temperature model&apos; will end up with no-flux (insulating) boundary conditions.

The names of the boundaries listed here can either be numbers (in which case they correspond to the numerical boundary indicators assigned by the geometry object), or they can correspond to any of the symbolic names the geometry object may have provided for each part of the boundary. You may want to compare this with the documentation of the geometry model you use in your model.

This parameter only describes which boundaries have a fixed heat flux, but not what heat flux should hold on these boundaries. The latter piece of information needs to be implemented in a plugin in the BoundaryHeatFlux group, unless an existing implementation in this group already provides what you want.
</documentation>
<pattern>
57
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Fixed_20heat_20flux_20boundary_20indicators>
<Model_20name>
<value>
function
</value>
<default_value>
function
</default_value>
<documentation>
Select one of the following plugins:

`function&apos;: Implementation of a model in which the boundary heat flux is given in terms of an explicit formula that is elaborated in the parameters in section ``Boundary heat flux model|Function&apos;&apos;. The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

The formula you describe in the mentioned section is a scalar value for the heat flux that is assumed to be the flux normal to the boundary, and that has the unit W/(m$^2$) (in 3d) or W/m (in 2d). Negative fluxes are interpreted as the flow of heat into the domain, and positive fluxes are interpreted as heat flowing out of the domain.

The symbol $t$ indicating time that may appear in the formulas for the prescribed heat flux is interpreted as having units seconds unless the global parameter ``Use years in output instead of seconds&apos;&apos; has been set.
</documentation>
<pattern>
1483
</pattern>
<pattern_description>
[Selection function ]
</pattern_description>
</Model_20name>
<Function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `cartesian&apos;, `spherical&apos;, and `depth&apos;. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. `depth&apos; will create a function, in which only the first parameter is non-zero, which is interpreted to be the depth of the point.
</documentation>
<pattern>
1484
</pattern>
<pattern_description>
[Selection cartesian|spherical|depth ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1487
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1486
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1485
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
</Boundary_20heat_20flux_20model>
<Boundary_20temperature_20model>
<Allow_20fixed_20temperature_20on_20outflow_20boundaries>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
When the temperature is fixed on a given boundary as determined by the list of &apos;Fixed temperature boundary indicators&apos;, there might be parts of the boundary where material flows out and one may want to prescribe the temperature only on the parts of the boundary where there is inflow. This parameter determines if temperatures are only prescribed at these inflow parts of the boundary (if false) or everywhere on a given boundary, independent of the flow direction (if true).Note that in this context, `fixed&apos; refers to the fact that these are the boundary indicators where Dirichlet boundary conditions are applied, and does not imply that the boundary temperature is time-independent. 

Mathematically speaking, the temperature satisfies an advection-diffusion equation. For this type of equation, one can prescribe the temperature even on outflow boundaries as long as the diffusion coefficient is nonzero. This would correspond to the ``true&apos;&apos; setting of this parameter, which is correspondingly the default. In practice, however, this would only make physical sense if the diffusion coefficient is actually quite large to prevent the creation of a boundary layer. In addition, if there is no diffusion, one can only impose Dirichlet boundary conditions (i.e., prescribe a fixed temperature value at the boundary) at those boundaries where material flows in. This would correspond to the ``false&apos;&apos; setting of this parameter.
</documentation>
<pattern>
1329
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Allow_20fixed_20temperature_20on_20outflow_20boundaries>
<Fixed_20temperature_20boundary_20indicators>
<value>
left, right, bottom, top
</value>
<default_value/>
<documentation>
A comma separated list of names denoting those boundaries on which the temperature is fixed and described by the boundary temperature object selected in the &apos;List of model names&apos; parameter. All boundary indicators used by the geometry but not explicitly listed here will end up with no-flux (insulating) boundary conditions, or, if they are listed in the &apos;Fixed heat flux boundary indicators&apos;, with Neumann boundary conditions.

The names of the boundaries listed here can either be numbers (in which case they correspond to the numerical boundary indicators assigned by the geometry object), or they can correspond to any of the symbolic names the geometry object may have provided for each part of the boundary. You may want to compare this with the documentation of the geometry model you use in your model.

This parameter only describes which boundaries have a fixed temperature, but not what temperature should hold on these boundaries. The latter piece of information needs to be implemented in a plugin in the BoundaryTemperature group, unless an existing implementation in this group already provides what you want.
</documentation>
<pattern>
1328
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Fixed_20temperature_20boundary_20indicators>
<List_20of_20model_20names>
<value>
box
</value>
<default_value/>
<documentation>
A comma-separated list of boundary temperature models that will be used to initialize the temperature. These plugins are loaded in the order given, and modify the existing temperature field via the operators listed in &apos;List of model operators&apos;.

The following boundary temperature models are available:

`ascii data&apos;: Implementation of a model in which the boundary data is derived from files containing data in ascii format. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `Temperature [K]&apos; in a 2d model and  `x&apos;, `y&apos;, `Temperature [K]&apos; in a 3d model, which means that there has to be a single column containing the temperature. Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`box&apos;: A model in which the temperature is chosen constant on the sides of a box which are selected by the parameters Left/Right/Top/Bottom/Front/Back temperature

`box with lithosphere boundary indicators&apos;: A model in which the temperature is chosen constant on all the sides of a box. Additional boundary indicators are added to the lithospheric parts of the vertical boundaries. This model is to be used with the &apos;Two Merged Boxes&apos; Geometry Model.

`constant&apos;: A model in which the temperature is chosen constant on a given boundary indicator.  Parameters are read from the subsection &apos;Constant&apos;.

`dynamic core&apos;: This is a boundary temperature model working only with spherical shell geometry and core statistics postprocessor. The temperature at the top is constant, and the core mantle boundary temperature is dynamically evolving through time by calculating the heat flux into the core and solving the core energy balance. The formulation is mainly following \cite{NPB+04}, and the plugin is used in Zhang et al. [2016]. The energy of core cooling and freeing of the inner core is included in the plugin. However, current plugin can not deal with the energy balance if the core is in the `snowing core&apos; regime (i.e., the core solidifies from the top instead of bottom).

`function&apos;: Implementation of a model in which the boundary temperature is given in terms of an explicit formula that is elaborated in the parameters in section ``Boundary temperature model|Function&apos;&apos;. 

Since the symbol $t$ indicating time may appear in the formulas for the prescribed temperatures, it is interpreted as having units seconds unless the global input parameter ``Use years in output instead of seconds&apos;&apos; is set, in which case we interpret the formula expressions as having units year.

Because this class simply takes what the function calculates, this class can not know certain pieces of information such as the minimal and maximal temperature on the boundary. For operations that require this, for example in post-processing, this boundary temperature model must therefore be told what the minimal and maximal values on the boundary are. This is done using parameters set in section ``Boundary temperature model/Initial temperature&apos;&apos;.

The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`initial temperature&apos;: A model in which the temperature at the boundary is chosen to be the same as given in the initial conditions.

Because this class simply takes what the initial temperature had described, this class can not know certain pieces of information such as the minimal and maximal temperature on the boundary. For operations that require this, for example in post-processing, this boundary temperature model must therefore be told what the minimal and maximal values on the boundary are. This is done using parameters set in section ``Boundary temperature model/Initial temperature&apos;&apos;.

`spherical constant&apos;: A model in which the temperature is chosen constant on the inner and outer boundaries of a spherical shell, ellipsoidal chunk or chunk. Parameters are read from subsection &apos;Spherical constant&apos;.
</documentation>
<pattern>
1325
</pattern>
<pattern_description>
[MultipleSelection ascii data|box|box with lithosphere boundary indicators|constant|dynamic core|function|initial temperature|spherical constant ]
</pattern_description>
</List_20of_20model_20names>
<List_20of_20model_20operators>
<value>
add
</value>
<default_value>
add
</default_value>
<documentation>
A comma-separated list of operators that will be used to append the listed temperature models onto the previous models. If only one operator is given, the same operator is applied to all models.
</documentation>
<pattern>
1326
</pattern>
<pattern_description>
[MultipleSelection add|subtract|minimum|maximum|replace if valid ]
</pattern_description>
</List_20of_20model_20operators>
<Model_20name>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Select one of the following models:

`ascii data&apos;: Implementation of a model in which the boundary data is derived from files containing data in ascii format. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `Temperature [K]&apos; in a 2d model and  `x&apos;, `y&apos;, `Temperature [K]&apos; in a 3d model, which means that there has to be a single column containing the temperature. Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`box&apos;: A model in which the temperature is chosen constant on the sides of a box which are selected by the parameters Left/Right/Top/Bottom/Front/Back temperature

`box with lithosphere boundary indicators&apos;: A model in which the temperature is chosen constant on all the sides of a box. Additional boundary indicators are added to the lithospheric parts of the vertical boundaries. This model is to be used with the &apos;Two Merged Boxes&apos; Geometry Model.

`constant&apos;: A model in which the temperature is chosen constant on a given boundary indicator.  Parameters are read from the subsection &apos;Constant&apos;.

`dynamic core&apos;: This is a boundary temperature model working only with spherical shell geometry and core statistics postprocessor. The temperature at the top is constant, and the core mantle boundary temperature is dynamically evolving through time by calculating the heat flux into the core and solving the core energy balance. The formulation is mainly following \cite{NPB+04}, and the plugin is used in Zhang et al. [2016]. The energy of core cooling and freeing of the inner core is included in the plugin. However, current plugin can not deal with the energy balance if the core is in the `snowing core&apos; regime (i.e., the core solidifies from the top instead of bottom).

`function&apos;: Implementation of a model in which the boundary temperature is given in terms of an explicit formula that is elaborated in the parameters in section ``Boundary temperature model|Function&apos;&apos;. 

Since the symbol $t$ indicating time may appear in the formulas for the prescribed temperatures, it is interpreted as having units seconds unless the global input parameter ``Use years in output instead of seconds&apos;&apos; is set, in which case we interpret the formula expressions as having units year.

Because this class simply takes what the function calculates, this class can not know certain pieces of information such as the minimal and maximal temperature on the boundary. For operations that require this, for example in post-processing, this boundary temperature model must therefore be told what the minimal and maximal values on the boundary are. This is done using parameters set in section ``Boundary temperature model/Initial temperature&apos;&apos;.

The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`initial temperature&apos;: A model in which the temperature at the boundary is chosen to be the same as given in the initial conditions.

Because this class simply takes what the initial temperature had described, this class can not know certain pieces of information such as the minimal and maximal temperature on the boundary. For operations that require this, for example in post-processing, this boundary temperature model must therefore be told what the minimal and maximal values on the boundary are. This is done using parameters set in section ``Boundary temperature model/Initial temperature&apos;&apos;.

`spherical constant&apos;: A model in which the temperature is chosen constant on the inner and outer boundaries of a spherical shell, ellipsoidal chunk or chunk. Parameters are read from subsection &apos;Spherical constant&apos;.

\textbf{Warning}: This parameter provides an old and deprecated way of specifying boundary temperature models and shouldn&apos;t be used. Please use &apos;List of model names&apos; instead.
</documentation>
<pattern>
1327
</pattern>
<pattern_description>
[Selection ascii data|box|box with lithosphere boundary indicators|constant|dynamic core|function|initial temperature|spherical constant|unspecified ]
</pattern_description>
</Model_20name>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/boundary-temperature/ascii-data/test/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/boundary-temperature/ascii-data/test/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1340
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
box_2d_%s.%d.txt
</value>
<default_value>
box_2d_%s.%d.txt
</default_value>
<documentation>
The file name of the model data. Provide file in format: (File name).\%s\%d, where \%s is a string specifying the boundary of the model according to the names of the boundary indicators (of the chosen geometry model), and \%d is any sprintf integer qualifier specifying the format of the current file number.
</documentation>
<pattern>
1343
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Data_20file_20time_20step>
<value>
1e6
</value>
<default_value>
1e6
</default_value>
<documentation>
Time step between following data files. Depending on the setting of the global `Use years in output instead of seconds&apos; flag in the input file, this number is either interpreted as seconds or as years. The default is one million, i.e., either one million seconds or one million years.
</documentation>
<pattern>
1344
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Data_20file_20time_20step>
<Decreasing_20file_20order>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
In some cases the boundary files are not numbered in increasing but in decreasing order (e.g. `Ma BP&apos;). If this flag is set to `True&apos; the plugin will first load the file with the number `First data file number&apos; and decrease the file number during the model run.
</documentation>
<pattern>
1347
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Decreasing_20file_20order>
<First_20data_20file_20model_20time>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The `First data file model time&apos; parameter has been deactivated and will be removed in a future release. Do not use this parameter and instead provide data files starting from the model start time.
</documentation>
<pattern>
1345
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</First_20data_20file_20model_20time>
<First_20data_20file_20number>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Number of the first velocity file to be loaded when the model time is larger than `First velocity file model time&apos;.
</documentation>
<pattern>
1346
</pattern>
<pattern_description>
[Integer range -2147483648...2147483647 (inclusive)]
</pattern_description>
</First_20data_20file_20number>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1342
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20data_20model>
<Box>
<Bottom_20temperature>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Temperature at the bottom boundary (at minimal $z$-value). Units: \si{\kelvin}.
</documentation>
<pattern>
1350
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Bottom_20temperature>
<Left_20temperature>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Temperature at the left boundary (at minimal $x$-value). Units: \si{\kelvin}.
</documentation>
<pattern>
1348
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Left_20temperature>
<Right_20temperature>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Temperature at the right boundary (at maximal $x$-value). Units: \si{\kelvin}.
</documentation>
<pattern>
1349
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Right_20temperature>
<Top_20temperature>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Temperature at the top boundary (at maximal $x$-value). Units: \si{\kelvin}.
</documentation>
<pattern>
1351
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Top_20temperature>
</Box>
<Box_20with_20lithosphere_20boundary_20indicators>
<Bottom_20temperature>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Temperature at the bottom boundary (at minimal $z$-value). Units: \si{\kelvin}.
</documentation>
<pattern>
1336
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Bottom_20temperature>
<Left_20temperature>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Temperature at the left boundary (at minimal $x$-value). Units: \si{\kelvin}.
</documentation>
<pattern>
1334
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Left_20temperature>
<Left_20temperature_20lithosphere>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Temperature at the additional left lithosphere boundary (specified by user in Geometry Model). Units: \si{\kelvin}.
</documentation>
<pattern>
1338
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Left_20temperature_20lithosphere>
<Right_20temperature>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Temperature at the right boundary (at maximal $x$-value). Units: \si{\kelvin}.
</documentation>
<pattern>
1335
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Right_20temperature>
<Right_20temperature_20lithosphere>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Temperature at the additional right lithosphere boundary (specified by user in Geometry Model). Units: \si{\kelvin}.
</documentation>
<pattern>
1339
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Right_20temperature_20lithosphere>
<Top_20temperature>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Temperature at the top boundary (at maximal $x$-value). Units: \si{\kelvin}.
</documentation>
<pattern>
1337
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Top_20temperature>
</Box_20with_20lithosphere_20boundary_20indicators>
<Constant>
<Boundary_20indicator_20to_20temperature_20mappings>
<value/>
<default_value/>
<documentation>
A comma separated list of mappings between boundary indicators and the temperature associated with the boundary indicators. The format for this list is ``indicator1 : value1, indicator2 : value2, ...&apos;&apos;, where each indicator is a valid boundary indicator (either a number or the symbolic name of a boundary as provided by the geometry model) and each value is the temperature of that boundary.
</documentation>
<pattern>
1352
</pattern>
<pattern_description>
[Map of &lt;[Anything]&gt;:&lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Boundary_20indicator_20to_20temperature_20mappings>
</Constant>
<Dynamic_20core>
<Alpha>
<value>
1.35e-5
</value>
<default_value>
1.35e-5
</default_value>
<documentation>
Core thermal expansivity. Units: \si{\per\kelvin}.
</documentation>
<pattern>
1366
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Alpha>
<Beta_20composition>
<value>
1.1
</value>
<default_value>
1.1
</default_value>
<documentation>
Compositional expansion coefficient $Beta_c$. See \cite{NPB+04} for more details.
</documentation>
<pattern>
1369
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Beta_20composition>
<CMB_20pressure>
<value>
0.14e12
</value>
<default_value>
0.14e12
</default_value>
<documentation>
Pressure at CMB. Units: \si{\pascal}.
</documentation>
<pattern>
1360
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</CMB_20pressure>
<Core_20conductivity>
<value>
60.
</value>
<default_value>
60.
</default_value>
<documentation>
Core heat conductivity $k_c$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
1371
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Core_20conductivity>
<Core_20density>
<value>
12.5e3
</value>
<default_value>
12.5e3
</default_value>
<documentation>
Density of the core. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
1358
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Core_20density>
<Core_20heat_20capacity>
<value>
840.
</value>
<default_value>
840.
</default_value>
<documentation>
Heat capacity of the core. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
1363
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Core_20heat_20capacity>
<Delta>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
Partition coefficient of the light element.
</documentation>
<pattern>
1370
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Delta>
<Gravity_20acceleration>
<value>
9.8
</value>
<default_value>
9.8
</default_value>
<documentation>
Gravitation acceleration at CMB. Units: \si{\meter\per\second\squared}.
</documentation>
<pattern>
1359
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Gravity_20acceleration>
<Initial_20light_20composition>
<value>
0.01
</value>
<default_value>
0.01
</default_value>
<documentation>
Initial light composition (eg. S,O) concentration in weight fraction.
</documentation>
<pattern>
1361
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Initial_20light_20composition>
<Inner_20temperature>
<value>
6000.
</value>
<default_value>
6000.
</default_value>
<documentation>
Temperature at the inner boundary (core mantle boundary) at the beginning. Units: \si{\kelvin}.
</documentation>
<pattern>
1354
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Inner_20temperature>
<K0>
<value>
4.111e11
</value>
<default_value>
4.111e11
</default_value>
<documentation>
Core compressibility at zero pressure. See \cite{NPB+04} for more details.
</documentation>
<pattern>
1364
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</K0>
<Lh>
<value>
750e3
</value>
<default_value>
750e3
</default_value>
<documentation>
The latent heat of core freeze. Units: \si{\joule\per\kilogram}.
</documentation>
<pattern>
1367
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Lh>
<Max_20iteration>
<value>
30000
</value>
<default_value>
30000
</default_value>
<documentation>
The max iterations for nonlinear core energy solver.
</documentation>
<pattern>
1362
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Max_20iteration>
<Outer_20temperature>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Temperature at the outer boundary (lithosphere water/air). Units: \si{\kelvin}.
</documentation>
<pattern>
1353
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Outer_20temperature>
<Rh>
<value>
-27.7e6
</value>
<default_value>
-27.7e6
</default_value>
<documentation>
The heat of reaction. Units: \si{\joule\per\kilogram}.
</documentation>
<pattern>
1368
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Rh>
<Rho0>
<value>
7.019e3
</value>
<default_value>
7.019e3
</default_value>
<documentation>
Core density at zero pressure. Units: \si{\kilogram\per\meter\cubed}. See \cite{NPB+04} for more details.
</documentation>
<pattern>
1365
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Rho0>
<dR_20over_20dt>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Initial inner core radius changing rate. Units: \si{\kilo\meter}/year.
</documentation>
<pattern>
1356
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</dR_20over_20dt>
<dT_20over_20dt>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Initial CMB temperature changing rate. Units: \si{\kelvin}/year.
</documentation>
<pattern>
1355
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</dT_20over_20dt>
<dX_20over_20dt>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Initial light composition changing rate. Units: 1/year.
</documentation>
<pattern>
1357
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</dX_20over_20dt>
<Geotherm_20parameters>
<Composition_20dependency>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
If melting curve dependent on composition.
</documentation>
<pattern>
1376
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Composition_20dependency>
<Theta>
<value>
0.11
</value>
<default_value>
0.11
</default_value>
<documentation>
Melting curve (\cite{NPB+04} eq. (40)) parameter Theta.
</documentation>
<pattern>
1375
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Theta>
<Tm0>
<value>
1695.
</value>
<default_value>
1695.
</default_value>
<documentation>
Melting curve (\cite{NPB+04} eq. (40)) parameter Tm0. Units: \si{\kelvin}.
</documentation>
<pattern>
1372
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Tm0>
<Tm1>
<value>
10.9
</value>
<default_value>
10.9
</default_value>
<documentation>
Melting curve (\cite{NPB+04} eq. (40)) parameter Tm1. Units: \si{\per\tera\pascal}.
</documentation>
<pattern>
1373
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Tm1>
<Tm2>
<value>
-8.0
</value>
<default_value>
-8.0
</default_value>
<documentation>
Melting curve (\cite{NPB+04} eq. (40)) parameter Tm2. Units: \si{\per\tera\pascal\squared}.
</documentation>
<pattern>
1374
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Tm2>
<Use_20BW11>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
If using the Fe-FeS system solidus from Buono \&amp; Walker (2011) instead.
</documentation>
<pattern>
1377
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20BW11>
</Geotherm_20parameters>
<Other_20energy_20source>
<File_20name>
<value/>
<default_value/>
<documentation>
Data file name for other energy source into the core. The &apos;other energy source&apos; is used for external core energy source.For example if someone want to test the early lunar core powered by precession (Dwyer, C. A., et al. (2011). A long-lived lunar dynamo driven by continuous mechanical stirring. Nature 479(7372): 212-214.)Format [Time(Gyr)   Energy rate(W)]
</documentation>
<pattern>
1382
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</File_20name>
</Other_20energy_20source>
<Radioactive_20heat_20source>
<Half_20life_20times>
<value/>
<default_value/>
<documentation>
Half decay times of different elements (Ga)
</documentation>
<pattern>
1380
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Half_20life_20times>
<Heating_20rates>
<value/>
<default_value/>
<documentation>
Heating rates of different elements (W/kg)
</documentation>
<pattern>
1379
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Heating_20rates>
<Initial_20concentrations>
<value/>
<default_value/>
<documentation>
Initial concentrations of different elements (ppm)
</documentation>
<pattern>
1381
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Initial_20concentrations>
<Number_20of_20radioactive_20heating_20elements>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Number of different radioactive heating elements in core
</documentation>
<pattern>
1378
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20radioactive_20heating_20elements>
</Radioactive_20heat_20source>
</Dynamic_20core>
<Function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `cartesian&apos;, `spherical&apos;, and `depth&apos;. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. `depth&apos; will create a function, in which only the first parameter is non-zero, which is interpreted to be the depth of the point.
</documentation>
<pattern>
1383
</pattern>
<pattern_description>
[Selection cartesian|spherical|depth ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1386
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1385
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Maximal_20temperature>
<value>
3773.
</value>
<default_value>
3773.
</default_value>
<documentation>
Maximal temperature. Units: \si{\kelvin}.
</documentation>
<pattern>
1388
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximal_20temperature>
<Minimal_20temperature>
<value>
273.
</value>
<default_value>
273.
</default_value>
<documentation>
Minimal temperature. Units: \si{\kelvin}.
</documentation>
<pattern>
1387
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimal_20temperature>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1384
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<Initial_20temperature>
<Maximal_20temperature>
<value>
3773.
</value>
<default_value>
3773.
</default_value>
<documentation>
Maximal temperature. Units: \si{\kelvin}.
</documentation>
<pattern>
1331
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximal_20temperature>
<Minimal_20temperature>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimal temperature. Units: \si{\kelvin}.
</documentation>
<pattern>
1330
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimal_20temperature>
</Initial_20temperature>
<Spherical_20constant>
<Inner_20temperature>
<value>
6000.
</value>
<default_value>
6000.
</default_value>
<documentation>
Temperature at the inner boundary (core mantle boundary). Units: \si{\kelvin}.
</documentation>
<pattern>
1333
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Inner_20temperature>
<Outer_20temperature>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Temperature at the outer boundary (lithosphere water/air). Units: \si{\kelvin}.
</documentation>
<pattern>
1332
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Outer_20temperature>
</Spherical_20constant>
</Boundary_20temperature_20model>
<Boundary_20traction_20model>
<Prescribed_20traction_20boundary_20indicators>
<value/>
<default_value/>
<documentation>
A comma separated list denoting those boundaries on which the traction is prescribed, i.e., where unknown external forces act to prescribe a particular traction. This is often used to prescribe a traction that equals that of overlying plates.

The format of valid entries for this parameter is that of a map given as ``key1 [selector]: value1, key2 [selector]: value2, key3: value3, ...&apos;&apos; where each key must be a valid boundary indicator (which is either an integer or the symbolic name the geometry model in use may have provided for this part of the boundary) and each value must be one of the currently implemented boundary traction models. ``selector&apos;&apos; is an optional string given as a subset of the letters `xyz&apos; that allows you to apply the boundary conditions only to the components listed. As an example, &apos;1 y: function&apos; applies the type `function&apos; to the y component on boundary 1. Without a selector it will affect all components of the traction.

Note that traction should be given in N/m^2. The following boundary traction models are available:

`ascii data&apos;: Implementation of a model in which the boundary traction is derived from files containing pressure data in ascii format. The pressure given in the data file is applied as traction normal to the surface of a given boundary, pointing inwards. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `Pressure [Pa]&apos; in a 2d model and  `x&apos;, `y&apos;, `Pressure [Pa]&apos; in a 3d model, which means that there has to be a single column containing the pressure. Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the data will still be handled as Cartesian, however the assumed grid changes. `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`function&apos;: Implementation of a model in which the boundary traction is given in terms of an explicit formula that is elaborated in the parameters in section ``Boundary traction model|Function&apos;&apos;. 

The formula you describe in the mentioned section is a semicolon separated list of traction components for each of the $d$ components of the traction vector. These $d$ formulas are interpreted as having units Pa.

`initial lithostatic pressure&apos;: Implementation of a model in which the boundary traction is given in terms of a normal traction component set to the lithostatic pressure calculated according to the parameters in section ``Boundary traction model|Lithostatic pressure&apos;&apos;. 

The lithostatic pressure is calculated by integrating the pressure downward based on the initial composition and temperature along the user-specified depth profile. The user-specified profile is given in terms of a point in Cartesian coordinates for box geometries and in spherical coordinates for all other geometries (radius, longitude, latitude), and the number of integration points. The lateral coordinates of the point are used to calculate the lithostatic pressure profile with depth. This means that the depth coordinate is not used. Note that when initial topography is included, the initial topography at the user-provided representative point is used to compute the profile. If at other points the (initial) topography is higher, the behavior of this plugin at later timesteps depends on the domain geometry. The depth returned by the geometry model does (box geometries) or does not (spherical geometries) include the initial topography. This depth is used to interpolate between the points of the reference pressure profile. Depths outside the reference profile get returned the pressure value of the closest profile depth. When only the bottom boundary is prescribed initial lithostatic pressure, the pressure value of the deepest depth of the profile is returned. 

Gravity is expected to point along the depth direction. 

`zero traction&apos;: Implementation of a model in which the boundary traction is zero. This is commonly referred to as an ``open boundary condition&apos;&apos;, indicating that the material experiences no forces in response to what might exist on the other side of the boundary. However, this is only true in the case where hydrostatic pressure is not relevant. If hydrostatic pressure is not negligible, for example at the sides of a regional model, the material at the other side of the boundary does exceed a force, namely the force normal to the boundary induced by the hydrostatic pressure.
</documentation>
<pattern>
1467
</pattern>
<pattern_description>
[Map of &lt;[Anything]&gt;:&lt;[Selection ascii data|function|initial lithostatic pressure|zero traction ]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Prescribed_20traction_20boundary_20indicators>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/boundary-traction/ascii-data/test/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/boundary-traction/ascii-data/test/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1468
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
box_2d_%s.%d.txt
</value>
<default_value>
box_2d_%s.%d.txt
</default_value>
<documentation>
The file name of the model data. Provide file in format: (File name).\%s\%d, where \%s is a string specifying the boundary of the model according to the names of the boundary indicators (of the chosen geometry model), and \%d is any sprintf integer qualifier specifying the format of the current file number.
</documentation>
<pattern>
1471
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Data_20file_20time_20step>
<value>
1e6
</value>
<default_value>
1e6
</default_value>
<documentation>
Time step between following data files. Depending on the setting of the global `Use years in output instead of seconds&apos; flag in the input file, this number is either interpreted as seconds or as years. The default is one million, i.e., either one million seconds or one million years.
</documentation>
<pattern>
1472
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Data_20file_20time_20step>
<Decreasing_20file_20order>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
In some cases the boundary files are not numbered in increasing but in decreasing order (e.g. `Ma BP&apos;). If this flag is set to `True&apos; the plugin will first load the file with the number `First data file number&apos; and decrease the file number during the model run.
</documentation>
<pattern>
1475
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Decreasing_20file_20order>
<First_20data_20file_20model_20time>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The `First data file model time&apos; parameter has been deactivated and will be removed in a future release. Do not use this parameter and instead provide data files starting from the model start time.
</documentation>
<pattern>
1473
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</First_20data_20file_20model_20time>
<First_20data_20file_20number>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Number of the first velocity file to be loaded when the model time is larger than `First velocity file model time&apos;.
</documentation>
<pattern>
1474
</pattern>
<pattern_description>
[Integer range -2147483648...2147483647 (inclusive)]
</pattern_description>
</First_20data_20file_20number>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1470
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20data_20model>
<Function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `cartesian&apos;, `spherical&apos;, and `depth&apos;. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. `depth&apos; will create a function, in which only the first parameter is non-zero, which is interpreted to be the depth of the point.
</documentation>
<pattern>
1476
</pattern>
<pattern_description>
[Selection cartesian|spherical|depth ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1480
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0; 0
</value>
<default_value>
0; 0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1479
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Use_20spherical_20unit_20vectors>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Specify traction as $r$, $\phi$, and $\theta$ components instead of $x$, $y$, and $z$. Positive tractions point up, east, and north (in 3d) or out and clockwise (in 2d). This setting only makes sense for spherical geometries.
</documentation>
<pattern>
1477
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20spherical_20unit_20vectors>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1478
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<Initial_20lithostatic_20pressure>
<Number_20of_20integration_20points>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
The number of integration points over which we integrate the lithostatic pressure downwards.
</documentation>
<pattern>
1482
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20integration_20points>
<Representative_20point>
<value/>
<default_value/>
<documentation>
The point where the pressure profile will be calculated. Cartesian coordinates $(x,y,z)$ when geometry is a box, otherwise enter radius, longitude, and in 3d latitude. Note that the coordinate related to the depth ($y$ in 2d Cartesian, $z$ in 3d Cartesian and radius in spherical coordinates) is not used. Units: \si{\meter} or degrees.
</documentation>
<pattern>
1481
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Representative_20point>
</Initial_20lithostatic_20pressure>
</Boundary_20traction_20model>
<Boundary_20velocity_20model>
<Prescribed_20velocity_20boundary_20indicators>
<value/>
<default_value/>
<documentation>
A comma separated list denoting those boundaries on which the velocity is prescribed, i.e., where unknown external forces act to prescribe a particular velocity. This is often used to prescribe a velocity that equals that of overlying plates.

The format of valid entries for this parameter is that of a map given as ``key1 [selector]: value1, key2 [selector]: value2, key3: value3, ...&apos;&apos; where each key must be a valid boundary indicator (which is either an integer or the symbolic name the geometry model in use may have provided for this part of the boundary) and each value must be one of the currently implemented boundary velocity models. ``selector&apos;&apos; is an optional string given as a subset of the letters `xyz&apos; that allows you to apply the boundary conditions only to the components listed. As an example, &apos;1 y: function&apos; applies the type `function&apos; to the y component on boundary 1. Without a selector it will affect all components of the velocity.

Note that the no-slip boundary condition is a special case of the current one where the prescribed velocity happens to be zero. It can thus be implemented by indicating that a particular boundary is part of the ones selected using the current parameter and using ``zero velocity&apos;&apos; as the boundary values. Alternatively, you can simply list the part of the boundary on which the velocity is to be zero with the parameter ``Zero velocity boundary indicator&apos;&apos; in the current parameter section.

Note that when ``Use years in output instead of seconds&apos;&apos; is set to true, velocity should be given in m/yr. The following boundary velocity models are available:

`ascii data&apos;: Implementation of a model in which the boundary velocity is derived from files containing data in ascii format. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `velocity${}_x$&apos;, `velocity${}_y$&apos; in a 2d model or `x&apos;, `y&apos;, `velocity${}_x$&apos;, `velocity${}_y$&apos;, `velocity${}_z$&apos; in a 3d model. Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates.If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions. Velocities can be specified using cartesian (by default) or spherical unit vectors. No matter which geometry model is chosen, the unit of the velocities is assumed to be m/s or m/yr depending on the `Use years in output instead of seconds&apos; flag. If you provide velocities in cm/yr, set the `Scale factor&apos; option to 0.01.

`function&apos;: Implementation of a model in which the boundary velocity is given in terms of an explicit formula that is elaborated in the parameters in section ``Boundary velocity model|Function&apos;&apos;. The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

The formula you describe in the mentioned section is a semicolon separated list of velocities for each of the $d$ components of the velocity vector. These $d$ formulas are interpreted as having units m/s, unless the global input parameter ``Use years in output instead of seconds&apos;&apos; is set, in which case we interpret the formula expressions as having units m/year.

Likewise, since the symbol $t$ indicating time may appear in the formulas for the prescribed velocities, it is interpreted as having units seconds unless the global parameter above has been set.

`gplates&apos;: Implementation of a model in which the boundary velocity is derived from files that are generated by the GPlates program.

`zero velocity&apos;: Implementation of a model in which the boundary velocity is zero. This is commonly referred to as a ``stick boundary condition&apos;&apos;, indicating that the material ``sticks&apos;&apos; to the material on the other side of the boundary.
</documentation>
<pattern>
1440
</pattern>
<pattern_description>
[Map of &lt;[Anything]&gt;:&lt;[Selection ascii data|function|gplates|zero velocity ]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Prescribed_20velocity_20boundary_20indicators>
<Tangential_20velocity_20boundary_20indicators>
<value/>
<default_value/>
<documentation>
A comma separated list of names denoting those boundaries on which the velocity is tangential and unrestrained, i.e., free-slip where no external forces act to prescribe a particular tangential velocity (although there is a force that requires the flow to be tangential).

The names of the boundaries listed here can either by numbers (in which case they correspond to the numerical boundary indicators assigned by the geometry object), or they can correspond to any of the symbolic names the geometry object may have provided for each part of the boundary. You may want to compare this with the documentation of the geometry model you use in your model.
</documentation>
<pattern>
1442
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Tangential_20velocity_20boundary_20indicators>
<Zero_20velocity_20boundary_20indicators>
<value/>
<default_value/>
<documentation>
A comma separated list of names denoting those boundaries on which the velocity is zero.

The names of the boundaries listed here can either by numbers (in which case they correspond to the numerical boundary indicators assigned by the geometry object), or they can correspond to any of the symbolic names the geometry object may have provided for each part of the boundary. You may want to compare this with the documentation of the geometry model you use in your model.
</documentation>
<pattern>
1441
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Zero_20velocity_20boundary_20indicators>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/boundary-velocity/ascii-data/test/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/boundary-velocity/ascii-data/test/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1443
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
box_2d_%s.%d.txt
</value>
<default_value>
box_2d_%s.%d.txt
</default_value>
<documentation>
The file name of the model data. Provide file in format: (File name).\%s\%d, where \%s is a string specifying the boundary of the model according to the names of the boundary indicators (of the chosen geometry model), and \%d is any sprintf integer qualifier specifying the format of the current file number.
</documentation>
<pattern>
1446
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Data_20file_20time_20step>
<value>
1e6
</value>
<default_value>
1e6
</default_value>
<documentation>
Time step between following data files. Depending on the setting of the global `Use years in output instead of seconds&apos; flag in the input file, this number is either interpreted as seconds or as years. The default is one million, i.e., either one million seconds or one million years.
</documentation>
<pattern>
1447
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Data_20file_20time_20step>
<Decreasing_20file_20order>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
In some cases the boundary files are not numbered in increasing but in decreasing order (e.g. `Ma BP&apos;). If this flag is set to `True&apos; the plugin will first load the file with the number `First data file number&apos; and decrease the file number during the model run.
</documentation>
<pattern>
1450
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Decreasing_20file_20order>
<First_20data_20file_20model_20time>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The `First data file model time&apos; parameter has been deactivated and will be removed in a future release. Do not use this parameter and instead provide data files starting from the model start time.
</documentation>
<pattern>
1448
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</First_20data_20file_20model_20time>
<First_20data_20file_20number>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Number of the first velocity file to be loaded when the model time is larger than `First velocity file model time&apos;.
</documentation>
<pattern>
1449
</pattern>
<pattern_description>
[Integer range -2147483648...2147483647 (inclusive)]
</pattern_description>
</First_20data_20file_20number>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1445
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
<Use_20spherical_20unit_20vectors>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Specify velocity as r, phi, and theta components instead of x, y, and z. Positive velocities point up, east, and north (in 3d) or out and clockwise (in 2d). This setting only makes sense for spherical geometries.
</documentation>
<pattern>
1451
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20spherical_20unit_20vectors>
</Ascii_20data_20model>
<Function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `cartesian&apos;, `spherical&apos;, and `depth&apos;. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. `depth&apos; will create a function, in which only the first parameter is non-zero, which is interpreted to be the depth of the point.
</documentation>
<pattern>
1452
</pattern>
<pattern_description>
[Selection cartesian|spherical|depth ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1456
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0; 0
</value>
<default_value>
0; 0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1455
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Use_20spherical_20unit_20vectors>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Specify velocity as $r$, $\phi$, and $\theta$ components instead of $x$, $y$, and $z$. Positive velocities point up, east, and north (in 3d) or out and clockwise (in 2d). This setting only makes sense for spherical geometries.
</documentation>
<pattern>
1453
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20spherical_20unit_20vectors>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1454
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<GPlates_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/boundary-velocity/gplates/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/boundary-velocity/gplates/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a &apos;/&apos;) or relative to the current directory. The path may also include the special text &apos;$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT. 
</documentation>
<pattern>
1457
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20time_20step>
<value>
1e6
</value>
<default_value>
1e6
</default_value>
<documentation>
Time step between following velocity files. Depending on the setting of the global &apos;Use years in output instead of seconds&apos; flag in the input file, this number is either interpreted as seconds or as years. The default is one million, i.e., either one million seconds or one million years.
</documentation>
<pattern>
1462
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Data_20file_20time_20step>
<Decreasing_20file_20order>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
In some cases the boundary files are not numbered in increasing but in decreasing order (e.g. &apos;Ma BP&apos;). If this flag is set to &apos;True&apos; the plugin will first load the file with the number &apos;First velocity file number&apos; and decrease the file number during the model run.
</documentation>
<pattern>
1461
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Decreasing_20file_20order>
<First_20data_20file_20model_20time>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Time from which on the velocity file with number &apos;First velocity file number&apos; is used as boundary condition. Previous to this time, a no-slip boundary condition is assumed. Depending on the setting of the global &apos;Use years in output instead of seconds&apos; flag in the input file, this number is either interpreted as seconds or as years.
</documentation>
<pattern>
1459
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</First_20data_20file_20model_20time>
<First_20data_20file_20number>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Number of the first velocity file to be loaded when the model time is larger than &apos;First velocity file model time&apos;.
</documentation>
<pattern>
1460
</pattern>
<pattern_description>
[Integer range -2147483648...2147483647 (inclusive)]
</pattern_description>
</First_20data_20file_20number>
<Lithosphere_20thickness>
<value>
100000.
</value>
<default_value>
100000.
</default_value>
<documentation>
Determines the depth of the lithosphere, so that the GPlates velocities can be applied at the sides of the model as well as at the surface.
</documentation>
<pattern>
1466
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Lithosphere_20thickness>
<Point_20one>
<value>
1.570796,0.0
</value>
<default_value>
1.570796,0.0
</default_value>
<documentation>
Point that determines the plane in which a 2d model lies in. Has to be in the format `a,b&apos; where a and b are theta (polar angle) and phi in radians. This value is not utilized in 3d geometries, and can therefore be set to the default or any user-defined quantity.
</documentation>
<pattern>
1464
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Point_20one>
<Point_20two>
<value>
1.570796,1.570796
</value>
<default_value>
1.570796,1.570796
</default_value>
<documentation>
Point that determines the plane in which a 2d model lies in. Has to be in the format `a,b&apos; where a and b are theta (polar angle) and phi in radians. This value is not utilized in 3d geometries, and can therefore be set to the default or any user-defined quantity.
</documentation>
<pattern>
1465
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Point_20two>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the boundary velocity. You might want to use this to scale the velocities to a reference model (e.g. with free-slip boundary) or another plate reconstruction.
</documentation>
<pattern>
1463
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
<Velocity_20file_20name>
<value>
phi.%d
</value>
<default_value>
phi.%d
</default_value>
<documentation>
The file name of the material data. Provide file in format: (Velocity file name).\%d.gpml where \%d is any sprintf integer qualifier, specifying the format of the current file number.
</documentation>
<pattern>
1458
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Velocity_20file_20name>
</GPlates_20model>
</Boundary_20velocity_20model>
<Checkpointing>
<Steps_20between_20checkpoint>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The number of timesteps between performing checkpoints. If 0 and time between checkpoint is not specified, checkpointing will not be performed. Units: None.
</documentation>
<pattern>
72
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Steps_20between_20checkpoint>
<Time_20between_20checkpoint>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The wall time between performing checkpoints. If 0, will use the checkpoint step frequency instead. Units: Seconds.
</documentation>
<pattern>
71
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Time_20between_20checkpoint>
</Checkpointing>
<Compositional_20fields>
<Compositional_20field_20methods>
<value/>
<default_value/>
<documentation>
A comma separated list denoting the solution method of each compositional field. Each entry of the list must be one of the currently implemented field methods.

These choices correspond to the following methods by which compositional fields gain their values:\begin{itemize}\item ``field&apos;&apos;: If a compositional field is marked with this method, then its values are computed in each time step by advecting along the values of the previous time step using the velocity field, and applying reaction rates to it. In other words, this corresponds to the usual notion of a composition field as mentioned in Section~\ref{sec:methods:compositional-fields}. 
\item ``particles&apos;&apos;: If a compositional field is marked with this method, then its values are obtained in each time step by interpolating the corresponding properties from the particles located on each cell. The time evolution therefore happens because particles move along with the velocity field, and particle properties can react with each other as well. See Section~\ref{sec:methods:particles} for more information about how particles behave.
\item ``volume of fluid``: If a compositional field is marked with this method, then its values are obtained in each timestep by reconstructing a polynomial finite element approximation on each cell from a volume of fluid interface tracking method, which is used to compute the advection updates.
\item ``static&apos;&apos;: If a compositional field is marked this way, then it does not evolve at all. Its values are simply set to the initial conditions, and will then never change.
\item ``melt field&apos;&apos;: If a compositional field is marked with this method, then its values are computed in each time step by advecting along the values of the previous time step using the melt velocity, and applying reaction rates to it. In other words, this corresponds to the usual notion of a composition field as mentioned in Section~\ref{sec:methods:compositional-fields}, except that it is advected with the melt velocity instead of the solid velocity. This method can only be chosen if melt transport is active in the model.
\item ``darcy field&apos;&apos;: If a compositional field is marked with this method, then its values are computed in each time step by advecting along the values of the previous time step using the fluid velocity prescribed by Darcy&apos;s Law, and applying reaction rates to it. In other words this corresponds to the usual notion of a composition field as mentioned in Section~\ref{sec:methods:compositional-fields}, except that it is advected with the Darcy velocity instead of the solid velocity. This method requires there to be a compositional field named porosity that is advected the darcy field method. We calculate the fluid velocity $u_f$ using an approximation of Darcy&apos;s Law: $u_f = u_s - K_D / \phi * (rho_s * g - rho_f * g)$.
\item ``prescribed field&apos;&apos;: The value of these fields is determined in each time step from the material model. If a compositional field is marked with this method, then the value of a specific additional material model output, called the `PrescribedFieldOutputs&apos; is interpolated onto the field. This field does not change otherwise, it is not advected with the flow.
\item ``prescribed field with diffusion&apos;&apos;: If a compositional field is marked this way, the value of a specific additional material model output, called the `PrescribedFieldOutputs&apos; is interpolated onto the field, as in the ``prescribed field&apos;&apos; method. Afterwards, the field is diffused based on a solver parameter, the diffusion length scale, smoothing the field. Specifically, the field is updated by solving the equation $(I-l^2 \Delta) C_\text{smoothed} = C_\text{prescribed}$, where $l$ is the diffusion length scale. Note that this means that the amount of diffusion is independent of the time step size, and that the field is not advected with the flow.\end{itemize}
</documentation>
<pattern>
98
</pattern>
<pattern_description>
[List of &lt;[Selection field|particles|volume of fluid|static|melt field|darcy field|prescribed field|prescribed field with diffusion ]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Compositional_20field_20methods>
<List_20of_20normalized_20fields>
<value/>
<default_value/>
<documentation>
A list of integers smaller than or equal to the number of compositional fields. All compositional fields in this list will be normalized before the first timestep. The normalization is implemented in the following way: First, the sum of the fields to be normalized is calculated at every point and the global maximum is determined. Second, the compositional fields to be normalized are divided by this maximum.
</documentation>
<pattern>
100
</pattern>
<pattern_description>
[List of &lt;[Integer range 0...2147483647 (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</List_20of_20normalized_20fields>
<Mapped_20particle_20properties>
<value/>
<default_value/>
<documentation>
A comma separated list denoting the particle properties that will be projected to those compositional fields that are of the ``particles&apos;&apos; field type.

The format of valid entries for this parameter is that of a map given as ``key1: value1, key2: value2 [component2], key3: value3 [component4], ...&apos;&apos; where each key must be a valid field name of the ``particles&apos;&apos; type, and each value must be one of the currently selected particle properties. Component is a component index of the particle property that is 0 by default, but can be set up to n-1, where n is the number of vector components of this particle property. The component indicator only needs to be set if not the first component of the particle property should be mapped (e.g. the $y$-component of the velocity at the particle positions).
</documentation>
<pattern>
99
</pattern>
<pattern_description>
[Map of &lt;[Anything]&gt;:&lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Mapped_20particle_20properties>
<Names_20of_20fields>
<value/>
<default_value/>
<documentation>
A user-defined name for each of the compositional fields requested.
</documentation>
<pattern>
96
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Names_20of_20fields>
<Number_20of_20fields>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The number of fields that will be advected along with the flow field, excluding velocity, pressure and temperature.
</documentation>
<pattern>
95
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20fields>
<Types_20of_20fields>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
A type for each of the compositional fields requested. Each entry of the list must be one of several recognized types: chemical composition, stress, strain, grain size, porosity, density, entropy, general and unspecified. The generic type is intended to be a placeholder type that has no effect on the running of any material model, while the unspecified type is intended to tell ASPECT that the user has not explicitly indicated the type of field (facilitating parameter file checking). Plugins such as material models can use these types to affect how that plugin functions.
</documentation>
<pattern>
97
</pattern>
<pattern_description>
[List of &lt;[Selection chemical composition|stress|strain|grain size|porosity|density|entropy|generic|unspecified ]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Types_20of_20fields>
</Compositional_20fields>
<Discretization>
<Composition_20polynomial_20degree>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
The polynomial degree to use for the composition variable(s). As an example, a value of 2 for this parameter will yield either the element $Q_2$ or $DGQ_2$ for the compositional field(s), depending on whether we use continuous or discontinuous field(s). 

For continuous elements, the value needs to be 1 or larger as $Q_1$ is the lowest order element, while $DGQ_0$ is a valid choice. Units: None.
</documentation>
<pattern>
75
</pattern>
<pattern_description>
[List of &lt;[Integer range 0...2147483647 (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Composition_20polynomial_20degree>
<Stokes_20velocity_20polynomial_20degree>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
The polynomial degree to use for the velocity variables in the Stokes system. The polynomial degree for the pressure variable will then be one less in order to make the velocity/pressure pair conform with the usual LBB (Babu{\v s}ka-Brezzi) condition. In other words, we are using a Taylor-Hood element for the Stokes equations and this parameter indicates the polynomial degree of it. As an example, a value of 2 for this parameter will yield the element $Q_2^d \times Q_1$ for the $d$ velocity components and the pressure, respectively (unless the `Use locally conservative discretization&apos; parameter is set, which modifies the pressure element). 

Be careful if you choose 1 as the degree. The resulting element is not stable and it may lead to artifacts in the solution. Units: None.
</documentation>
<pattern>
73
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Stokes_20velocity_20polynomial_20degree>
<Temperature_20polynomial_20degree>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
The polynomial degree to use for the temperature variable. As an example, a value of 2 for this parameter will yield either the element $Q_2$ or $DGQ_2$ for the temperature field, depending on whether we use a continuous or discontinuous field. Units: None.
</documentation>
<pattern>
74
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Temperature_20polynomial_20degree>
<Use_20discontinuous_20composition_20discretization>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use a composition discretization that is discontinuous as opposed to continuous. This then requires the assembly of face terms between cells, and weak imposition of boundary terms for the composition field via the discontinuous Galerkin method.
</documentation>
<pattern>
79
</pattern>
<pattern_description>
[List of &lt;[Bool]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Use_20discontinuous_20composition_20discretization>
<Use_20discontinuous_20temperature_20discretization>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use a temperature discretization that is discontinuous as opposed to continuous. This then requires the assembly of face terms between cells, and weak imposition of boundary terms for the temperature field via the interior-penalty discontinuous Galerkin method.
</documentation>
<pattern>
78
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20discontinuous_20temperature_20discretization>
<Use_20equal_20order_20interpolation_20for_20Stokes>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
By default (i.e., when this parameter is set to its default value `false&apos;) \aspect{} uses finite element combinations in which the pressure shape functions are polynomials one degree lower than the shape functions for the velocity. An example is the Taylor-Hood element that uses $Q_k$ elements for the velocity and $Q_{k-1}$ for the pressure. This is because using the \textit{same} polynomial degree for both the velocity and the pressure turns out to violate some mathematical properties necessary to make the problem solvable. (In particular, thecondition in question goes by the name ``inf-sup&apos;&apos; or Babu{\v s}ka-Brezzi or LBB condition.) A consequence of violating this condition is that the pressure may show oscillations and not converge to the correct pressure.

That said, people have often used $Q_1$ elements for both the velocity and pressure anyway. This is commonly referred to as using the $Q_1-Q_1$ method. It is, by default, not stable as mentioned above, but it can be made stable by adding a small amount of compressibility to the model. There are numerous ways to do that. Today, the way that is generally considered to be the best approach is the one by Dohrmann and Bochev \cite{DohrmannBochev2004}.

When this parameter is set to ``true&apos;&apos;, then \aspect{} will use this method by using $Q_k\times Q_k$ elements for velocity and pressure, respectively, where $k$ is the value provided for the parameter ``Stokes velocity polynomial degree&apos;&apos;.

:::{note}
While \aspect{} \textit{allows} you to use this method, it is generally understood that this is not a great idea as it leads to rather low accuracy in general as documented in \cite{thba22}. It also leads to substantial problems when using free surfaces. As a consequence, the presence of this parameter should not be seen as an endorsement of the method, or a suggestion to actually use it. It simply makes the method available.
:::
</documentation>
<pattern>
77
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20equal_20order_20interpolation_20for_20Stokes>
<Use_20locally_20conservative_20discretization>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use a Stokes discretization that is locally conservative at the expense of a larger number of degrees of freedom (true), or to go with a cheaper discretization that does not locally conserve mass, although it is globally conservative (false).

When using a locally conservative discretization, the finite element space for the pressure is discontinuous between cells and is the polynomial space $P_{-(k-1)}$ of polynomials of degree $k-1$ in each variable separately. Here, $k$ is the value given in the parameter ``Stokes velocity polynomial degree&apos;&apos;, and consequently the polynomial degree for the pressure, $k-1$, is one lower than that for the velocity.

As a consequence of choosing this element for the pressure rather than the more commonly used $Q_{k-1}$ element that is continuous, it can be shown that if the medium is considered incompressible then the computed discrete velocity field $\mathbf u_h$ satisfies the property $\int_ {\partial K} \mathbf u_h \cdot \mathbf n = 0$ for every cell $K$, i.e., for each cell inflow and outflow exactly balance each other as one would expect for an incompressible medium. In other words, the velocity field is \textit{locally conservative}.

On the other hand, if this parameter is set to ``false&apos;&apos;(the default), then the finite element space is chosen as $Q_{k-1}$. This choice does not yield the local conservation property but has the advantage of requiring fewer degrees of freedom. Furthermore, the error is generally smaller with this choice.

For an in-depth discussion of these issues and a quantitative evaluation of the different choices, see \cite{kronbichler:etal:2012}.
</documentation>
<pattern>
76
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20locally_20conservative_20discretization>
<Stabilization_20parameters>
<Discontinuous_20penalty>
<value>
10.
</value>
<default_value>
10.
</default_value>
<documentation>
The value used to penalize discontinuities in the discontinuous Galerkin method. This is used only for the temperature field, and not for the composition field, as pure advection does not use the interior penalty method. This is largely empirically decided -- it must be large enough to ensure the bilinear form is coercive, but not so large as to penalize discontinuity at all costs.
</documentation>
<pattern>
87
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Discontinuous_20penalty>
<Global_20composition_20maximum>
<value>
1.7976931348623157e+308
</value>
<default_value>
1.7976931348623157e+308
</default_value>
<documentation>
The maximum global composition values that will be used in the bound preserving limiter for the discontinuous solutions from composition advection fields. The number of the input &apos;Global composition maximum&apos; values separated by &apos;,&apos; has to be one or the same as the number of the compositional fields. When only one value is supplied, this same value is assumed for all compositional fields.
</documentation>
<pattern>
92
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Global_20composition_20maximum>
<Global_20composition_20minimum>
<value>
-1.7976931348623157e+308
</value>
<default_value>
-1.7976931348623157e+308
</default_value>
<documentation>
The minimum global composition value that will be used in the bound preserving limiter for the discontinuous solutions from composition advection fields. The number of the input &apos;Global composition minimum&apos; values separated by &apos;,&apos; has to be one or the same as the number of the compositional fields. When only one value is supplied, this same value is assumed for all compositional fields.
</documentation>
<pattern>
93
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Global_20composition_20minimum>
<Global_20temperature_20maximum>
<value>
1.7976931348623157e+308
</value>
<default_value>
1.7976931348623157e+308
</default_value>
<documentation>
The maximum global temperature value that will be used in the bound preserving limiter for the discontinuous solutions from temperature advection fields.
</documentation>
<pattern>
90
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Global_20temperature_20maximum>
<Global_20temperature_20minimum>
<value>
-1.7976931348623157e+308
</value>
<default_value>
-1.7976931348623157e+308
</default_value>
<documentation>
The minimum global temperature value that will be used in the bound preserving limiter for the discontinuous solutions from temperature advection fields.
</documentation>
<pattern>
91
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Global_20temperature_20minimum>
<List_20of_20compositional_20fields_20with_20disabled_20boundary_20entropy_20viscosity>
<value/>
<default_value/>
<documentation>
Select for which compositional fields to skip the entropy viscosity stabilization at dirichlet boundaries. This is only advisable for compositional fieldsthat have intrinsic physical diffusion terms, otherwise oscillations may develop. The parameter should contain a list of compositional field names.
</documentation>
<pattern>
81
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</List_20of_20compositional_20fields_20with_20disabled_20boundary_20entropy_20viscosity>
<Stabilization_20method>
<value>
entropy viscosity
</value>
<default_value>
entropy viscosity
</default_value>
<documentation>
Select the method for stabilizing the advection equation. The original method implemented is &apos;entropy viscosity&apos; as described in \cite {kronbichler:etal:2012}. SUPG is currently experimental.
</documentation>
<pattern>
80
</pattern>
<pattern_description>
[Selection entropy viscosity|SUPG ]
</pattern_description>
</Stabilization_20method>
<Use_20artificial_20viscosity_20smoothing>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
If set to false, the artificial viscosity of a cell is computed and is computed on every cell separately as discussed in \cite{kronbichler:etal:2012}. If set to true, the maximum of the artificial viscosity in the cell as well as the neighbors of the cell is computed and used instead.
</documentation>
<pattern>
82
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20artificial_20viscosity_20smoothing>
<Use_20limiter_20for_20discontinuous_20composition_20solution>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to apply the bound preserving limiter as a correction after having the discontinuous composition solution. The limiter will only have an effect if the &apos;Global composition maximum&apos; and &apos;Global composition minimum&apos; parameters are defined in the .prm file. This limiter keeps the discontinuous solution in the range given by Global composition maximum&apos; and &apos;Global composition minimum&apos;. The number of input values in this parameter separated by &apos;,&apos; has to be one or the number of the compositional fields. When only one value is supplied, this same value is assumed for all compositional fields, otherwise each value represents if the limiter should be applied to the respective compositional field. Because this limiter modifies the solution it no longer satisfies the assembled equation. Therefore, the nonlinear residual for this field is meaningless, and in nonlinear solvers we will ignore the residual for this field to evaluate if the nonlinear solver has converged.
</documentation>
<pattern>
89
</pattern>
<pattern_description>
[List of &lt;[Bool]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Use_20limiter_20for_20discontinuous_20composition_20solution>
<Use_20limiter_20for_20discontinuous_20temperature_20solution>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to apply the bound preserving limiter as a correction after computing the discontinuous temperature solution. The limiter will only have an effect if the &apos;Global temperature maximum&apos; and &apos;Global temperature minimum&apos; parameters are defined in the .prm file. This limiter keeps the discontinuous solution in the range given by &apos;Global temperature maximum&apos; and &apos;Global temperature minimum&apos;. Because this limiter modifies the solution it no longer satisfies the assembled equation. Therefore, the nonlinear residual for this field is meaningless, and in nonlinear solvers we will ignore the residual for this field to evaluate if the nonlinear solver has converged.
</documentation>
<pattern>
88
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20limiter_20for_20discontinuous_20temperature_20solution>
<alpha>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
The exponent $\alpha$ in the entropy viscosity stabilization. Valid options are 1 or 2. The recommended setting is 2. (This parameter does not correspond to any variable in the 2012 paper by Kronbichler, Heister and Bangerth that describes ASPECT, see \cite{kronbichler:etal:2012}. Rather, the paper always uses 2 as the exponent in the definition of the entropy, following equation (15) of the paper. The full approach is discussed in \cite{guermond:etal:2011}.) Note that this is not the thermal expansion coefficient, also commonly referred to as $\alpha$.Units: None.
</documentation>
<pattern>
83
</pattern>
<pattern_description>
[Integer range 1...2 (inclusive)]
</pattern_description>
</alpha>
<beta>
<value>
0.052
</value>
<default_value>
0.052
</default_value>
<documentation>
The $\beta$ factor in the artificial viscosity stabilization. This parameter controls the maximum dissipation of the entropy viscosity, which is the part that only scales with the cell diameter and the maximum velocity in the cell, but does not depend on the solution field itself or its residual. An appropriate value for 2d is 0.052 and 0.78 for 3d. (For historical reasons, the name used here is different from the one used in the 2012 paper by Kronbichler, Heister and Bangerth that describes ASPECT, see \cite{kronbichler:etal:2012}. This parameter can be given as a single value or as a list with as many entries as one plus the number of compositional fields. In the former case all advection fields use the same stabilization parameters, in the latter case each field (temperature first, then all compositions) use individual parameters. This can be useful to reduce the stabilization for the temperature, which already has some physical diffusion. This parameter corresponds to the factor $\alpha_{\text{max}}$ in the formulas following equation (15) of the paper.) Units: None.
</documentation>
<pattern>
85
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</beta>
<cR>
<value>
0.11
</value>
<default_value>
0.11
</default_value>
<documentation>
The $c_R$ factor in the entropy viscosity stabilization. This parameter controls the part of the entropy viscosity that depends on the solution field itself and its residual in addition to the cell diameter and the maximum velocity in the cell. This parameter can be given as a single value or as a list with as many entries as one plus the number of compositional fields. In the former case all advection fields use the same stabilization parameters, in the latter case each field (temperature first, then all compositions) use individual parameters. This can be useful to reduce the stabilization for the temperature, which already has some physical diffusion. (For historical reasons, the name used here is different from the one used in the 2012 paper by Kronbichler, Heister and Bangerth that describes ASPECT, see \cite{kronbichler:etal:2012}. This parameter corresponds to the factor $\alpha_E$ in the formulas following equation (15) of the paper.) Units: None.
</documentation>
<pattern>
84
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</cR>
<gamma>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The strain rate scaling factor in the artificial viscosity stabilization. This parameter determines how much the strain rate (in addition to the velocity) should influence the stabilization. (This parameter does not correspond to any variable in the 2012 paper by Kronbichler, Heister and Bangerth that describes ASPECT, see \cite{kronbichler:etal:2012}. Rather, the paper always uses 0, i.e. they specify the maximum dissipation $\nu_h^\text{max}$ as $\nu_h^\text{max}\vert_K = \alpha_{\text{max}} h_K \|\mathbf u\|_{\infty,K}$. Here, we use $\|\lvert\mathbf u\rvert + \gamma h_K \lvert\varepsilon (\mathbf u)\rvert\|_{\infty,K}$ instead of $\|\mathbf u\|_{\infty,K}$. Units: None.
</documentation>
<pattern>
86
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</gamma>
</Stabilization_20parameters>
</Discretization>
<Formulation>
<Enable_20additional_20Stokes_20RHS>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to ask the material model for additional terms for the right-hand side of the Stokes equation. This feature is likely only used when implementing force vectors for manufactured solution problems and requires filling additional outputs of type AdditionalMaterialOutputsStokesRHS.
</documentation>
<pattern>
52
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Enable_20additional_20Stokes_20RHS>
<Enable_20elasticity>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to include the additional elastic terms on the right-hand side of the Stokes equation.
</documentation>
<pattern>
53
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Enable_20elasticity>
<Enable_20prescribed_20dilation>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to include additional terms on the right-hand side of the Stokes equation to set a given compression term specified in the MaterialModel output PrescribedPlasticDilation.
</documentation>
<pattern>
54
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Enable_20prescribed_20dilation>
<Formulation>
<value>
custom
</value>
<default_value>
custom
</default_value>
<documentation>
Select a formulation for the basic equations. Different published formulations are available in ASPECT (see the list of possible values for this parameter in the manual for available options). Two ASPECT specific options are
  * `isentropic compression&apos;: ASPECT&apos;s original formulation, using the explicit compressible mass equation, and the full density for the temperature equation.
  * `custom&apos;: A custom selection of `Mass conservation&apos; and `Temperature equation&apos;.
:::{warning}
The `custom&apos; option is implemented for advanced users that want full control over the equations solved. It is possible to choose inconsistent formulations and no error checking is performed on the consistency of the resulting equations.
:::

:::{note}
The `anelastic liquid approximation&apos; option here can also be used to set up the `truncated anelastic liquid approximation&apos; as long as this option is chosen together with a material model that defines a density that depends on temperature and depth and not on the pressure.
:::
</documentation>
<pattern>
49
</pattern>
<pattern_description>
[Selection isentropic compression|custom|anelastic liquid approximation|Boussinesq approximation ]
</pattern_description>
</Formulation>
<Mass_20conservation>
<value>
ask material model
</value>
<default_value>
ask material model
</default_value>
<documentation>
Possible approximations for the density derivatives in the mass conservation equation. Note that this parameter is only evaluated if `Formulation&apos; is set to `custom&apos;. Other formulations ignore the value of this parameter.
</documentation>
<pattern>
50
</pattern>
<pattern_description>
[Selection incompressible|isentropic compression|hydrostatic compression|reference density profile|implicit reference density profile|projected density field|ask material model ]
</pattern_description>
</Mass_20conservation>
<Temperature_20equation>
<value>
real density
</value>
<default_value>
real density
</default_value>
<documentation>
Possible approximations for the density in the temperature equation. Possible approximations are `real density&apos; and `reference density profile&apos;. Note that this parameter is only evaluated if `Formulation&apos; is set to `custom&apos;. Other formulations ignore the value of this parameter.
</documentation>
<pattern>
51
</pattern>
<pattern_description>
[Selection real density|reference density profile ]
</pattern_description>
</Temperature_20equation>
</Formulation>
<Geometry_20model>
<Model_20name>
<value>
box
</value>
<default_value>
unspecified
</default_value>
<documentation>
Select one of the following models:

`box&apos;: A box geometry parallel to the coordinate directions. The extent of the box in each coordinate direction is set in the parameter file. The box geometry labels its 2*dim sides as follows: in 2d, boundary indicators 0 through 3 denote the left, right, bottom and top boundaries; in 3d, boundary indicators 0 through 5 indicate left, right, front, back, bottom and top boundaries (see also the documentation of the deal.II class ``ReferenceCell&apos;&apos;). You can also use symbolic names ``left&apos;&apos;, ``right&apos;&apos;, etc., to refer to these boundaries in input files. It is also possible to add initial topography to the box model. Note however that this is done after the last initial adaptive refinement cycle. Also, initial topography is supposed to be small, as it is not taken into account when depth or a representative point is computed. 

`box with lithosphere boundary indicators&apos;: A box geometry parallel to the coordinate directions. The extent of the box in each coordinate direction is set in the parameter file. This geometry model labels its sides with 2*dim+2*(dim-1) boundary indicators: in 2d, boundary indicators 0 through 3 denote the left, right, bottom and top boundaries, while indicators4 and 5 denote the upper part of the left and right vertical boundary, respectively. In 3d, boundary indicators 0 through 5 indicate left, right, front, back, bottom and top boundaries (see also the documentation of the deal.II class ``ReferenceCell&apos;&apos;), while indicators 6, 7, 8 and 9 denote the left, right, front and back upper parts of the vertical boundaries, respectively. You can also use symbolic names ``left&apos;&apos;, ``right&apos;&apos;, ``left lithosphere&apos;&apos;, etc., to refer to these boundaries in input files.

Note that for a given ``Global refinement level&apos;&apos; and no user-specified ``Repetitions&apos;&apos;, the lithosphere part of the mesh will be more refined. 

The additional boundary indicators for the lithosphere allow for selecting boundary conditions for the lithosphere different from those for the underlying mantle. An example application of this geometry is to prescribe a velocity on the lithospheric plates, but use open boundary conditions underneath. 

`chunk&apos;: A geometry which can be described as a chunk of a spherical shell, bounded by lines of longitude, latitude and radius. The minimum and maximum longitude, latitude (if in 3d) and depth of the chunk is set in the parameter file. The chunk geometry labels its 2*dim sides as follows: ``west&apos;&apos; and ``east&apos;&apos;: minimum and maximum longitude, ``south&apos;&apos; and ``north&apos;&apos;: minimum and maximum latitude, ``inner&apos;&apos; and ``outer&apos;&apos;: minimum and maximum radii. 

The dimensions of the model are specified by parameters of the following form: Chunk (minimum || maximum) (longitude || latitude): edges of geographical quadrangle (in degrees)Chunk (inner || outer) radius: Radii at bottom and top of chunk(Longitude || Latitude || Radius) repetitions: number of cells in each coordinate direction.

When used in 2d, this geometry does not imply the use of a spherical coordinate system. Indeed, in 2d the geometry is simply a sector of an annulus in a Cartesian coordinate system and consequently would correspond to a sector of a cross section of the fluid filled space between two infinite cylinders where one has made the assumption that the velocity in direction of the cylinder axes is zero. This is consistent with the definition of what we consider the two-dimension case given in Section~\ref{sec:methods:2d-models}. It is also possible to add initial topography to the chunk geometry, based on an ascii data file. 

`chunk with lithosphere boundary indicators&apos;: A geometry which can be described as a chunk of a spherical shell, bounded by lines of longitude, latitude and radius. The side boundaries have two boundary indicators, so the user can prescribe different boundary conditions on these boundaries. The minimum and maximum longitude, (latitude) and depth of the chunk are set in the parameter file. The chunk geometry labels its 2*dim+2*(dim-1) sides as follows: ``lowerwest&apos;&apos; and ``lowereast&apos;&apos;: minimum and maximum longitude of the lower part of the east and west side boundaries, ``upperwest&apos;&apos; and ``uppereast&apos;&apos;: minimum and maximum longitude of the upper part of the east and west side boundaries, ``lowersouth&apos;&apos; and ``lowernorth&apos;&apos;: minimum and maximum latitude of the lower part of the south and north side boundaries, ``uppersouth&apos;&apos; and ``uppernorth&apos;&apos;: minimum and maximum latitude of the upper part of the south and north side boundaries, 

The dimensions of the model are specified by parameters of the following form: Chunk (minimum | maximum) (longitude | latitude): edges of geographical quadrangle (in degrees). Chunk (inner | outer | middle boundary) radius: Radii at bottom and top of chunk and the radius at which the lower boundary indicator along a side boundary transitions into the upper boundary indicator. (Longitude | Latitude) repetitions: number of cells in each coordinate direction.(Inner | Outer) chunk radius repetitions: number of cells in the radial coordinate direction for the lower part of the domain (up to the Middle boundary radius) and for the upper part of the domain. 

When used in 2d, this geometry does not imply the use of a spherical coordinate system. Indeed, in 2d the geometry is simply a sector of an annulus in a Cartesian coordinate system and consequently would correspond to a sector of a cross section of the fluid filled space between two infinite cylinders where one has made the assumption that the velocity in direction of the cylinder axes is zero. This is consistent with the definition of what we consider the two-dimension case given in Section~\ref{sec:methods:2d-models}. It is also possible to add initial topography to the chunk geometry, based on an ascii data file. 

`ellipsoidal chunk&apos;: A 3d chunk geometry that accounts for Earth&apos;s ellipticity (default assuming the WGS84 ellipsoid definition) which can be defined in non-coordinate directions. In the description of the ellipsoidal chunk, two of the ellipsoidal axes have the same length so that there is only a semi-major axis and a semi-minor axis. The user has two options for creating an ellipsoidal chunk geometry: 1) by defining two opposing points (SW and NE or NW and SE) a coordinate parallel ellipsoidal chunk geometry will be created. 2) by defining three points a non-coordinate parallel ellipsoidal chunk will be created. The points are defined in the input file by longitude:latitude. It is also possible to define additional subdivisions of the mesh in each direction. The boundary of the domain is formed by linear interpolation in longitude-latitude space between adjacent points (i.e. $[lon, lat](f) = [lon1 \cdot f + lon2 \cdot(1-f), lat1 \cdot f + lat2 \cdot (1-f)]$, where f is a value between 0 and 1). Faces of the model are defined as 0, west; 1,east; 2, south; 3, north; 4, inner; 5, outer.

This geometry model supports initial topography for deforming the initial mesh.

`sphere&apos;: A geometry model for a sphere with a user specified radius. This geometry has only a single boundary, so the only valid boundary indicator to specify in input files is ``0&apos;&apos;. It can also be referenced by the symbolic name ``surface&apos;&apos; in input files.

Despite the name, this geometry does not imply the use of a spherical coordinate system when used in 2d. Indeed, in 2d the geometry is simply a circle in a Cartesian coordinate system and consequently would correspond to a cross section of the fluid filled interior of an infinite cylinder where one has made the assumption that the velocity in direction of the cylinder axes is zero. This is consistent with the definition of what we consider the two-dimension case given in Section~\ref{sec:methods:2d-models}.

`spherical shell&apos;: A geometry representing a spherical shell or a piece of it. Inner and outer radii are read from the parameter file in subsection &apos;Spherical shell&apos;.

The spherical shell may be generated as per the original code (with respect to the inner and outer radius, and an initial number of cells along circumference) or following a custom mesh scheme: list of radial values or number of slices. A surface mesh is first generated and refined as desired, before it is extruded radially. A list of radial values subdivides the spherical shell at specified radii. The number of slices subdivides the spherical shell into N slices of equal thickness. The custom spherical shell only works with an opening angle of 360 degrees.

Despite the name, this geometry does not imply the use of a spherical coordinate system when used in 2d. Indeed, in 2d the geometry is simply an annulus in a Cartesian coordinate system and consequently would correspond to a cross section of the fluid filled space between two infinite cylinders where one has made the assumption that the velocity in direction of the cylinder axes is zero. This is consistent with the definition of what we consider the two-dimension case given in Section~\ref{sec:methods:2d-models}.

The model assigns boundary indicators as follows: In 2d, inner and outer boundaries get boundary indicators zero and one, and if the opening angle set in the input file is less than 360, then left and right boundaries are assigned indicators two and three. These boundaries can also be referenced using the symbolic names `inner&apos;, `outer&apos; and (if applicable) `left&apos;, `right&apos;.

In 3d, inner and outer indicators are treated as in 2d. If the opening angle is chosen as 90 degrees, i.e., the domain is the intersection of a spherical shell and the first octant, then indicator 2 is at the face $x=0$, 3 at $y=0$, and 4 at $z=0$. These last three boundaries can then also be referred to as `east&apos;, `west&apos; and `south&apos; symbolically in input files.
</documentation>
<pattern>
1068
</pattern>
<pattern_description>
[Selection box|box with lithosphere boundary indicators|chunk|chunk with lithosphere boundary indicators|ellipsoidal chunk|sphere|spherical shell|unspecified ]
</pattern_description>
</Model_20name>
<Box>
<Box_20origin_20X_20coordinate>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
X coordinate of box origin. Units: \si{\meter}.
</documentation>
<pattern>
1112
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Box_20origin_20X_20coordinate>
<Box_20origin_20Y_20coordinate>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Y coordinate of box origin. Units: \si{\meter}.
</documentation>
<pattern>
1113
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Box_20origin_20Y_20coordinate>
<Box_20origin_20Z_20coordinate>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Z coordinate of box origin. This value is ignored if the simulation is in 2d. Units: \si{\meter}.
</documentation>
<pattern>
1114
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Box_20origin_20Z_20coordinate>
<X_20extent>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Extent of the box in x-direction. Units: \si{\meter}.
</documentation>
<pattern>
1109
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</X_20extent>
<X_20periodic>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether the box should be periodic in X direction
</documentation>
<pattern>
1118
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</X_20periodic>
<X_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in X direction.
</documentation>
<pattern>
1115
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</X_20repetitions>
<Y_20extent>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Extent of the box in y-direction. Units: \si{\meter}.
</documentation>
<pattern>
1110
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Y_20extent>
<Y_20periodic>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether the box should be periodic in Y direction
</documentation>
<pattern>
1119
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Y_20periodic>
<Y_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in Y direction.
</documentation>
<pattern>
1116
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Y_20repetitions>
<Z_20extent>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Extent of the box in z-direction. This value is ignored if the simulation is in 2d. Units: \si{\meter}.
</documentation>
<pattern>
1111
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Z_20extent>
<Z_20periodic>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether the box should be periodic in Z direction
</documentation>
<pattern>
1120
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Z_20periodic>
<Z_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in Z direction.
</documentation>
<pattern>
1117
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Z_20repetitions>
</Box>
<Box_20with_20lithosphere_20boundary_20indicators>
<Box_20origin_20X_20coordinate>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
X coordinate of box origin. Units: \si{\meter}.
</documentation>
<pattern>
1083
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Box_20origin_20X_20coordinate>
<Box_20origin_20Y_20coordinate>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Y coordinate of box origin. Units: \si{\meter}.
</documentation>
<pattern>
1084
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Box_20origin_20Y_20coordinate>
<Box_20origin_20Z_20coordinate>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Z coordinate of box origin. This value is ignored if the simulation is in 2d. Units: \si{\meter}.
</documentation>
<pattern>
1085
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Box_20origin_20Z_20coordinate>
<Lithospheric_20thickness>
<value>
0.2
</value>
<default_value>
0.2
</default_value>
<documentation>
The thickness of the lithosphere used to create additional boundary indicators to set specific boundary conditions for the lithosphere. 
</documentation>
<pattern>
1079
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Lithospheric_20thickness>
<Use_20merged_20grids>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to make the grid by gluing together two boxes, or just use one chunk to make the grid. Using two grids glued together is a safer option, since it forces the boundary conditions to be always applied to the same depth, but using one grid allows for a more flexible usage of the adaptive refinement. Note that if there is no cell boundary exactly on the boundary between the lithosphere and the mantle, the velocity boundary will not be exactly at that depth. Therefore, using a merged grid is generally recommended over using one grid.When using one grid, the parameter for lower repetitions is used and the upper repetitions are ignored.
</documentation>
<pattern>
1096
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20merged_20grids>
<X_20extent>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Extent of the box in x-direction. Units: \si{\meter}.
</documentation>
<pattern>
1080
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</X_20extent>
<X_20periodic>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether the box should be periodic in X direction.
</documentation>
<pattern>
1091
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</X_20periodic>
<X_20periodic_20lithosphere>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether the box should be periodic in X direction in the lithosphere.
</documentation>
<pattern>
1094
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</X_20periodic_20lithosphere>
<X_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in X direction of the lower box. The same number of repetitions will be used in the upper box.
</documentation>
<pattern>
1086
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</X_20repetitions>
<Y_20extent>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Extent of the box in y-direction. Units: \si{\meter}.
</documentation>
<pattern>
1081
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Y_20extent>
<Y_20periodic>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether the box should be periodic in Y direction.
</documentation>
<pattern>
1092
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Y_20periodic>
<Y_20periodic_20lithosphere>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether the box should be periodic in Y direction in the lithosphere. This value is ignored if the simulation is in 2d. 
</documentation>
<pattern>
1095
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Y_20periodic_20lithosphere>
<Y_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in Y direction of the lower box. If the simulation is in 3d, the same number of repetitions will be used in the upper box.
</documentation>
<pattern>
1087
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Y_20repetitions>
<Y_20repetitions_20lithosphere>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in Y direction in the lithosphere. This value is ignored if the simulation is in 3d.
</documentation>
<pattern>
1089
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Y_20repetitions_20lithosphere>
<Z_20extent>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Extent of the box in z-direction. This value is ignored if the simulation is in 2d. Units: \si{\meter}.
</documentation>
<pattern>
1082
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Z_20extent>
<Z_20periodic>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether the box should be periodic in Z direction. This value is ignored if the simulation is in 2d.
</documentation>
<pattern>
1093
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Z_20periodic>
<Z_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in Z direction of the lower box. This value is ignored if the simulation is in 2d.
</documentation>
<pattern>
1088
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Z_20repetitions>
<Z_20repetitions_20lithosphere>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in Z direction in the lithosphere. This value is ignored if the simulation is in 2d.
</documentation>
<pattern>
1090
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Z_20repetitions_20lithosphere>
</Box_20with_20lithosphere_20boundary_20indicators>
<Chunk>
<Chunk_20inner_20radius>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Radius at the bottom surface of the chunk. Units: \si{\meter}.
</documentation>
<pattern>
1121
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Chunk_20inner_20radius>
<Chunk_20maximum_20latitude>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum latitude of the chunk. This value is ignored if the simulation is in 2d. Units: degrees.
</documentation>
<pattern>
1126
</pattern>
<pattern_description>
[Double -90...90 (inclusive)]
</pattern_description>
</Chunk_20maximum_20latitude>
<Chunk_20maximum_20longitude>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum longitude of the chunk. Units: degrees.
</documentation>
<pattern>
1124
</pattern>
<pattern_description>
[Double -180...360 (inclusive)]
</pattern_description>
</Chunk_20maximum_20longitude>
<Chunk_20minimum_20latitude>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum latitude of the chunk. This value is ignored if the simulation is in 2d. Units: degrees.
</documentation>
<pattern>
1125
</pattern>
<pattern_description>
[Double -90...90 (inclusive)]
</pattern_description>
</Chunk_20minimum_20latitude>
<Chunk_20minimum_20longitude>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum longitude of the chunk. Units: degrees.
</documentation>
<pattern>
1123
</pattern>
<pattern_description>
[Double -180...360 (inclusive)]
</pattern_description>
</Chunk_20minimum_20longitude>
<Chunk_20outer_20radius>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Radius at the top surface of the chunk. Units: \si{\meter}.
</documentation>
<pattern>
1122
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Chunk_20outer_20radius>
<Latitude_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in latitude. This value is ignored if the simulation is in 2d
</documentation>
<pattern>
1129
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Latitude_20repetitions>
<Longitude_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in longitude.
</documentation>
<pattern>
1128
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Longitude_20repetitions>
<Radius_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in radius.
</documentation>
<pattern>
1127
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Radius_20repetitions>
</Chunk>
<Chunk_20with_20lithosphere_20boundary_20indicators>
<Chunk_20inner_20radius>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Radius at the bottom surface of the chunk. Units: \si{\meter}.
</documentation>
<pattern>
1097
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Chunk_20inner_20radius>
<Chunk_20maximum_20latitude>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum latitude of the chunk. This value is ignored if the simulation is in 2d. Units: degrees.
</documentation>
<pattern>
1103
</pattern>
<pattern_description>
[Double -90...90 (inclusive)]
</pattern_description>
</Chunk_20maximum_20latitude>
<Chunk_20maximum_20longitude>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum longitude of the chunk. Units: degrees.
</documentation>
<pattern>
1101
</pattern>
<pattern_description>
[Double -180...360 (inclusive)]
</pattern_description>
</Chunk_20maximum_20longitude>
<Chunk_20middle_20boundary_20radius>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Radius at the top surface of the lower chunk, where it merges with the upper chunk. Units: \si{\meter}.
</documentation>
<pattern>
1099
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Chunk_20middle_20boundary_20radius>
<Chunk_20minimum_20latitude>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum latitude of the chunk. This value is ignored if the simulation is in 2d. Units: degrees.
</documentation>
<pattern>
1102
</pattern>
<pattern_description>
[Double -90...90 (inclusive)]
</pattern_description>
</Chunk_20minimum_20latitude>
<Chunk_20minimum_20longitude>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum longitude of the chunk. Units: degrees.
</documentation>
<pattern>
1100
</pattern>
<pattern_description>
[Double -180...360 (inclusive)]
</pattern_description>
</Chunk_20minimum_20longitude>
<Chunk_20outer_20radius>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Radius at the top surface of the chunk. Units: \si{\meter}.
</documentation>
<pattern>
1098
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Chunk_20outer_20radius>
<Inner_20chunk_20radius_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in radial direction for the lower chunk.
</documentation>
<pattern>
1105
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Inner_20chunk_20radius_20repetitions>
<Latitude_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in latitude. This value is ignored if the simulation is in 2d
</documentation>
<pattern>
1107
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Latitude_20repetitions>
<Longitude_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in longitude.
</documentation>
<pattern>
1106
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Longitude_20repetitions>
<Outer_20chunk_20radius_20repetitions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of cells in radial direction for the upper chunk.
</documentation>
<pattern>
1104
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Outer_20chunk_20radius_20repetitions>
<Use_20merged_20grids>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to make the grid by gluing together two boxes, or just use one chunk to make the grid. Using two grids glued together is a safer option, since it forces the boundary conditions to be always applied to the same depth, but using one grid allows for a more flexible usage of the adaptive refinement. Note that if there is no cell boundary exactly on the boundary between the lithosphere and the mantle, the velocity boundary will not be exactly at that depth. Therefore, using a merged grid is generally recommended over using one grid. When using one grid, the parameter for lower repetitions is used and the upper repetitions are ignored.
</documentation>
<pattern>
1108
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20merged_20grids>
</Chunk_20with_20lithosphere_20boundary_20indicators>
<Ellipsoidal_20chunk>
<Depth>
<value>
500000.0
</value>
<default_value>
500000.0
</default_value>
<documentation>
Bottom depth of model region.
</documentation>
<pattern>
1134
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Depth>
<Depth_20subdivisions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The number of subdivisions of the coarse (initial) mesh in depth.
</documentation>
<pattern>
1139
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Depth_20subdivisions>
<East_2dWest_20subdivisions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The number of subdivisions of the coarse (initial) mesh in the East-West direction.
</documentation>
<pattern>
1137
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</East_2dWest_20subdivisions>
<Eccentricity>
<value>
8.1819190842622e-2
</value>
<default_value>
8.1819190842622e-2
</default_value>
<documentation>
Eccentricity of the ellipsoid. Zero is a perfect sphere, default (8.1819190842622e-2) is WGS84.
</documentation>
<pattern>
1136
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Eccentricity>
<NE_20corner>
<value/>
<default_value/>
<documentation>
Longitude:latitude in degrees of the North-East corner point of model region.The North-East direction is positive. If one of the three corners is not provided the missing corner value will be calculated so all faces are parallel.
</documentation>
<pattern>
1130
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</NE_20corner>
<NW_20corner>
<value/>
<default_value/>
<documentation>
Longitude:latitude in degrees of the North-West corner point of model region. The North-East direction is positive. If one of the three corners is not provided the missing corner value will be calculated so all faces are parallel.
</documentation>
<pattern>
1131
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</NW_20corner>
<North_2dSouth_20subdivisions>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The number of subdivisions of the coarse (initial) mesh in the North-South direction.
</documentation>
<pattern>
1138
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</North_2dSouth_20subdivisions>
<SE_20corner>
<value/>
<default_value/>
<documentation>
Longitude:latitude in degrees of the South-East corner point of model region. The North-East direction is positive. If one of the three corners is not provided the missing corner value will be calculated so all faces are parallel.
</documentation>
<pattern>
1133
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</SE_20corner>
<SW_20corner>
<value/>
<default_value/>
<documentation>
Longitude:latitude in degrees of the South-West corner point of model region. The North-East direction is positive. If one of the three corners is not provided the missing corner value will be calculated so all faces are parallel.
</documentation>
<pattern>
1132
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</SW_20corner>
<Semi_2dmajor_20axis>
<value>
6378137.0
</value>
<default_value>
6378137.0
</default_value>
<documentation>
The semi-major axis (a) of an ellipsoid. This is the radius for a sphere (eccentricity=0). Default WGS84 semi-major axis.
</documentation>
<pattern>
1135
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Semi_2dmajor_20axis>
</Ellipsoidal_20chunk>
<Initial_20topography_20model>
<Model_20name>
<value>
zero topography
</value>
<default_value>
zero topography
</default_value>
<documentation>
Select one of the following models:

`ascii data&apos;: Implementation of a model in which the surface topography is derived from a file containing data in ascii format. The following geometry models are currently supported: box, chunk. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `Topography [m]&apos; in a 2d model and  `x&apos;, `y&apos;, `Topography [m]&apos; in a 3d model, which means that there has to be a single column containing the topography. Note that the data in the input file needs to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the azimuth angle (longitude) in radians (between zero and $2\pi$, not between $-\pi$ corresponding to 180 degrees west, and $+\pi$ corresponding to 180 degrees east), and `y&apos; by the polar angle in radians (between $0$ and $\pi$) measured positive from the north pole. The grid will be assumed to be a longitude-colatitude grid. Note that the order of spherical coordinates is `phi&apos;, `theta&apos; and not `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`function&apos;: Implementation of a model in which the initial topography is described by a function in Cartesian or spherical coordinates. 

`prm polygon&apos;: An initial topography model that defines the initial topography as constant inside each of a set of polygonal parts of the surface. The polygons, and their associated surface elevation, are defined in the `Geometry model/Initial topography/Prm polygon&apos; section.

`zero topography&apos;: Implementation of a model in which the initial topography is zero. 
</documentation>
<pattern>
1140
</pattern>
<pattern_description>
[Selection ascii data|function|prm polygon|zero topography ]
</pattern_description>
</Model_20name>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/geometry-model/initial-topography-model/ascii-data/test/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/geometry-model/initial-topography-model/ascii-data/test/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1141
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
box_2d_%s.0.txt
</value>
<default_value>
box_2d_%s.0.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1142
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1143
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20data_20model>
<Function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `cartesian&apos; and `spherical&apos;. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. 
</documentation>
<pattern>
1145
</pattern>
<pattern_description>
[Selection cartesian|spherical ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1148
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1147
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Maximum_20topography_20value>
<value>
2000.
</value>
<default_value>
2000.
</default_value>
<documentation>
The maximum value the topography given by the function can take. 
</documentation>
<pattern>
1144
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20topography_20value>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1146
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<Prm_20polygon>
<Topography_20parameters>
<value/>
<default_value/>
<documentation>
Set the topography height and the polygon which should be set to that height. The format is : &quot;The topography height 	extgreater The point list describing a polygon \&amp; The next topography height 	extgreater the next point list describing a polygon.&quot; The format for the point list describing the polygon is &quot;x1,y1;x2,y2&quot;. For example for two triangular areas of 100 and -100 meters high set: &apos;100 	extgreater 0,0;5,5;0,10 \&amp; -100 	extgreater 10,10;10,15;20,15&apos;. Units of the height are always in meters. The units of the coordinates are dependent on the geometry model. In the box model they are in meters, in the chunks they are in degrees, etc. Please refer to the manual of the individual geometry model to so see how the topography is implemented.
</documentation>
<pattern>
1149
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Topography_20parameters>
</Prm_20polygon>
</Initial_20topography_20model>
<Sphere>
<Radius>
<value>
6371000.
</value>
<default_value>
6371000.
</default_value>
<documentation>
Radius of the sphere. Units: \si{\meter}.
</documentation>
<pattern>
1069
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Radius>
</Sphere>
<Spherical_20shell>
<Cells_20along_20circumference>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The number of cells in circumferential direction that are created in the coarse mesh in 2d. If zero, this number is chosen automatically in a way that produces meshes in which cells have a reasonable aspect ratio for models in which the depth of the mantle is roughly that of the Earth. For planets with much shallower mantles and larger cores, you may want to chose a larger number to avoid cells that are elongated in tangential and compressed in radial direction.

In 3d, the number of cells is computed differently and does not have an easy interpretation. Valid values for this parameter in 3d are 0 (let this class choose), 6, 12 and 96. Other possible values may be discussed in the documentation of the deal.II function GridGenerator::hyper_shell. The parameter is best left at its default in 3d.

In either case, this parameter is ignored unless the opening angle of the domain is 360 degrees. This parameter is also ignored when using a custom mesh subdivision scheme.
</documentation>
<pattern>
1077
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Cells_20along_20circumference>
<Custom_20mesh_20subdivision>
<value>
none
</value>
<default_value>
none
</default_value>
<documentation>
Choose how the spherical shell mesh is generated. By default, a coarse mesh is generated with respect to the inner and outer radius, and an initial number of cells along circumference. In the other cases, a surface mesh is first generated and refined as desired, before it is extruded radially following the specified subdivision scheme.
</documentation>
<pattern>
1070
</pattern>
<pattern_description>
[Selection none|list of radial values|number of slices ]
</pattern_description>
</Custom_20mesh_20subdivision>
<Initial_20lateral_20refinement>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Initial lateral refinement for the custom mesh subdivision schemes.The number of refinement steps performed on the initial coarse surface mesh, before the surface is extruded radially. This parameter allows the user more control over the ratio between radial and lateral refinement of the mesh.
</documentation>
<pattern>
1073
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Initial_20lateral_20refinement>
<Inner_20radius>
<value>
3481000.
</value>
<default_value>
3481000.
</default_value>
<documentation>
Inner radius of the spherical shell. Units: \si{\meter}.

:::{note}
The default value of 3,481,000 m equals the radius of a sphere with equal volume as Earth (i.e., 6371 km) minus the average depth of the core-mantle boundary (i.e., 2890 km).
:::
</documentation>
<pattern>
1074
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Inner_20radius>
<List_20of_20radial_20values>
<value/>
<default_value/>
<documentation>
List of radial values for the custom mesh scheme. Units: $\si{m}$. A list of radial values subdivides the spherical shell at specified radii. The list must be strictly ascending, and the first value must be greater than the inner radius while the last must be less than the outer radius.
</documentation>
<pattern>
1071
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</List_20of_20radial_20values>
<Number_20of_20slices>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Number of slices for the custom mesh subdivision scheme. The number of slices subdivides the spherical shell into N slices of equal thickness. Must be greater than 0.
</documentation>
<pattern>
1072
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20slices>
<Opening_20angle>
<value>
360.
</value>
<default_value>
360.
</default_value>
<documentation>
Opening angle in degrees of the section of the shell that we want to build. The only opening angles that are allowed for this geometry are 90, 180, and 360 in 2d; and 90 and 360 in 3d. Units: degrees.
</documentation>
<pattern>
1076
</pattern>
<pattern_description>
[Double 0...360 (inclusive)]
</pattern_description>
</Opening_20angle>
<Outer_20radius>
<value>
6336000.
</value>
<default_value>
6336000.
</default_value>
<documentation>
Outer radius of the spherical shell. Units: \si{\meter}.

:::{note}
The default value of 6,336,000 m equals the radius of a sphere with equal volume as Earth (i.e., 6371 km) minus the average depth of the mantle-crust interface (i.e., 35 km).
:::
</documentation>
<pattern>
1075
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Outer_20radius>
<Phi_20periodic>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether the shell should be periodic in the phi direction.
</documentation>
<pattern>
1078
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Phi_20periodic>
</Spherical_20shell>
</Geometry_20model>
<Gravity_20model>
<Model_20name>
<value>
vertical
</value>
<default_value>
unspecified
</default_value>
<documentation>
Select one of the following models:

`ascii data&apos;: Gravity is read from a file that describes the reference state. The default profile follows the preliminary reference Earth model (PREM, Dziewonski and Anderson, 1981). Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of points in the reference state as for example `# POINTS: 3&apos;. Following the comment lines there has to be a single line containing the names of all data columns, separated by arbitrarily many spaces. Column names are not allowed to contain spaces. The file can contain unnecessary columns, but for this plugin it needs to at least provide a column named `gravity&apos;. Note that the data lines in the file need to be sorted in order of increasing depth from 0 to the maximal depth in the model domain. Points in the model that are outside of the provided depth range will be assigned the maximum or minimum depth values, respectively. Points do not need to be equidistant, but the computation of properties is optimized in speed if they are.

`function&apos;: Gravity is given in terms of an explicit formula that is elaborated in the parameters in section ``Gravity model|Function&apos;&apos;. The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`radial constant&apos;: A gravity model in which the gravity has a constant magnitude and the direction is radial (pointing inward if the value is positive). The magnitude is read from the parameter file in subsection &apos;Radial constant&apos;.

`radial earth-like&apos;: This plugin has been removed due to its misleading name. The included profile was hard-coded and was less earth-like than the `ascii data&apos; plugin, which uses the profile of the Preliminary Reference Earth Model (PREM). Use `ascii data&apos; instead of `radial earth-like&apos;.

`radial linear&apos;: A gravity model which is radial (pointing inward if the gravity is positive) and the magnitude changes linearly with depth. The magnitude of gravity at the surface and bottom is read from the input file in a section ``Gravity model/Radial linear&apos;&apos;.

`vertical&apos;: A gravity model in which the gravity direction is vertical (pointing downward for positive values) and at a constant magnitude by default equal to one.
</documentation>
<pattern>
1150
</pattern>
<pattern_description>
[Selection ascii data|function|radial constant|radial earth-like|radial linear|vertical|unspecified ]
</pattern_description>
</Model_20name>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/gravity-model/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/gravity-model/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1159
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
prem.txt
</value>
<default_value>
prem.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1160
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1161
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20data_20model>
<Function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `cartesian&apos;, `spherical&apos;, and `depth&apos;. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. `depth&apos; will create a function, in which only the first parameter is non-zero, which is interpreted to be the depth of the point.
</documentation>
<pattern>
1151
</pattern>
<pattern_description>
[Selection cartesian|spherical|depth ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1154
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0; 0
</value>
<default_value>
0; 0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1153
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1152
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<Radial_20constant>
<Magnitude>
<value>
9.81
</value>
<default_value>
9.81
</default_value>
<documentation>
Magnitude of the gravity vector in $m/s^2$. For positive values the direction is radially inward towards the center of the earth.
</documentation>
<pattern>
1155
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Magnitude>
</Radial_20constant>
<Radial_20linear>
<Magnitude_20at_20bottom>
<value>
10.7
</value>
<default_value>
10.7
</default_value>
<documentation>
Magnitude of the radial gravity vector at the bottom of the domain. `Bottom&apos; means themaximum depth in the chosen geometry, and for example represents the core-mantle boundary in the case of the `spherical shell&apos; geometry model, and the center in the case of the `sphere&apos; geometry model. Units: \si{\meter\per\second\squared}.
</documentation>
<pattern>
1157
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Magnitude_20at_20bottom>
<Magnitude_20at_20surface>
<value>
9.8
</value>
<default_value>
9.8
</default_value>
<documentation>
Magnitude of the radial gravity vector at the surface of the domain. Units: \si{\meter\per\second\squared}.
</documentation>
<pattern>
1156
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Magnitude_20at_20surface>
</Radial_20linear>
<Vertical>
<Magnitude>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Value of the gravity vector in $m/s^2$ directed along negative y (2d) or z (3d) axis (if the magnitude is positive.
</documentation>
<pattern>
1158
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Magnitude>
</Vertical>
</Gravity_20model>
<Heating_20model>
<List_20of_20model_20names>
<value/>
<default_value/>
<documentation>
A comma separated list of heating models that will be used to calculate the heating terms in the energy equation. The results of each of these criteria, i.e., the heating source terms and the latent heat terms for the left hand side will be added.

The following heating models are available:

`adiabatic heating&apos;: Implementation of a standard and a simplified model of adiabatic heating.

`adiabatic heating of melt&apos;: Implementation of a standard and a simplified model of adiabatic heating of melt. The full model implements the heating term 
$\alpha T (-\phi \mathbf u_s \cdot \nabla p) + \alpha T (\phi \mathbf u_f \cdot \nabla p)$.
For full adiabatic heating, this has to be used in combination with the heating model `adiabatic heating&apos; to also include adiabatic heating for the solid part, and the full heating term is then $\alpha T ((1-\phi) \mathbf u_s \cdot \nabla p) + \alpha T (\phi \mathbf u_f \cdot \nabla p)$.

`compositional heating&apos;: Implementation of a model in which magnitude of internal heat production is determined from fixed values assigned to each compositional field. These values are interpreted as having units \si{\watt\per\meter\cubed}.

`constant heating&apos;: Implementation of a model in which the heating rate is constant.

`function&apos;: Implementation of a model in which the heating rate is given in terms of an explicit formula that is elaborated in the parameters in section ``Heating model|Function&apos;&apos;. The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

The formula is interpreted as having units W/kg.

Since the symbol $t$ indicating time may appear in the formulas for the heating rate, it is interpreted as having units seconds unless the global parameter ``Use years in output instead of seconds&apos;&apos; is set.

`latent heat&apos;: Implementation of a standard model for latent heat.

`latent heat melt&apos;: Implementation of a standard model for latent heat of melting. This assumes that there is a compositional field called porosity, and it uses the reaction term of this field (the fraction of material that melted in the current time step) multiplied by a constant entropy change for melting all of the material as source term of the heating model.
If there is no field called porosity, the heating terms are 0.

`radioactive decay&apos;: Implementation of a model in which the internal heating rate is radioactive decaying in the following rule:
\[(\text{initial concentration})\cdot 0.5^{\text{time}/(\text{half life})}\]
The crust and mantle can have different concentrations, and the crust can be defined either by depth or by a certain compositional field.
The formula is interpreted as having units W/kg.

`shear heating&apos;: Implementation of a standard model for shear heating. Adds the term: $  2 \eta \left( \varepsilon - \frac{1}{3} \text{tr} \varepsilon \mathbf 1 \right) : \left( \varepsilon - \frac{1}{3} \text{tr} \varepsilon \mathbf 1 \right)$ to the right-hand side of the temperature equation.

`shear heating with melt&apos;: Implementation of a standard model for shear heating of migrating melt, including bulk (compression) heating $\xi \left( \nabla \cdot \mathbf u_s \right)^2 $ and heating due to melt segregation $\frac{\eta_f \phi^2}{k} \left( \mathbf u_f - \mathbf u_s \right)^2 $. For full shear heating, this has to be used in combination with the heating model shear heating to also include shear heating for the solid part.
</documentation>
<pattern>
1045
</pattern>
<pattern_description>
[MultipleSelection adiabatic heating|adiabatic heating of melt|compositional heating|constant heating|function|latent heat|latent heat melt|radioactive decay|shear heating|shear heating with melt ]
</pattern_description>
</List_20of_20model_20names>
<Adiabatic_20heating>
<Use_20simplified_20adiabatic_20heating>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
A flag indicating whether the adiabatic heating should be simplified from $\alpha T (\mathbf u \cdot \nabla p)$ to $ \alpha \rho T (\mathbf u \cdot \mathbf g) $.
</documentation>
<pattern>
1063
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20simplified_20adiabatic_20heating>
</Adiabatic_20heating>
<Adiabatic_20heating_20of_20melt>
<Use_20simplified_20adiabatic_20heating>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
A flag indicating whether the adiabatic heating should be simplified from $\alpha T (\mathbf u \cdot \nabla p)$ to $ \alpha \rho T (\mathbf u \cdot \mathbf g) $.
</documentation>
<pattern>
1064
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20simplified_20adiabatic_20heating>
</Adiabatic_20heating_20of_20melt>
<Compositional_20heating>
<Compositional_20heating_20values>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
List of heat production per unit volume values for background and compositional fields, for a total of N+1 values, where the first value corresponds to the background material, and N is the number of compositional fields. Units: \si{\watt\per\meter\cubed}.
</documentation>
<pattern>
1065
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Compositional_20heating_20values>
<Use_20compositional_20field_20for_20heat_20production_20averaging>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
A list of integers with as many entries as compositional fields plus one. The first entry corresponds to the background material, each following entry corresponds to a particular compositional field. If the entry for a field is &apos;1&apos; this field is considered during the computation of volume fractions, if it is &apos;0&apos; the field is ignored. This is useful if some compositional fields are used to track properties like finite strain that should not contribute to heat production. The first entry determines whether the background field contributes to heat production or not (essentially similar to setting its &apos;Compositional heating values&apos; to zero, but included for consistency in the length of the input lists).
</documentation>
<pattern>
1066
</pattern>
<pattern_description>
[List of &lt;[Integer range 0...1 (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Use_20compositional_20field_20for_20heat_20production_20averaging>
</Compositional_20heating>
<Constant_20heating>
<Radiogenic_20heating_20rate>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The specific rate of heating due to radioactive decay (or other bulk sources you may want to describe). This parameter corresponds to the variable $H$ in the temperature equation stated in the manual, and the heating term is $\rho H$. Units: W/kg.
</documentation>
<pattern>
1067
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Radiogenic_20heating_20rate>
</Constant_20heating>
<Function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `cartesian&apos;, `spherical&apos;, and `depth&apos;. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. `depth&apos; will create a function, in which only the first parameter is non-zero, which is interpreted to be the depth of the point.
</documentation>
<pattern>
1046
</pattern>
<pattern_description>
[Selection cartesian|spherical|depth ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1049
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1048
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1047
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<Latent_20heat_20melt>
<Melting_20entropy_20change>
<value>
-300.
</value>
<default_value>
-300.
</default_value>
<documentation>
The entropy change for the phase transition from solid to melt. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
1050
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melting_20entropy_20change>
<Retrieve_20entropy_20change_20from_20material_20model>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Instead of using the entropy change given in the &apos;Melting entropy change&apos; query the EnthalpyAdditionalOutputs in the material model to compute the entropy change for the phase transition from solid to melt.Units: $J/(kg K)$.
</documentation>
<pattern>
1051
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Retrieve_20entropy_20change_20from_20material_20model>
</Latent_20heat_20melt>
<Radioactive_20decay>
<Crust_20composition_20number>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Which composition field should be treated as crust
</documentation>
<pattern>
1059
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Crust_20composition_20number>
<Crust_20defined_20by_20composition>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether crust defined by composition or depth
</documentation>
<pattern>
1057
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Crust_20defined_20by_20composition>
<Crust_20depth>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Depth of the crust when crust if defined by depth. Units: \si{\meter}.
</documentation>
<pattern>
1058
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Crust_20depth>
<Half_20decay_20times>
<value/>
<default_value/>
<documentation>
Half decay times. Units: (Seconds), or (Years) if set `use years instead of seconds&apos;.
</documentation>
<pattern>
1054
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Half_20decay_20times>
<Heating_20rates>
<value/>
<default_value/>
<documentation>
Heating rates of different elements (W/kg)
</documentation>
<pattern>
1053
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Heating_20rates>
<Initial_20concentrations_20crust>
<value/>
<default_value/>
<documentation>
Initial concentrations of different elements (ppm)
</documentation>
<pattern>
1055
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Initial_20concentrations_20crust>
<Initial_20concentrations_20mantle>
<value/>
<default_value/>
<documentation>
Initial concentrations of different elements (ppm)
</documentation>
<pattern>
1056
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Initial_20concentrations_20mantle>
<Number_20of_20elements>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Number of radioactive elements
</documentation>
<pattern>
1052
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20elements>
</Radioactive_20decay>
<Shear_20heating>
<Cohesion_20for_20maximum_20shear_20stress>
<value>
2e7
</value>
<default_value>
2e7
</default_value>
<documentation>
Cohesion for maximum shear stress that should be used for the computation of shear heating. It can be useful to limit the shear stress in models where velocities are prescribed, and actual stresses in the Earth would be lower than the stresses introduced by the boundary conditions. Only used if &apos;Limit stress contribution to shear heating&apos; is true. Units: Pa.
</documentation>
<pattern>
1061
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Cohesion_20for_20maximum_20shear_20stress>
<Friction_20angle_20for_20maximum_20shear_20stress>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Friction angle for maximum shear stress that should be used for the computation of shear heating. It can be useful to limit the shear stress in models where velocities are prescribed, and actual stresses in the Earth would be lower than the stresses introduced by the boundary conditions. Only used if &apos;Limit stress contribution to shear heating&apos; is true. Units: none.
</documentation>
<pattern>
1062
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Friction_20angle_20for_20maximum_20shear_20stress>
<Limit_20stress_20contribution_20to_20shear_20heating>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
In models with prescribed boundary velocities, stresses can become unrealistically large. Using these large stresses when calculating the amount of shear heating would then lead to an unreasonable increase in temperature. This parameter indicates if the stress being used to compute the amount of shear heating should be limited based on a Drucker-Prager yield criterion with the cohesion given by the &apos;Cohesion for maximum shear stress&apos; parameter and the friction angle given by the &apos;Friction angle for maximum shear stress&apos; parameter.
</documentation>
<pattern>
1060
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Limit_20stress_20contribution_20to_20shear_20heating>
</Shear_20heating>
</Heating_20model>
<Initial_20composition_20model>
<List_20of_20model_20names>
<value/>
<default_value/>
<documentation>
A comma-separated list of initial composition models that together describe the initial composition field. These plugins are loaded in the order given, and modify the existing composition field via the operators listed in &apos;List of model operators&apos;.

The following composition models are available:

`adiabatic density&apos;: Specify the initial composition as the adiabatic reference density at each position. Note that only the field of the type &apos;density&apos; will be filled. For all other fields this plugin returns 0.0.

`ascii data&apos;: Implementation of a model in which the initial composition is derived from files containing data in ascii format. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `y&apos;, `composition1&apos;, `composition2&apos;, etc. in a 2d model and `x&apos;, `y&apos;, `z&apos;, `composition1&apos;, `composition2&apos;, etc. in a 3d model, according to the number of compositional fields, which means that there has to be a single column for every composition in the model.Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second and the third at last in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`ascii data layered&apos;: Implementation of a model in which the initial composition is derived from files containing data in ascii format. Each file defines a surface on which compositional fields are defined. Between the surfaces, the fields can be chosen to be constant (with a value defined by the nearest shallower surface), or linearly interpolated between surfaces. Note the required format of the input ascii data file: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `y&apos;, `composition1&apos;, `composition2&apos; etc. in a 2d model and `x&apos;, `y&apos;, `z&apos;, `composition1&apos;, `composition2&apos; etc. in a 3d model; i.e. the columns before the compositional field always contains the position of the surface along the vertical direction. The first column needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the azimuth angle and `y&apos; (if 3d) by the polar angle measured positive from the north pole. The last column will be the distance of the point from the origin (i.e. radial position). The grid in this case will be a latitude-longitude grid. Note that the order of spherical coordinates in 3d is `phi&apos;, `theta&apos;, `r&apos;, `T&apos;and not `theta&apos;, `phi&apos;, `r&apos;, `T&apos; as this is more consistent with other ASPECT plugins. Outside of the region defined by the grid, the plugin will use the value at the edge of the region.

`entropy table lookup&apos;: A class that implements initial conditions for the entropy field by converting the initial temperature field through a look up table. Note that this plugin only works if there is a compositional field called `entropy&apos;, and an additional look up table that can convert pressure and temperature to entropy. For all compositional fields except entropy this plugin returns 0.0, and they are therefore not changed as long as the default `add&apos; operator is selected for this plugin.

`function&apos;: Specify the composition in terms of an explicit formula. The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`porosity&apos;: A class that implements initial conditions for the porosity field by computing the equilibrium melt fraction for the given initial condition and reference pressure profile. Note that this plugin only works if there is a compositional field called `porosity&apos;, and the used material model implements the &apos;MeltFractionModel&apos; interface. For all compositional fields except porosity this plugin returns 0.0, and they are therefore not changed as long as the default `add&apos; operator is selected for this plugin.

`slab model&apos;: An initial composition model that implements subducted slab geometries as a compositional field determined from an input file. The file defines the depth to the top of the slab and the slab thickness. The computed compositional value is 1 within the slabs and zero elsewhere. An example model that is included is Slab2 described in Hayes, G. P., Moore, G. L., Portner, D. E., Hearne, M., Flamme, H., Furtney, M., \&amp; Smoczyk, G. M. (2018). Slab2, a comprehensive subduction zone geometry model. Science, 362(6410), 58-61. The script to convert the Slab2 model into an aspect input data file is available in the directory data/initial-composition/slab-model/. Please note that Slab2 and the example data file assume spherical geometry (latitude, longitude coordinates), however, that is not necessary for this plugin, data files in Cartesian coordinates will work with box geometries.

`world builder&apos;: Specify the initial composition through the World Builder. More information on the World Builder can be found at \url{https://geodynamicworldbuilder.github.io}. Make sure to specify the location of the World Builder file in the parameter &apos;World builder file&apos;. It is possible to use the World Builder only for selected compositional fields by specifying the parameter &apos;List of relevant compositions&apos;.
</documentation>
<pattern>
1277
</pattern>
<pattern_description>
[MultipleSelection adiabatic density|ascii data|ascii data layered|entropy table lookup|function|porosity|slab model|world builder ]
</pattern_description>
</List_20of_20model_20names>
<List_20of_20model_20operators>
<value>
add
</value>
<default_value>
add
</default_value>
<documentation>
A comma-separated list of operators that will be used to append the listed composition models onto the previous models. If only one operator is given, the same operator is applied to all models.
</documentation>
<pattern>
1278
</pattern>
<pattern_description>
[MultipleSelection add|subtract|minimum|maximum|replace if valid ]
</pattern_description>
</List_20of_20model_20operators>
<Model_20name>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Select one of the following models:

`adiabatic density&apos;: Specify the initial composition as the adiabatic reference density at each position. Note that only the field of the type &apos;density&apos; will be filled. For all other fields this plugin returns 0.0.

`ascii data&apos;: Implementation of a model in which the initial composition is derived from files containing data in ascii format. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `y&apos;, `composition1&apos;, `composition2&apos;, etc. in a 2d model and `x&apos;, `y&apos;, `z&apos;, `composition1&apos;, `composition2&apos;, etc. in a 3d model, according to the number of compositional fields, which means that there has to be a single column for every composition in the model.Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second and the third at last in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`ascii data layered&apos;: Implementation of a model in which the initial composition is derived from files containing data in ascii format. Each file defines a surface on which compositional fields are defined. Between the surfaces, the fields can be chosen to be constant (with a value defined by the nearest shallower surface), or linearly interpolated between surfaces. Note the required format of the input ascii data file: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `y&apos;, `composition1&apos;, `composition2&apos; etc. in a 2d model and `x&apos;, `y&apos;, `z&apos;, `composition1&apos;, `composition2&apos; etc. in a 3d model; i.e. the columns before the compositional field always contains the position of the surface along the vertical direction. The first column needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the azimuth angle and `y&apos; (if 3d) by the polar angle measured positive from the north pole. The last column will be the distance of the point from the origin (i.e. radial position). The grid in this case will be a latitude-longitude grid. Note that the order of spherical coordinates in 3d is `phi&apos;, `theta&apos;, `r&apos;, `T&apos;and not `theta&apos;, `phi&apos;, `r&apos;, `T&apos; as this is more consistent with other ASPECT plugins. Outside of the region defined by the grid, the plugin will use the value at the edge of the region.

`entropy table lookup&apos;: A class that implements initial conditions for the entropy field by converting the initial temperature field through a look up table. Note that this plugin only works if there is a compositional field called `entropy&apos;, and an additional look up table that can convert pressure and temperature to entropy. For all compositional fields except entropy this plugin returns 0.0, and they are therefore not changed as long as the default `add&apos; operator is selected for this plugin.

`function&apos;: Specify the composition in terms of an explicit formula. The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`porosity&apos;: A class that implements initial conditions for the porosity field by computing the equilibrium melt fraction for the given initial condition and reference pressure profile. Note that this plugin only works if there is a compositional field called `porosity&apos;, and the used material model implements the &apos;MeltFractionModel&apos; interface. For all compositional fields except porosity this plugin returns 0.0, and they are therefore not changed as long as the default `add&apos; operator is selected for this plugin.

`slab model&apos;: An initial composition model that implements subducted slab geometries as a compositional field determined from an input file. The file defines the depth to the top of the slab and the slab thickness. The computed compositional value is 1 within the slabs and zero elsewhere. An example model that is included is Slab2 described in Hayes, G. P., Moore, G. L., Portner, D. E., Hearne, M., Flamme, H., Furtney, M., \&amp; Smoczyk, G. M. (2018). Slab2, a comprehensive subduction zone geometry model. Science, 362(6410), 58-61. The script to convert the Slab2 model into an aspect input data file is available in the directory data/initial-composition/slab-model/. Please note that Slab2 and the example data file assume spherical geometry (latitude, longitude coordinates), however, that is not necessary for this plugin, data files in Cartesian coordinates will work with box geometries.

`world builder&apos;: Specify the initial composition through the World Builder. More information on the World Builder can be found at \url{https://geodynamicworldbuilder.github.io}. Make sure to specify the location of the World Builder file in the parameter &apos;World builder file&apos;. It is possible to use the World Builder only for selected compositional fields by specifying the parameter &apos;List of relevant compositions&apos;.

\textbf{Warning}: This parameter provides an old and deprecated way of specifying initial composition models and shouldn&apos;t be used. Please use &apos;List of model names&apos; instead.
</documentation>
<pattern>
1279
</pattern>
<pattern_description>
[Selection adiabatic density|ascii data|ascii data layered|entropy table lookup|function|porosity|slab model|world builder|unspecified ]
</pattern_description>
</Model_20name>
<Volume_20of_20fluid_20initialization_20type>
<value/>
<default_value/>
<documentation>
A comma separated list denoting the method to be used to initialize a composition field specified to be advected using the volume of fluid method.

The format of valid entries for this parameter is that of a map given as ``key1:value1, key2:value2`` where each key must be the name of a compositional field using the volume of fluid advection method, and the value is one of ``composition`` or ``level set``. ``composition`` is the default

When ``composition is specified, the initial model is treated as a standard composition field with bounds between 0 and 1 assumed, The initial fluid fractions are then based on an iterated midpoint quadrature. Resultant volume fractions outside of the bounds will be coerced to the nearest valid value (ie 0 or 1). If ``level set`` is specified, the initial data will be assumed to be in the form of a signed distance level set function (i.e. a function which is positive when in the fluid, negative outside, and zero on the interface and the magnitude is always the distance to the interface so the gradient is one everywhere).
</documentation>
<pattern>
105
</pattern>
<pattern_description>
[Map of &lt;[Anything]&gt;:&lt;[Selection composition|level set ]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Volume_20of_20fluid_20initialization_20type>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-composition/ascii-data/test/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-composition/ascii-data/test/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT. 
</documentation>
<pattern>
1289
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
initial_composition_top_mantle_box_3d.txt
</value>
<default_value>
initial_composition_top_mantle_box_3d.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1287
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Data_20file_20names>
<value>
initial_composition_top_mantle_box_3d.txt
</value>
<default_value>
initial_composition_top_mantle_box_3d.txt
</default_value>
<documentation>
The file names of the model data (comma separated). 
</documentation>
<pattern>
1290
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Data_20file_20names>
<First_20point_20on_20slice>
<value>
0.0,1.0,0.0
</value>
<default_value>
0.0,1.0,0.0
</default_value>
<documentation>
Point that determines the plane in which the 2d slice lies in. This variable is only used if &apos;Slice dataset in 2d plane&apos; is true. The slice will go through this point, the point defined by the parameter &apos;Second point on slice&apos;, and the center of the model domain. After the rotation, this first point will lie along the (0,1,0) axis of the coordinate system. The coordinates of the point have to be given in Cartesian coordinates.
</documentation>
<pattern>
1284
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</First_20point_20on_20slice>
<Interpolation_20scheme>
<value>
linear
</value>
<default_value>
linear
</default_value>
<documentation>
Method to interpolate between layer boundaries. Select from piecewise constant or linear. Piecewise constant takes the value from the nearest layer boundary above the data point. The linear option interpolates linearly between layer boundaries. Above and below the domain given by the layer boundaries, the values aregiven by the top and bottom layer boundary.
</documentation>
<pattern>
1291
</pattern>
<pattern_description>
[Selection piecewise constant|linear ]
</pattern_description>
</Interpolation_20scheme>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1288
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
<Second_20point_20on_20slice>
<value>
1.0,0.0,0.0
</value>
<default_value>
1.0,0.0,0.0
</default_value>
<documentation>
Second point that determines the plane in which the 2d slice lies in. This variable is only used if &apos;Slice dataset in 2d plane&apos; is true. The slice will go through this point, the point defined by the parameter &apos;First point on slice&apos;, and the center of the model domain. The coordinates of the point have to be given in Cartesian coordinates.
</documentation>
<pattern>
1285
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Second_20point_20on_20slice>
<Slice_20dataset_20in_202D_20plane>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use a 2d data slice of a 3d data file or the entire data file. Slicing a 3d dataset is only supported for 2d models.
</documentation>
<pattern>
1283
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Slice_20dataset_20in_202D_20plane>
</Ascii_20data_20model>
<Entropy_20table_20lookup>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/material-model/entropy-table/pyrtable/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/material-model/entropy-table/pyrtable/
</default_value>
<documentation>
The path to the model data. The path may also include the special text &apos;$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1292
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Material_20file_20name>
<value>
material_table_temperature_pressure.txt
</value>
<default_value>
material_table_temperature_pressure.txt
</default_value>
<documentation>
The file name of the material data.
</documentation>
<pattern>
1293
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Material_20file_20name>
</Entropy_20table_20lookup>
<Function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `cartesian&apos;, `spherical&apos;, and `depth&apos;. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. `depth&apos; will create a function, in which only the first parameter is non-zero, which is interpreted to be the depth of the point.
</documentation>
<pattern>
1294
</pattern>
<pattern_description>
[Selection cartesian|spherical|depth ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1297
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1296
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1295
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<Slab_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-composition/slab-model/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-composition/slab-model/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1298
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
shell_3d.txt
</value>
<default_value>
shell_3d.txt
</default_value>
<documentation>
The file name of the model data. Provide file in format: (File name).\%s, where \%s is a string specifying the boundary of the model according to the names of the boundary indicators (of the chosen geometry model).
</documentation>
<pattern>
1301
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1300
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Slab_20model>
<World_20builder>
<List_20of_20relevant_20compositions>
<value/>
<default_value/>
<documentation>
A list of names of compositional fields for which to determine the initial composition using the World Builder. As World Builder evaluations can be expensive, this parameter allows to only evaluate the fields that are relevant. This plugin returns 0.0 for all compositions that are not selected in the list. By default the list is empty and the world builder is evaluated for all compositional fields.
</documentation>
<pattern>
1302
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</List_20of_20relevant_20compositions>
</World_20builder>
</Initial_20composition_20model>
<Initial_20temperature_20model>
<List_20of_20model_20names>
<value/>
<default_value/>
<documentation>
A comma-separated list of initial temperature models that will be used to initialize the temperature. These plugins are loaded in the order given, and modify the existing temperature field via the operators listed in &apos;List of model operators&apos;.

The following initial temperature models are available:

`S40RTS perturbation&apos;: An initial temperature field in which the temperature is perturbed following the S20RTS or S40RTS shear wave velocity model by Ritsema and others, which can be downloaded here \url{http://www.earth.lsa.umich.edu/~jritsema/research.html}. Information on the vs model can be found in Ritsema, J., Deuss, A., van Heijst, H.J. \&amp; Woodhouse, J.H., 2011. S40RTS: a degree-40 shear-velocity model for the mantle from new Rayleigh wave dispersion, teleseismic traveltime and normal-mode splitting function measurements, Geophys. J. Int. 184, 1223-1236. The scaling between the shear wave perturbation and the density perturbation can be constant and set by the user with the &apos;Vs to density scaling&apos; parameter or depth-dependent and read in from a file. To convert density the user can specify the &apos;Thermal expansion coefficient in initial temperature scaling&apos; parameter. The scaling is as follows: $\delta \ln \rho (r,\theta,\phi) = \xi \cdot \delta \ln v_s(r,\theta, \phi)$ and $\delta T(r,\theta,\phi) = - \frac{1}{\alpha} \delta \ln \rho(r,\theta,\phi)$. $\xi$ is the `vs to density scaling&apos; parameter and $\alpha$ is the &apos;Thermal expansion coefficient in initial temperature scaling&apos; parameter. The temperature perturbation is added to an otherwise constant temperature (incompressible model) or adiabatic reference profile (compressible model). If a depth is specified in &apos;Remove temperature heterogeneity down to specified depth&apos;, there is no temperature perturbation prescribed down to that depth.
Note the required file format if the vs to density scaling is read in from a file: The first lines may contain any number of comments if they begin with &apos;#&apos;, but one of these lines needs to contain the number of points in the reference state as for example &apos;# POINTS: 3&apos;. Following the comment lines there has to be a single line containing the names of all data columns, separated by arbitrarily many spaces. Column names are not allowed to contain spaces. The file can contain unnecessary columns, but for this plugin it needs to at least provide the columns named `depth&apos; and `vs\_to\_density&apos;. Note that the data lines in the file need to be sorted in order of increasing depth from 0 to the maximal depth in the model domain. Points in the model that are outside of the provided depth range will be assigned the maximum or minimum depth values, respectively. Points do not need to be equidistant, but the computation of properties is optimized in speed if they are.
If the plugin is used in 2d it will use an equatorial slice of the seismic tomography model.

`SAVANI perturbation&apos;: An initial temperature field in which the temperature is perturbed following the SAVANI shear wave velocity model by Auer and others, which can be downloaded here \url{http://n.ethz.ch/~auerl/savani.tar.bz2}. Information on the vs model can be found in Auer, L., Boschi, L., Becker, T.W., Nissen-Meyer, T. \&amp; Giardini, D., 2014. Savani: A variable resolution whole-mantle model of anisotropic shear velocity variations based on multiple data sets. Journal of Geophysical Research: Solid Earth 119.4 (2014): 3006-3034. The scaling between the shear wave perturbation and the density perturbation can be constant and set by the user with the &apos;Vs to density scaling&apos; parameter or depth-dependent and read in from a file. To convert density the user can specify the &apos;Thermal expansion coefficient in initial temperature scaling&apos; parameter. The scaling is as follows: $\delta \ln \rho (r,\theta,\phi) = \xi \cdot \delta \ln v_s(r,\theta, \phi)$ and $\delta T(r,\theta,\phi) = - \frac{1}{\alpha} \delta \ln \rho(r,\theta,\phi)$. $\xi$ is the `vs to density scaling&apos; parameter and $\alpha$ is the &apos;Thermal expansion coefficient in initial temperature scaling&apos; parameter. The temperature perturbation is added to an otherwise constant temperature (incompressible model) or adiabatic reference profile (compressible model).If a depth is specified in &apos;Remove temperature heterogeneity down to specified depth&apos;, there is no temperature perturbation prescribed down to that depth.
Note the required file format if the vs to density scaling is read in from a file: The first lines may contain any number of comments if they begin with &apos;#&apos;, but one of these lines needs to contain the number of points in the reference state as for example &apos;# POINTS: 3&apos;. Following the comment lines there has to be a single line containing the names of all data columns, separated by arbitrarily many spaces. Column names are not allowed to contain spaces. The file can contain unnecessary columns, but for this plugin it needs to at least provide the columns named `depth&apos; and `vs\_to\_density&apos;. Note that the data lines in the file need to be sorted in order of increasing depth from 0 to the maximal depth in the model domain. Points in the model that are outside of the provided depth range will be assigned the maximum or minimum depth values, respectively. Points do not need to be equidistant, but the computation of properties is optimized in speed if they are.

`adiabatic&apos;: Temperature is prescribed as an adiabatic profile with upper and lower thermal boundary layers, whose ages are given as input parameters. Note that this plugin uses the &apos;Adiabatic conditions model&apos; to compute the adiabat. Thus, the results depend on variables defined outside of this specific subsection; e.g. the globally defined &apos;Adiabatic surface temperature&apos;, and the variables defined in the &apos;Material model&apos; section including densities, heat capacities and thermal expansivities.

`adiabatic boundary&apos;: An initial temperature condition that allows for discretizing the model domain into two layers separated by a user-defined isothermal boundary. The user includes an input ascii data file that is formatted as 3 columns of `longitude(radians)&apos;, `colatitude(radians)&apos;, and `isotherm depth(meters)&apos;, where `isotherm depth&apos; represents the depth of an initial temperature of 1673.15 K (by default). The first lines in the data file may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 69 121&apos;. Note that the coordinates need to be sorted in a specific order: the `longitude&apos; coordinate needs to ascend first, followed by the `colatitude&apos; coordinate in order to assign the correct data (isotherm depth) to the prescribed coordinates. The temperature is defined from the surface (273.15 K) to the isotherm depth (1673.15 K) as a linear gradient. Below the isotherm depth the temperature increases approximately adiabatically (0.0005 K per meter). This plugin should work for all geometry models, but is currently only tested for spherical models.

`ascii data&apos;: Implementation of a model in which the initial temperature is derived from files containing data in ascii format. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `y&apos;, `Temperature [K]&apos; in a 2d model and  `x&apos;, `y&apos;, `z&apos;, `Temperature [K]&apos; in a 3d model, which means that there has to be a single column containing the temperature. Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second and the third at last in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`ascii data layered&apos;: Implementation of a model in which the initial temperature is derived from files containing data in ascii format. Each file defines a surface on which temperature is defined. Between the surfaces, the temperatures can be chosen to be constant (with a value defined by the nearest shallower surface), or linearly interpolated between surfaces. Note the required format of the input ascii data file: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `y&apos;, `Temperature [K]&apos; in a 2d model and `x&apos;, `y&apos;, `z&apos;, `Temperature [K]&apos; in a 3d model; i.e. the last two columns always contain the position of the isotherm along the vertical direction, and the temperature at that point. The first column needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the azimuth angle and `y&apos; (if 3d) by the polar angle measured positive from the north pole. The last column will be the distance of the point from the origin (i.e. radial position). The grid in this case will be a latitude-longitude grid. Note that the order of spherical coordinates in 3d is `phi&apos;, `theta&apos;, `r&apos;, `T&apos;and not `theta&apos;, `phi&apos;, `r&apos;, `T&apos; as this is more consistent with other ASPECT plugins. Outside of the region defined by the grid, the plugin will use the value at the edge of the region.

`ascii profile&apos;: Implementation of a model in which the initial temperature is read from a file that provides these values as a function of depth. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of points in the temperature profile, for example `# POINTS: 10&apos;. Following the comment lines, there has to be a single line containing the names of all data columns, separated by arbitrarily many spaces. Column names are not allowed to contain spaces. The file can contain unnecessary columns, but for this plugin it needs to at least provide columns named `depth&apos; and`temperature&apos;.Note that the data lines in the file need to be sorted in order of increasing depth from 0 to the maximal depth in the model domain. Points in the model that are outside of the provided depth range will be assigned the maximum or minimum depth values, respectively. Points do not need to be equidistant, but the computation of properties is optimized in speed if they are.

`continental geotherm&apos;: This is a temperature initial condition that computes a continental geotherm based on the solution of the steady-state conductive equation $k\frac{d^2 T}{dy^2}+\rho H = 0$ as described in e.g. Turcotte and Schubert, Ch. 4.6, or Chapman (1986). As boundary conditions, we take the surface temperature and the temperature of the Lithosphere-Asthenosphere Boundary (LAB). 
The geotherm is computed for a homogeneous lithosphere composed of an upper crust, lower crust and mantle layer. The crustal layers are assumed to have a constant radioactive heating, and all layers are assumed to have a constant thermal conductivity. Layer thicknesses, surface temperature and LAB temperature should be specified by the user. For consistency, the density, heat production and thermal conductivity of each layer are read from the visco plastic material model and the compositional heating model. 
For any depths below the depth of the LAB, a unrealistically high temperature is returned, such that this plugin can be combined with another temperature plugin through the &apos;minimum&apos; operator. 
Note that the current implementation only works for a 3-layer lithosphere, even though in principle the heat conduction equation can be solved for any number of layers. The naming of the compositional fields that represent the layers is also very specific, namely `upper\_crust&apos;, `lower\_crust&apos;, and `lithospheric\_mantle&apos;. 
Make sure the top and bottom temperatures of the lithosphere agree with temperatures set in for example the temperature boundary conditions.

`function&apos;: Specify the initial temperature in terms of an explicit formula. The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`harmonic perturbation&apos;: An initial temperature field in which the temperature is perturbed following a harmonic function (spherical harmonic or sine depending on geometry and dimension) in lateral and radial direction from an otherwise constant temperature (incompressible model) or adiabatic reference profile (compressible model).

`inclusion shape perturbation&apos;: An initial temperature field in which there is an inclusion in a constant-temperature box field. The size, shape, gradient, position, and temperature of the inclusion are defined by parameters.

`lithosphere mask&apos;: Implementation of a model in which the initial temperature is set to a specified lithosphere temperature above the lithosphere-asthenosphere boundary (specified by an ascii file or maximum lithosphere depth value). Below this the initial temperature is set as NaN.  Note the required format of the input data file: The first lines may contain any number of comments if they begin with &apos;#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example &apos;# POINTS: 3 3&apos;. For a spherical model, the order of the data columns has to be &apos;phi&apos;, &apos;theta&apos;, &apos;depth (m)&apos;, where phi is the azimuth angle and theta is the polar angle measured positive from the north pole. This plug-in can be combined with another using the &apos;replace if valid&apos; operator. 

`mandelbox&apos;: Fractal-shaped temperature field.

`patch on S40RTS&apos;: Implementation of a model in which the initial temperature is derived from a file containing shear wave velocity perturbations in ascii format (e.g. a high resolution upper mantle tomography) combined with S40RTS. Note the required format of the input ascii input data: The first lines may contain any number of comments if they begin with &apos;#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example &apos;# POINTS: 3 3 3&apos;. The order of the data columns has to be  `x&apos;, `y&apos;, `z&apos;, &apos;Vs Perturbation&apos; in a 3d model, which means that there has to be a single column containing the temperature. Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second and the third at last in order to assign the correct data to the prescribed coordinates. In the spherical model data will be handled as Cartesian, however, `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions. See S40RTS documentation for details on input parameters in the S40RTS perturbation subsection. The boundary between the two tomography models is smoothed using a depth weighted combination of Vs values within the region of smoothing. 

`perturbed box&apos;: An initial temperature field in which the temperature is perturbed slightly from an otherwise constant value equal to one. The perturbation is chosen in such a way that the initial temperature is constant to one along the entire boundary.

`polar box&apos;: An initial temperature field in which the temperature is perturbed slightly from an otherwise constant value equal to one. The perturbation is such that there are two poles on opposing corners of the box. 

`prescribed temperature&apos;: This model fixes the initial temperature to the prescribed temperature outputs computed by the material model. This only works if the material model implements prescribed temperature outputs.

`random Gaussian perturbation&apos;: An initial temperature field in which the temperature is perturbed from a temperature of zero following a given number of Gaussian perturbations placed randomly throughout the model domain. The number, width, and maximum magnitude of the perturbations can be chosen as model parameters. This plugin is meant to be used in combination with another initial temperature model that determines the background temperature (such as the &apos;function&apos; or the &apos;adiabatic&apos; plugin) using the &apos;add&apos; operator to combine them.

`spherical gaussian perturbation&apos;: An initial temperature field in which the temperature is perturbed by a single Gaussian added to an otherwise spherically symmetric state. Additional parameters are read from the parameter file in subsection &apos;Spherical gaussian perturbation&apos;.

`spherical hexagonal perturbation&apos;: An initial temperature field in which the temperature is perturbed following an $N$-fold pattern in a specified direction from an otherwise spherically symmetric state. The class&apos;s name comes from previous versions when the only option was $N=6$.

`world builder&apos;: Specify the initial temperature through the World Builder. More information on the World Builder can be found at \url{https://geodynamicworldbuilder.github.io}. Make sure to specify the location of the World Builder file in the parameter &apos;World builder file&apos;.
</documentation>
<pattern>
1162
</pattern>
<pattern_description>
[MultipleSelection S40RTS perturbation|SAVANI perturbation|adiabatic|adiabatic boundary|ascii data|ascii data layered|ascii profile|continental geotherm|function|harmonic perturbation|inclusion shape perturbation|lithosphere mask|mandelbox|patch on S40RTS|perturbed box|polar box|prescribed temperature|random Gaussian perturbation|spherical gaussian perturbation|spherical hexagonal perturbation|world builder ]
</pattern_description>
</List_20of_20model_20names>
<List_20of_20model_20operators>
<value>
add
</value>
<default_value>
add
</default_value>
<documentation>
A comma-separated list of operators that will be used to append the listed temperature models onto the previous models. If only one operator is given, the same operator is applied to all models.
</documentation>
<pattern>
1163
</pattern>
<pattern_description>
[MultipleSelection add|subtract|minimum|maximum|replace if valid ]
</pattern_description>
</List_20of_20model_20operators>
<Model_20name>
<value>
adiabatic
</value>
<default_value>
unspecified
</default_value>
<documentation>
Select one of the following models:

`S40RTS perturbation&apos;: An initial temperature field in which the temperature is perturbed following the S20RTS or S40RTS shear wave velocity model by Ritsema and others, which can be downloaded here \url{http://www.earth.lsa.umich.edu/~jritsema/research.html}. Information on the vs model can be found in Ritsema, J., Deuss, A., van Heijst, H.J. \&amp; Woodhouse, J.H., 2011. S40RTS: a degree-40 shear-velocity model for the mantle from new Rayleigh wave dispersion, teleseismic traveltime and normal-mode splitting function measurements, Geophys. J. Int. 184, 1223-1236. The scaling between the shear wave perturbation and the density perturbation can be constant and set by the user with the &apos;Vs to density scaling&apos; parameter or depth-dependent and read in from a file. To convert density the user can specify the &apos;Thermal expansion coefficient in initial temperature scaling&apos; parameter. The scaling is as follows: $\delta \ln \rho (r,\theta,\phi) = \xi \cdot \delta \ln v_s(r,\theta, \phi)$ and $\delta T(r,\theta,\phi) = - \frac{1}{\alpha} \delta \ln \rho(r,\theta,\phi)$. $\xi$ is the `vs to density scaling&apos; parameter and $\alpha$ is the &apos;Thermal expansion coefficient in initial temperature scaling&apos; parameter. The temperature perturbation is added to an otherwise constant temperature (incompressible model) or adiabatic reference profile (compressible model). If a depth is specified in &apos;Remove temperature heterogeneity down to specified depth&apos;, there is no temperature perturbation prescribed down to that depth.
Note the required file format if the vs to density scaling is read in from a file: The first lines may contain any number of comments if they begin with &apos;#&apos;, but one of these lines needs to contain the number of points in the reference state as for example &apos;# POINTS: 3&apos;. Following the comment lines there has to be a single line containing the names of all data columns, separated by arbitrarily many spaces. Column names are not allowed to contain spaces. The file can contain unnecessary columns, but for this plugin it needs to at least provide the columns named `depth&apos; and `vs\_to\_density&apos;. Note that the data lines in the file need to be sorted in order of increasing depth from 0 to the maximal depth in the model domain. Points in the model that are outside of the provided depth range will be assigned the maximum or minimum depth values, respectively. Points do not need to be equidistant, but the computation of properties is optimized in speed if they are.
If the plugin is used in 2d it will use an equatorial slice of the seismic tomography model.

`SAVANI perturbation&apos;: An initial temperature field in which the temperature is perturbed following the SAVANI shear wave velocity model by Auer and others, which can be downloaded here \url{http://n.ethz.ch/~auerl/savani.tar.bz2}. Information on the vs model can be found in Auer, L., Boschi, L., Becker, T.W., Nissen-Meyer, T. \&amp; Giardini, D., 2014. Savani: A variable resolution whole-mantle model of anisotropic shear velocity variations based on multiple data sets. Journal of Geophysical Research: Solid Earth 119.4 (2014): 3006-3034. The scaling between the shear wave perturbation and the density perturbation can be constant and set by the user with the &apos;Vs to density scaling&apos; parameter or depth-dependent and read in from a file. To convert density the user can specify the &apos;Thermal expansion coefficient in initial temperature scaling&apos; parameter. The scaling is as follows: $\delta \ln \rho (r,\theta,\phi) = \xi \cdot \delta \ln v_s(r,\theta, \phi)$ and $\delta T(r,\theta,\phi) = - \frac{1}{\alpha} \delta \ln \rho(r,\theta,\phi)$. $\xi$ is the `vs to density scaling&apos; parameter and $\alpha$ is the &apos;Thermal expansion coefficient in initial temperature scaling&apos; parameter. The temperature perturbation is added to an otherwise constant temperature (incompressible model) or adiabatic reference profile (compressible model).If a depth is specified in &apos;Remove temperature heterogeneity down to specified depth&apos;, there is no temperature perturbation prescribed down to that depth.
Note the required file format if the vs to density scaling is read in from a file: The first lines may contain any number of comments if they begin with &apos;#&apos;, but one of these lines needs to contain the number of points in the reference state as for example &apos;# POINTS: 3&apos;. Following the comment lines there has to be a single line containing the names of all data columns, separated by arbitrarily many spaces. Column names are not allowed to contain spaces. The file can contain unnecessary columns, but for this plugin it needs to at least provide the columns named `depth&apos; and `vs\_to\_density&apos;. Note that the data lines in the file need to be sorted in order of increasing depth from 0 to the maximal depth in the model domain. Points in the model that are outside of the provided depth range will be assigned the maximum or minimum depth values, respectively. Points do not need to be equidistant, but the computation of properties is optimized in speed if they are.

`adiabatic&apos;: Temperature is prescribed as an adiabatic profile with upper and lower thermal boundary layers, whose ages are given as input parameters. Note that this plugin uses the &apos;Adiabatic conditions model&apos; to compute the adiabat. Thus, the results depend on variables defined outside of this specific subsection; e.g. the globally defined &apos;Adiabatic surface temperature&apos;, and the variables defined in the &apos;Material model&apos; section including densities, heat capacities and thermal expansivities.

`adiabatic boundary&apos;: An initial temperature condition that allows for discretizing the model domain into two layers separated by a user-defined isothermal boundary. The user includes an input ascii data file that is formatted as 3 columns of `longitude(radians)&apos;, `colatitude(radians)&apos;, and `isotherm depth(meters)&apos;, where `isotherm depth&apos; represents the depth of an initial temperature of 1673.15 K (by default). The first lines in the data file may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 69 121&apos;. Note that the coordinates need to be sorted in a specific order: the `longitude&apos; coordinate needs to ascend first, followed by the `colatitude&apos; coordinate in order to assign the correct data (isotherm depth) to the prescribed coordinates. The temperature is defined from the surface (273.15 K) to the isotherm depth (1673.15 K) as a linear gradient. Below the isotherm depth the temperature increases approximately adiabatically (0.0005 K per meter). This plugin should work for all geometry models, but is currently only tested for spherical models.

`ascii data&apos;: Implementation of a model in which the initial temperature is derived from files containing data in ascii format. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `y&apos;, `Temperature [K]&apos; in a 2d model and  `x&apos;, `y&apos;, `z&apos;, `Temperature [K]&apos; in a 3d model, which means that there has to be a single column containing the temperature. Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second and the third at last in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`ascii data layered&apos;: Implementation of a model in which the initial temperature is derived from files containing data in ascii format. Each file defines a surface on which temperature is defined. Between the surfaces, the temperatures can be chosen to be constant (with a value defined by the nearest shallower surface), or linearly interpolated between surfaces. Note the required format of the input ascii data file: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `y&apos;, `Temperature [K]&apos; in a 2d model and `x&apos;, `y&apos;, `z&apos;, `Temperature [K]&apos; in a 3d model; i.e. the last two columns always contain the position of the isotherm along the vertical direction, and the temperature at that point. The first column needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the azimuth angle and `y&apos; (if 3d) by the polar angle measured positive from the north pole. The last column will be the distance of the point from the origin (i.e. radial position). The grid in this case will be a latitude-longitude grid. Note that the order of spherical coordinates in 3d is `phi&apos;, `theta&apos;, `r&apos;, `T&apos;and not `theta&apos;, `phi&apos;, `r&apos;, `T&apos; as this is more consistent with other ASPECT plugins. Outside of the region defined by the grid, the plugin will use the value at the edge of the region.

`ascii profile&apos;: Implementation of a model in which the initial temperature is read from a file that provides these values as a function of depth. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of points in the temperature profile, for example `# POINTS: 10&apos;. Following the comment lines, there has to be a single line containing the names of all data columns, separated by arbitrarily many spaces. Column names are not allowed to contain spaces. The file can contain unnecessary columns, but for this plugin it needs to at least provide columns named `depth&apos; and`temperature&apos;.Note that the data lines in the file need to be sorted in order of increasing depth from 0 to the maximal depth in the model domain. Points in the model that are outside of the provided depth range will be assigned the maximum or minimum depth values, respectively. Points do not need to be equidistant, but the computation of properties is optimized in speed if they are.

`continental geotherm&apos;: This is a temperature initial condition that computes a continental geotherm based on the solution of the steady-state conductive equation $k\frac{d^2 T}{dy^2}+\rho H = 0$ as described in e.g. Turcotte and Schubert, Ch. 4.6, or Chapman (1986). As boundary conditions, we take the surface temperature and the temperature of the Lithosphere-Asthenosphere Boundary (LAB). 
The geotherm is computed for a homogeneous lithosphere composed of an upper crust, lower crust and mantle layer. The crustal layers are assumed to have a constant radioactive heating, and all layers are assumed to have a constant thermal conductivity. Layer thicknesses, surface temperature and LAB temperature should be specified by the user. For consistency, the density, heat production and thermal conductivity of each layer are read from the visco plastic material model and the compositional heating model. 
For any depths below the depth of the LAB, a unrealistically high temperature is returned, such that this plugin can be combined with another temperature plugin through the &apos;minimum&apos; operator. 
Note that the current implementation only works for a 3-layer lithosphere, even though in principle the heat conduction equation can be solved for any number of layers. The naming of the compositional fields that represent the layers is also very specific, namely `upper\_crust&apos;, `lower\_crust&apos;, and `lithospheric\_mantle&apos;. 
Make sure the top and bottom temperatures of the lithosphere agree with temperatures set in for example the temperature boundary conditions.

`function&apos;: Specify the initial temperature in terms of an explicit formula. The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`harmonic perturbation&apos;: An initial temperature field in which the temperature is perturbed following a harmonic function (spherical harmonic or sine depending on geometry and dimension) in lateral and radial direction from an otherwise constant temperature (incompressible model) or adiabatic reference profile (compressible model).

`inclusion shape perturbation&apos;: An initial temperature field in which there is an inclusion in a constant-temperature box field. The size, shape, gradient, position, and temperature of the inclusion are defined by parameters.

`lithosphere mask&apos;: Implementation of a model in which the initial temperature is set to a specified lithosphere temperature above the lithosphere-asthenosphere boundary (specified by an ascii file or maximum lithosphere depth value). Below this the initial temperature is set as NaN.  Note the required format of the input data file: The first lines may contain any number of comments if they begin with &apos;#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example &apos;# POINTS: 3 3&apos;. For a spherical model, the order of the data columns has to be &apos;phi&apos;, &apos;theta&apos;, &apos;depth (m)&apos;, where phi is the azimuth angle and theta is the polar angle measured positive from the north pole. This plug-in can be combined with another using the &apos;replace if valid&apos; operator. 

`mandelbox&apos;: Fractal-shaped temperature field.

`patch on S40RTS&apos;: Implementation of a model in which the initial temperature is derived from a file containing shear wave velocity perturbations in ascii format (e.g. a high resolution upper mantle tomography) combined with S40RTS. Note the required format of the input ascii input data: The first lines may contain any number of comments if they begin with &apos;#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example &apos;# POINTS: 3 3 3&apos;. The order of the data columns has to be  `x&apos;, `y&apos;, `z&apos;, &apos;Vs Perturbation&apos; in a 3d model, which means that there has to be a single column containing the temperature. Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second and the third at last in order to assign the correct data to the prescribed coordinates. In the spherical model data will be handled as Cartesian, however, `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions. See S40RTS documentation for details on input parameters in the S40RTS perturbation subsection. The boundary between the two tomography models is smoothed using a depth weighted combination of Vs values within the region of smoothing. 

`perturbed box&apos;: An initial temperature field in which the temperature is perturbed slightly from an otherwise constant value equal to one. The perturbation is chosen in such a way that the initial temperature is constant to one along the entire boundary.

`polar box&apos;: An initial temperature field in which the temperature is perturbed slightly from an otherwise constant value equal to one. The perturbation is such that there are two poles on opposing corners of the box. 

`prescribed temperature&apos;: This model fixes the initial temperature to the prescribed temperature outputs computed by the material model. This only works if the material model implements prescribed temperature outputs.

`random Gaussian perturbation&apos;: An initial temperature field in which the temperature is perturbed from a temperature of zero following a given number of Gaussian perturbations placed randomly throughout the model domain. The number, width, and maximum magnitude of the perturbations can be chosen as model parameters. This plugin is meant to be used in combination with another initial temperature model that determines the background temperature (such as the &apos;function&apos; or the &apos;adiabatic&apos; plugin) using the &apos;add&apos; operator to combine them.

`spherical gaussian perturbation&apos;: An initial temperature field in which the temperature is perturbed by a single Gaussian added to an otherwise spherically symmetric state. Additional parameters are read from the parameter file in subsection &apos;Spherical gaussian perturbation&apos;.

`spherical hexagonal perturbation&apos;: An initial temperature field in which the temperature is perturbed following an $N$-fold pattern in a specified direction from an otherwise spherically symmetric state. The class&apos;s name comes from previous versions when the only option was $N=6$.

`world builder&apos;: Specify the initial temperature through the World Builder. More information on the World Builder can be found at \url{https://geodynamicworldbuilder.github.io}. Make sure to specify the location of the World Builder file in the parameter &apos;World builder file&apos;.

\textbf{Warning}: This parameter provides an old and deprecated way of specifying initial temperature models and shouldn&apos;t be used. Please use &apos;List of model names&apos; instead.
</documentation>
<pattern>
1164
</pattern>
<pattern_description>
[Selection S40RTS perturbation|SAVANI perturbation|adiabatic|adiabatic boundary|ascii data|ascii data layered|ascii profile|continental geotherm|function|harmonic perturbation|inclusion shape perturbation|lithosphere mask|mandelbox|patch on S40RTS|perturbed box|polar box|prescribed temperature|random Gaussian perturbation|spherical gaussian perturbation|spherical hexagonal perturbation|world builder|unspecified ]
</pattern_description>
</Model_20name>
<Adiabatic>
<Age_20bottom_20boundary_20layer>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The age of the lower thermal boundary layer, used for the calculation of the half-space cooling model temperature. Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
1233
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Age_20bottom_20boundary_20layer>
<Age_20top_20boundary_20layer>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The age of the upper thermal boundary layer, used for the calculation of the half-space cooling model temperature. Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
1232
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Age_20top_20boundary_20layer>
<Amplitude>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The amplitude (in K) of the initial spherical temperature perturbation at the bottom of the model domain. This perturbation will be added to the adiabatic temperature profile, but not to the bottom thermal boundary layer. Instead, the maximum of the perturbation and the bottom boundary layer temperature will be used.
</documentation>
<pattern>
1235
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Amplitude>
<Cooling_20model>
<value>
half-space cooling
</value>
<default_value>
half-space cooling
</default_value>
<documentation>
Whether to use the half space cooling model or the plate cooling model
</documentation>
<pattern>
1239
</pattern>
<pattern_description>
[Selection half-space cooling|plate cooling ]
</pattern_description>
</Cooling_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-temperature/adiabatic/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-temperature/adiabatic/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1229
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
adiabatic.txt
</value>
<default_value>
adiabatic.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1230
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Lithosphere_20thickness>
<value>
125e3
</value>
<default_value>
125e3
</default_value>
<documentation>
Thickness of the lithosphere for plate cooling model. \si{\m}
</documentation>
<pattern>
1240
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Lithosphere_20thickness>
<Position>
<value>
center
</value>
<default_value>
center
</default_value>
<documentation>
Where the initial temperature perturbation should be placed. If `center&apos; is given, then the perturbation will be centered along a `midpoint&apos; of some sort of the bottom boundary. For example, in the case of a box geometry, this is the center of the bottom face; in the case of a spherical shell geometry, it is along the inner surface halfway between the bounding radial lines.
</documentation>
<pattern>
1236
</pattern>
<pattern_description>
[Selection center ]
</pattern_description>
</Position>
<Radius>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The Radius (in m) of the initial spherical temperature perturbation at the bottom of the model domain.
</documentation>
<pattern>
1234
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Radius>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1231
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
<Subadiabaticity>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
If this value is larger than 0, the initial temperature profile will not be adiabatic, but subadiabatic. This value gives the maximal deviation from adiabaticity. Set to 0 for an adiabatic temperature profile. Units: \si{\kelvin}.

The function object in the Function subsection represents the compositional fields that will be used as a reference profile for calculating the thermal diffusivity. This function is one-dimensional and depends only on depth. The format of this functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.
</documentation>
<pattern>
1237
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Subadiabaticity>
<Top_20boundary_20layer_20age_20model>
<value>
constant
</value>
<default_value>
constant
</default_value>
<documentation>
How to define the age of the top thermal boundary layer. Options are: &apos;constant&apos; for a constant age specified by the parameter &apos;Age top boundary layer&apos;; &apos;function&apos; for an analytical function describing the age as specified in the subsection &apos;Age function&apos;; and &apos;ascii data&apos; to use an &apos;ascii data&apos; file specified by the parameter &apos;Data file name&apos;.
</documentation>
<pattern>
1238
</pattern>
<pattern_description>
[Selection constant|function|ascii data ]
</pattern_description>
</Top_20boundary_20layer_20age_20model>
<Age_20function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `cartesian&apos;, `spherical&apos;, and `depth&apos;. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. `depth&apos; will create a function, in which only the first parameter is non-zero, which is interpreted to be the depth of the point.
</documentation>
<pattern>
1244
</pattern>
<pattern_description>
[Selection cartesian|spherical ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1247
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1246
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1245
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Age_20function>
<Function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1243
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1242
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,t
</value>
<default_value>
x,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1241
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
</Adiabatic>
<Adiabatic_20boundary>
<Adiabatic_20temperature_20gradient>
<value>
0.0005
</value>
<default_value>
0.0005
</default_value>
<documentation>
The value of the adiabatic temperature gradient. Units: \si{\kelvin\per\meter}.
</documentation>
<pattern>
1253
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Adiabatic_20temperature_20gradient>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-temperature/adiabatic-boundary/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-temperature/adiabatic-boundary/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1248
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
adiabatic_boundary.txt
</value>
<default_value>
adiabatic_boundary.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1249
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Isotherm_20temperature>
<value>
1673.15
</value>
<default_value>
1673.15
</default_value>
<documentation>
The value of the isothermal boundary temperature. Units: \si{\kelvin}.
</documentation>
<pattern>
1251
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Isotherm_20temperature>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1250
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
<Surface_20temperature>
<value>
273.15
</value>
<default_value>
273.15
</default_value>
<documentation>
The value of the surface temperature. Units: \si{\kelvin}.
</documentation>
<pattern>
1252
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Surface_20temperature>
</Adiabatic_20boundary>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-temperature/ascii-data/test/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-temperature/ascii-data/test/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT. 
</documentation>
<pattern>
1263
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
initial_isotherm_500K_box_3d.txt
</value>
<default_value>
initial_isotherm_500K_box_3d.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1261
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Data_20file_20names>
<value>
initial_isotherm_500K_box_3d.txt
</value>
<default_value>
initial_isotherm_500K_box_3d.txt
</default_value>
<documentation>
The file names of the model data (comma separated). 
</documentation>
<pattern>
1264
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Data_20file_20names>
<First_20point_20on_20slice>
<value>
0.0,1.0,0.0
</value>
<default_value>
0.0,1.0,0.0
</default_value>
<documentation>
Point that determines the plane in which the 2d slice lies in. This variable is only used if &apos;Slice dataset in 2d plane&apos; is true. The slice will go through this point, the point defined by the parameter &apos;Second point on slice&apos;, and the center of the model domain. After the rotation, this first point will lie along the (0,1,0) axis of the coordinate system. The coordinates of the point have to be given in Cartesian coordinates.
</documentation>
<pattern>
1258
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</First_20point_20on_20slice>
<Interpolation_20scheme>
<value>
linear
</value>
<default_value>
linear
</default_value>
<documentation>
Method to interpolate between layer boundaries. Select from piecewise constant or linear. Piecewise constant takes the value from the nearest layer boundary above the data point. The linear option interpolates linearly between layer boundaries. Above and below the domain given by the layer boundaries, the values aregiven by the top and bottom layer boundary.
</documentation>
<pattern>
1265
</pattern>
<pattern_description>
[Selection piecewise constant|linear ]
</pattern_description>
</Interpolation_20scheme>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1262
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
<Second_20point_20on_20slice>
<value>
1.0,0.0,0.0
</value>
<default_value>
1.0,0.0,0.0
</default_value>
<documentation>
Second point that determines the plane in which the 2d slice lies in. This variable is only used if &apos;Slice dataset in 2d plane&apos; is true. The slice will go through this point, the point defined by the parameter &apos;First point on slice&apos;, and the center of the model domain. The coordinates of the point have to be given in Cartesian coordinates.
</documentation>
<pattern>
1259
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Second_20point_20on_20slice>
<Slice_20dataset_20in_202D_20plane>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use a 2d data slice of a 3d data file or the entire data file. Slicing a 3d dataset is only supported for 2d models.
</documentation>
<pattern>
1257
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Slice_20dataset_20in_202D_20plane>
</Ascii_20data_20model>
<Ascii_20profile>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-temperature/ascii-profile/tests/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-temperature/ascii-profile/tests/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1266
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
simple_test.txt
</value>
<default_value>
simple_test.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1267
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1268
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20profile>
<Continental_20geotherm>
<Layer_20thicknesses>
<value>
30000.
</value>
<default_value>
30000.
</default_value>
<documentation>
List of the 3 thicknesses of the lithospheric layers &apos;upper\_crust&apos;, &apos;lower\_crust&apos; and &apos;mantle\_lithosphere&apos;. If only one thickness is given, then the same thickness is used for all layers. Units: \si{meter}.
</documentation>
<pattern>
1173
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Layer_20thicknesses>
<Lithosphere_2dAsthenosphere_20boundary_20isotherm>
<value>
1673.15
</value>
<default_value>
1673.15
</default_value>
<documentation>
The value of the isotherm that is assumed at the Lithosphere-Asthenosphere boundary. Units: \si{\kelvin}.
</documentation>
<pattern>
1175
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Lithosphere_2dAsthenosphere_20boundary_20isotherm>
<Surface_20temperature>
<value>
273.15
</value>
<default_value>
273.15
</default_value>
<documentation>
The value of the surface temperature. Units: \si{\kelvin}.
</documentation>
<pattern>
1174
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Surface_20temperature>
</Continental_20geotherm>
<Function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `cartesian&apos;, `spherical&apos;, and `depth&apos;. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. `depth&apos; will create a function, in which only the first parameter is non-zero, which is interpreted to be the depth of the point.
</documentation>
<pattern>
1176
</pattern>
<pattern_description>
[Selection cartesian|spherical|depth ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1179
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1178
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1177
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<Harmonic_20perturbation>
<Lateral_20wave_20number_20one>
<value>
3
</value>
<default_value>
3
</default_value>
<documentation>
Doubled first lateral wave number of the harmonic perturbation. Equals the spherical harmonic degree in 3d spherical shells. In all other cases one equals half of a sine period over the model domain. This allows for single up-/downswings. Negative numbers reverse the sign of the perturbation but are not allowed for the spherical harmonic case.
</documentation>
<pattern>
1181
</pattern>
<pattern_description>
[Integer range -2147483648...2147483647 (inclusive)]
</pattern_description>
</Lateral_20wave_20number_20one>
<Lateral_20wave_20number_20two>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
Doubled second lateral wave number of the harmonic perturbation. Equals the spherical harmonic order in 3d spherical shells. In all other cases one equals half of a sine period over the model domain. This allows for single up-/downswings. Negative numbers reverse the sign of the perturbation.
</documentation>
<pattern>
1182
</pattern>
<pattern_description>
[Integer range -2147483648...2147483647 (inclusive)]
</pattern_description>
</Lateral_20wave_20number_20two>
<Magnitude>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
The magnitude of the Harmonic perturbation.
</documentation>
<pattern>
1183
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Magnitude>
<Reference_20temperature>
<value>
1600.0
</value>
<default_value>
1600.0
</default_value>
<documentation>
The reference temperature that is perturbed by the harmonic function. Only used in incompressible models.
</documentation>
<pattern>
1184
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Vertical_20wave_20number>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Doubled radial wave number of the harmonic perturbation.  One equals half of a sine period over the model domain.  This allows for single up-/downswings. Negative numbers  reverse the sign of the perturbation.
</documentation>
<pattern>
1180
</pattern>
<pattern_description>
[Integer range -2147483648...2147483647 (inclusive)]
</pattern_description>
</Vertical_20wave_20number>
</Harmonic_20perturbation>
<Inclusion_20shape_20perturbation>
<Ambient_20temperature>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
The background temperature for the temperature field.
</documentation>
<pattern>
1272
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Ambient_20temperature>
<Center_20X>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
The X coordinate for the center of the shape.
</documentation>
<pattern>
1274
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Center_20X>
<Center_20Y>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
The Y coordinate for the center of the shape.
</documentation>
<pattern>
1275
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Center_20Y>
<Center_20Z>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
The Z coordinate for the center of the shape. This is only necessary for three-dimensional fields.
</documentation>
<pattern>
1276
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Center_20Z>
<Inclusion_20gradient>
<value>
constant
</value>
<default_value>
constant
</default_value>
<documentation>
The gradient of the inclusion to be generated.
</documentation>
<pattern>
1270
</pattern>
<pattern_description>
[Selection gaussian|linear|constant ]
</pattern_description>
</Inclusion_20gradient>
<Inclusion_20shape>
<value>
circle
</value>
<default_value>
circle
</default_value>
<documentation>
The shape of the inclusion to be generated.
</documentation>
<pattern>
1269
</pattern>
<pattern_description>
[Selection square|circle ]
</pattern_description>
</Inclusion_20shape>
<Inclusion_20temperature>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature of the inclusion shape. This is only the true temperature in the case of the constant gradient. In all other cases, it gives one endpoint of the temperature gradient for the shape.
</documentation>
<pattern>
1273
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Inclusion_20temperature>
<Shape_20radius>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
The radius of the inclusion to be generated. For shapes with no radius (e.g. square), this will be the width, and for shapes with no width, this gives a general guideline for the size of the shape.
</documentation>
<pattern>
1271
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Shape_20radius>
</Inclusion_20shape_20perturbation>
<Lithosphere_20Mask>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-temperature/lithosphere-mask/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-temperature/lithosphere-mask/
</default_value>
<documentation>
The path to the LAB depth data file
</documentation>
<pattern>
1187
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Depth_20specification_20method>
<value>
Value
</value>
<default_value>
Value
</default_value>
<documentation>
Method that is used to specify the depth of the lithosphere-asthenosphere boundary.
</documentation>
<pattern>
1185
</pattern>
<pattern_description>
[Selection File|Value ]
</pattern_description>
</Depth_20specification_20method>
<LAB_20depth_20filename>
<value>
LAB_CAM2016.txt
</value>
<default_value>
LAB_CAM2016.txt
</default_value>
<documentation>
File from which the lithosphere-asthenosphere boundary depth data is read.
</documentation>
<pattern>
1188
</pattern>
<pattern_description>
[FileName (Type: input)]
</pattern_description>
</LAB_20depth_20filename>
<Lithosphere_20temperature>
<value>
1600.
</value>
<default_value>
1600.
</default_value>
<documentation>
The initial temperature within lithosphere, applied abovethe maximum lithosphere depth.
</documentation>
<pattern>
1189
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Lithosphere_20temperature>
<Maximum_20lithosphere_20depth>
<value>
200000.0
</value>
<default_value>
200000.0
</default_value>
<documentation>
Units: \si{\meter}.The maximum depth of the lithosphere. The model will be NaNs below this depth.
</documentation>
<pattern>
1186
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20lithosphere_20depth>
</Lithosphere_20Mask>
<Patch_20on_20S40RTS>
<Maximum_20grid_20depth>
<value>
700000.0
</value>
<default_value>
700000.0
</default_value>
<documentation>
The maximum depth of the Vs ascii grid. The model will read in  Vs from S40RTS below this depth.
</documentation>
<pattern>
1190
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20grid_20depth>
<Remove_20temperature_20heterogeneity_20down_20to_20specified_20depth>
<value>
-1.7976931348623157e+308
</value>
<default_value>
-1.7976931348623157e+308
</default_value>
<documentation>
This will set the heterogeneity prescribed by the Vs ascii grid and S40RTS to zero down to the specified depth (in meters). Note that your resolution has to be adequate to capture this cutoff. For example if you specify a depth of 660 km, but your closest spherical depth layers are only at 500 km and 750 km (due to a coarse resolution) it will only zero out heterogeneities down to 500 km. Similar caution has to be taken when using adaptive meshing.
</documentation>
<pattern>
1192
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Remove_20temperature_20heterogeneity_20down_20to_20specified_20depth>
<Smoothing_20length_20scale>
<value>
200000.0
</value>
<default_value>
200000.0
</default_value>
<documentation>
The depth range (above maximum grid depth) over which to smooth. The boundary is smoothed using a depth weighted combination of Vs values from the ascii grid and S40RTS at each point in the region of smoothing.
</documentation>
<pattern>
1191
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Smoothing_20length_20scale>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-temperature/patch-on-S40RTS/test/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-temperature/patch-on-S40RTS/test/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1193
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
upper_shell_3d.txt
</value>
<default_value>
upper_shell_3d.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1194
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1195
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20data_20model>
</Patch_20on_20S40RTS>
<Random_20Gaussian_20perturbation>
<Maximum_20magnitude>
<value>
25.0
</value>
<default_value>
25.0
</default_value>
<documentation>
The maximum magnitude of the Gaussian perturbation. For each perturbation, a random magnitude between plus and minus the maximum magnitude will be chosen. Units: \si{\kelvin}.
</documentation>
<pattern>
1197
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20magnitude>
<Number_20of_20perturbations>
<value>
100
</value>
<default_value>
100
</default_value>
<documentation>
Total number of perturbations to be introduced into the model. Perturbations will be placed at random locations within the model domain.
</documentation>
<pattern>
1196
</pattern>
<pattern_description>
[Integer range -2147483648...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20perturbations>
<Width>
<value>
1000.0
</value>
<default_value>
1000.0
</default_value>
<documentation>
The Gaussian RMS width of the perturbations. Units: \si{\meter}.
</documentation>
<pattern>
1198
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Width>
</Random_20Gaussian_20perturbation>
<S40RTS_20perturbation>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-temperature/S40RTS/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-temperature/S40RTS/
</default_value>
<documentation>
The path to the model data. 
</documentation>
<pattern>
1199
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Initial_20condition_20file_20name>
<value>
S40RTS.sph
</value>
<default_value>
S40RTS.sph
</default_value>
<documentation>
The file name of the spherical harmonics coefficients from Ritsema et al.
</documentation>
<pattern>
1200
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Initial_20condition_20file_20name>
<Maximum_20degree>
<value>
20
</value>
<default_value>
20
</default_value>
<documentation>
The maximum degree the users specify when reading the data file of spherical harmonic coefficients, which must be smaller than the maximum degree the data file stored. This parameter will be used only if &apos;Specify a lower maximum degree&apos; is set to true.
</documentation>
<pattern>
1210
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Maximum_20degree>
<Reference_20temperature>
<value>
1600.0
</value>
<default_value>
1600.0
</default_value>
<documentation>
The reference temperature that is perturbed by the spherical harmonic functions. Only used in incompressible models.
</documentation>
<pattern>
1207
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Remove_20degree_200_20from_20perturbation>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Option to remove the degree zero component from the perturbation, which will ensure that the laterally averaged temperature for a fixed depth is equal to the background temperature.
</documentation>
<pattern>
1206
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Remove_20degree_200_20from_20perturbation>
<Remove_20temperature_20heterogeneity_20down_20to_20specified_20depth>
<value>
-1.7976931348623157e+308
</value>
<default_value>
-1.7976931348623157e+308
</default_value>
<documentation>
This will set the heterogeneity prescribed by S20RTS or S40RTS to zero down to the specified depth (in meters). Note that your resolution has to be adequate to capture this cutoff. For example if you specify a depth of 660 km, but your closest spherical depth layers are only at 500 km and 750 km (due to a coarse resolution) it will only zero out heterogeneities down to 500 km. Similar caution has to be taken when using adaptive meshing.
</documentation>
<pattern>
1208
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Remove_20temperature_20heterogeneity_20down_20to_20specified_20depth>
<Specify_20a_20lower_20maximum_20degree>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Option to use a lower maximum degree when reading the data file of spherical harmonic coefficients. This is probably used for the faster tests or when the users only want to see the spherical harmonic pattern up to a certain degree.
</documentation>
<pattern>
1209
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Specify_20a_20lower_20maximum_20degree>
<Spline_20knots_20depth_20file_20name>
<value>
Spline_knots.txt
</value>
<default_value>
Spline_knots.txt
</default_value>
<documentation>
The file name of the spline knot locations from Ritsema et al.
</documentation>
<pattern>
1201
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Spline_20knots_20depth_20file_20name>
<Thermal_20expansion_20coefficient_20in_20initial_20temperature_20scaling>
<value>
2e-5
</value>
<default_value>
2e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\beta$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
1204
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient_20in_20initial_20temperature_20scaling>
<Use_20thermal_20expansion_20coefficient_20from_20material_20model>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Option to take the thermal expansion coefficient from the material model instead of from what is specified in this section.
</documentation>
<pattern>
1205
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20thermal_20expansion_20coefficient_20from_20material_20model>
<Vs_20to_20density_20scaling>
<value>
0.25
</value>
<default_value>
0.25
</default_value>
<documentation>
This parameter specifies how the perturbation in shear wave velocity as prescribed by S20RTS or S40RTS is scaled into a density perturbation. See the general description of this model for more detailed information.
</documentation>
<pattern>
1203
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Vs_20to_20density_20scaling>
<Vs_20to_20density_20scaling_20method>
<value>
constant
</value>
<default_value>
constant
</default_value>
<documentation>
Method that is used to specify how the vs-to-density scaling varies with depth.
</documentation>
<pattern>
1202
</pattern>
<pattern_description>
[Selection file|constant ]
</pattern_description>
</Vs_20to_20density_20scaling_20method>
<Ascii_20data_20vs_20to_20density_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-temperature/S40RTS/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-temperature/S40RTS/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1211
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
vs_to_density_Steinberger.txt
</value>
<default_value>
vs_to_density_Steinberger.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1212
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1213
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20data_20vs_20to_20density_20model>
</S40RTS_20perturbation>
<SAVANI_20perturbation>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-temperature/SAVANI/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-temperature/SAVANI/
</default_value>
<documentation>
The path to the model data.
</documentation>
<pattern>
1214
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Initial_20condition_20file_20name>
<value>
savani.dlnvs.60.m.ab
</value>
<default_value>
savani.dlnvs.60.m.ab
</default_value>
<documentation>
The file name of the spherical harmonics coefficients from Auer et al.
</documentation>
<pattern>
1215
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Initial_20condition_20file_20name>
<Maximum_20degree>
<value>
20
</value>
<default_value>
20
</default_value>
<documentation>
The maximum degree the users specify when reading the data file of spherical harmonic coefficients, which must be smaller than the maximum degree the data file stored. This parameter will be used only if &apos;Specify a lower maximum degree&apos; is set to true.
</documentation>
<pattern>
1225
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Maximum_20degree>
<Reference_20temperature>
<value>
1600.0
</value>
<default_value>
1600.0
</default_value>
<documentation>
The reference temperature that is perturbed by the spherical harmonic functions. Only used in incompressible models.
</documentation>
<pattern>
1222
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Remove_20degree_200_20from_20perturbation>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Option to remove the degree zero component from the perturbation, which will ensure that the laterally averaged temperature for a fixed depth is equal to the background temperature.
</documentation>
<pattern>
1221
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Remove_20degree_200_20from_20perturbation>
<Remove_20temperature_20heterogeneity_20down_20to_20specified_20depth>
<value>
-1.7976931348623157e+308
</value>
<default_value>
-1.7976931348623157e+308
</default_value>
<documentation>
This will set the heterogeneity prescribed by SAVANI to zero down to the specified depth (in meters). Note that your resolution has to be adequate to capture this cutoff. For example if you specify a depth of 660 km, but your closest spherical depth layers are only at 500 km and 750 km (due to a coarse resolution) it will only zero out heterogeneities down to 500 km. Similar caution has to be taken when using adaptive meshing.
</documentation>
<pattern>
1223
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Remove_20temperature_20heterogeneity_20down_20to_20specified_20depth>
<Specify_20a_20lower_20maximum_20degree>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Option to use a lower maximum degree when reading the data file of spherical harmonic coefficients. This is probably used for the faster tests or when the users only want to see the spherical harmonic pattern up to a certain degree.
</documentation>
<pattern>
1224
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Specify_20a_20lower_20maximum_20degree>
<Spline_20knots_20depth_20file_20name>
<value>
Spline_knots.txt
</value>
<default_value>
Spline_knots.txt
</default_value>
<documentation>
The file name of the spline knots taken from the 28 spherical layers of SAVANI tomography model.
</documentation>
<pattern>
1216
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Spline_20knots_20depth_20file_20name>
<Thermal_20expansion_20coefficient_20in_20initial_20temperature_20scaling>
<value>
2e-5
</value>
<default_value>
2e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\beta$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
1219
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient_20in_20initial_20temperature_20scaling>
<Use_20thermal_20expansion_20coefficient_20from_20material_20model>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Option to take the thermal expansion coefficient from the material model instead of from what is specified in this section.
</documentation>
<pattern>
1220
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20thermal_20expansion_20coefficient_20from_20material_20model>
<Vs_20to_20density_20scaling>
<value>
0.25
</value>
<default_value>
0.25
</default_value>
<documentation>
This parameter specifies how the perturbation in shear wave velocity as prescribed by SAVANI is scaled into a density perturbation. See the general description of this model for more detailed information.
</documentation>
<pattern>
1218
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Vs_20to_20density_20scaling>
<Vs_20to_20density_20scaling_20method>
<value>
constant
</value>
<default_value>
constant
</default_value>
<documentation>
Method that is used to specify how the vs-to-density scaling varies with depth.
</documentation>
<pattern>
1217
</pattern>
<pattern_description>
[Selection file|constant ]
</pattern_description>
</Vs_20to_20density_20scaling_20method>
<Ascii_20data_20vs_20to_20density_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-temperature/S40RTS/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-temperature/S40RTS/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1226
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
vs_to_density_Steinberger.txt
</value>
<default_value>
vs_to_density_Steinberger.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1227
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1228
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20data_20vs_20to_20density_20model>
</SAVANI_20perturbation>
<Spherical_20gaussian_20perturbation>
<Amplitude>
<value>
0.01
</value>
<default_value>
0.01
</default_value>
<documentation>
The amplitude of the perturbation.
</documentation>
<pattern>
1169
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Amplitude>
<Angle>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The angle where the center of the perturbation is placed.
</documentation>
<pattern>
1167
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Angle>
<Filename_20for_20initial_20geotherm_20table>
<value>
initial-geotherm-table
</value>
<default_value>
initial-geotherm-table
</default_value>
<documentation>
The file from which the initial geotherm table is to be read. The format of the file is defined by what is read in source/initial\_temperature/spherical\_shell.cc.
</documentation>
<pattern>
1172
</pattern>
<pattern_description>
[FileName (Type: input)]
</pattern_description>
</Filename_20for_20initial_20geotherm_20table>
<Non_2ddimensional_20depth>
<value>
0.7
</value>
<default_value>
0.7
</default_value>
<documentation>
The non-dimensional radial distance where the center of the perturbation is placed.
</documentation>
<pattern>
1168
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Non_2ddimensional_20depth>
<Sigma>
<value>
0.2
</value>
<default_value>
0.2
</default_value>
<documentation>
The standard deviation of the Gaussian perturbation.
</documentation>
<pattern>
1170
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Sigma>
<Sign>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
The sign of the perturbation.
</documentation>
<pattern>
1171
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Sign>
</Spherical_20gaussian_20perturbation>
<Spherical_20hexagonal_20perturbation>
<Angular_20mode>
<value>
6
</value>
<default_value>
6
</default_value>
<documentation>
The number of convection cells with which to perturb the system.
</documentation>
<pattern>
1165
</pattern>
<pattern_description>
[Integer range -2147483648...2147483647 (inclusive)]
</pattern_description>
</Angular_20mode>
<Rotation_20offset>
<value>
-45.
</value>
<default_value>
-45.
</default_value>
<documentation>
Amount of clockwise rotation in degrees to apply to the perturbations. Default is set to -45 in order to provide backwards compatibility.
</documentation>
<pattern>
1166
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Rotation_20offset>
</Spherical_20hexagonal_20perturbation>
</Initial_20temperature_20model>
<Material_20model>
<Material_20averaging>
<value>
default averaging
</value>
<default_value>
default averaging
</default_value>
<documentation>
Whether or not (and in the first case, how) to do any averaging of material model output data when constructing the linear systems for velocity/pressure, temperature, and compositions in each time step, as well as their corresponding preconditioners. The default value &apos;default averaging&apos; will choose the averaging option based on the Stokes solver type.

Possible choices: none|default averaging|arithmetic average|harmonic average|geometric average|pick largest|project to Q1|log average|harmonic average only viscosity|geometric average only viscosity|project to Q1 only viscosity

The process of averaging, and where it may be used, is discussed in more detail in Section~\ref{sec:cookbooks:sinker-with-averaging}.

More averaging schemes are available in the averaging material model. This material model is a ``compositing material model&apos;&apos; which can be used in combination with other material models.
</documentation>
<pattern>
101
</pattern>
<pattern_description>
[Selection none|default averaging|arithmetic average|harmonic average|geometric average|pick largest|project to Q1|log average|harmonic average only viscosity|geometric average only viscosity|project to Q1 only viscosity ]
</pattern_description>
</Material_20averaging>
<Model_20name>
<value>
simple
</value>
<default_value>
unspecified
</default_value>
<documentation>
The name of the material model to be used in this simulation. There are many material models you can choose from, as listed below. They generally fall into two category: (i) models that implement a particular case of material behavior, (ii) models that modify other models in some way. We sometimes call the latter ``compositing models&apos;&apos;. An example of a compositing model is the ``depth dependent&apos;&apos; model below in that it takes another, freely choosable model as its base and then modifies that model&apos;s output in some way.

You can select one of the following models:

`Steinberger&apos;: This material model looks up the viscosity from the tables that correspond to the paper of Steinberger and Calderwood 2006 (``Models of large-scale viscous flow in the Earth&apos;s mantle with constraints from mineral physics and surface observations&apos;&apos;, Geophys. J. Int., 167, 1461-1481, &lt;http://dx.doi.org/10.1111/j.1365-246X.2006.03131.x&gt;) and material data from a database generated by the thermodynamics code \texttt{Perplex}, see &lt;http://www.perplex.ethz.ch/&gt;. The default example data builds upon the thermodynamic database by Stixrude 2011 and assumes a pyrolitic composition by Ringwood 1988 but is easily replaceable by other data files. 

`ascii reference profile&apos;: A material model that reads in a reference state for density, thermal expansivity, compressibility and specific heat from a text file. 
Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of points in the reference state as for example `# POINTS: 3&apos;. Following the comment lines there has to be a single line containing the names of all data columns, separated by arbitrarily many spaces. Column names are not allowed to contain spaces. The file can contain unnecessary columns, but for this plugin it needs to at least provide the columns named `density&apos;, `thermal\_expansivity&apos;, `specific\_heat&apos;, and `compressibility&apos;. Note that the data lines in the file need to be sorted in order of increasing depth from 0 to the maximal depth in the model domain. Points in the model that are outside of the provided depth range will be assigned the maximum or minimum depth values, respectively. Points do not need to be equidistant, but the computation of properties is optimized in speed if they are.

The viscosity $\eta$ is computed as $\eta(z,T) = \eta_r(z) \eta_0 \exp\left(-A \frac{T - T_{\text{adi}}}{T_{\text{adi}}}\right)$, where $\eta_r(z)$ is the depth-dependence, which is a piecewise constant function computed according to the list of ``Viscosity prefactors&apos;&apos; and ``Transition depths&apos;&apos;, $\eta_0$ is the reference viscosity specified by the parameter ``Viscosity&apos;&apos; and $A$ describes the dependence on temperature and corresponds to the parameter ``Thermal viscosity exponent&apos;&apos;.

`averaging&apos;: The ``averaging&apos;&apos; Material model applies an averaging of the quadrature points within a cell. The values to average are supplied by any of the other available material models. In other words, it is a ``compositing material model&apos;&apos;. Parameters related to the average model are read from a subsection ``Material model/Averaging&apos;&apos;.

The user must specify a ``Base model&apos;&apos; from which material properties are derived. Furthermore an averaging operation must be selected, where the Choice should be from the list none|arithmetic average|harmonic average|geometric average|pick largest|log average|NWD arithmetic average|NWD harmonic average|NWD geometric average.

NWD stands for Normalized Weighed Distance. The models with this in front of their name work with a weighed average, which means each quadrature point requires an individual weight. The weight is determined by the distance, where the exact relation is determined by a bell shaped curve. A bell shaped curve is a continuous function which is one at its maximum and exactly zero at and beyond its limit. This bell shaped curve is spanned around each quadrature point to determine the weighting map for each quadrature point. The used bell shape comes from Lucy (1977). The distance is normalized so the largest distance becomes one. This means that if variable &apos;&apos;Bell shape limit&apos;&apos; is exactly one, the farthest quadrature point is just on the limit and its weight will be exactly zero. In this plugin it is not implemented as larger and equal than the limit, but larger than, to ensure the quadrature point at distance zero is always included.

`compositing&apos;: The ``compositing&apos;&apos; Material model selects material model properties from a given set of other material models, and is intended to make mixing different material models easier. This is useful, for example, when wanting to use the melting parameterization of the ``melt simple&apos;&apos; model (which has a relatively simple viscosity model that only allows for a temperature- but not strain rate-dependent viscosity) with a more realistic viscosity model such as that provided by the ``diffusion dislocation&apos;&apos; model.

Specifically, this material model works by allowing to specify the name of another material model for each coefficient that material models are asked for (such as the viscosity, density, etc.). Whenever the material model is asked for the values of coefficients, it then evaluates all of the ``base models&apos;&apos; that were listed for the various coefficients, and copies the values returned by these base models into the output structure.

The implementation of this material model is somewhat expensive because it has to evaluate all material coefficients of all underlying material models. Consequently, if performance of assembly and postprocessing is important, then implementing a separate material model is a better choice than using this material model.

`composition reaction&apos;: A material model that behaves in the same way as the simple material model, but includes two compositional fields and a reaction between them. Above a depth given in the input file, the first fields gets converted to the second field. 

`depth dependent&apos;: The ``depth dependent&apos;&apos; Material model applies a depth-dependent scaling to the viscosity of any other available material models. In other words, it is a ``compositing material model&apos;&apos;.

Parameters related to the depth dependent model are read from a subsection ``Material model/Depth dependent model&apos;&apos;. The user must specify a ``Base model&apos;&apos; from which material properties are derived. Currently the depth dependent model only allows depth dependence of viscosity - other material properties are taken from the ``Base model&apos;&apos;. Viscosity $\eta$ at depth $z$ is calculated according to:$ \eta(z,p,T,X,...) = \eta(z) \eta_b(p,T,X,..)/\eta_{r}$ where $\eta(z)$ is the depth-dependence specified by the depth dependent model, $\eta_b(p,T,X,...)$ is the viscosity calculated from the base model, and $\eta_{r}$ is the reference viscosity. In addition to the specification of the ``Base model&apos;&apos;, the user must specify the method to be used to calculate the depth-dependent viscosity $\eta(z)$ as ``Material model/Depth dependent model/Depth dependence method&apos;&apos;, which can be chosen among ``None|Function|File|List&apos;&apos;. Each method and the associated parameters are as follows:

``Function&apos;&apos;: read a user-specified parsed function from the input file in a subsection ``Material model/Depth dependent model/Viscosity depth function&apos;&apos;. By default, this function is uniformly equal to 1.0e21. Specifying a function that returns a value less than or equal to 0.0 anywhere in the model domain will produce an error. 

``File&apos;&apos;: read a user-specified file containing viscosity values at specified depths. The file containing depth-dependent viscosities is read from a directory specified by the user as ``Material model/Depth dependent model/Data directory&apos;&apos;, from a file with name specified as ``Material model/Depth dependent model/Viscosity depth file&apos;&apos;. The format of this file is ascii text and contains two columns with one header line:

example Viscosity depth file:\\Depth (m)    Viscosity (Pa-s)\\0.0000000e+00     1.0000000e+21\\6.7000000e+05     1.0000000e+22\\

Viscosity is interpolated from this file using linear interpolation. ``None&apos;&apos;: no depth-dependence. Viscosity is taken directly from ``Base model&apos;&apos;

``List:&apos;&apos;: read a comma-separated list of depth values corresponding to the maximum depths of layers having constant depth-dependence $\eta(z)$. The layers must be specified in order of increasing depth, and the last layer in the list must have a depth greater than or equal to the maximal depth of the model. The list of layer depths is specified as ``Material model/Depth dependent model/Depth list&apos;&apos; and the corresponding list of layer viscosities is specified as ``Material model/Depth dependent model/Viscosity list&apos;&apos;

`diffusion dislocation&apos;: An implementation of a viscous rheology including diffusion and dislocation creep. Compositional fields can each be assigned individual activation energies, reference densities, thermal expansivities, and stress exponents. The effective viscosity is defined as 

$\eta_{\text{eff}} = \left(\frac{1}{\eta_{\text{eff}}^\text{diff}}+ \frac{1}{\eta_{\text{eff}}^\text{dis}}\right)^{-1}$ where $\eta_{\text{i}} = \frac{1}{2} A^{-\frac{1}{n_i}} d^\frac{m_i}{n_i} \dot{\varepsilon_i}^{\frac{1-n_i}{n_i}} \exp\left(\frac{E_i^\ast + PV_i^\ast}{n_iRT}\right)$ 

where $d$ is grain size, $i$ corresponds to diffusion or dislocation creep, $\dot{\varepsilon}$ is the square root of the second invariant of the strain rate tensor, $R$ is the gas constant, $T$ is temperature, and $P$ is pressure. $A_i$ are prefactors, $n_i$ and $m_i$ are stress and grain size exponents $E_i$ are the activation energies and $V_i$ are the activation volumes. 

This form of the viscosity equation is commonly used in geodynamic simulations See, for example, Billen and Hirth (2007), G3, 8, Q08012. Significantly, other studies may use slightly different forms of the viscosity equation leading to variations in how specific terms are defined or combined. For example, the grain size exponent should always be positive in the diffusion viscosity equation used here, while other studies place the grain size term in the denominator and invert the sign of the grain size exponent. When examining previous work, one should carefully check how the viscous prefactor and grain size terms are defined.  

The ratio of diffusion to dislocation strain rate is found by Newton&apos;s method, iterating to find the stress which satisfies the above equations. The value for the components of this formula and additional parameters are read from the parameter file in subsection &apos;Material model/DiffusionDislocation&apos;.

`drucker prager&apos;: A material model that has constant values for all coefficients but the density and viscosity. The defaults for all coefficients are chosen to be similar to what is believed to be correct for Earth&apos;s mantle. All of the values that define this model are read from a section ``Material model/Drucker Prager&apos;&apos; in the input file, see Section~\ref{parameters:Material_20model/Drucker_20Prager}. Note that the model does not take into account any dependencies of material properties on compositional fields. 

The viscosity is computed according to the Drucker Prager frictional plasticity criterion (non-associative) based on a user-defined internal friction angle $\phi$ and cohesion $C$. In 3d:  $\sigma_y = \frac{6 C \cos(\phi)}{\sqrt{3} (3+\sin(\phi))} + \frac{6 P \sin(\phi)}{\sqrt{3} (3+\sin(\phi))}$, where $P$ is the pressure. See for example Zienkiewicz, O. C., Humpheson, C. and Lewis, R. W. (1975), G\&apos;{e}otechnique 25, No. 4, 671-689. With this formulation we circumscribe instead of inscribe the Mohr Coulomb yield surface. In 2d the Drucker Prager yield surface is the same as the Mohr Coulomb surface:  $\sigma_y = P \sin(\phi) + C \cos(\phi)$. Note that in 2d for $\phi=0$, these criteria revert to the von Mises criterion (no pressure dependence). See for example \cite{thieulot:2011}. 

Note that we enforce the pressure to be positive to prevent negative yield strengths and viscosities. 

We then use the computed yield strength to scale back the viscosity on to the yield surface using the Viscosity Rescaling Method described in Kachanov, L. M. (2004), Fundamentals of the Theory of Plasticity, Dover Publications, Inc. (Not Radial Return.)A similar implementation can be found in GALE (&lt;https://geodynamics.org/resources/gale&gt;). 

To avoid numerically unfavourably large (or even negative) viscosity ranges, we cut off the viscosity with a user-defined minimum and maximum viscosity: $\eta_{eff} = \frac{1}{\frac{1}{\eta_{min} + \eta}+ \frac{1}{\eta_{max}}}$. 

Note that this model uses the formulation that assumes an incompressible medium despite the fact that the density follows the law $\rho(T)=\rho_0(1-\beta(T-T_{\text{ref}}))$. 

`entropy model&apos;: A material model that is designed to use pressure and entropy (rather than pressure and temperature) as independent variables. It requires a thermodynamic data table that contains all relevant properties in a specific format as illustrated in the data/material-model/entropy-table/opxtable example folder. The material model requires the use of the projected density approximation for compressibility, and the existence of a compositional field called &apos;entropy&apos;.

`grain size&apos;: A material model that relies on compositional fields that correspond to the average grain sizes of a mineral phase and source terms that determine the grain size evolution in terms of the strain rate, temperature, phase transitions, and the creep regime. This material model only works if a compositional field named &apos;grain_size&apos; is present. In the diffusion creep regime, the viscosity depends on this grain size field. We use the grain size evolution laws described in Behn et al., 2009. Implications of grain size evolution on the seismic structure of the oceanic upper mantle, Earth Planet. Sci. Letters, 282, 178–189. Other material parameters are either prescribed similar to the &apos;simple&apos; material model, or read from data files that were generated by the Perplex or Hefesto software. This material model is described in more detail in Dannberg, J., Z. Eilon, U. Faul, R. Gassmoeller, P. Moulik, and R. Myhill (2017), The importance of grain size to mantle dynamics and seismological observations, Geochem. Geophys. Geosyst., 18, 3034–3061, doi:10.1002/2017GC006944.

`latent heat&apos;: A material model that includes phase transitions and the possibility that latent heat is released or absorbed when material crosses one of the phase transitions of up to two different materials (compositional fields). This model implements a standard approximation of the latent heat terms following Christensen \&amp; Yuen, 1985 \cite{christensen:yuen:1985}. The change of entropy is calculated as $\Delta S = \gamma \frac{\Delta\rho}{\rho^2}$ with the Clapeyron slope $\gamma$ and the density change $\Delta\rho$ of the phase transition being input parameters. The model employs an analytic phase function in the form $X=\frac{1}{2} \left( 1 + \tanh \left( \frac{\Delta p}{\Delta p_0} \right) \right)$ with $\Delta p = p - p_{\text{transition}} - \gamma \left( T - T_{\text{transition}} \right)$ and $\Delta p_0$ being the pressure difference over the width of the phase transition (specified as input parameter).

`latent heat melt&apos;: A material model that includes the latent heat of melting for two materials: peridotite and pyroxenite. The melting model for peridotite is taken from Katz et al., 2003 (A new parameterization of hydrous mantle melting) and the one for pyroxenite from Sobolev et al., 2011 (Linking mantle plumes, large igneous provinces and environmental catastrophes). The model assumes a constant entropy change for melting 100\% of the material, which can be specified in the input file. The partial derivatives of entropy with respect to temperature and pressure required for calculating the latent heat consumption are then calculated as product of this constant entropy change, and the respective derivative of the function the describes the melt fraction. This is linearly averaged with respect to the fractions of the two materials present. If no compositional fields are specified in the input file, the model assumes that the material is peridotite. If compositional fields are specified, the model assumes that the first compositional field is the fraction of pyroxenite and the rest of the material is peridotite. 

Otherwise, this material model has a temperature- and pressure-dependent density and viscosity and the density and thermal expansivity depend on the melt fraction present. It is possible to extent this model to include a melt fraction dependence of all the material parameters by calling the function melt_fraction in the calculation of the respective parameter. However, melt and solid move with the same velocity and melt extraction is not taken into account (batch melting). 

`melt boukare&apos;: A material model that implements a simplified version of the melting model of Boukare et al. (https://doi.org/10.1002/2015JB011929) for the lowermost mantle and uses it to compute the material parameters required for the modeling of melt transport, including melting and solidification and the corresponding changes in composition.The model parameterizes the composition (which includes the components MgO, FeO and SiO2) as a mixture between two endmembers (one iron-bearing and one magnesium-bearing). The equation of state considers three phases: bridgmanite, ferropericlase, and melt (each with their individual compositions). More details can be found in Dannberg, J., Myhill, R., Gassmöller, R., and Cottaar, S. (2021). The morphology, evolution and seismic visibility of partial melt at the core–mantle boundary: implications for ULVZs. Geophysical Journal International, 227(2), 1028-1059.

`melt global&apos;: A material model that implements a simple formulation of the material parameters required for the modeling of melt transport, including a source term for the porosity according to a simplified linear melting model similar to \cite{schmeling2006}:
$\phi_{\text{equilibrium}} = \frac{T-T_{\text{sol}}}{T_{\text{liq}}-T_{\text{sol}}}$
with $T_{\text{sol}} = T_{\text{sol,0}} + \Delta T_p \, p + \Delta T_c \, C$ 
$T_{\text{liq}} = T_{\text{sol}}  + \Delta T_{\text{sol-liq}}$.

`melt simple&apos;: A material model that implements a simple formulation of the material parameters required for the modeling of melt transport, including a source term for the porosity according to the melting model for dry peridotite of \cite{katz:etal:2003}. This also includes a computation of the latent heat of melting (if the `latent heat&apos; heating model is active).

Most of the material properties are constant, except for the shear, viscosity $\eta$, the compaction viscosity $\xi$, and the permeability $k$, which depend on the porosity; and the solid and melt densities, which depend on temperature and pressure:
 $\eta(\phi,T) = \eta_0 e^{\alpha(\phi-\phi_0)} e^{-\beta(T-T_0)/T_0}$, $\xi(\phi,T) = \xi_0 \frac{\phi_0}{\phi} e^{-\beta(T-T_0)/T_0}$, $k=k_0 \phi^n (1-\phi)^m$, $\rho=\rho_0 (1 - \alpha (T - T_{\text{adi}})) e^{\kappa p}$.

The model is compressible only if this is specified in the input file, and contains compressibility for both solid and melt.

`modified tait&apos;: A material model that implements the thermal modified Tait equation of state as written in \cite{HP2011}. Constant values are used for the thermal conductivity and viscosity. The defaults for all coefficients are chosen to be similar to what is believed to be correct for Earth&apos;s mantle. All of the values that define this model are read from a section ``Material model/Modified Tait model&apos;&apos; in the input file, see Section~\ref{parameters:Material_20model/Modified_20Tait_20model}.

`multicomponent&apos;: This incompressible model is for use with an arbitrary number of compositional fields, where each field represents a rock type which can have completely different properties from the others. However, each rock type itself has constant material properties.  The value of the  compositional field is interpreted as a volume fraction. If the sum of the fields is greater than one, they are renormalized.  If it is less than one, material properties  for ``background mantle&apos;&apos; make up the rest. When more than one field is present, the material properties are averaged arithmetically.  An exception is the viscosity, where the averaging should make more of a difference.  For this, the user selects between arithmetic, harmonic, geometric, or maximum composition averaging.

`multicomponent compressible&apos;: This model is for use with an arbitrary number of compositional fields, where each field represents a rock type which can have completely different properties from the others. Each rock type is described by a self-consistent equation of state.  The value of the  compositional field is interpreted as a mass fraction. If the sum of the fields is greater than one, they are renormalized.  If it is less than one, material properties  for ``background mantle&apos;&apos; make up the rest. When more than one field is present, the material properties are averaged arithmetically by mass fraction (for specific heat), or volume fraction (for density, thermal expansivity and compressibility). The thermal conductivity is also arithmetically averaged by volume fraction. Finally, the viscosity is averaged by volume fraction, but the user can choose between arithmetic, harmonic, geometric or maximum composition averaging.

`nondimensional&apos;: A material model for nondimensionalized computations for compressible or incompressible computations defined through Rayleigh number 	ext{Ra} and Dissipation number Di. This model is made to be used with the Boussinesq, ALA, or TALA formulation.

The viscosity is defined as $\eta = \text{Di} / \text{Ra} \cdot \exp(-b T^\prime + c z)$ where $T^\prime$ is the temperature variation from the adiabatic temperature, $z$ is the depth, $b$ is given by ``Viscosity temperature prefactor&apos;&apos;, and $c$ by ``Viscosity depth prefactor&apos;&apos;. If $\text{Di}$ is zero, it will be replaced by 1.0 in $\eta$.

The density is defined as $\rho = \exp(\text{Di}/\gamma \cdot z)  (1.0 - \alpha T^\prime + \text{Di} \gamma p^\prime),$ where $\alpha=\text{Di}$ is the thermal expansion coefficient, $\gamma$ is the Grueneisen parameter, and $p^\prime$ is the pressure variation from the adiabatic pressure. The pressure dependent term is not present if ``TALA&apos;&apos; is enabled.

`perplex lookup&apos;: A material model that has constant values for viscosity and thermal conductivity, and calculates other properties on-the-fly using PerpleX meemum. Compositional fields correspond to the individual components in the order given in the PerpleX file.

`prescribed viscosity&apos;: A material model that applies a viscosity to a &apos;&apos;base model&apos;&apos; chosen from any of the other available material models. This prescribed viscosity material model allows the user to specify a function which describes where the viscosity should be prescribed and a second function which describes the viscosity in that region. This material model requires a base model which prescribes the viscosity and the other material parameters in the rest of the model.

`reactive fluid transport&apos;: Material model that is designed to advect fluids and compute fluid release and absorption based on different models for fluid-rock interaction. At present, models where no fluid-rock interactions occur or the solid has zero solubility are available. The properties of the solid can be taken from another material model that is used as a base model.

`replace lithosphere viscosity&apos;: The ``replace lithosphere viscosity&apos;&apos; Material model sets viscosity to a prescribed constant above the lithosphere-asthenosphere boundary (specified by an ascii file or maximum lithosphere depth). Below the lithosphere-asthenosphereboundary the viscosity is taken from any of the other available material model. In other words, it is a ``compositing material model&apos;&apos;.
Parameters related to the replace lithosphere viscosity model are read from a subsection ``Material model/Replace lithosphere viscosity&apos;&apos;. The user must specify a ``Base model&apos;&apos; from which other material properties are derived.  
Note the required format of the input data file: The first lines may contain any number of comments if they begin with ‘#’, but one of these lines needs to contain the number of grid points in each dimension as for example ‘# POINTS: 3 3’. For a spherical model, the order of the data columns has to be&apos;phi&apos;, &apos;theta&apos;,&apos;depth (m)&apos;, where phi is the  azimuth angle and theta is the polar angle measured positive from the north pole.

`simple&apos;: A material model that has constant values for all coefficients but the density and viscosity. The defaults for all coefficients are chosen to be similar to what is believed to be correct for Earth&apos;s mantle. All of the values that define this model are read from a section ``Material model/Simple model&apos;&apos; in the input file, see Section~\ref{parameters:Material_20model/Simple_20model}.

This model uses the following set of equations for the two coefficients that are non-constant: \begin{align}  \eta(p,T,\mathfrak c) &amp;= \tau(T) \zeta(\mathfrak c) \eta_0, \\  \rho(p,T,\mathfrak c) &amp;= \left(1-\alpha (T-T_0)\right)\rho_0 + \Delta\rho \; c_0,\end{align}where $c_0$ is the first component of the compositional vector $\mathfrak c$ if the model uses compositional fields, or zero otherwise. 

The temperature pre-factor for the viscosity formula above is defined as \begin{align}  \tau(T) &amp;= H\left(e^{-\beta (T-T_0)/T_0}\right),\intertext{with}   \qquad\qquad H(x) &amp;= \begin{cases}                            \tau_{\text{min}} &amp; \text{if}\; x&lt;\tau_{\text{min}}, \\                            x &amp; \text{if}\; 10^{-2}\le x \le 10^2, \\                            \tau_{\text{max}} &amp; \text{if}\; x&gt;\tau_{\text{max}}, \\                         \end{cases}\end{align} where $x=e^{-\beta (T-T_0)/T_0}$, $\beta$ corresponds to the input parameter ``Thermal viscosity exponent&apos;&apos;, and $T_0$ to the parameter ``Reference temperature&apos;&apos;. If you set $T_0=0$ in the input file, the thermal pre-factor $\tau(T)=1$. The parameters $\tau_{\text{min}}$ and $\tau_{\text{max}}$ set the minimum and maximum values of the temperature pre-factor and are set using ``Maximum thermal prefactor&apos;&apos; and ``Minimum thermal prefactor&apos;&apos;. Specifying a value of 0.0 for the minimum or maximum values will disable pre-factor limiting.

The compositional pre-factor for the viscosity is defined as $ \zeta(\mathfrak c) = \xi^{c_0}$ if the model has compositional fields and equals one otherwise. $\xi$ corresponds to the parameter ``Composition viscosity prefactor&apos;&apos; in the input file.

Finally, in the formula for the density, $\alpha$ corresponds to the ``Thermal expansion coefficient&apos;&apos; and $\Delta\rho$ corresponds to the parameter ``Density differential for compositional field 1&apos;&apos;.

Note that this model uses the formulation that assumes an incompressible medium despite the fact that the density follows the law $\rho(T)=\rho_0(1-\alpha(T-T_{\text{ref}}))$. 

:::{note}
Despite its name, this material model is not exactly ``simple&apos;&apos;, as indicated by the formulas above. While it was originally intended to be simple, it has over time acquired all sorts of temperature and compositional dependencies that weren&apos;t initially intended. Consequently, there is now a ``simpler&apos;&apos; material model that now fills the role the current model was originally intended to fill.
:::

`simple compressible&apos;: A material model that has constant values for all coefficients but the density. The defaults for all coefficients are chosen to be similar to what is believed to be correct for Earth&apos;s mantle. All of the values that define this model are read from a section ``Material model/Simple compressible model&apos;&apos; in the input file, see Section~\ref{parameters:Material_20model/Simple_20compressible_20model}.

This model uses the following equations for the density: $ \rho(p,T) = \rho_0 \left(1-\alpha (T-T_a)\right) \exp{\beta (P-P_0))}$ This formulation for the density assumes that the compressibility provided by the user is the adiabatic compressibility ($\beta_S$). The thermal expansivity and isentropic compressibility implied by the pressure and temperature dependence are equal to the user-defined constant values only along the reference isentrope, and there is also an implicit pressure dependence to the heat capacity $C_p$ via Maxwell&apos;s relations.

`simpler&apos;: A material model that has constant values except for density, which depends linearly on temperature: $ \rho(p,T) = \left(1-\alpha (T-T_0)\right)\rho_0.$ 

Note that this material model fills the role the ``simple&apos;&apos; material model was originally intended to fill, before the latter acquired all sorts of complicated temperature and compositional dependencies. 

`visco plastic&apos;: An implementation of an incompressible visco(elastic)-plastic rheology with options for selecting dislocation creep, diffusion creep or composite viscous flow laws. Prior to yielding, one may select to modify the viscosity to account for viscoelastic effects by setting the parameter &apos;Enable elasticity&apos; in subsection Formulation to true. Plasticity limits viscous stresses through a Drucker Prager yield criterion. The implementation of this material model is based heavily on the `DiffusionDislocation&apos; (Bob Myhill), `DruckerPrager&apos; (Anne Glerum), and `Viscoelastic&apos; (John Naliboff) material models. 

 The viscosity for dislocation or diffusion creep is defined as $ \eta = \frac 12 A^{-\frac{1}{n}} d^{\frac{m}{n}} \dot{\varepsilon}_{ii}^{\frac{1-n}{n}} \exp\left(\frac{E + PV}{nRT}\right)$ where $A$ is the prefactor, $n$ is the stress exponent, $\dot{\varepsilon}_{ii}$ is the square root of the deviatoric strain rate tensor second invariant, $d$ is grain size, $m$ is the grain size exponent, $E$ is activation energy, $V$ is activation volume, $P$ is pressure, $R$ is the gas exponent and $T$ is temperature. This form of the viscosity equation is commonly used in geodynamic simulations. See, for example, Billen and Hirth (2007), G3, 8, Q08012. Significantly, other studies may use slightly different forms of the viscosity equation leading to variations in how specific terms are defined or combined. For example, the grain size exponent should always be positive in the diffusion viscosity equation used here, while other studies place the grain size term in the denominator and invert the sign of the grain size exponent. When examining previous work, one should carefully check how the viscous prefactor and grain size terms are defined. 

 One may select to use the diffusion ($\eta_{\text{diff}}$; $n=1$, $m\neq 0$), dislocation ($\eta_{\text{disl}}$, $n&gt;1$, $m=0$) or composite $\frac{\eta_{\text{diff}} \eta_{\text{disl}}}{\eta_{\text{diff}}+\eta_{\text{disl}}}$ equation form. 

 The diffusion and dislocation prefactors can be weakened with a factor between 0 and 1 according to the total or the viscous strain only. 

 Viscosity is limited through one of two different `yielding&apos; mechanisms. 

The first plasticity mechanism limits viscous stress through a Drucker Prager yield criterion, where the yield stress in 3d is  $\sigma_y = \frac{6C\cos(\phi) + 2P\sin(\phi)} {\sqrt{3}(3+\sin(\phi))}$ and $\sigma_y = C\cos(\phi) + P\sin(\phi)$ in 2d. Above, $C$ is cohesion and $\phi$  is the angle of internal friction.  Note that the 2d form is equivalent to the Mohr Coulomb yield surface.  If $\phi$ is 0, the yield stress is fixed and equal to the cohesion (Von Mises yield criterion). When the viscous stress ($2\eta {\varepsilon}_{ii}$) exceeds the yield stress, the viscosity is rescaled back to the yield surface: $\eta_{y}=\sigma_{y}/(2{\varepsilon}_{ii})$. This form of plasticity is commonly used in geodynamic models. See, for example, Thieulot, C. (2011), PEPI 188, pp. 47-68. 

The user has the option to linearly reduce the cohesion and internal friction angle as a function of the finite strain magnitude. The finite strain invariant or full strain tensor is calculated through compositional fields within the material model. This implementation is identical to the compositional field finite strain plugin and cookbook described in the manual (author: Gassmoeller, Dannberg). If the user selects to track the finite strain invariant ($e_{ii}$), a single compositional field tracks the value derived from $e_{ii}^t = (e_{ii})^{(t-1)} + \dot{e}_{ii}\; dt$, where $t$ and $t-1$ are the current and prior time steps, $\dot{e}_{ii}$ is the second invariant of the strain rate tensor and $dt$ is the time step size. In the case of the full strain tensor $F$, the finite strain magnitude is derived from the second invariant of the symmetric stretching tensor $L$, where $L = F [F]^T$. The user must specify a single compositional field for the finite strain invariant or multiple fields (4 in 2d, 9 in 3d) for the finite strain tensor. These field(s) must be the first listed compositional fields in the parameter file. Note that one or more of the finite strain tensor components must be assigned a non-zero value initially. This value can be be quite small (e.g., 1.e-8), but still non-zero. While the option to track and use the full finite strain tensor exists, tracking the associated compositional fields is computationally expensive in 3d. Similarly, the finite strain magnitudes may in fact decrease if the orientation of the deformation field switches through time. Consequently, the ideal solution is track the finite strain invariant (single compositional) field within the material and track the full finite strain tensor through particles.When only the second invariant of the strain is tracked, one has the option to track the full strain or only the plastic strain. In the latter case, strain is only tracked in case the material is plastically yielding, i.e. the viscous stress &gt; yield stress. 

Viscous stress may also be limited by a non-linear stress limiter that has a form similar to the Peierls creep mechanism. This stress limiter assigns an effective viscosity $\sigma_{\text{eff}} = \frac{\tau_y}{2\varepsilon_y} {\frac{\varepsilon_{ii}}{\varepsilon_y}}^{\frac{1}{n_y}-1}$ Above $\tau_y$ is a yield stress, $\varepsilon_y$ is the reference strain rate, $\varepsilon_{ii}$ is the strain rate and $n_y$ is the stress limiter exponent.  The yield stress, $\tau_y$, is defined through the Drucker Prager yield criterion formulation. This method of limiting viscous stress has been used in various forms within the geodynamic literature \cite{chri92,vavv02,cibi13,cibi15}.When $n_y$ is 1, it essentially becomes a linear viscosity model, and in the limit $n_y\rightarrow \infty$ it converges to the standard viscosity rescaling method (concretely, values $n_y&gt;20$ are large enough).

 The visco-plastic rheology described above may also be modified to include viscoelastic deformation, thus producing a viscoelastic plastic constitutive relationship. 

 The viscoelastic rheology behavior takes into account the elastic shear strength (e.g., shear modulus), while the tensile and volumetric strength (e.g., Young&apos;s and bulk modulus) are not considered. The model is incompressible and allows specifying an arbitrary number of compositional fields, where each field represents a different rock type or component of the viscoelastic stress tensor. The stress tensor in 2d and 3d, respectively, contains 3 or 6 components. The compositional fields representing these components must be named and listed in a very specific format, which is designed to minimize mislabeling stress tensor components as distinct &apos;compositional rock types&apos; (or vice versa). For 2d models, the first three compositional fields must be labeled &apos;stress\_xx&apos;, &apos;stress\_yy&apos; and &apos;stress\_xy&apos;. In 3d, the first six compositional fields must be labeled &apos;stress\_xx&apos;, &apos;stress\_yy&apos;, &apos;stress\_zz&apos;, &apos;stress\_xy&apos;, &apos;stress\_xz&apos;, &apos;stress\_yz&apos;. 

 Combining this viscoelasticity implementation with non-linear viscous flow and plasticity produces a constitutive relationship commonly referred to as partial elastoviscoplastic (e.g., pEVP) in the geodynamics community. While extensively discussed and applied within the geodynamics literature, notable references include: Moresi et al. (2003), J. Comp. Phys., v. 184, p. 476-497. Gerya and Yuen (2007), Phys. Earth. Planet. Inter., v. 163, p. 83-105. Gerya (2010), Introduction to Numerical Geodynamic Modeling. Kaus (2010), Tectonophysics, v. 484, p. 36-47. Choi et al. (2013), J. Geophys. Res., v. 118, p. 2429-2444. Keller et al. (2013), Geophys. J. Int., v. 195, p. 1406-1442. 

 The overview below directly follows Moresi et al. (2003) eqns. 23-38. However, an important distinction between this material model and the studies above is the use of compositional fields, rather than particles, to track individual components of the viscoelastic stress tensor. The material model will be updated when an option to track and calculate viscoelastic stresses with particles is implemented. 

 Moresi et al. (2003) begins (eqn. 23) by writing the deviatoric rate of deformation ($\hat{D}$) as the sum of elastic ($\hat{D_{e}}$) and viscous ($\hat{D_{v}}$) components: $\hat{D} = \hat{D_{e}} + \hat{D_{v}}$.  These terms further decompose into $\hat{D_{v}} = \frac{\tau}{2\eta}$ and $\hat{D_{e}} = \frac{\overset{\nabla}{\tau}}{2\mu}$, where $\tau$ is the viscous deviatoric stress, $\eta$ is the shear viscosity, $\mu$ is the shear modulus and $\overset{\nabla}{\tau}$ is the Jaumann corotational stress rate. This later term (eqn. 24) contains the time derivative of the deviatoric stress ($\dot{\tau}$) and terms that account for material spin (e.g., rotation) due to advection: $\overset{\nabla}{\tau} = \dot{\tau} + {\tau}W -W\tau$. Above, $W$ is the material spin tensor (eqn. 25): $W_{ij} = \frac{1}{2} \left (\frac{\partial V_{i}}{\partial x_{j}} - \frac{\partial V_{j}}{\partial x_{i}} \right )$. 

 If plasticity is included, the deviatoric rate of deformation may be written as: $\hat{D} = \hat{D_{e}} + \hat{D_{v}} + \hat{D_{p}}$, where $\hat{D_{p}}$ is the plastic component. $\hat{D_{p}}$ decomposes to $\frac{\tau_{y}}{2\eta_{y}}$, where $\tau_{y}$ is the yield stress and $\eta_{y}$ is the viscosity rescaled to the yield surface. The Jaumann stress-rate can also be approximated using terms from the previous time step ($t$) and current time step ($t + \Delta t^{e}$): $\smash[t]{\overset{\nabla}{\tau}}^{t + \Delta t^{e}} \approx \frac{\tau^{t + \Delta t^{e} - \tau^{t}}}{\Delta t^{e}} - W^{t}\tau^{t} + \tau^{t}W^{t}$. In this material model, the size of the time step above ($\Delta t^{e}$) can be specified as the numerical time step size or an independent fixed time step. If the latter case is selected, the user has an option to apply a stress averaging scheme to account for the differences between the numerical and fixed elastic time step (eqn. 32). If one selects to use a fixed elastic time step throughout the model run, this can still be achieved by using CFL and maximum time step values that restrict the numerical time step to a specific time.

 The formulation above allows rewriting the total rate of deformation (eqn. 29) as
 $\tau^{t + \Delta t^{e}} = \eta_{eff} \left ( 2\hat{D}^{t + \triangle t^{e}} + \frac{\tau^{t}}{\mu \Delta t^{e}} + \frac{W^{t}\tau^{t} - \tau^{t}W^{t}}{\mu}  \right )$. 

 The effective viscosity (eqn. 28) is a function of the viscosity ($\eta$), elastic time step size ($\Delta t^{e}$) and shear relaxation time ($ \alpha = \frac{\eta}{\mu} $): $\eta_{eff} = \eta \frac{\Delta t^{e}}{\Delta t^{e} + \alpha}$ The magnitude of the shear modulus thus controls how much the effective viscosity is reduced relative to the initial viscosity. 

 Elastic effects are introduced into the governing Stokes equations through an elastic force term (eqn. 30) using stresses from the previous time step: $F^{e,t} = -\frac{\eta_{eff}}{\mu \Delta t^{e}} \tau^{t}$. This force term is added onto the right-hand side force vector in the system of equations. 

 When plastic yielding occurs, the effective viscosity in equation 29 and 30 is the plastic viscosity (equation 36). If the current stress is below the plastic yield stress, the effective viscosity is still as defined in equation 28. During non-linear iterations, we define the current stress prior to yielding (e.g., value compared to yield stress) as $\tau^{t + \Delta t^{e}} = \eta_{eff} \left ( 2\hat{D}^{t + \triangle t^{e}} + \frac{\tau^{t}}{\mu \Delta t^{e}} \right ) $

 Compositional fields can each be assigned individual values of thermal diffusivity, heat capacity, density, thermal expansivity and rheological parameters. 

 If more than one compositional field is present at a given point, viscosities are averaged with an arithmetic, geometric harmonic (default) or maximum composition scheme. 

 The value for the components of this formula and additional parameters are read from the parameter file in subsection  &apos;Material model/Visco Plastic&apos;.

`viscoelastic&apos;: An implementation of a simple linear viscoelastic rheology that only includes the deviatoric components of elasticity. Specifically, the viscoelastic rheology only takes into account the elastic shear strength (e.g., shear modulus), while the tensile and volumetric strength (e.g., Young&apos;s and bulk modulus) are not considered. The model is incompressible and allows specifying an arbitrary number of compositional fields, where each field represents a different rock type or component of the viscoelastic stress tensor. The stress tensor in 2d and 3d, respectively, contains 3 or 6 components. The compositional fields representing these components must be named and listed in a very specific format, which is designed to minimize mislabeling stress tensor components as distinct &apos;compositional rock types&apos; (or vice versa). For 2d models, the first three compositional fields must be labeled &apos;stress\_xx&apos;, &apos;stress\_yy&apos; and &apos;stress\_xy&apos;. In 3d, the first six compositional fields must be labeled &apos;stress\_xx&apos;, &apos;stress\_yy&apos;, &apos;stress\_zz&apos;, &apos;stress\_xy&apos;, &apos;stress\_xz&apos;, &apos;stress\_yz&apos;. 

 Expanding the model to include non-linear viscous flow (e.g., diffusion/dislocation creep) and plasticity would produce a constitutive relationship commonly referred to as partial elastoviscoplastic (e.g., pEVP) in the geodynamics community. While extensively discussed and applied within the geodynamics literature, notable references include: Moresi et al. (2003), J. Comp. Phys., v. 184, p. 476-497. Gerya and Yuen (2007), Phys. Earth. Planet. Inter., v. 163, p. 83-105. Gerya (2010), Introduction to Numerical Geodynamic Modeling. Kaus (2010), Tectonophysics, v. 484, p. 36-47. Choi et al. (2013), J. Geophys. Res., v. 118, p. 2429-2444. Keller et al. (2013), Geophys. J. Int., v. 195, p. 1406-1442. 

 The overview below directly follows Moresi et al. (2003) eqns. 23-32. However, an important distinction between this material model and the studies above is the use of compositional fields, rather than particles, to track individual components of the viscoelastic stress tensor. The material model will be updated when an option to track and calculate viscoelastic stresses with particles is implemented. 

 Moresi et al. (2003) begins (eqn. 23) by writing the deviatoric rate of deformation ($\hat{D}$) as the sum of elastic ($\hat{D_{e}}$) and viscous ($\hat{D_{v}}$) components: $\hat{D} = \hat{D_{e}} + \hat{D_{v}}$.  These terms further decompose into $\hat{D_{v}} = \frac{\tau}{2\eta}$ and $\hat{D_{e}} = \frac{\overset{\nabla}{\tau}}{2\mu}$, where $\tau$ is the viscous deviatoric stress, $\eta$ is the shear viscosity, $\mu$ is the shear modulus and $\overset{\nabla}{\tau}$ is the Jaumann corotational stress rate. This later term (eqn. 24) contains the time derivative of the deviatoric stress ($\dot{\tau}$) and terms that account for material spin (e.g., rotation) due to advection: $\overset{\nabla}{\tau} = \dot{\tau} + {\tau}W -W\tau$. Above, $W$ is the material spin tensor (eqn. 25): $W_{ij} = \frac{1}{2} \left (\frac{\partial V_{i}}{\partial x_{j}} - \frac{\partial V_{j}}{\partial x_{i}} \right )$. 

 The Jaumann stress-rate can also be approximated using terms from the previous time step ($t$) and current time step ($t + \Delta t^{e}$): $\smash[t]{\overset{\nabla}{\tau}}^{t + \Delta t^{e}} \approx \frac{\tau^{t + \Delta t^{e} - \tau^{t}}}{\Delta t^{e}} - W^{t}\tau^{t} + \tau^{t}W^{t}$. In this material model, the size of the time step above ($\Delta t^{e}$) can be specified as the numerical time step size or an independent fixed time step. If the latter case is selected, the user has an option to apply a stress averaging scheme to account for the differences between the numerical and fixed elastic time step (eqn. 32). If one selects to use a fixed elastic time step throughout the model run, this can still be achieved by using CFL and maximum time step values that restrict the numerical time step to a specific time.

 The formulation above allows rewriting the total deviatoric stress (eqn. 29) as
 $\tau^{t + \Delta t^{e}} = \eta_\text{eff} \left ( 2\hat{D}^{t + \triangle t^{e}} + \frac{\tau^{t}}{\mu \Delta t^{e}} + \frac{W^{t}\tau^{t} - \tau^{t}W^{t}}{\mu}  \right )$. 

 The effective viscosity (eqn. 28) is a function of the viscosity ($\eta$), elastic time step size ($\Delta t^{e}$) and shear relaxation time ($ \alpha = \frac{\eta}{\mu} $): $\eta_\text{eff} = \eta \frac{\Delta t^{e}}{\Delta t^{e} + \alpha}$ The magnitude of the shear modulus thus controls how much the effective viscosity is reduced relative to the initial viscosity. 

 Elastic effects are introduced into the governing Stokes equations through an elastic force term (eqn. 30) using stresses from the previous time step: $F^{e,t} = -\frac{\eta_\text{eff}}{\mu \Delta t^{e}} \tau^{t}$. This force term is added onto the right-hand side force vector in the system of equations. 

 The value of each compositional field representing distinct rock types at a point is interpreted to be a volume fraction of that rock type. If the sum of the compositional field volume fractions is less than one, then the remainder of the volume is assumed to be &apos;background material&apos;.

 Several model parameters (densities, elastic shear moduli, thermal expansivities, thermal conductivies, specific heats) can be defined per-compositional field. For each material parameter the user supplies a comma delimited list of length N+1, where N is the number of compositional fields. The additional field corresponds to the value for background material. They should be ordered &apos;&apos;background, composition1, composition2...&apos;&apos;. However, the first 3 (2d) or 6 (3d) composition fields correspond to components of the elastic stress tensor and their material values will not contribute to the volume fractions. If a single value is given, then all the compositional fields are given that value. Other lengths of lists are not allowed. For a given compositional field the material parameters are treated as constant, except density, which varies linearly with temperature according to the thermal expansivity. 

 When more than one compositional field is present at a point, they are averaged arithmetically. An exception is viscosity, which may be averaged arithmetically, harmonically, geometrically, or by selecting the viscosity of the composition field with the greatest volume fraction.
</documentation>
<pattern>
454
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic|unspecified ]
</pattern_description>
</Model_20name>
<Ascii_20reference_20profile>
<Thermal_20conductivity>
<value>
4.0
</value>
<default_value>
4.0
</default_value>
<documentation>
Reference conductivity
</documentation>
<pattern>
968
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20viscosity_20exponent>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The temperature dependence of viscosity. Dimensionless exponent.
</documentation>
<pattern>
971
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20viscosity_20exponent>
<Transition_20depths>
<value>
1.5e5, 4.1e5, 6.6e5
</value>
<default_value>
1.5e5, 4.1e5, 6.6e5
</default_value>
<documentation>
A list of depths where the viscosity changes. Values must monotonically increase. Units: \si{\meter}.
</documentation>
<pattern>
972
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Transition_20depths>
<Use_20TALA>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use the TALA instead of the ALA approximation.
</documentation>
<pattern>
970
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20TALA>
<Viscosity>
<value>
1e21
</value>
<default_value>
1e21
</default_value>
<documentation>
Viscosity
</documentation>
<pattern>
969
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity>
<Viscosity_20prefactors>
<value>
10., 0.1, 1., 10.
</value>
<default_value>
10., 0.1, 1., 10.
</default_value>
<documentation>
A list of prefactors for the viscosity that determine the viscosity profile. Each prefactor is applied in a depth range specified by the list of `Transition depths&apos;, i.e. the first prefactor is applied above the first transition depth, the second one between the first and second transition depth, and so on. To compute the viscosity profile, this prefactor is multiplied by the reference viscosity specified through the parameter `Viscosity&apos;. List must have one more entry than Transition depths. Units: non-dimensional.
</documentation>
<pattern>
973
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Viscosity_20prefactors>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/adiabatic-conditions/ascii-data/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/adiabatic-conditions/ascii-data/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
974
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value/>
<default_value/>
<documentation>
The file name of the model data.
</documentation>
<pattern>
975
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
976
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20data_20model>
</Ascii_20reference_20profile>
<Averaging>
<Averaging_20operation>
<value>
none
</value>
<default_value>
none
</default_value>
<documentation>
Choose the averaging operation to use.
</documentation>
<pattern>
978
</pattern>
<pattern_description>
[Selection none|arithmetic average|harmonic average|geometric average|pick largest|log average|nwd arithmetic average|nwd harmonic average|nwd geometric average ]
</pattern_description>
</Averaging_20operation>
<Base_20model>
<value>
simple
</value>
<default_value>
simple
</default_value>
<documentation>
The name of a material model that will be modified by an averaging operation. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
977
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic ]
</pattern_description>
</Base_20model>
<Bell_20shape_20limit>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
The limit normalized distance between 0 and 1 where the bell shape becomes zero. See the manual for a more information.
</documentation>
<pattern>
979
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Bell_20shape_20limit>
</Averaging>
<Compositing>
<Compressibility>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Material model to use for Compressibility. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
980
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic|unspecified ]
</pattern_description>
</Compressibility>
<Density>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Material model to use for Density. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
981
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic|unspecified ]
</pattern_description>
</Density>
<Entropy_20derivative_20pressure>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Material model to use for Entropy derivative pressure. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
982
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic|unspecified ]
</pattern_description>
</Entropy_20derivative_20pressure>
<Entropy_20derivative_20temperature>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Material model to use for Entropy derivative temperature. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
983
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic|unspecified ]
</pattern_description>
</Entropy_20derivative_20temperature>
<Reaction_20terms>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Material model to use for Reaction terms. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
984
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic|unspecified ]
</pattern_description>
</Reaction_20terms>
<Specific_20heat>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Material model to use for Specific heat. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
985
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic|unspecified ]
</pattern_description>
</Specific_20heat>
<Thermal_20conductivity>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Material model to use for Thermal conductivity. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
986
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic|unspecified ]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20expansion_20coefficient>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Material model to use for Thermal expansion coefficient. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
987
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic|unspecified ]
</pattern_description>
</Thermal_20expansion_20coefficient>
<Viscosity>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Material model to use for Viscosity. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
988
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic|unspecified ]
</pattern_description>
</Viscosity>
</Compositing>
<Composition_20reaction_20model>
<Composition_20viscosity_20prefactor_201>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
A linear dependency of viscosity on the first compositional field. Dimensionless prefactor. With a value of 1.0 (the default) the viscosity does not depend on the composition.
</documentation>
<pattern>
997
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Composition_20viscosity_20prefactor_201>
<Composition_20viscosity_20prefactor_202>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
A linear dependency of viscosity on the second compositional field. Dimensionless prefactor. With a value of 1.0 (the default) the viscosity does not depend on the composition.
</documentation>
<pattern>
998
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Composition_20viscosity_20prefactor_202>
<Density_20differential_20for_20compositional_20field_201>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
If compositional fields are used, then one would frequently want to make the density depend on these fields. In this simple material model, we make the following assumptions: if no compositional fields are used in the current simulation, then the density is simply the usual one with its linear dependence on the temperature. If there are compositional fields, then the material model determines how many of them influence the density. The composition-dependence adds a term of the kind $+\Delta \rho \; c_1(\mathbf x)$. This parameter describes the value of $\Delta \rho$. Units: \si{\kilogram\per\meter\cubed}/unit change in composition.
</documentation>
<pattern>
993
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Density_20differential_20for_20compositional_20field_201>
<Density_20differential_20for_20compositional_20field_202>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
If compositional fields are used, then one would frequently want to make the density depend on these fields. In this simple material model, we make the following assumptions: if no compositional fields are used in the current simulation, then the density is simply the usual one with its linear dependence on the temperature. If there are compositional fields, then the material model determines how many of them influence the density. The composition-dependence adds a term of the kind $+\Delta \rho \; c_2(\mathbf x)$. This parameter describes the value of $\Delta \rho$. Units: \si{\kilogram\per\meter\cubed}/unit change in composition.
</documentation>
<pattern>
994
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Density_20differential_20for_20compositional_20field_202>
<Reaction_20depth>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Above this depth the compositional fields react: The first field gets converted to the second field. Units: \si{\meter}.
</documentation>
<pattern>
1001
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reaction_20depth>
<Reference_20density>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
Reference density $\rho_0$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
989
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20density>
<Reference_20specific_20heat>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
The value of the specific heat $C_p$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
991
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20specific_20heat>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. Units: \si{\kelvin}.
</documentation>
<pattern>
995
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
1000
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20expansion_20coefficient>
<value>
2e-5
</value>
<default_value>
2e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\alpha$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
992
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient>
<Thermal_20viscosity_20exponent>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature dependence of viscosity. Dimensionless exponent.
</documentation>
<pattern>
999
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20viscosity_20exponent>
<Viscosity>
<value>
5e24
</value>
<default_value>
5e24
</default_value>
<documentation>
The value of the constant viscosity. Units: \si{\kilogram\per\meter\per\second}.
</documentation>
<pattern>
996
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity>
</Composition_20reaction_20model>
<Depth_20dependent_20model>
<Base_20model>
<value>
simple
</value>
<default_value>
simple
</default_value>
<documentation>
The name of a material model that will be modified by a depth dependent viscosity. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
1005
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic ]
</pattern_description>
</Base_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/material-model/rheology/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/material-model/rheology/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1002
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
ascii_depth_profile.txt
</value>
<default_value>
ascii_depth_profile.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1003
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Depth_20dependence_20method>
<value>
None
</value>
<default_value>
None
</default_value>
<documentation>
Method that is used to specify how the viscosity should vary with depth.
</documentation>
<pattern>
1006
</pattern>
<pattern_description>
[Selection Function|File|List|None ]
</pattern_description>
</Depth_20dependence_20method>
<Depth_20list>
<value/>
<default_value/>
<documentation>
A comma-separated list of depth values for use with the ``List&apos;&apos; ``Depth dependence method&apos;&apos;. The list must be provided in order of increasing depth, and the last value must be greater than or equal to the maximal depth of the model. The depth list is interpreted as a layered viscosity structure and the depth values specify the maximum depths of each layer.
</documentation>
<pattern>
1007
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Depth_20list>
<Reference_20viscosity>
<value>
1.7976931348623157e+308
</value>
<default_value>
1.7976931348623157e+308
</default_value>
<documentation>
The value of the constant reference viscosity $\eta_r$ that is used to scale the non-dimensional depth-dependent viscosity prefactor. Units: \si{\pascal\second}.
</documentation>
<pattern>
1009
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20viscosity>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1004
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
<Viscosity_20depth_20file>
<alias>
Data file name
</alias>
<deprecation_status>
false
</deprecation_status>
</Viscosity_20depth_20file>
<Viscosity_20list>
<value/>
<default_value/>
<documentation>
A comma-separated list of viscosity values, corresponding to the depth values provided in ``Depth list&apos;&apos;. The number of viscosity values specified here must be the same as the number of depths provided in ``Depth list&apos;&apos;.
</documentation>
<pattern>
1008
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Viscosity_20list>
<Viscosity_20depth_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1012
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
1.0e21
</value>
<default_value>
1.0e21
</default_value>
<documentation/>
<pattern>
1013
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,t
</value>
<default_value>
x,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1010
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Viscosity_20depth_20function>
</Depth_20dependent_20model>
<Depth_20dependent_20viscosity>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/material-model/rheology/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/material-model/rheology/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
893
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
ascii_depth_profile.txt
</value>
<default_value>
ascii_depth_profile.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
894
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
895
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Depth_20dependent_20viscosity>
<Diffusion_20dislocation>
<Activation_20energies_20for_20diffusion_20creep>
<value>
375e3
</value>
<default_value>
375e3
</default_value>
<documentation>
List of activation energies, $E_a$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\joule\per\mole}.
</documentation>
<pattern>
1038
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Activation_20energies_20for_20diffusion_20creep>
<Activation_20energies_20for_20dislocation_20creep>
<value>
530e3
</value>
<default_value>
530e3
</default_value>
<documentation>
List of activation energies, $E_a$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\joule\per\mole}.
</documentation>
<pattern>
1043
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Activation_20energies_20for_20dislocation_20creep>
<Activation_20volumes_20for_20diffusion_20creep>
<value>
6e-6
</value>
<default_value>
6e-6
</default_value>
<documentation>
List of activation volumes, $V_a$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\meter\cubed\per\mole}.
</documentation>
<pattern>
1039
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Activation_20volumes_20for_20diffusion_20creep>
<Activation_20volumes_20for_20dislocation_20creep>
<value>
1.4e-5
</value>
<default_value>
1.4e-5
</default_value>
<documentation>
List of activation volumes, $V_a$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\meter\cubed\per\mole}.
</documentation>
<pattern>
1044
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Activation_20volumes_20for_20dislocation_20creep>
<Densities>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
List of densities, $\rho$, for background mantle and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
1023
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Densities>
<Effective_20viscosity_20coefficient>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
Scaling coefficient for effective viscosity.
</documentation>
<pattern>
1018
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Effective_20viscosity_20coefficient>
<Grain_20size>
<value>
1e-3
</value>
<default_value>
1e-3
</default_value>
<documentation>
The fixed grain size of the material. This grain size is only used if the parent material model does not provide its own (possibly variable) grain size when calling this rheology.Units: \si{\meter}.
</documentation>
<pattern>
1040
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Grain_20size>
<Grain_20size_20exponents_20for_20diffusion_20creep>
<value>
3.
</value>
<default_value>
3.
</default_value>
<documentation>
List of grain size exponents, $m_{\text{diffusion}}$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: None.
</documentation>
<pattern>
1037
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Grain_20size_20exponents_20for_20diffusion_20creep>
<Heat_20capacity>
<value>
1.25e3
</value>
<default_value>
1.25e3
</default_value>
<documentation>
The value of the specific heat $C_p$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
1022
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Heat_20capacity>
<Maximum_20strain_20rate_20ratio_20iterations>
<value>
40
</value>
<default_value>
40
</default_value>
<documentation>
Maximum number of iterations to find the correct diffusion/dislocation strain rate ratio.
</documentation>
<pattern>
1020
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Maximum_20strain_20rate_20ratio_20iterations>
<Maximum_20viscosity>
<value>
1e28
</value>
<default_value>
1e28
</default_value>
<documentation>
Upper cutoff for effective viscosity. Units: \si{\pascal\second}.
</documentation>
<pattern>
1017
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20viscosity>
<Minimum_20strain_20rate>
<value>
1.4e-20
</value>
<default_value>
1.4e-20
</default_value>
<documentation>
Stabilizes strain dependent viscosity. Units: \si{\per\second}.
</documentation>
<pattern>
1015
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20strain_20rate>
<Minimum_20viscosity>
<value>
1e17
</value>
<default_value>
1e17
</default_value>
<documentation>
Lower cutoff for effective viscosity. Units: \si{\pascal\second}.
</documentation>
<pattern>
1016
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20viscosity>
<Prefactors_20for_20diffusion_20creep>
<value>
1.5e-15
</value>
<default_value>
1.5e-15
</default_value>
<documentation>
List of viscosity prefactors, $A$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\per\pascal\meter}$^{m_{\text{diffusion}}}$\si{\per\second}.
</documentation>
<pattern>
1035
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Prefactors_20for_20diffusion_20creep>
<Prefactors_20for_20dislocation_20creep>
<value>
1.1e-16
</value>
<default_value>
1.1e-16
</default_value>
<documentation>
List of viscosity prefactors, $A$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\pascal}$^{-n_{\text{dislocation}}}$ \si{\per\second}.
</documentation>
<pattern>
1041
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Prefactors_20for_20dislocation_20creep>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
For calculating density by thermal expansivity. Units: \si{\kelvin}.
</documentation>
<pattern>
1014
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Strain_20rate_20residual_20tolerance>
<value>
1e-10
</value>
<default_value>
1e-10
</default_value>
<documentation>
Tolerance for determining the correct stress and viscosity from the strain rate by internal iteration. The tolerance is expressed as the difference between the natural logarithm of the input strain rate and the strain rate at the current iteration. This determines that strain rate is correctly partitioned between diffusion and dislocation creep assuming that both mechanisms experience the same stress.
</documentation>
<pattern>
1019
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Strain_20rate_20residual_20tolerance>
<Stress_20exponents_20for_20diffusion_20creep>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
List of stress exponents, $n_{\text{diffusion}}$, for background mantle and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. The stress exponent for diffusion creep is almost always equal to one. If only one value is given, then all use the same value.  Units: None.
</documentation>
<pattern>
1036
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Stress_20exponents_20for_20diffusion_20creep>
<Stress_20exponents_20for_20dislocation_20creep>
<value>
3.5
</value>
<default_value>
3.5
</default_value>
<documentation>
List of stress exponents, $n_{\text{dislocation}}$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: None.
</documentation>
<pattern>
1042
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Stress_20exponents_20for_20dislocation_20creep>
<Thermal_20diffusivity>
<value>
0.8e-6
</value>
<default_value>
0.8e-6
</default_value>
<documentation>
Units: \si{\meter\squared\per\second}.
</documentation>
<pattern>
1021
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20diffusivity>
<Thermal_20expansivities>
<value>
3.5e-5
</value>
<default_value>
3.5e-5
</default_value>
<documentation>
List of thermal expansivities for background mantle and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: \si{\per\kelvin}.
</documentation>
<pattern>
1024
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Thermal_20expansivities>
<Viscosity_20averaging_20scheme>
<value>
harmonic
</value>
<default_value>
harmonic
</default_value>
<documentation>
When more than one compositional field is present at a point with different viscosities, we need to come up with an average viscosity at that point.  Select a weighted harmonic, arithmetic, geometric, or maximum composition.
</documentation>
<pattern>
1025
</pattern>
<pattern_description>
[Selection arithmetic|harmonic|geometric|maximum composition ]
</pattern_description>
</Viscosity_20averaging_20scheme>
</Diffusion_20dislocation>
<Drucker_20Prager>
<Reference_20density>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
Reference density $\rho_0$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
864
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20density>
<Reference_20specific_20heat>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
The value of the specific heat $C_p$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
866
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20specific_20heat>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. The reference temperature is used in the density calculation. Units: \si{\kelvin}.
</documentation>
<pattern>
868
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
869
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20expansion_20coefficient>
<value>
2e-5
</value>
<default_value>
2e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\alpha$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
867
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient>
<Viscosity>
<Angle_20of_20internal_20friction>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The value of the angle of internal friction $\phi$. For a value of zero, in 2d the von Mises criterion is retrieved. Angles higher than 30 degrees are harder to solve numerically. Units: degrees.
</documentation>
<pattern>
873
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Angle_20of_20internal_20friction>
<Cohesion>
<value>
2e7
</value>
<default_value>
2e7
</default_value>
<documentation>
The value of the cohesion $C$. Units: \si{\pascal}.
</documentation>
<pattern>
874
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Cohesion>
<Maximum_20viscosity>
<value>
1e24
</value>
<default_value>
1e24
</default_value>
<documentation>
The value of the maximum viscosity cutoff $\eta_max$. Units: \si{\pascal\second}.
</documentation>
<pattern>
871
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20viscosity>
<Minimum_20viscosity>
<value>
1e19
</value>
<default_value>
1e19
</default_value>
<documentation>
The value of the minimum viscosity cutoff $\eta_min$. Units: \si{\pascal\second}.
</documentation>
<pattern>
870
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20viscosity>
<Reference_20strain_20rate>
<value>
1e-15
</value>
<default_value>
1e-15
</default_value>
<documentation>
The value of the initial strain rate prescribed during the first nonlinear iteration $\dot{\epsilon}_ref$. Units: \si{\per\second}.
</documentation>
<pattern>
872
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20strain_20rate>
</Viscosity>
</Drucker_20Prager>
<Entropy_20model>
<Angle_20of_20internal_20friction>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The value of the angle of internal friction, $\phi$.For a value of zero, in 2D the von Mises criterion is retrieved. Angles higher than 30 degrees are harder to solve numerically.Units: degrees.
</documentation>
<pattern>
882
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Angle_20of_20internal_20friction>
<Cohesion>
<value>
1e20
</value>
<default_value>
1e20
</default_value>
<documentation>
The value of the cohesion, $C$. The extremely large defaultcohesion value (1e20 Pa) prevents the viscous stress from exceeding the yield stress. Units: \si{\pascal}.
</documentation>
<pattern>
883
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Cohesion>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/material-model/entropy-table/opxtable/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/material-model/entropy-table/opxtable/
</default_value>
<documentation>
The path to the model data. The path may also include the special text &apos;$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
875
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Lateral_20viscosity_20file_20name>
<value>
temp-viscosity-prefactor.txt
</value>
<default_value>
temp-viscosity-prefactor.txt
</default_value>
<documentation>
The file name of the lateral viscosity prefactor.
</documentation>
<pattern>
878
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Lateral_20viscosity_20file_20name>
<Material_20file_20name>
<value>
material_table.txt
</value>
<default_value>
material_table.txt
</default_value>
<documentation>
The file name of the material data. The first material data file is intended for the background composition. 
</documentation>
<pattern>
876
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Material_20file_20name>
<Maximum_20lateral_20viscosity_20variation>
<value>
1e2
</value>
<default_value>
1e2
</default_value>
<documentation>
The relative cutoff value for lateral viscosity variations caused by temperature deviations. The viscosity may vary laterally by this factor squared.
</documentation>
<pattern>
881
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20lateral_20viscosity_20variation>
<Maximum_20thermal_20conductivity>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
The maximum thermal conductivity that is allowed in the model. Larger values will be cut off.
</documentation>
<pattern>
892
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20thermal_20conductivity>
<Maximum_20viscosity>
<value>
1e23
</value>
<default_value>
1e23
</default_value>
<documentation>
The maximum viscosity that is allowed in the viscosity calculation. Larger values will be cut off.
</documentation>
<pattern>
880
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20viscosity>
<Minimum_20viscosity>
<value>
1e19
</value>
<default_value>
1e19
</default_value>
<documentation>
The minimum viscosity that is allowed in the viscosity calculation. Smaller values will be cut off.
</documentation>
<pattern>
879
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20viscosity>
<Pressure_20dependencies_20of_20thermal_20conductivity>
<value>
3.3e-10, 3.4e-10, 3.6e-10, 1.05e-10
</value>
<default_value>
3.3e-10, 3.4e-10, 3.6e-10, 1.05e-10
</default_value>
<documentation>
A list of values that determine the linear scaling of the thermal conductivity with the pressure in the &apos;p-T-dependent&apos; thermal conductivity formulation. Units: \si{\watt\per\meter\per\kelvin\per\pascal}.
</documentation>
<pattern>
888
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Pressure_20dependencies_20of_20thermal_20conductivity>
<Reference_20temperatures_20for_20thermal_20conductivity>
<value>
300, 300, 300, 1200
</value>
<default_value>
300, 300, 300, 1200
</default_value>
<documentation>
A list of values of reference temperatures used to determine the temperature-dependence of the thermal conductivity in the &apos;p-T-dependent&apos; thermal conductivity formulation. Units: \si{\kelvin}.
</documentation>
<pattern>
889
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20temperatures_20for_20thermal_20conductivity>
<Reference_20thermal_20conductivities>
<value>
2.47, 3.81, 3.52, 4.9
</value>
<default_value>
2.47, 3.81, 3.52, 4.9
</default_value>
<documentation>
A list of base values of the thermal conductivity for each of the horizontal layers in the &apos;p-T-dependent&apos; thermal conductivity formulation. Pressure- and temperature-dependence will be appliedon top of this base value, according to the parameters &apos;Pressure dependencies of thermal conductivity&apos; and &apos;Reference temperatures for thermal conductivity&apos;. Units: \si{\watt\per\meter\per\kelvin}
</documentation>
<pattern>
887
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20thermal_20conductivities>
<Reference_20viscosity>
<value>
1e22
</value>
<default_value>
1e22
</default_value>
<documentation>
The viscosity that is used in this model. 

Units: \si{\pascal\second}
</documentation>
<pattern>
877
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20viscosity>
<Saturation_20prefactors>
<value>
0, 0, 0, 1
</value>
<default_value>
0, 0, 0, 1
</default_value>
<documentation>
A list of values that indicate how a given layer in the conductivity formulation should take into account the effects of saturation on the temperature-dependence of the thermal conducitivity. This factor is multiplied with a saturation function based on the theory of Roufosse and Klemens, 1974. A value of 1 reproduces the formulation of Stackhouse et al. (2015), a value of 0 reproduces the formulation of Tosi et al., (2013). Units: none.
</documentation>
<pattern>
891
</pattern>
<pattern_description>
[List of &lt;[Double 0...1 (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Saturation_20prefactors>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
884
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20conductivity_20exponents>
<value>
0.48, 0.56, 0.61, 1.0
</value>
<default_value>
0.48, 0.56, 0.61, 1.0
</default_value>
<documentation>
A list of exponents in the temperature-dependent term of the &apos;p-T-dependent&apos; thermal conductivity formulation. Note that this exponent is not used (and should have a value of 1) in the formulation of Stackhouse et al. (2015). Units: none.
</documentation>
<pattern>
890
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Thermal_20conductivity_20exponents>
<Thermal_20conductivity_20formulation>
<value>
constant
</value>
<default_value>
constant
</default_value>
<documentation>
Which law should be used to compute the thermal conductivity. The &apos;constant&apos; law uses a constant value for the thermal conductivity. The &apos;p-T-dependent&apos; formulation uses equations from Stackhouse et al. (2015): First-principles calculations of the lattice thermal conductivity of the lower mantle (https://doi.org/10.1016/j.epsl.2015.06.050), and Tosi et al. (2013): Mantle dynamics with pressure- and temperature-dependent thermal expansivity and conductivity (https://doi.org/10.1016/j.pepi.2013.02.004) to compute the thermal conductivity in dependence of temperature and pressure. The thermal conductivity parameter sets can be chosen in such a way that either the Stackhouse or the Tosi relations are used. The conductivity description can consist of several layers with different sets of parameters. Note that the Stackhouse parametrization is only valid for the lower mantle (bridgmanite).
</documentation>
<pattern>
885
</pattern>
<pattern_description>
[Selection constant|p-T-dependent ]
</pattern_description>
</Thermal_20conductivity_20formulation>
<Thermal_20conductivity_20transition_20depths>
<value>
410000, 520000, 660000
</value>
<default_value>
410000, 520000, 660000
</default_value>
<documentation>
A list of depth values that indicate where the transitions between the different conductivity parameter sets should occur in the &apos;p-T-dependent&apos; Thermal conductivity formulation (in most cases, this will be the depths of major mantle phase transitions). Units: \si{\meter}.
</documentation>
<pattern>
886
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Thermal_20conductivity_20transition_20depths>
</Entropy_20model>
<Grain_20size_20model>
<Advect_20logarithm_20of_20grain_20size>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
This option does not exist any more.
</documentation>
<pattern>
962
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Advect_20logarithm_20of_20grain_20size>
<Angles_20of_20internal_20friction>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
List of angles of internal friction, $\phi$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. For a value of zero, in 2d the von Mises criterion is retrieved. Angles higher than 30 degrees are harder to solve numerically. Units: degrees.
</documentation>
<pattern>
943
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Angles_20of_20internal_20friction>
<Average_20specific_20grain_20boundary_20energy>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
The average specific grain boundary energy $\gamma$. List must have one more entry than the Phase transition depths. Units: \si{\joule\per\meter\squared}.
</documentation>
<pattern>
957
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Average_20specific_20grain_20boundary_20energy>
<Bilinear_20interpolation>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
This parameter determines whether to use bilinear interpolation to compute material properties (slower but more accurate).
</documentation>
<pattern>
940
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Bilinear_20interpolation>
<Cohesions>
<value>
1e20
</value>
<default_value>
1e20
</default_value>
<documentation>
List of cohesions, $C$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. The extremely large default cohesion value (1e20 Pa) prevents the viscous stress from exceeding the yield stress. Units: \si{\pascal}.
</documentation>
<pattern>
944
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Cohesions>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/material-model/steinberger/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/material-model/steinberger/
</default_value>
<documentation>
The path to the model data. The path may also include the special text &apos;$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the &apos;data/&apos; subdirectory of ASPECT. 
</documentation>
<pattern>
934
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Define_20transition_20by_20depth_20instead_20of_20pressure>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to list phase transitions by depth or pressure. If this parameter is true, then the input file will use Phase transitions depths and Phase transition widths to define the phase transition. If it is false, the parameter file will read in phase transition data from Phase transition pressures and Phase transition pressure widths.
</documentation>
<pattern>
907
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Define_20transition_20by_20depth_20instead_20of_20pressure>
<Derivatives_20file_20names>
<value/>
<default_value/>
<documentation>
The file names of the enthalpy derivatives data. List with as many components as active compositional fields (material data is assumed to be in order with the ordering of the fields). 
</documentation>
<pattern>
936
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Derivatives_20file_20names>
<Diffusion_20activation_20energy>
<value>
3.35e5
</value>
<default_value>
3.35e5
</default_value>
<documentation>
The activation energy for diffusion creep $E_{diff}$. List must have one more entry than the Phase transition depths. Units: \si{\joule\per\mole}.
</documentation>
<pattern>
919
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Diffusion_20activation_20energy>
<Diffusion_20activation_20volume>
<value>
4e-6
</value>
<default_value>
4e-6
</default_value>
<documentation>
The activation volume for diffusion creep $V_{diff}$. List must have one more entry than the Phase transition depths. Units: \si{\meter\cubed\per\mole}.
</documentation>
<pattern>
920
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Diffusion_20activation_20volume>
<Diffusion_20creep_20exponent>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
The power-law exponent $n_{diff}$ for diffusion creep. List must have one more entry than the Phase transition depths. Units: none.
</documentation>
<pattern>
918
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Diffusion_20creep_20exponent>
<Diffusion_20creep_20grain_20size_20exponent>
<value>
3.
</value>
<default_value>
3.
</default_value>
<documentation>
The diffusion creep grain size exponent $p_{diff}$ that determines the dependence of viscosity on grain size. List must have one more entry than the Phase transition depths. Units: none.
</documentation>
<pattern>
922
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Diffusion_20creep_20grain_20size_20exponent>
<Diffusion_20creep_20prefactor>
<value>
7.4e-15
</value>
<default_value>
7.4e-15
</default_value>
<documentation>
The prefactor for the diffusion creep law $A_{diff}$. List must have one more entry than the Phase transition depths. Units: \si{\meter}$^{p_{diff}}$\si{\pascal}$^{-n_{diff}}$\si{\per\second}.
</documentation>
<pattern>
921
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Diffusion_20creep_20prefactor>
<Dislocation_20activation_20energy>
<value>
4.8e5
</value>
<default_value>
4.8e5
</default_value>
<documentation>
The activation energy for dislocation creep $E_{dis}$. List must have one more entry than the Phase transition depths. Units: \si{\joule\per\mole}.
</documentation>
<pattern>
915
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Dislocation_20activation_20energy>
<Dislocation_20activation_20volume>
<value>
1.1e-5
</value>
<default_value>
1.1e-5
</default_value>
<documentation>
The activation volume for dislocation creep $V_{dis}$. List must have one more entry than the Phase transition depths. Units: \si{\meter\cubed\per\mole}.
</documentation>
<pattern>
916
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Dislocation_20activation_20volume>
<Dislocation_20creep_20exponent>
<value>
3.5
</value>
<default_value>
3.5
</default_value>
<documentation>
The power-law exponent $n_{dis}$ for dislocation creep. List must have one more entry than the Phase transition depths. Units: none.
</documentation>
<pattern>
914
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Dislocation_20creep_20exponent>
<Dislocation_20creep_20prefactor>
<value>
4.5e-15
</value>
<default_value>
4.5e-15
</default_value>
<documentation>
The prefactor for the dislocation creep law $A_{dis}$. List must have one more entry than the Phase transition depths. Units: \si{\pascal}$^{-n_{dis}}$\si{\per\second}.
</documentation>
<pattern>
917
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Dislocation_20creep_20prefactor>
<Dislocation_20viscosity_20iteration_20number>
<value>
100
</value>
<default_value>
100
</default_value>
<documentation>
We need to perform an iteration inside the computation of the dislocation viscosity, because it depends on the dislocation strain rate, which depends on the dislocation viscosity itself. This number determines the maximum number of iterations that are performed. 
</documentation>
<pattern>
913
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Dislocation_20viscosity_20iteration_20number>
<Dislocation_20viscosity_20iteration_20threshold>
<value>
1e-3
</value>
<default_value>
1e-3
</default_value>
<documentation>
We need to perform an iteration inside the computation of the dislocation viscosity, because it depends on the dislocation strain rate, which depends on the dislocation viscosity itself. This number determines the termination accuracy, i.e. if the dislocation viscosity changes by less than this factor we terminate the iteration.
</documentation>
<pattern>
912
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Dislocation_20viscosity_20iteration_20threshold>
<Geometric_20constant>
<value>
3.
</value>
<default_value>
3.
</default_value>
<documentation>
The geometric constant $c$ used in the paleowattmeter grain size reduction law. List must have one more entry than the Phase transition depths. Units: none.
</documentation>
<pattern>
959
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Geometric_20constant>
<Grain_20growth_20activation_20energy>
<value>
3.5e5
</value>
<default_value>
3.5e5
</default_value>
<documentation>
The activation energy for grain growth $E_g$. List must have one more entry than the Phase transition depths. Units: \si{\joule\per\mole}.
</documentation>
<pattern>
948
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Grain_20growth_20activation_20energy>
<Grain_20growth_20activation_20volume>
<value>
8e-6
</value>
<default_value>
8e-6
</default_value>
<documentation>
The activation volume for grain growth $V_g$. List must have one more entry than the Phase transition depths. Units: \si{\meter\cubed\per\mole}.
</documentation>
<pattern>
949
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Grain_20growth_20activation_20volume>
<Grain_20growth_20exponent>
<value>
3.
</value>
<default_value>
3.
</default_value>
<documentation>
The exponent of the grain growth law $p_g$. This is an experimentally determined grain growth constant. List must have one more entry than the Phase transition depths. Units: none.
</documentation>
<pattern>
950
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Grain_20growth_20exponent>
<Grain_20growth_20rate_20constant>
<value>
1.5e-5
</value>
<default_value>
1.5e-5
</default_value>
<documentation>
The prefactor for the Ostwald ripening grain growth law $G_0$. This is dependent on water content, which is assumed to be 50 H/$10^6$ Si for the default value. List must have one more entry than the Phase transition depths. Units: \si{\meter}$^{p_g}$\si{\per\second}.
</documentation>
<pattern>
951
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Grain_20growth_20rate_20constant>
<Grain_20size_20evolution_20formulation>
<value>
paleowattmeter
</value>
<default_value>
paleowattmeter
</default_value>
<documentation>
A flag indicating whether the material model should use the paleowattmeter approach of Austin and Evans (2007) for grain size reduction in the dislocation creep regime, the paleopiezometer approach from Hall and Parmetier (2003), or the pinned grain damage approach from Mulyukova and Bercovici (2018).
</documentation>
<pattern>
955
</pattern>
<pattern_description>
[Selection paleowattmeter|paleopiezometer|pinned grain damage ]
</pattern_description>
</Grain_20size_20evolution_20formulation>
<Lower_20mantle_20grain_20size_20scaling>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
This option does not exist any more.
</documentation>
<pattern>
961
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Lower_20mantle_20grain_20size_20scaling>
<Material_20file_20format>
<value>
perplex
</value>
<default_value>
perplex
</default_value>
<documentation>
The material file format to be read in the property tables.
</documentation>
<pattern>
938
</pattern>
<pattern_description>
[Selection perplex|hefesto ]
</pattern_description>
</Material_20file_20format>
<Material_20file_20names>
<value>
pyr-ringwood88.txt
</value>
<default_value>
pyr-ringwood88.txt
</default_value>
<documentation>
The file names of the material data. List with as many components as active compositional fields (material data is assumed to be in order with the ordering of the fields). 
</documentation>
<pattern>
935
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Material_20file_20names>
<Maximum_20latent_20heat_20substeps>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The maximum number of substeps over the temperature pressure range to calculate the averaged enthalpy gradient over a cell.
</documentation>
<pattern>
930
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Maximum_20latent_20heat_20substeps>
<Maximum_20specific_20heat>
<value>
6000.
</value>
<default_value>
6000.
</default_value>
<documentation>
The maximum specific heat that is allowed in the whole model domain. Units: J/kg/K.
</documentation>
<pattern>
927
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20specific_20heat>
<Maximum_20temperature_20dependence_20of_20viscosity>
<value>
100.
</value>
<default_value>
100.
</default_value>
<documentation>
The factor by which viscosity at adiabatic temperature and ambient temperature are allowed to differ (a value of x means that the viscosity can be x times higher or x times lower compared to the value at adiabatic temperature. This parameter is introduced to limit local viscosity contrasts, but still allow for a widely varying viscosity over the whole mantle range. Units: none.
</documentation>
<pattern>
923
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20temperature_20dependence_20of_20viscosity>
<Maximum_20thermal_20expansivity>
<value>
1e-3
</value>
<default_value>
1e-3
</default_value>
<documentation>
The maximum thermal expansivity that is allowed in the whole model domain. Units: 1/K.
</documentation>
<pattern>
929
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20thermal_20expansivity>
<Maximum_20viscosity>
<value>
1e26
</value>
<default_value>
1e26
</default_value>
<documentation>
The maximum viscosity that is allowed in the whole model domain. Units: Pa \, s.
</documentation>
<pattern>
925
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20viscosity>
<Maximum_20yield_20stress>
<value>
1e12
</value>
<default_value>
1e12
</default_value>
<documentation>
Limits the maximum value of the yield stress determined by the Drucker-Prager plasticity parameters. Default value is chosen so this is not automatically used. Values of 100e6--1000e6 $Pa$ have been used in previous models. Units: \si{\pascal}.
</documentation>
<pattern>
945
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20yield_20stress>
<Minimum_20grain_20size>
<value>
1e-5
</value>
<default_value>
1e-5
</default_value>
<documentation>
The minimum grain size that is used for the material model. This parameter is introduced to limit local viscosity contrasts, but still allows for a widely varying viscosity over the whole mantle range. Units: \si{\meter}.
</documentation>
<pattern>
960
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20grain_20size>
<Minimum_20specific_20heat>
<value>
500.
</value>
<default_value>
500.
</default_value>
<documentation>
The minimum specific heat that is allowed in the whole model domain. Units: J/kg/K.
</documentation>
<pattern>
926
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20specific_20heat>
<Minimum_20thermal_20expansivity>
<value>
1e-5
</value>
<default_value>
1e-5
</default_value>
<documentation>
The minimum thermal expansivity that is allowed in the whole model domain. Units: 1/K.
</documentation>
<pattern>
928
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20thermal_20expansivity>
<Minimum_20viscosity>
<value>
1e18
</value>
<default_value>
1e18
</default_value>
<documentation>
The minimum viscosity that is allowed in the whole model domain. Units: Pa \, s.
</documentation>
<pattern>
924
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20viscosity>
<Phase_20transition_20Clapeyron_20slopes>
<value/>
<default_value/>
<documentation>
A list of Clapeyron slopes for each phase transition. A positive Clapeyron slope indicates that the phase transition will occur in a greater depth, if the temperature is higher than the one given in Phase transition temperatures and in a smaller depth, if the temperature is smaller than the one given in Phase transition temperatures. For negative slopes the other way round. List must have the same number of entries as Phase transition depths. Units: \si{\pascal\per\kelvin}.
</documentation>
<pattern>
911
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20Clapeyron_20slopes>
<Phase_20transition_20depths>
<value/>
<default_value/>
<documentation>
A list of depths where phase transitions occur. Values must monotonically increase. Units: \si{\meter}.
</documentation>
<pattern>
903
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20depths>
<Phase_20transition_20pressure_20widths>
<value/>
<default_value/>
<documentation>
A list of widths for each phase transition, in terms of pressure. The phase functions are scaled with these values, leading to a jump between phases for a value of zero and a gradual transition for larger values. List must have the same number of entries as Phase transition pressures. Define transition by depth instead of pressure must be set to false to use this parameter. Units: \si{\pascal}.
</documentation>
<pattern>
906
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20pressure_20widths>
<Phase_20transition_20pressures>
<value/>
<default_value/>
<documentation>
A list of pressures where phase transitions occur. Values must monotonically increase. Define transition by depth instead of pressure must be set to false to use this parameter. Units: \si{\pascal}.
</documentation>
<pattern>
905
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20pressures>
<Phase_20transition_20temperature_20lower_20limits>
<value>
-1.7976931348623157e+308
</value>
<default_value>
-1.7976931348623157e+308
</default_value>
<documentation>
A list of lower temperature limits for each phase transition. Below this temperature the respective phase transition is deactivated. The default value means there is no lower limit for any phase transition. List must have the same number of entries as Phase transition depths. When the optional temperature limits are applied, the user has to be careful about the consistency between adjacent phases. Phase transitions should be continuous in pressure-temperature space. We recommend producing a phase diagram with simple model setups to check the implementation as a starting point.Units: \si{\kelvin}.
</documentation>
<pattern>
910
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20temperature_20lower_20limits>
<Phase_20transition_20temperature_20upper_20limits>
<value>
1.7976931348623157e+308
</value>
<default_value>
1.7976931348623157e+308
</default_value>
<documentation>
A list of upper temperature limits for each phase transition. Above this temperature the respective phase transition is deactivated. The default value means there is no upper limit for any phase transitions. List must have the same number of entries as Phase transition depths. When the optional temperature limits are applied, the user has to be careful about the consistency between adjacent phases. Phase transitions should be continuous in pressure-temperature space. We recommend producing a phase diagram with simple model setups to check the implementation as a starting point.Units: \si{\kelvin}.
</documentation>
<pattern>
909
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20temperature_20upper_20limits>
<Phase_20transition_20temperatures>
<value/>
<default_value/>
<documentation>
A list of temperatures where phase transitions occur. Higher or lower temperatures lead to phase transition occurring in smaller or greater depths than given in Phase transition depths, depending on the Clapeyron slope given in Phase transition Clapeyron slopes. List must have the same number of entries as Phase transition depths. Units: \si{\kelvin}.
</documentation>
<pattern>
908
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20temperatures>
<Phase_20transition_20widths>
<value/>
<default_value/>
<documentation>
A list of widths for each phase transition, in terms of depth. The phase functions are scaled with these values, leading to a jump between phases for a value of zero and a gradual transition for larger values. List must have the same number of entries as Phase transition depths. Units: \si{\meter}.
</documentation>
<pattern>
904
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20widths>
<Phase_20volume_20fraction>
<value>
0.4
</value>
<default_value>
0.4
</default_value>
<documentation>
The volume fraction of one of the phases in the two-phase damage model of Bercovici and Ricard (2012). The volume fraction of the other phase can be simply calculated by subtracting from one. This parameter is only used in the pinned state grain damage formulation.Units: none.
</documentation>
<pattern>
954
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Phase_20volume_20fraction>
<Plastic_20damper_20viscosity>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
Viscosity of the damper that acts in parallel with the plastic viscosity to produce mesh-independent behavior at sufficient resolutions. Units: \si{\pascal\second}
</documentation>
<pattern>
947
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Plastic_20damper_20viscosity>
<Reciprocal_20required_20strain>
<value>
10.
</value>
<default_value>
10.
</default_value>
<documentation>
This parameter ($\lambda$) gives an estimate of the strain necessary to achieve a new grain size. List must have one more entry than the Phase transition depths.
</documentation>
<pattern>
952
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reciprocal_20required_20strain>
<Recrystallized_20grain_20size>
<value/>
<default_value/>
<documentation>
The grain size $d_{ph}$ to that a phase will be reduced to when crossing a phase transition. When set to zero, grain size will not be reduced. List must have the same number of entries as Phase transition depths. Units: \si{\meter}.
</documentation>
<pattern>
953
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Recrystallized_20grain_20size>
<Reference_20compressibility>
<value>
4e-12
</value>
<default_value>
4e-12
</default_value>
<documentation>
The value of the reference compressibility. Units: \si{\per\pascal}.
</documentation>
<pattern>
902
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20compressibility>
<Reference_20density>
<value>
3300
</value>
<default_value>
3300
</default_value>
<documentation>
The reference density $\rho_0$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
896
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20density>
<Reference_20specific_20heat>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
The value of the specific heat $cp$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
900
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20specific_20heat>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. Units: \si{\kelvin}.
</documentation>
<pattern>
897
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
899
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20expansion_20coefficient>
<value>
2e-5
</value>
<default_value>
2e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\alpha$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
901
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient>
<Use_20Drucker_2dPrager_20rheology>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
This parameter determines whether to apply plastic yielding according to a Drucker-Prager rheology after computing the viscosity from the (grain-size dependent) visous creep flow laws (if true) or not (if false).
</documentation>
<pattern>
941
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20Drucker_2dPrager_20rheology>
<Use_20adiabatic_20pressure_20for_20yield_20stress>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use the adiabatic pressure (if true) instead of the full (non-negative) pressure (if false) when calculating the yield stress. Using the adiabatic pressure (which is analogous to the depth-dependent von Mises model) can be useful to avoid the strong non-linearity associated with dynamic pressure variations affecting the yield strength, which can make the problem ill-posed. However, dynamic pressure can affect the localization of the strain rate and the resulting deformation, and neglecting it therefore changes the solution.
</documentation>
<pattern>
942
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20adiabatic_20pressure_20for_20yield_20stress>
<Use_20enthalpy_20for_20material_20properties>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
This parameter determines whether to use the enthalpy to calculate the thermal expansivity and specific heat (if true) or use the thermal expansivity and specific heat values from the material properties table directly (if false).
</documentation>
<pattern>
939
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20enthalpy_20for_20material_20properties>
<Use_20paleowattmeter>
<value>
default
</value>
<default_value>
default
</default_value>
<documentation>
A flag indicating whether the computation should use the paleowattmeter approach of Austin and Evans (2007) for grain size reduction in the dislocation creep regime (if true) or the paleopiezometer approach from Hall and Parmetier (2003) (if false). This parameter has been removed. Use &apos;Grain size evolution formulation&apos; instead.
</documentation>
<pattern>
956
</pattern>
<pattern_description>
[Selection true|false|default ]
</pattern_description>
</Use_20paleowattmeter>
<Use_20plastic_20damper>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use a plastic damper when computing the Drucker-Prager plastic viscosity. The damper acts to stabilize the plastic shear band width and remove associated mesh-dependent behavior at sufficient resolutions.
</documentation>
<pattern>
946
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20plastic_20damper>
<Use_20table_20properties>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
This parameter determines whether to use the table properties also for density, thermal expansivity and specific heat. If false the properties are generated as in the simple compressible plugin.
</documentation>
<pattern>
937
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20table_20properties>
<Viscosity>
<value>
5e24
</value>
<default_value>
5e24
</default_value>
<documentation>
The value of the constant viscosity. Units: \si{\pascal\second}.
</documentation>
<pattern>
898
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity>
<Work_20fraction_20for_20boundary_20area_20change>
<value>
0.1
</value>
<default_value>
0.1
</default_value>
<documentation>
The fraction $\chi$ of work done by dislocation creep to change the grain boundary area. List must have one more entry than the Phase transition depths. Units: \si{\joule\per\meter\squared}.
</documentation>
<pattern>
958
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Work_20fraction_20for_20boundary_20area_20change>
<Grain_20damage_20partitioning>
<Grain_20size_20reduction_20work_20fraction_20exponent>
<value>
10
</value>
<default_value>
10
</default_value>
<documentation>
This parameter determines the variability in how much shear heating is partitioned into grain damage. A higher value suggests a wider temperature range over which the partitioning coefficient is high.
</documentation>
<pattern>
967
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Grain_20size_20reduction_20work_20fraction_20exponent>
<Maximum_20grain_20size_20reduction_20work_20fraction>
<value>
1e-1
</value>
<default_value>
1e-1
</default_value>
<documentation>
This parameter determines the maximum value of the partitioning coefficient, which governs the amount of shear heating partitioned into grain damage in the pinned state limit.
</documentation>
<pattern>
966
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Maximum_20grain_20size_20reduction_20work_20fraction>
<Minimum_20grain_20size_20reduction_20work_20fraction>
<value>
1e-12
</value>
<default_value>
1e-12
</default_value>
<documentation>
This parameter determines the minimum value of the partitioning coefficient, which governs the amount of shear heating partitioned into grain damage in the pinned state limit.
</documentation>
<pattern>
965
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Minimum_20grain_20size_20reduction_20work_20fraction>
<Temperature_20for_20maximum_20grain_20damage_20partitioning>
<value>
283
</value>
<default_value>
283
</default_value>
<documentation>
This parameter determines the temperature at which the computed coefficient of shear energy partitioned into grain damage is maximum. This is used in the pinned state limit of the grain size evolution. One choice of this parameter is the surface temperature of the seafloor, see Mulyukova and Bercovici (2018) for details.
</documentation>
<pattern>
964
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Temperature_20for_20maximum_20grain_20damage_20partitioning>
<Temperature_20for_20minimum_20grain_20damage_20partitioning>
<value>
1600
</value>
<default_value>
1600
</default_value>
<documentation>
This parameter determines the temperature at which the computed coefficient of shear energy partitioned into grain damage is minimum. This is used in the pinned state limit of the grain size evolution. One choice of this parameter is the mantle temperature at the ridge axis, see Mulyukova and Bercovici (2018) for details.
</documentation>
<pattern>
963
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Temperature_20for_20minimum_20grain_20damage_20partitioning>
</Grain_20damage_20partitioning>
</Grain_20size_20model>
<Latent_20heat>
<Composition_20viscosity_20prefactor>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
A linear dependency of viscosity on composition. Dimensionless prefactor.
</documentation>
<pattern>
696
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Composition_20viscosity_20prefactor>
<Compressibility>
<value>
5.124e-12
</value>
<default_value>
5.124e-12
</default_value>
<documentation>
The value of the compressibility $\kappa$. Units: \si{\per\pascal}.
</documentation>
<pattern>
701
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Compressibility>
<Corresponding_20phase_20for_20density_20jump>
<value/>
<default_value/>
<documentation>
A list of phases, which correspond to the Phase transition density jumps. The density jumps occur only in the phase that is given by this phase value. 0 stands for the 1st compositional fields, 1 for the second compositional field and -1 for none of them. List must have the same number of entries as Phase transition depths. Units: \si{\pascal\per\kelvin}.
</documentation>
<pattern>
704
</pattern>
<pattern_description>
[List of &lt;[Integer range 0...2147483647 (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Corresponding_20phase_20for_20density_20jump>
<Define_20transition_20by_20depth_20instead_20of_20pressure>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to list phase transitions by depth or pressure. If this parameter is true, then the input file will use Phase transitions depths and Phase transition widths to define the phase transition. If it is false, the parameter file will read in phase transition data from Phase transition pressures and Phase transition pressure widths.
</documentation>
<pattern>
712
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Define_20transition_20by_20depth_20instead_20of_20pressure>
<Density_20differential_20for_20compositional_20field_201>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
If compositional fields are used, then one would frequently want to make the density depend on these fields. In this simple material model, we make the following assumptions: if no compositional fields are used in the current simulation, then the density is simply the usual one with its linear dependence on the temperature. If there are compositional fields, then the density only depends on the first one in such a way that the density has an additional term of the kind $+\Delta \rho \; c_1(\mathbf x)$. This parameter describes the value of $\Delta \rho$. Units: \si{\kilogram\per\meter\cubed}/unit change in composition.
</documentation>
<pattern>
702
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Density_20differential_20for_20compositional_20field_201>
<Maximum_20viscosity>
<value>
1e24
</value>
<default_value>
1e24
</default_value>
<documentation>
Limit for the maximum viscosity in the model. Units: Pa \, s.
</documentation>
<pattern>
707
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20viscosity>
<Minimum_20viscosity>
<value>
1e19
</value>
<default_value>
1e19
</default_value>
<documentation>
Limit for the minimum viscosity in the model. Units: Pa \, s.
</documentation>
<pattern>
706
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20viscosity>
<Phase_20transition_20Clapeyron_20slopes>
<value/>
<default_value/>
<documentation>
A list of Clapeyron slopes for each phase transition. A positive Clapeyron slope indicates that the phase transition will occur in a greater depth, if the temperature is higher than the one given in Phase transition temperatures and in a smaller depth, if the temperature is smaller than the one given in Phase transition temperatures. For negative slopes the other way round. List must have the same number of entries as Phase transition depths. Units: \si{\pascal\per\kelvin}.
</documentation>
<pattern>
716
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20Clapeyron_20slopes>
<Phase_20transition_20density_20jumps>
<value/>
<default_value/>
<documentation>
A list of density jumps at each phase transition. A positive value means that the density increases with depth. The corresponding entry in Corresponding phase for density jump determines if the density jump occurs in peridotite, eclogite or none of them.List must have the same number of entries as Phase transition depths. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
703
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Phase_20transition_20density_20jumps>
<Phase_20transition_20depths>
<value/>
<default_value/>
<documentation>
A list of depths where phase transitions occur. Values must monotonically increase. Units: \si{\meter}.
</documentation>
<pattern>
708
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20depths>
<Phase_20transition_20pressure_20widths>
<value/>
<default_value/>
<documentation>
A list of widths for each phase transition, in terms of pressure. The phase functions are scaled with these values, leading to a jump between phases for a value of zero and a gradual transition for larger values. List must have the same number of entries as Phase transition pressures. Define transition by depth instead of pressure must be set to false to use this parameter. Units: \si{\pascal}.
</documentation>
<pattern>
711
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20pressure_20widths>
<Phase_20transition_20pressures>
<value/>
<default_value/>
<documentation>
A list of pressures where phase transitions occur. Values must monotonically increase. Define transition by depth instead of pressure must be set to false to use this parameter. Units: \si{\pascal}.
</documentation>
<pattern>
710
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20pressures>
<Phase_20transition_20temperature_20lower_20limits>
<value>
-1.7976931348623157e+308
</value>
<default_value>
-1.7976931348623157e+308
</default_value>
<documentation>
A list of lower temperature limits for each phase transition. Below this temperature the respective phase transition is deactivated. The default value means there is no lower limit for any phase transition. List must have the same number of entries as Phase transition depths. When the optional temperature limits are applied, the user has to be careful about the consistency between adjacent phases. Phase transitions should be continuous in pressure-temperature space. We recommend producing a phase diagram with simple model setups to check the implementation as a starting point.Units: \si{\kelvin}.
</documentation>
<pattern>
715
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20temperature_20lower_20limits>
<Phase_20transition_20temperature_20upper_20limits>
<value>
1.7976931348623157e+308
</value>
<default_value>
1.7976931348623157e+308
</default_value>
<documentation>
A list of upper temperature limits for each phase transition. Above this temperature the respective phase transition is deactivated. The default value means there is no upper limit for any phase transitions. List must have the same number of entries as Phase transition depths. When the optional temperature limits are applied, the user has to be careful about the consistency between adjacent phases. Phase transitions should be continuous in pressure-temperature space. We recommend producing a phase diagram with simple model setups to check the implementation as a starting point.Units: \si{\kelvin}.
</documentation>
<pattern>
714
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20temperature_20upper_20limits>
<Phase_20transition_20temperatures>
<value/>
<default_value/>
<documentation>
A list of temperatures where phase transitions occur. Higher or lower temperatures lead to phase transition occurring in smaller or greater depths than given in Phase transition depths, depending on the Clapeyron slope given in Phase transition Clapeyron slopes. List must have the same number of entries as Phase transition depths. Units: \si{\kelvin}.
</documentation>
<pattern>
713
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20temperatures>
<Phase_20transition_20widths>
<value/>
<default_value/>
<documentation>
A list of widths for each phase transition, in terms of depth. The phase functions are scaled with these values, leading to a jump between phases for a value of zero and a gradual transition for larger values. List must have the same number of entries as Phase transition depths. Units: \si{\meter}.
</documentation>
<pattern>
709
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20widths>
<Reference_20density>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
Reference density $\rho_0$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
693
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20density>
<Reference_20specific_20heat>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
The value of the specific heat $C_p$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
699
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20specific_20heat>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. Units: \si{\kelvin}.
</documentation>
<pattern>
694
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Thermal_20conductivity>
<value>
2.38
</value>
<default_value>
2.38
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
698
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20expansion_20coefficient>
<value>
4e-5
</value>
<default_value>
4e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\beta$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
700
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient>
<Thermal_20viscosity_20exponent>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature dependence of viscosity. Dimensionless exponent.
</documentation>
<pattern>
697
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20viscosity_20exponent>
<Viscosity>
<value>
5e24
</value>
<default_value>
5e24
</default_value>
<documentation>
The value of the constant viscosity. Units: \si{\pascal\second}.
</documentation>
<pattern>
695
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity>
<Viscosity_20prefactors>
<value/>
<default_value/>
<documentation>
A list of prefactors for the viscosity for each phase. The reference viscosity will be multiplied by this factor to get the corresponding viscosity for each phase. List must have one more entry than Phase transition depths. Units: non-dimensional.
</documentation>
<pattern>
705
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Viscosity_20prefactors>
</Latent_20heat>
<Latent_20heat_20melt>
<A1>
<value>
1085.7
</value>
<default_value>
1085.7
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the solidus of peridotite. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
728
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A1>
<A2>
<value>
1.329e-7
</value>
<default_value>
1.329e-7
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the solidus of peridotite. Units: \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
729
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A2>
<A3>
<value>
-5.1e-18
</value>
<default_value>
-5.1e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the solidus of peridotite. Units: \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
730
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A3>
<B1>
<value>
1475.0
</value>
<default_value>
1475.0
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the lherzolite liquidus used for calculating the fraction of peridotite-derived melt. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
731
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B1>
<B2>
<value>
8.0e-8
</value>
<default_value>
8.0e-8
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the  lherzolite liquidus used for calculating the fraction of peridotite-derived melt. Units: \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
732
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B2>
<B3>
<value>
-3.2e-18
</value>
<default_value>
-3.2e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the  lherzolite liquidus used for calculating the fraction of peridotite-derived melt. Units: \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
733
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B3>
<C1>
<value>
1780.0
</value>
<default_value>
1780.0
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the liquidus of peridotite. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
734
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C1>
<C2>
<value>
4.50e-8
</value>
<default_value>
4.50e-8
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the liquidus of peridotite. Units: \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
735
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C2>
<C3>
<value>
-2.0e-18
</value>
<default_value>
-2.0e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the liquidus of peridotite. Units: \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
736
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C3>
<Composition_20viscosity_20prefactor>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
A linear dependency of viscosity on composition. Dimensionless prefactor.
</documentation>
<pattern>
720
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Composition_20viscosity_20prefactor>
<Compressibility>
<value>
5.124e-12
</value>
<default_value>
5.124e-12
</default_value>
<documentation>
The value of the compressibility $\kappa$. Units: \si{\per\pascal}.
</documentation>
<pattern>
726
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Compressibility>
<D1>
<value>
976.0
</value>
<default_value>
976.0
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the solidus of pyroxenite. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
742
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</D1>
<D2>
<value>
1.329e-7
</value>
<default_value>
1.329e-7
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the solidus of pyroxenite. Note that this factor is different from the value given in Sobolev, 2011, because they use the potential temperature whereas we use the absolute temperature. Units: \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
743
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</D2>
<D3>
<value>
-5.1e-18
</value>
<default_value>
-5.1e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the solidus of pyroxenite. Units: \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
744
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</D3>
<Density_20differential_20for_20compositional_20field_201>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
If compositional fields are used, then one would frequently want to make the density depend on these fields. In this simple material model, we make the following assumptions: if no compositional fields are used in the current simulation, then the density is simply the usual one with its linear dependence on the temperature. If there are compositional fields, then the density only depends on the first one in such a way that the density has an additional term of the kind $+\Delta \rho \; c_1(\mathbf x)$. This parameter describes the value of $\Delta \rho$. Units: \si{\kilogram\per\meter\cubed}/unit change in composition.
</documentation>
<pattern>
727
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Density_20differential_20for_20compositional_20field_201>
<E1>
<value>
663.8
</value>
<default_value>
663.8
</default_value>
<documentation>
Prefactor of the linear depletion term in the quadratic function that approximates the melt fraction of pyroxenite. Units: \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
745
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</E1>
<E2>
<value>
-611.4
</value>
<default_value>
-611.4
</default_value>
<documentation>
Prefactor of the quadratic depletion term in the quadratic function that approximates the melt fraction of pyroxenite. Units: \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
746
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</E2>
<Mass_20fraction_20cpx>
<value>
0.15
</value>
<default_value>
0.15
</default_value>
<documentation>
Mass fraction of clinopyroxene in the peridotite to be molten. Units: non-dimensional.
</documentation>
<pattern>
741
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Mass_20fraction_20cpx>
<Maximum_20pyroxenite_20melt_20fraction>
<value>
0.5429
</value>
<default_value>
0.5429
</default_value>
<documentation>
Maximum melt fraction of pyroxenite in this parameterization. At higher temperatures peridotite begins to melt.
</documentation>
<pattern>
748
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20pyroxenite_20melt_20fraction>
<Peridotite_20melting_20entropy_20change>
<value>
-300.
</value>
<default_value>
-300.
</default_value>
<documentation>
The entropy change for the phase transition from solid to melt of peridotite. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
740
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Peridotite_20melting_20entropy_20change>
<Pyroxenite_20melting_20entropy_20change>
<value>
-400.
</value>
<default_value>
-400.
</default_value>
<documentation>
The entropy change for the phase transition from solid to melt of pyroxenite. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
747
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Pyroxenite_20melting_20entropy_20change>
<Reference_20density>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
Reference density $\rho_0$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
717
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20density>
<Reference_20specific_20heat>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
The value of the specific heat $C_p$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
723
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20specific_20heat>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. Units: \si{\kelvin}.
</documentation>
<pattern>
718
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Relative_20density_20of_20melt>
<value>
0.9
</value>
<default_value>
0.9
</default_value>
<documentation>
The relative density of melt compared to the solid material. This means, the density change upon melting is this parameter times the density of solid material.Units: non-dimensional.
</documentation>
<pattern>
749
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Relative_20density_20of_20melt>
<Thermal_20conductivity>
<value>
2.38
</value>
<default_value>
2.38
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
722
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20expansion_20coefficient>
<value>
4e-5
</value>
<default_value>
4e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\alpha_s$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
724
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient>
<Thermal_20expansion_20coefficient_20of_20melt>
<value>
6.8e-5
</value>
<default_value>
6.8e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\alpha_f$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
725
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient_20of_20melt>
<Thermal_20viscosity_20exponent>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature dependence of viscosity. Dimensionless exponent.
</documentation>
<pattern>
721
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20viscosity_20exponent>
<Viscosity>
<value>
5e24
</value>
<default_value>
5e24
</default_value>
<documentation>
The value of the constant viscosity. Units: \si{\pascal\second}.
</documentation>
<pattern>
719
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity>
<beta>
<value>
1.5
</value>
<default_value>
1.5
</default_value>
<documentation>
Exponent of the melting temperature in the melt fraction calculation. Units: non-dimensional.
</documentation>
<pattern>
739
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</beta>
<r1>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
Constant in the linear function that approximates the clinopyroxene reaction coefficient. Units: non-dimensional.
</documentation>
<pattern>
737
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</r1>
<r2>
<value>
8e-11
</value>
<default_value>
8e-11
</default_value>
<documentation>
Prefactor of the linear pressure term in the linear function that approximates the clinopyroxene reaction coefficient. Units: \si{\per\pascal}.
</documentation>
<pattern>
738
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</r2>
</Latent_20heat_20melt>
<Melt_20boukare>
<Einstein_20temperatures>
<value>
418.1, 561.0, 297.6, 540.2, 505.75, 558.1, 558.1
</value>
<default_value>
418.1, 561.0, 297.6, 540.2, 505.75, 558.1, 558.1
</default_value>
<documentation>
List of Einstein temperatures for each different endmember.Units: K.
</documentation>
<pattern>
775
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Einstein_20temperatures>
<Endmember_20names>
<value>
FeSiO3_bridgmanite, MgSiO3_bridgmanite, FeO_periclase, MgO_periclase, FeO_melt, MgO_melt, SiO2_melt
</value>
<default_value>
FeSiO3_bridgmanite, MgSiO3_bridgmanite, FeO_periclase, MgO_periclase, FeO_melt, MgO_melt, SiO2_melt
</default_value>
<documentation>
Names of the endmember components used in the equation of state and the melting model, and whose parameters are determined by the other input parameters of this material model. The order the parameters are given in has to be the same as the order the endmember names are given in. Units: none.
</documentation>
<pattern>
766
</pattern>
<pattern_description>
[List of &lt;[MultipleSelection MgSiO3_bridgmanite|FeSiO3_bridgmanite|MgO_periclase|FeO_periclase|MgO_melt|FeO_melt|SiO2_melt ]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Endmember_20names>
<Endmember_20states>
<value>
solid, solid, solid, solid, melt, melt, melt
</value>
<default_value>
solid, solid, solid, solid, melt, melt, melt
</default_value>
<documentation>
States of the endmember components used in the equation of state and the melting model. For each endmember, this list has to define if they belong to the melt or to the solid. The order the states are given in has to be the same as the order the &apos;Endmember names&apos; are given in. Units: none.
</documentation>
<pattern>
767
</pattern>
<pattern_description>
[List of &lt;[MultipleSelection solid|melt ]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Endmember_20states>
<Exponential_20melt_20weakening_20factor>
<value>
27
</value>
<default_value>
27
</default_value>
<documentation>
The porosity dependence of the viscosity. Units: dimensionless.
</documentation>
<pattern>
753
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Exponential_20melt_20weakening_20factor>
<Fe_20mantle_20melting_20temperature>
<value>
3424.5
</value>
<default_value>
3424.5
</default_value>
<documentation>
The melting temperature of one of the components in the melting model, the Fe mantle endmember.Units: K.
</documentation>
<pattern>
760
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Fe_20mantle_20melting_20temperature>
<Fe_20number_20of_20moles>
<value>
0.48
</value>
<default_value>
0.48
</default_value>
<documentation>
The number of moles of Fe atoms mixing on a pseudosite in the mantle lattice, This is needed because we use an empirical model fitting the full Boukare model, and can be changed to reflect partition coefficients from other sources.Units: none.
</documentation>
<pattern>
762
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Fe_20number_20of_20moles>
<First_20derivatives_20of_20the_20bulk_20modulus>
<value>
4.14, 4.14, 4.9, 3.95, 5.0802472229003905, 4.25, 4.25
</value>
<default_value>
4.14, 4.14, 4.9, 3.95, 5.0802472229003905, 4.25, 4.25
</default_value>
<documentation>
The pressure derivative of the bulk modulus at the reference temperature and reference pressure for each different endmember component.Units: none.
</documentation>
<pattern>
773
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</First_20derivatives_20of_20the_20bulk_20modulus>
<Include_20melting_20and_20freezing>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to include melting and freezing (according to a simplified linear melting approximation in the model (if true), or not (if false).
</documentation>
<pattern>
758
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Include_20melting_20and_20freezing>
<Linear_20coefficients_20for_20specific_20heat_20polynomial>
<value>
6.36191292e-03, -3.31714290e-03, 3.36163516e-03, -6.35318887e-03, -2.41909947e-03, -2.41909947e-03, -2.41909947e-03
</value>
<default_value>
6.36191292e-03, -3.31714290e-03, 3.36163516e-03, -6.35318887e-03, -2.41909947e-03, -2.41909947e-03, -2.41909947e-03
</default_value>
<documentation>
The first of three coefficients that are used to compute the specific heat capacities for each different endmember at the reference temperature and reference pressure. This coefficient describes the linear part of the temperature dependence. Units: J/kg/K/K.
</documentation>
<pattern>
779
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Linear_20coefficients_20for_20specific_20heat_20polynomial>
<Melting_20time_20scale_20for_20operator_20splitting>
<value>
1e3
</value>
<default_value>
1e3
</default_value>
<documentation>
In case the operator splitting scheme is used, the porosity field can not be set to a new equilibrium melt fraction instantly, but the model has to provide a melting time scale instead. This time scale defines how fast melting happens, or more specifically, the parameter defines the time after which the deviation of the porosity from the equilibrium melt fraction will be reduced to a fraction of $1/e$. So if the melting time scale is small compared to the time step size, the reaction will be so fast that the porosity is very close to the equilibrium melt fraction after reactions are computed. Conversely, if the melting time scale is large compared to the time step size, almost no melting and freezing will occur.

Also note that the melting time scale has to be larger than or equal to the reaction time step used in the operator splitting scheme, otherwise reactions can not be computed. If the model does not use operator splitting, this parameter is not used. Units: yr or s, depending on the ``Use years in output instead of seconds&apos;&apos; parameter.
</documentation>
<pattern>
759
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melting_20time_20scale_20for_20operator_20splitting>
<Mg_20mantle_20melting_20temperature>
<value>
4821.2
</value>
<default_value>
4821.2
</default_value>
<documentation>
The melting temperature of one of the components in the melting model, the Mg mantle endmember.Units: K.
</documentation>
<pattern>
761
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Mg_20mantle_20melting_20temperature>
<Mg_20number_20of_20moles>
<value>
0.62
</value>
<default_value>
0.62
</default_value>
<documentation>
The number of moles of Mg atoms mixing on a pseudosite in the mantle lattice, This is needed because we use an empirical model fitting the full Boukare model, and can be changed to reflect partition coefficients from other sources.Units: none.
</documentation>
<pattern>
763
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Mg_20number_20of_20moles>
<Molar_20masses>
<value>
0.1319287, 0.1003887, 0.0718444, 0.0403044, 0.0707624708, 0.048592178, 0.048592178
</value>
<default_value>
0.1319287, 0.1003887, 0.0718444, 0.0403044, 0.0707624708, 0.048592178, 0.048592178
</default_value>
<documentation>
Molar masses of the different endmembersUnits: kg/mol.
</documentation>
<pattern>
768
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Molar_20masses>
<Number_20of_20atoms>
<value>
5.0, 5.0, 2.0, 2.0, 2.092, 2.419, 2.419
</value>
<default_value>
5.0, 5.0, 2.0, 2.0, 2.092, 2.419, 2.419
</default_value>
<documentation>
Number of atoms per in the formula of each endmember.Units: none.
</documentation>
<pattern>
769
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Number_20of_20atoms>
<Reference_20bulk_20moduli>
<value>
2.81e11, 2.51e+11, 1.52e11, 1.616e11, 166652774642.11273, 2.317e11, 2.317e11
</value>
<default_value>
2.81e11, 2.51e+11, 1.52e11, 1.616e11, 166652774642.11273, 2.317e11, 2.317e11
</default_value>
<documentation>
List of bulk moduli for each different endmember at the reference temperature and reference pressure.Units: Pa.
</documentation>
<pattern>
772
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20bulk_20moduli>
<Reference_20bulk_20viscosity>
<value>
1e22
</value>
<default_value>
1e22
</default_value>
<documentation>
The value of the constant bulk viscosity $\xi_0$ of the solid matrix. This viscosity may be modified by both temperature and porosity dependencies. Units: $Pa \, s$.
</documentation>
<pattern>
751
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20bulk_20viscosity>
<Reference_20enthalpies>
<value>
-1082910.0, -1442310.0, -262240.0, -601570.0, -195245.49100022088, -538009.8, -538009.8
</value>
<default_value>
-1082910.0, -1442310.0, -262240.0, -601570.0, -195245.49100022088, -538009.8, -538009.8
</default_value>
<documentation>
List of enthalpies at the reference temperature and reference pressure for each different endmember component.Units: J/mol.
</documentation>
<pattern>
776
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20enthalpies>
<Reference_20entropies>
<value>
95.0, 62.6, 58.6, 26.5, 95.0299295525918, 64.9, 64.9
</value>
<default_value>
95.0, 62.6, 58.6, 26.5, 95.0299295525918, 64.9, 64.9
</default_value>
<documentation>
List of entropies at the reference temperature and reference pressure for each different endmember component.Units: J/K/mol.
</documentation>
<pattern>
777
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20entropies>
<Reference_20melt_20viscosity>
<value>
10
</value>
<default_value>
10
</default_value>
<documentation>
The value of the constant melt viscosity $\eta_f$. Units: $Pa \, s$.
</documentation>
<pattern>
752
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20melt_20viscosity>
<Reference_20permeability>
<value>
1e-8
</value>
<default_value>
1e-8
</default_value>
<documentation>
Reference permeability of the solid host rock.Units: $m^2$.
</documentation>
<pattern>
757
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20permeability>
<Reference_20pressure>
<value>
1e11
</value>
<default_value>
1e11
</default_value>
<documentation>
Reference pressure used to compute the material propertiesof the different endmember components.Units: Pa.
</documentation>
<pattern>
765
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20pressure>
<Reference_20shear_20viscosity>
<value>
5e20
</value>
<default_value>
5e20
</default_value>
<documentation>
The value of the constant viscosity $\eta_0$ of the solid matrix. This viscosity may be modified by both temperature and porosity dependencies. Units: $Pa \, s$.
</documentation>
<pattern>
750
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20shear_20viscosity>
<Reference_20specific_20heat_20capacities>
<value>
139.546209, 161.546581, 52.0016403, 73.1147154, 79.5326013, 79.5326013, 79.5326013
</value>
<default_value>
139.546209, 161.546581, 52.0016403, 73.1147154, 79.5326013, 79.5326013, 79.5326013
</default_value>
<documentation>
List of specific heat capacities for each different endmember at the reference temperature and reference pressure.Units: J/kg/K.
</documentation>
<pattern>
778
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20specific_20heat_20capacities>
<Reference_20temperature>
<value>
298.15
</value>
<default_value>
298.15
</default_value>
<documentation>
Reference temperature used to compute the material propertiesof the different endmember components.Units: K.
</documentation>
<pattern>
764
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Reference_20thermal_20expansivities>
<value>
1.87e-05, 1.87e-05, 3.22e-05, 3.11e-05, 2.9614332469401705e-05, 2.06e-05, 2.06e-05
</value>
<default_value>
1.87e-05, 1.87e-05, 3.22e-05, 3.11e-05, 2.9614332469401705e-05, 2.06e-05, 2.06e-05
</default_value>
<documentation>
List of thermal expansivities for each different endmember at the reference temperature and reference pressure.Units: 1/K.
</documentation>
<pattern>
771
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20thermal_20expansivities>
<Reference_20volumes>
<value>
2.534e-05, 2.445e-05, 1.206e-05, 1.125e-05, 1.2325484447664221e-05, 1.218e-05, 1.218e-05
</value>
<default_value>
2.534e-05, 2.445e-05, 1.206e-05, 1.125e-05, 1.2325484447664221e-05, 1.218e-05, 1.218e-05
</default_value>
<documentation>
Reference volumes of the different endmembers.Units: $m^3$.
</documentation>
<pattern>
770
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20volumes>
<Second_20coefficients_20for_20specific_20heat_20polynomial>
<value>
-4.13886524e+06, -3.57533814e+06, -1.19540964e+06, -7.33679285e+05, -1.61692272e+06, -1.61692272e+06, -1.61692272e+06
</value>
<default_value>
-4.13886524e+06, -3.57533814e+06, -1.19540964e+06, -7.33679285e+05, -1.61692272e+06, -1.61692272e+06, -1.61692272e+06
</default_value>
<documentation>
The second of three coefficients that are used to compute the specific heat capacities for each different endmember at the reference temperature and reference pressure. This coefficient describes the part of the temperature dependence that scales as the inverse of the square of the temperature. Units: J K/kg.
</documentation>
<pattern>
780
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Second_20coefficients_20for_20specific_20heat_20polynomial>
<Second_20derivatives_20of_20the_20bulk_20modulus>
<value>
-1.6e-11, -1.6e-11, -3.2e-11, -2.4e-11, -3.9742163085937504e-11, -2.14e-11, -2.14e-11
</value>
<default_value>
-1.6e-11, -1.6e-11, -3.2e-11, -2.4e-11, -3.9742163085937504e-11, -2.14e-11, -2.14e-11
</default_value>
<documentation>
The second pressure derivative of the bulk modulus at the reference temperature and reference pressure for each different endmember component.Units: 1/Pa.
</documentation>
<pattern>
774
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Second_20derivatives_20of_20the_20bulk_20modulus>
<Thermal_20bulk_20viscosity_20exponent>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature dependence of the bulk viscosity. Dimensionless exponent. See the general documentation of this model for a formula that states the dependence of the viscosity on this factor, which is called $\beta$ there.
</documentation>
<pattern>
755
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20bulk_20viscosity_20exponent>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: $W/m/K$.
</documentation>
<pattern>
756
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20viscosity_20exponent>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature dependence of the shear viscosity. Dimensionless exponent. See the general documentation of this model for a formula that states the dependence of the viscosity on this factor, which is called $\beta$ there.
</documentation>
<pattern>
754
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20viscosity_20exponent>
<Third_20coefficients_20for_20specific_20heat_20polynomial>
<value>
-464.775577, -1112.54791, 25.5067110, -592.994207, -562.222634, -562.222634, -562.222634
</value>
<default_value>
-464.775577, -1112.54791, 25.5067110, -592.994207, -562.222634, -562.222634, -562.222634
</default_value>
<documentation>
The third of three coefficients that are used to compute the specific heat capacities for each different endmember at the reference temperature and reference pressure. This coefficient describes the part of the temperature dependence that scales as the inverse of the square root of the temperatureUnits: J/kg/sqrt(K).
</documentation>
<pattern>
781
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Third_20coefficients_20for_20specific_20heat_20polynomial>
</Melt_20boukare>
<Melt_20global>
<Depletion_20density_20change>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The density contrast between material with a depletion of 1 and a depletion of zero. Negative values indicate lower densities of depleted material. Depletion is indicated by the compositional field with the name peridotite. Not used if this field does not exist in the model. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
795
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Depletion_20density_20change>
<Depletion_20solidus_20change>
<value>
200.0
</value>
<default_value>
200.0
</default_value>
<documentation>
The solidus temperature change for a depletion of 100\%. For positive values, the solidus gets increased for a positive peridotite field (depletion) and lowered for a negative peridotite field (enrichment). Scaling with depletion is linear. Only active when fractional melting is used. Units: \si{\kelvin}.
</documentation>
<pattern>
797
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Depletion_20solidus_20change>
<Exponential_20depletion_20strengthening_20factor>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
$\alpha_F$: exponential dependency of viscosity on the depletion field $F$ (called peridotite). Dimensionless factor. With a value of 0.0 (the default) the viscosity does not depend on the depletion. The effective viscosity increasedue to depletion is defined as $std::exp( \alpha_F * F)$. Rationale: melting dehydrates the source rock by removing most of the volatiles,and makes it stronger. Hirth and Kohlstedt (1996) report typical values around a factor 100 to 1000 viscosity contrast between wet and dry rocks, although some experimental studies report a smaller (factor 10) contrast (e.g. Fei et al., 2013).
</documentation>
<pattern>
804
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Exponential_20depletion_20strengthening_20factor>
<Exponential_20melt_20weakening_20factor>
<value>
27.
</value>
<default_value>
27.
</default_value>
<documentation>
The porosity dependence of the viscosity. Units: dimensionless.
</documentation>
<pattern>
788
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Exponential_20melt_20weakening_20factor>
<Include_20melting_20and_20freezing>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to include melting and freezing (according to a simplified linear melting approximation in the model (if true), or not (if false).
</documentation>
<pattern>
802
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Include_20melting_20and_20freezing>
<Maximum_20Depletion_20viscosity_20change>
<value>
1.0e3
</value>
<default_value>
1.0e3
</default_value>
<documentation>
$\Delta \eta_{F,max}$: maximum depletion strengthening of viscosity. Rationale: melting dehydrates the source rock by removing most of the volatiles,and makes it stronger. Hirth and Kohlstedt (1996) report typical values around a factor 100 to 1000 viscosity contrast between wet and dry rocks, although some experimental studies report a smaller (factor 10) contrast (e.g. Fei et al., 2013).
</documentation>
<pattern>
805
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20Depletion_20viscosity_20change>
<Melt_20bulk_20modulus_20derivative>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The value of the pressure derivative of the melt bulk modulus. Units: None.
</documentation>
<pattern>
801
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melt_20bulk_20modulus_20derivative>
<Melt_20compressibility>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The value of the compressibility of the melt. Units: \si{\per\pascal}.
</documentation>
<pattern>
800
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melt_20compressibility>
<Melting_20time_20scale_20for_20operator_20splitting>
<value>
1e3
</value>
<default_value>
1e3
</default_value>
<documentation>
In case the operator splitting scheme is used, the porosity field can not be set to a new equilibrium melt fraction instantly, but the model has to provide a melting time scale instead. This time scale defines how fast melting happens, or more specifically, the parameter defines the time after which the deviation of the porosity from the equilibrium melt fraction will be reduced to a fraction of $1/e$. So if the melting time scale is small compared to the time step size, the reaction will be so fast that the porosity is very close to the equilibrium melt fraction after reactions are computed. Conversely, if the melting time scale is large compared to the time step size, almost no melting and freezing will occur.

Also note that the melting time scale has to be larger than or equal to the reaction time step used in the operator splitting scheme, otherwise reactions can not be computed. If the model does not use operator splitting, this parameter is not used. Units: yr or s, depending on the ``Use years in output instead of seconds&apos;&apos; parameter.
</documentation>
<pattern>
803
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melting_20time_20scale_20for_20operator_20splitting>
<Pressure_20solidus_20change>
<value>
6e-8
</value>
<default_value>
6e-8
</default_value>
<documentation>
The linear solidus temperature change with pressure. For positive values, the solidus gets increased for positive pressures. Units: \si{\per\pascal}.
</documentation>
<pattern>
798
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Pressure_20solidus_20change>
<Reference_20bulk_20viscosity>
<value>
1e22
</value>
<default_value>
1e22
</default_value>
<documentation>
The value of the constant bulk viscosity $\xi_0$ of the solid matrix. This viscosity may be modified by both temperature and porosity dependencies. Units: \si{\pascal\second}.
</documentation>
<pattern>
786
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20bulk_20viscosity>
<Reference_20melt_20density>
<value>
2500.
</value>
<default_value>
2500.
</default_value>
<documentation>
Reference density of the melt/fluid$\rho_{f,0}$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
783
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20melt_20density>
<Reference_20melt_20viscosity>
<value>
10.
</value>
<default_value>
10.
</default_value>
<documentation>
The value of the constant melt viscosity $\eta_f$. Units: \si{\pascal\second}.
</documentation>
<pattern>
787
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20melt_20viscosity>
<Reference_20permeability>
<value>
1e-8
</value>
<default_value>
1e-8
</default_value>
<documentation>
Reference permeability of the solid host rock.Units: \si{\meter\squared}.
</documentation>
<pattern>
794
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20permeability>
<Reference_20shear_20viscosity>
<value>
5e20
</value>
<default_value>
5e20
</default_value>
<documentation>
The value of the constant viscosity $\eta_0$ of the solid matrix. This viscosity may be modified by both temperature and porosity dependencies. Units: \si{\pascal\second}.
</documentation>
<pattern>
785
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20shear_20viscosity>
<Reference_20solid_20density>
<value>
3000.
</value>
<default_value>
3000.
</default_value>
<documentation>
Reference density of the solid $\rho_{s,0}$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
782
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20solid_20density>
<Reference_20specific_20heat>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
The value of the specific heat $C_p$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
792
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20specific_20heat>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. The reference temperature is used in both the density and viscosity formulas. Units: \si{\kelvin}.
</documentation>
<pattern>
784
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Solid_20compressibility>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The value of the compressibility of the solid matrix. Units: \si{\per\pascal}.
</documentation>
<pattern>
799
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Solid_20compressibility>
<Surface_20solidus>
<value>
1300.
</value>
<default_value>
1300.
</default_value>
<documentation>
Solidus for a pressure of zero. Units: \si{\kelvin}.
</documentation>
<pattern>
796
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Surface_20solidus>
<Thermal_20bulk_20viscosity_20exponent>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature dependence of the bulk viscosity. Dimensionless exponent. See the general documentation of this model for a formula that states the dependence of the viscosity on this factor, which is called $\beta$ there.
</documentation>
<pattern>
790
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20bulk_20viscosity_20exponent>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
791
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20expansion_20coefficient>
<value>
2e-5
</value>
<default_value>
2e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\beta$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
793
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient>
<Thermal_20viscosity_20exponent>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature dependence of the shear viscosity. Dimensionless exponent. See the general documentation of this model for a formula that states the dependence of the viscosity on this factor, which is called $\beta$ there.
</documentation>
<pattern>
789
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20viscosity_20exponent>
</Melt_20global>
<Melt_20simple>
<A1>
<value>
1085.7
</value>
<default_value>
1085.7
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the solidus of peridotite. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
806
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A1>
<A2>
<value>
1.329e-7
</value>
<default_value>
1.329e-7
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the solidus of peridotite. Units: \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
807
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A2>
<A3>
<value>
-5.1e-18
</value>
<default_value>
-5.1e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the solidus of peridotite. Units: \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
808
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A3>
<B1>
<value>
1475.0
</value>
<default_value>
1475.0
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the lherzolite liquidus used for calculating the fraction of peridotite-derived melt. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
809
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B1>
<B2>
<value>
8.0e-8
</value>
<default_value>
8.0e-8
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the  lherzolite liquidus used for calculating the fraction of peridotite-derived melt. Units: \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
810
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B2>
<B3>
<value>
-3.2e-18
</value>
<default_value>
-3.2e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the  lherzolite liquidus used for calculating the fraction of peridotite-derived melt. Units: \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
811
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B3>
<C1>
<value>
1780.0
</value>
<default_value>
1780.0
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the liquidus of peridotite. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
812
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C1>
<C2>
<value>
4.50e-8
</value>
<default_value>
4.50e-8
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the liquidus of peridotite. Units: \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
813
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C2>
<C3>
<value>
-2.0e-18
</value>
<default_value>
-2.0e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the liquidus of peridotite. Units: \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
814
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C3>
<Depletion_20density_20change>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The density contrast between material with a depletion of 1 and a depletion of zero. Negative values indicate lower densities of depleted material. Depletion is indicated by the compositional field with the name peridotite. Not used if this field does not exist in the model. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
841
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Depletion_20density_20change>
<Depletion_20solidus_20change>
<value>
200.0
</value>
<default_value>
200.0
</default_value>
<documentation>
The solidus temperature change for a depletion of 100\%. For positive values, the solidus gets increased for a positive peridotite field (depletion) and lowered for a negative peridotite field (enrichment). Scaling with depletion is linear. Only active when fractional melting is used. Units: \si{\kelvin}.
</documentation>
<pattern>
831
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Depletion_20solidus_20change>
<Exponential_20melt_20weakening_20factor>
<value>
27.
</value>
<default_value>
27.
</default_value>
<documentation>
The porosity dependence of the viscosity. Units: dimensionless.
</documentation>
<pattern>
823
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Exponential_20melt_20weakening_20factor>
<Freezing_20rate>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
Freezing rate of melt when in subsolidus regions. If this parameter is set to a number larger than 0.0, it specifies the fraction of melt that will freeze per year (or per second, depending on the ``Use years in output instead of seconds&apos;&apos; parameter), as soon as the porosity exceeds the equilibrium melt fraction, and the equilibrium melt fraction falls below the depletion. In this case, melt will freeze according to the given rate until one of those conditions is not fulfilled anymore. The reasoning behind this is that there should not be more melt present than the equilibrium melt fraction, as melt production decreases with increasing depletion, but the freezing process of melt also reduces the depletion by the same amount, and as soon as the depletion falls below the equilibrium melt fraction, we expect that material should melt again (no matter how much melt is present). This is quite a simplification and not a realistic freezing parameterization, but without tracking the melt composition, there is no way to compute freezing rates accurately. If this parameter is set to zero, no freezing will occur. Note that freezing can never be faster than determined by the ``Melting time scale for operator splitting&apos;&apos;. The product of the ``Freezing rate&apos;&apos; and the ``Melting time scale for operator splitting&apos;&apos; defines how fast freezing occurs with respect to melting (if the product is 0.5, melting will occur twice as fast as freezing). Units: 1/yr or 1/s, depending on the ``Use years in output instead of seconds&apos;&apos; parameter.
</documentation>
<pattern>
829
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Freezing_20rate>
<Mass_20fraction_20cpx>
<value>
0.15
</value>
<default_value>
0.15
</default_value>
<documentation>
Mass fraction of clinopyroxene in the peridotite to be molten. Units: non-dimensional.
</documentation>
<pattern>
818
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Mass_20fraction_20cpx>
<Melt_20bulk_20modulus_20derivative>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The value of the pressure derivative of the melt bulk modulus. Units: None.
</documentation>
<pattern>
827
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melt_20bulk_20modulus_20derivative>
<Melt_20compressibility>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The value of the compressibility of the melt. Units: \si{\per\pascal}.
</documentation>
<pattern>
826
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melt_20compressibility>
<Melt_20extraction_20depth>
<value>
1000.0
</value>
<default_value>
1000.0
</default_value>
<documentation>
Depth above that melt will be extracted from the model, which is done by a negative reaction term proportional to the porosity field. Units: \si{\meter}.
</documentation>
<pattern>
825
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melt_20extraction_20depth>
<Melting_20time_20scale_20for_20operator_20splitting>
<value>
1e3
</value>
<default_value>
1e3
</default_value>
<documentation>
Because the operator splitting scheme is used, the porosity field can not be set to a new equilibrium melt fraction instantly, but the model has to provide a melting time scale instead. This time scale defines how fast melting happens, or more specifically, the parameter defines the time after which the deviation of the porosity from the equilibrium melt fraction will be reduced to a fraction of $1/e$. So if the melting time scale is small compared to the time step size, the reaction will be so fast that the porosity is very close to the equilibrium melt fraction after reactions are computed. Conversely, if the melting time scale is large compared to the time step size, almost no melting and freezing will occur.

Also note that the melting time scale has to be larger than or equal to the reaction time step used in the operator splitting scheme, otherwise reactions can not be computed. Units: yr or s, depending on the ``Use years in output instead of seconds&apos;&apos; parameter.
</documentation>
<pattern>
830
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melting_20time_20scale_20for_20operator_20splitting>
<Peridotite_20melting_20entropy_20change>
<value>
-300.
</value>
<default_value>
-300.
</default_value>
<documentation>
The entropy change for the phase transition from solid to melt of peridotite. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
819
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Peridotite_20melting_20entropy_20change>
<Reference_20bulk_20viscosity>
<value>
1e22
</value>
<default_value>
1e22
</default_value>
<documentation>
The value of the constant bulk viscosity $\xi_0$ of the solid matrix. This viscosity may be modified by both temperature and porosity dependencies. Units: \si{\pascal\second}.
</documentation>
<pattern>
821
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20bulk_20viscosity>
<Reference_20melt_20density>
<value>
2500.
</value>
<default_value>
2500.
</default_value>
<documentation>
Reference density of the melt/fluid$\rho_{f,0}$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
820
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20melt_20density>
<Reference_20melt_20viscosity>
<value>
10.
</value>
<default_value>
10.
</default_value>
<documentation>
The value of the constant melt viscosity $\viscosity_fluid$. Units: \si{\pascal\second}.
</documentation>
<pattern>
822
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20melt_20viscosity>
<Reference_20permeability>
<value>
1e-8
</value>
<default_value>
1e-8
</default_value>
<documentation>
Reference permeability of the solid host rock.Units: \si{\meter\squared}.
</documentation>
<pattern>
832
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20permeability>
<Reference_20shear_20viscosity>
<value>
5e20
</value>
<default_value>
5e20
</default_value>
<documentation>
The value of the constant viscosity $\eta_0$ of the solid matrix. This viscosity may be modified by both temperature and porosity dependencies. Units: \si{\pascal\second}.
</documentation>
<pattern>
835
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20shear_20viscosity>
<Reference_20solid_20density>
<value>
3000.
</value>
<default_value>
3000.
</default_value>
<documentation>
Reference density of the solid $\rho_{s,0}$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
842
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20solid_20density>
<Reference_20specific_20heat>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
The value of the specific heat $C_p$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
836
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20specific_20heat>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. The reference temperature is used in both the density and viscosity formulas. Units: \si{\kelvin}.
</documentation>
<pattern>
840
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Solid_20compressibility>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The value of the compressibility of the solid matrix. Units: \si{\per\pascal}.
</documentation>
<pattern>
838
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Solid_20compressibility>
<Thermal_20bulk_20viscosity_20exponent>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature dependence of the bulk viscosity. Dimensionless exponent. See the general documentation of this model for a formula that states the dependence of the viscosity on this factor, which is called $\beta$ there.
</documentation>
<pattern>
824
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20bulk_20viscosity_20exponent>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
837
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20expansion_20coefficient>
<value>
2e-5
</value>
<default_value>
2e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\beta$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
834
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient>
<Thermal_20viscosity_20exponent>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature dependence of the shear viscosity. Dimensionless exponent. See the general documentation of this model for a formula that states the dependence of the viscosity on this factor, which is called $\beta$ there.
</documentation>
<pattern>
839
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20viscosity_20exponent>
<Use_20fractional_20melting>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
If fractional melting should be used (if true), including a solidus change based on depletion (in this case, the amount of melt that has migrated away from its origin), and freezing of melt when it has moved to a region with temperatures lower than the solidus; or if batch melting should be used (if false), assuming that the melt fraction only depends on temperature and pressure, and how much melt has already been generated at a given point, but not considering movement of melt in the melting parameterization.

Note that melt does not freeze unless the &apos;Freezing rate&apos; parameter is set to a value larger than 0.
</documentation>
<pattern>
828
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20fractional_20melting>
<Use_20full_20compressibility>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
If the compressibility should be used everywhere in the code (if true), changing the volume of material when the density changes, or only in the momentum conservation and advection equations (if false).
</documentation>
<pattern>
833
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20full_20compressibility>
<beta>
<value>
1.5
</value>
<default_value>
1.5
</default_value>
<documentation>
Exponent of the melting temperature in the melt fraction calculation. Units: non-dimensional.
</documentation>
<pattern>
817
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</beta>
<r1>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
Constant in the linear function that approximates the clinopyroxene reaction coefficient. Units: non-dimensional.
</documentation>
<pattern>
815
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</r1>
<r2>
<value>
8e-11
</value>
<default_value>
8e-11
</default_value>
<documentation>
Prefactor of the linear pressure term in the linear function that approximates the clinopyroxene reaction coefficient. Units: \si{\per\pascal}.
</documentation>
<pattern>
816
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</r2>
</Melt_20simple>
<Modified_20Tait_20model>
<Einstein_20temperature>
<value>
600.
</value>
<default_value>
600.
</default_value>
<documentation>
The Einstein temperature at the reference pressure and temperature. Units: \si{\kelvin}.
</documentation>
<pattern>
849
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Einstein_20temperature>
<Reference_20bulk_20modulus_20derivative>
<value>
4.
</value>
<default_value>
4.
</default_value>
<documentation>
The value of the first pressure derivative of the isothermal bulk modulus at the reference pressure and temperature. Units: None.
</documentation>
<pattern>
847
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20bulk_20modulus_20derivative>
<Reference_20density>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
The density at the reference pressure and temperature. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
845
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20density>
<Reference_20isothermal_20bulk_20modulus>
<value>
125e9
</value>
<default_value>
125e9
</default_value>
<documentation>
The isothermal bulk modulus at the reference pressure and temperature. Units: \si{\pascal}.
</documentation>
<pattern>
846
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20isothermal_20bulk_20modulus>
<Reference_20pressure>
<value>
1e5
</value>
<default_value>
1e5
</default_value>
<documentation>
Reference pressure $P_0$. Units: \si{\pascal}.
</documentation>
<pattern>
843
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20pressure>
<Reference_20temperature>
<value>
298.15
</value>
<default_value>
298.15
</default_value>
<documentation>
Reference temperature $T_0$. Units: \si{\kelvin}.
</documentation>
<pattern>
844
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Reference_20thermal_20expansivity>
<value>
2e-5
</value>
<default_value>
2e-5
</default_value>
<documentation>
The thermal expansion coefficient at the reference pressure and temperature. Units: \si{\per\kelvin}.
</documentation>
<pattern>
848
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20thermal_20expansivity>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the constant thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
851
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Viscosity>
<value>
1e21
</value>
<default_value>
1e21
</default_value>
<documentation>
The value of the constant viscosity $\eta_0$. Units: \si{\pascal\second}.
</documentation>
<pattern>
850
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity>
<Reference_20heat_20capacity_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
854
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
1.25e3
</value>
<default_value>
1.25e3
</default_value>
<documentation/>
<pattern>
855
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,t
</value>
<default_value>
x,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
852
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Reference_20heat_20capacity_20function>
</Modified_20Tait_20model>
<Multicomponent>
<Densities>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
List of densities for background mantle and compositional fields,for a total of N+M+1 values, where N is the number of compositional fields and M is the number of phases. If only one value is given, then all use the same value. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
857
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Densities>
<Heat_20capacities>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
List of specific heats $C_p$ for background mantle and compositional fields,for a total of N+M+1 values, where N is the number of compositional fields and M is the number of phases. If only one value is given, then all use the same value. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
859
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Heat_20capacities>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. Units: \si{\kelvin}.
</documentation>
<pattern>
860
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Specific_20heats>
<alias>
Heat capacities
</alias>
<deprecation_status>
false
</deprecation_status>
</Specific_20heats>
<Thermal_20conductivities>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
List of thermal conductivities for background mantle and compositional fields,for a total of N+1 values, where N is the number of compositional fields.If only one value is given, then all use the same value. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
862
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Thermal_20conductivities>
<Thermal_20expansivities>
<value>
0.000040
</value>
<default_value>
0.000040
</default_value>
<documentation>
List of thermal expansivities for background mantle and compositional fields,for a total of N+M+1 values, where N is the number of compositional fields and M is the number of phases. If only one value is given, then all use the same value. Units: \si{\per\kelvin}.
</documentation>
<pattern>
858
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Thermal_20expansivities>
<Viscosities>
<value>
1.e21
</value>
<default_value>
1.e21
</default_value>
<documentation>
List of viscosities for background mantle and compositional fields,for a total of N+1 values, where N is the number of compositional fields.If only one value is given, then all use the same value. Units: \si{\pascal\second}.
</documentation>
<pattern>
861
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Viscosities>
<Viscosity_20averaging_20scheme>
<value>
harmonic
</value>
<default_value>
harmonic
</default_value>
<documentation>
When more than one compositional field is present at a point with different viscosities, we need to come up with an average viscosity at that point.  Select a weighted harmonic, arithmetic, geometric, or maximum composition.
</documentation>
<pattern>
863
</pattern>
<pattern_description>
[Selection arithmetic|harmonic|geometric|maximum composition ]
</pattern_description>
</Viscosity_20averaging_20scheme>
</Multicomponent>
<Multicomponent_20compressible>
<Isochoric_20specific_20heats>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
List of isochoric specific heats $C_v$ for background mantle and compositional fields,for a total of N+1 values, where N is the number of compositional fields.If only one value is given, then all use the same value. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
618
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Isochoric_20specific_20heats>
<Isothermal_20bulk_20modulus_20pressure_20derivatives>
<value>
4.
</value>
<default_value>
4.
</default_value>
<documentation>
List of isothermal pressure derivatives of the bulk moduli for background mantle and compositional fields,for a total of N+1 values, where N is the number of compositional fields.If only one value is given, then all use the same value. Units: [].
</documentation>
<pattern>
616
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Isothermal_20bulk_20modulus_20pressure_20derivatives>
<Reference_20densities>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
List of densities for background mantle and compositional fields,for a total of N+1 values, where N is the number of compositional fields.If only one value is given, then all use the same value. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
614
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20densities>
<Reference_20isothermal_20compressibilities>
<value>
4e-12
</value>
<default_value>
4e-12
</default_value>
<documentation>
List of isothermal compressibilities for background mantle and compositional fields,for a total of N+1 values, where N is the number of compositional fields.If only one value is given, then all use the same value. Units: \si{\per\pascal}.
</documentation>
<pattern>
615
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20isothermal_20compressibilities>
<Reference_20temperatures>
<value>
298.15
</value>
<default_value>
298.15
</default_value>
<documentation>
List of reference temperatures $T_0$ for background mantle and compositional fields,for a total of N+1 values, where N is the number of compositional fields.If only one value is given, then all use the same value. Units: \si{\kelvin}.
</documentation>
<pattern>
613
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20temperatures>
<Reference_20thermal_20expansivities>
<value>
4.e-5
</value>
<default_value>
4.e-5
</default_value>
<documentation>
List of thermal expansivities for background mantle and compositional fields,for a total of N+1 values, where N is the number of compositional fields.If only one value is given, then all use the same value. Units: \si{\per\kelvin}.
</documentation>
<pattern>
617
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20thermal_20expansivities>
<Thermal_20conductivities>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
List of thermal conductivities for background mantle and compositional fields,for a total of N+1 values, where N is the number of compositional fields.If only one value is given, then all use the same value. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
620
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Thermal_20conductivities>
<Viscosities>
<value>
1.e21
</value>
<default_value>
1.e21
</default_value>
<documentation>
List of viscosities for background mantle and compositional fields,for a total of N+1 values, where N is the number of compositional fields.If only one value is given, then all use the same value. Units: \si{\pascal\second}.
</documentation>
<pattern>
619
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Viscosities>
<Viscosity_20averaging_20scheme>
<value>
harmonic
</value>
<default_value>
harmonic
</default_value>
<documentation>
When more than one compositional field is present at a point with different viscosities, we need to come up with an average viscosity at that point.  Select a weighted harmonic, arithmetic, geometric, or maximum composition.
</documentation>
<pattern>
621
</pattern>
<pattern_description>
[Selection arithmetic|harmonic|geometric|maximum composition ]
</pattern_description>
</Viscosity_20averaging_20scheme>
</Multicomponent_20compressible>
<Nondimensional_20model>
<Di>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
Dissipation number. Pick 0.0 for incompressible computations.
</documentation>
<pattern>
624
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Di>
<Ra>
<value>
1e4
</value>
<default_value>
1e4
</default_value>
<documentation>
Rayleigh number Ra
</documentation>
<pattern>
623
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Ra>
<Reference_20density>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
Reference density $\rho_0$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
622
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20density>
<Reference_20specific_20heat>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
The value of the specific heat $C_p$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
626
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20specific_20heat>
<Use_20TALA>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use the TALA instead of the ALA approximation.
</documentation>
<pattern>
629
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20TALA>
<Viscosity_20depth_20prefactor>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
Exponential depth prefactor for viscosity.
</documentation>
<pattern>
628
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity_20depth_20prefactor>
<Viscosity_20temperature_20prefactor>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
Exponential temperature prefactor for viscosity.
</documentation>
<pattern>
627
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity_20temperature_20prefactor>
<gamma>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
Grueneisen parameter
</documentation>
<pattern>
625
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</gamma>
</Nondimensional_20model>
<PerpleX_20lookup_20model>
<Maximum_20material_20pressure>
<value>
1.e12
</value>
<default_value>
1.e12
</default_value>
<documentation>
The value of the maximum pressure used to query PerpleX. Units: \si{\pascal}.
</documentation>
<pattern>
636
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20material_20pressure>
<Maximum_20material_20temperature>
<value>
6000.
</value>
<default_value>
6000.
</default_value>
<documentation>
The value of the maximum temperature used to query PerpleX. Units: \si{\kelvin}.
</documentation>
<pattern>
634
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20material_20temperature>
<Minimum_20material_20pressure>
<value>
1.e5
</value>
<default_value>
1.e5
</default_value>
<documentation>
The value of the minimum pressure used to query PerpleX. Units: \si{\pascal}.
</documentation>
<pattern>
635
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20material_20pressure>
<Minimum_20material_20temperature>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The value of the minimum temperature used to query PerpleX. Units: \si{\kelvin}.
</documentation>
<pattern>
633
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20material_20temperature>
<PerpleX_20input_20file_20name>
<value>
rock.dat
</value>
<default_value>
rock.dat
</default_value>
<documentation>
The name of the PerpleX input file (should end with .dat).
</documentation>
<pattern>
630
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</PerpleX_20input_20file_20name>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
632
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Viscosity>
<value>
5e24
</value>
<default_value>
5e24
</default_value>
<documentation>
The value of the viscosity $\eta$. Units: \si{\pascal\second}.
</documentation>
<pattern>
631
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity>
</PerpleX_20lookup_20model>
<Prescribed_20viscosity>
<Base_20model>
<value>
simple
</value>
<default_value>
simple
</default_value>
<documentation>
The name of a material model that will be modified by the prescribed viscosity material model. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
637
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic ]
</pattern_description>
</Base_20model>
<Indicator_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
640
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0; 0; 0
</value>
<default_value>
0; 0; 0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
639
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
638
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Indicator_20function>
<Viscosity_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
643
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0; 0; 0
</value>
<default_value>
0; 0; 0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
642
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
641
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Viscosity_20function>
</Prescribed_20viscosity>
<Reactive_20Fluid_20Transport_20Model>
<Base_20model>
<value>
visco plastic
</value>
<default_value>
visco plastic
</default_value>
<documentation>
The name of a material model incorporating the addition of fluids. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for that for more information.
</documentation>
<pattern>
671
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic ]
</pattern_description>
</Base_20model>
<Exponential_20fluid_20weakening_20factor>
<value>
27
</value>
<default_value>
27
</default_value>
<documentation>
The porosity dependence of the viscosity. Units: dimensionless.
</documentation>
<pattern>
677
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Exponential_20fluid_20weakening_20factor>
<Fluid_20compressibility>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The value of the compressibility of the fluid. Units: \si{\per\pascal}.
</documentation>
<pattern>
679
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Fluid_20compressibility>
<Fluid_20reaction_20time_20scale_20for_20operator_20splitting>
<value>
1e3
</value>
<default_value>
1e3
</default_value>
<documentation>
In case the operator splitting scheme is used, the porosity field can not be set to a new equilibrium fluid fraction instantly, but the model has to provide a reaction time scale instead. This time scale defines how fast fluid release and absorption happen, or more specifically, the parameter defines the time after which the deviation of the porosity from the free fluid fraction that would be in equilibrium with the solid will be reduced to a fraction of $1/e$. So if the fluid reaction time scale is small compared to the time step size, the reaction will be so fast that the porosity is very close to this equilibrium value after reactions are computed. Conversely, if the fluid reaction time scale is large compared to the time step size, almost no fluid release and absorption will occur.

Also note that the fluid reaction time scale has to be larger than or equal to the reaction time step used in the operator splitting scheme, otherwise reactions can not be computed. If the model does not use operator splitting, this parameter is not used. Units: yr or s, depending on the ``Use years in output instead of seconds&apos;&apos; parameter.
</documentation>
<pattern>
680
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Fluid_20reaction_20time_20scale_20for_20operator_20splitting>
<Fluid_2dsolid_20reaction_20scheme>
<value>
no reaction
</value>
<default_value>
no reaction
</default_value>
<documentation>
Select what type of scheme to use for reactions between fluid and solid phases. The current available options are models where no reactions occur between the two phases, or the solid phase is insoluble (zero solubility) and all of the bound fluid is released into the fluid phase, tian approximation use polynomials to describe hydration and dehydration reactions for four different rock compositions as defined in Tian et al., 2019, or the Katz et. al. 2003 mantle melting model. If the Katz 2003 melting model is used, its parameters are declared in its own subsection.
</documentation>
<pattern>
685
</pattern>
<pattern_description>
[Selection no reaction|zero solubility|tian approximation|katz2003 ]
</pattern_description>
</Fluid_2dsolid_20reaction_20scheme>
<Maximum_20compaction_20viscosity>
<value>
1.7976931348623157e+308
</value>
<default_value>
1.7976931348623157e+308
</default_value>
<documentation>
Upper cutoff for the compaction viscosity. Units: \si{\pascal\second}.
</documentation>
<pattern>
675
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20compaction_20viscosity>
<Maximum_20weight_20percent_20water_20in_20MORB>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
The maximum allowed weight percent that the sediment composition can hold.
</documentation>
<pattern>
682
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20weight_20percent_20water_20in_20MORB>
<Maximum_20weight_20percent_20water_20in_20gabbro>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The maximum allowed weight percent that the sediment composition can hold.
</documentation>
<pattern>
683
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20weight_20percent_20water_20in_20gabbro>
<Maximum_20weight_20percent_20water_20in_20peridotite>
<value>
8
</value>
<default_value>
8
</default_value>
<documentation>
The maximum allowed weight percent that the sediment composition can hold.
</documentation>
<pattern>
684
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20weight_20percent_20water_20in_20peridotite>
<Maximum_20weight_20percent_20water_20in_20sediment>
<value>
3
</value>
<default_value>
3
</default_value>
<documentation>
The maximum allowed weight percent that the sediment composition can hold.
</documentation>
<pattern>
681
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20weight_20percent_20water_20in_20sediment>
<Minimum_20compaction_20viscosity>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Lower cutoff for the compaction viscosity. Units: \si{\pascal\second}.
</documentation>
<pattern>
674
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20compaction_20viscosity>
<Reference_20fluid_20density>
<value>
2500
</value>
<default_value>
2500
</default_value>
<documentation>
Reference density of the melt/fluid$\rho_{f,0}$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
672
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20fluid_20density>
<Reference_20fluid_20viscosity>
<value>
10
</value>
<default_value>
10
</default_value>
<documentation>
The value of the constant melt/fluid viscosity $\eta_f$. Units: \si{\pascal\second}.
</documentation>
<pattern>
676
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20fluid_20viscosity>
<Reference_20permeability>
<value>
1e-8
</value>
<default_value>
1e-8
</default_value>
<documentation>
Reference permeability of the solid host rock.Units: \si{\meter\squared}.
</documentation>
<pattern>
678
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20permeability>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$ for the katz2003 reaction model. The reference temperature is used in both the density and viscosity formulas of this model. Units: \si{\kelvin}.
</documentation>
<pattern>
686
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Shear_20to_20bulk_20viscosity_20ratio>
<value>
0.1
</value>
<default_value>
0.1
</default_value>
<documentation>
Ratio between shear and bulk viscosity at the reference permeability $\phi_0=0.05$. The bulk viscosity additionally scales with $\phi_0/\phi$. The shear viscosity is read in from the base model. Units: dimensionless.
</documentation>
<pattern>
673
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Shear_20to_20bulk_20viscosity_20ratio>
<Katz_202003_20model>
<A1>
<value>
1085.7
</value>
<default_value>
1085.7
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the solidus of peridotite. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
644
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A1>
<A2>
<value>
1.329e-7
</value>
<default_value>
1.329e-7
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the solidus of peridotite. Units: \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
645
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A2>
<A3>
<value>
-5.1e-18
</value>
<default_value>
-5.1e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the solidus of peridotite. Units: \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
646
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A3>
<B1>
<value>
1475.0
</value>
<default_value>
1475.0
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the lherzolite liquidus used for calculating the fraction of peridotite-derived melt. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
647
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B1>
<B2>
<value>
8.0e-8
</value>
<default_value>
8.0e-8
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the  lherzolite liquidus used for calculating the fraction of peridotite-derived melt. Units: \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
648
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B2>
<B3>
<value>
-3.2e-18
</value>
<default_value>
-3.2e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the  lherzolite liquidus used for calculating the fraction of peridotite-derived melt. Units: \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
649
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B3>
<C1>
<value>
1780.0
</value>
<default_value>
1780.0
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the liquidus of peridotite. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
650
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C1>
<C2>
<value>
4.50e-8
</value>
<default_value>
4.50e-8
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the liquidus of peridotite. Units: \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
651
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C2>
<C3>
<value>
-2.0e-18
</value>
<default_value>
-2.0e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the liquidus of peridotite. Units: \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
652
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C3>
<Depletion_20solidus_20change>
<value>
200.0
</value>
<default_value>
200.0
</default_value>
<documentation>
The solidus temperature change for a depletion of 100\%. For positive values, the solidus gets increased for a positive peridotite field (depletion) and lowered for a negative peridotite field (enrichment). Scaling with depletion is linear. Only active when fractional melting is used. Units: \si{\kelvin}.
</documentation>
<pattern>
669
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Depletion_20solidus_20change>
<Exponential_20melt_20weakening_20factor>
<value>
27.
</value>
<default_value>
27.
</default_value>
<documentation>
The porosity dependence of the viscosity. Units: dimensionless.
</documentation>
<pattern>
661
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Exponential_20melt_20weakening_20factor>
<Freezing_20rate>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
Freezing rate of melt when in subsolidus regions. If this parameter is set to a number larger than 0.0, it specifies the fraction of melt that will freeze per year (or per second, depending on the ``Use years in output instead of seconds&apos;&apos; parameter), as soon as the porosity exceeds the equilibrium melt fraction, and the equilibrium melt fraction falls below the depletion. In this case, melt will freeze according to the given rate until one of those conditions is not fulfilled anymore. The reasoning behind this is that there should not be more melt present than the equilibrium melt fraction, as melt production decreases with increasing depletion, but the freezing process of melt also reduces the depletion by the same amount, and as soon as the depletion falls below the equilibrium melt fraction, we expect that material should melt again (no matter how much melt is present). This is quite a simplification and not a realistic freezing parameterization, but without tracking the melt composition, there is no way to compute freezing rates accurately. If this parameter is set to zero, no freezing will occur. Note that freezing can never be faster than determined by the ``Melting time scale for operator splitting&apos;&apos;. The product of the ``Freezing rate&apos;&apos; and the ``Melting time scale for operator splitting&apos;&apos; defines how fast freezing occurs with respect to melting (if the product is 0.5, melting will occur twice as fast as freezing). Units: 1/yr or 1/s, depending on the ``Use years in output instead of seconds&apos;&apos; parameter.
</documentation>
<pattern>
667
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Freezing_20rate>
<Mass_20fraction_20cpx>
<value>
0.15
</value>
<default_value>
0.15
</default_value>
<documentation>
Mass fraction of clinopyroxene in the peridotite to be molten. Units: non-dimensional.
</documentation>
<pattern>
656
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Mass_20fraction_20cpx>
<Melt_20bulk_20modulus_20derivative>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The value of the pressure derivative of the melt bulk modulus. Units: None.
</documentation>
<pattern>
665
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melt_20bulk_20modulus_20derivative>
<Melt_20compressibility>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The value of the compressibility of the melt. Units: \si{\per\pascal}.
</documentation>
<pattern>
664
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melt_20compressibility>
<Melt_20extraction_20depth>
<value>
1000.0
</value>
<default_value>
1000.0
</default_value>
<documentation>
Depth above that melt will be extracted from the model, which is done by a negative reaction term proportional to the porosity field. Units: \si{\meter}.
</documentation>
<pattern>
663
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melt_20extraction_20depth>
<Melting_20time_20scale_20for_20operator_20splitting>
<value>
1e3
</value>
<default_value>
1e3
</default_value>
<documentation>
Because the operator splitting scheme is used, the porosity field can not be set to a new equilibrium melt fraction instantly, but the model has to provide a melting time scale instead. This time scale defines how fast melting happens, or more specifically, the parameter defines the time after which the deviation of the porosity from the equilibrium melt fraction will be reduced to a fraction of $1/e$. So if the melting time scale is small compared to the time step size, the reaction will be so fast that the porosity is very close to the equilibrium melt fraction after reactions are computed. Conversely, if the melting time scale is large compared to the time step size, almost no melting and freezing will occur.

Also note that the melting time scale has to be larger than or equal to the reaction time step used in the operator splitting scheme, otherwise reactions can not be computed. Units: yr or s, depending on the ``Use years in output instead of seconds&apos;&apos; parameter.
</documentation>
<pattern>
668
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melting_20time_20scale_20for_20operator_20splitting>
<Peridotite_20melting_20entropy_20change>
<value>
-300.
</value>
<default_value>
-300.
</default_value>
<documentation>
The entropy change for the phase transition from solid to melt of peridotite. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
657
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Peridotite_20melting_20entropy_20change>
<Reference_20bulk_20viscosity>
<value>
1e22
</value>
<default_value>
1e22
</default_value>
<documentation>
The value of the constant bulk viscosity $\xi_0$ of the solid matrix. This viscosity may be modified by both temperature and porosity dependencies. Units: \si{\pascal\second}.
</documentation>
<pattern>
659
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20bulk_20viscosity>
<Reference_20melt_20density>
<value>
2500.
</value>
<default_value>
2500.
</default_value>
<documentation>
Reference density of the melt/fluid$\rho_{f,0}$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
658
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20melt_20density>
<Reference_20melt_20viscosity>
<value>
10.
</value>
<default_value>
10.
</default_value>
<documentation>
The value of the constant melt viscosity $\viscosity_fluid$. Units: \si{\pascal\second}.
</documentation>
<pattern>
660
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20melt_20viscosity>
<Reference_20permeability>
<value>
1e-8
</value>
<default_value>
1e-8
</default_value>
<documentation>
Reference permeability of the solid host rock.Units: \si{\meter\squared}.
</documentation>
<pattern>
670
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20permeability>
<Thermal_20bulk_20viscosity_20exponent>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature dependence of the bulk viscosity. Dimensionless exponent. See the general documentation of this model for a formula that states the dependence of the viscosity on this factor, which is called $\beta$ there.
</documentation>
<pattern>
662
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20bulk_20viscosity_20exponent>
<Use_20fractional_20melting>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
If fractional melting should be used (if true), including a solidus change based on depletion (in this case, the amount of melt that has migrated away from its origin), and freezing of melt when it has moved to a region with temperatures lower than the solidus; or if batch melting should be used (if false), assuming that the melt fraction only depends on temperature and pressure, and how much melt has already been generated at a given point, but not considering movement of melt in the melting parameterization.

Note that melt does not freeze unless the &apos;Freezing rate&apos; parameter is set to a value larger than 0.
</documentation>
<pattern>
666
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20fractional_20melting>
<beta>
<value>
1.5
</value>
<default_value>
1.5
</default_value>
<documentation>
Exponent of the melting temperature in the melt fraction calculation. Units: non-dimensional.
</documentation>
<pattern>
655
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</beta>
<r1>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
Constant in the linear function that approximates the clinopyroxene reaction coefficient. Units: non-dimensional.
</documentation>
<pattern>
653
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</r1>
<r2>
<value>
8e-11
</value>
<default_value>
8e-11
</default_value>
<documentation>
Prefactor of the linear pressure term in the linear function that approximates the clinopyroxene reaction coefficient. Units: \si{\per\pascal}.
</documentation>
<pattern>
654
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</r2>
</Katz_202003_20model>
</Reactive_20Fluid_20Transport_20Model>
<Replace_20lithosphere_20viscosity>
<Base_20model>
<value>
simple
</value>
<default_value>
simple
</default_value>
<documentation>
The name of a material model that will be modified by a replacingthe viscosity in the lithosphere by a constant value. Valid values for this parameter are the names of models that are also valid for the ``Material models/Model name&apos;&apos; parameter. See the documentation for more information.
</documentation>
<pattern>
687
</pattern>
<pattern_description>
[Selection Steinberger|ascii reference profile|averaging|compositing|composition reaction|depth dependent|diffusion dislocation|drucker prager|entropy model|grain size|latent heat|latent heat melt|melt boukare|melt global|melt simple|modified tait|multicomponent|multicomponent compressible|nondimensional|perplex lookup|prescribed viscosity|reactive fluid transport|replace lithosphere viscosity|simple|simple compressible|simpler|visco plastic|viscoelastic ]
</pattern_description>
</Base_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/initial-temperature/lithosphere-mask/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/initial-temperature/lithosphere-mask/
</default_value>
<documentation>
The path to the LAB depth data file
</documentation>
<pattern>
691
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Depth_20specification_20method>
<value>
Value
</value>
<default_value>
Value
</default_value>
<documentation>
Method that is used to specify the depth of the lithosphere-asthenosphere boundary.
</documentation>
<pattern>
689
</pattern>
<pattern_description>
[Selection File|Value ]
</pattern_description>
</Depth_20specification_20method>
<LAB_20depth_20filename>
<value>
LAB_CAM2016.txt
</value>
<default_value>
LAB_CAM2016.txt
</default_value>
<documentation>
File from which the lithosphere-asthenosphere boundary depth data is read.
</documentation>
<pattern>
692
</pattern>
<pattern_description>
[FileName (Type: input)]
</pattern_description>
</LAB_20depth_20filename>
<Lithosphere_20viscosity>
<value>
1e23
</value>
<default_value>
1e23
</default_value>
<documentation>
The viscosity within lithosphere, applied abovethe maximum lithosphere depth.
</documentation>
<pattern>
688
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Lithosphere_20viscosity>
<Maximum_20lithosphere_20depth>
<value>
200000.0
</value>
<default_value>
200000.0
</default_value>
<documentation>
Units: \si{\meter}.The maximum depth of the lithosphere. The model will be NaNs below this depth.
</documentation>
<pattern>
690
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20lithosphere_20depth>
</Replace_20lithosphere_20viscosity>
<Simple_20compressible_20model>
<Reference_20compressibility>
<value>
4e-12
</value>
<default_value>
4e-12
</default_value>
<documentation>
The value of the reference compressibility. Units: \si{\per\pascal}.
</documentation>
<pattern>
471
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20compressibility>
<Reference_20density>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
Reference density $\rho_0$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
467
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20density>
<Reference_20specific_20heat>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
The value of the specific heat $C_p$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
469
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20specific_20heat>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
468
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20expansion_20coefficient>
<value>
2e-5
</value>
<default_value>
2e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\alpha$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
470
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient>
<Viscosity>
<value>
1000000000000000000000.000000
</value>
<default_value>
1000000000000000000000.000000
</default_value>
<documentation>
The value of the viscosity $\eta$. Units: \si{\pascal\second}.
</documentation>
<pattern>
472
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity>
</Simple_20compressible_20model>
<Simple_20model>
<Composition_20viscosity_20prefactor>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
A linear dependency of viscosity on the first compositional field. Dimensionless prefactor. With a value of 1.0 (the default) the viscosity does not depend on the composition. See the general documentation of this model for a formula that states the dependence of the viscosity on this factor, which is called $\xi$ there.
</documentation>
<pattern>
462
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Composition_20viscosity_20prefactor>
<Density_20differential_20for_20compositional_20field_201>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
If compositional fields are used, then one would frequently want to make the density depend on these fields. In this simple material model, we make the following assumptions: if no compositional fields are used in the current simulation, then the density is simply the usual one with its linear dependence on the temperature. If there are compositional fields, then the material model determines how many of them influence the density. The composition-dependence adds a term of the kind $+\Delta \rho \; c_1(\mathbf x)$. This parameter describes the value of $\Delta \rho$. Units: \si{\kilogram\per\meter\cubed}/unit change in composition.
</documentation>
<pattern>
459
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Density_20differential_20for_20compositional_20field_201>
<Maximum_20thermal_20prefactor>
<value>
1.0e2
</value>
<default_value>
1.0e2
</default_value>
<documentation>
The maximum value of the viscosity prefactor associated with temperature dependence.
</documentation>
<pattern>
464
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20thermal_20prefactor>
<Minimum_20thermal_20prefactor>
<value>
1.0e-2
</value>
<default_value>
1.0e-2
</default_value>
<documentation>
The minimum value of the viscosity prefactor associated with temperature dependence.
</documentation>
<pattern>
465
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20thermal_20prefactor>
<Reference_20density>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
Reference density $\rho_0$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
455
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20density>
<Reference_20specific_20heat>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
The value of the specific heat $C_p$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
457
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20specific_20heat>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. The reference temperature is used in both the density and viscosity formulas. Units: \si{\kelvin}.
</documentation>
<pattern>
460
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
466
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20expansion_20coefficient>
<value>
2e-5
</value>
<default_value>
2e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\alpha$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
458
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient>
<Thermal_20viscosity_20exponent>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
The temperature dependence of viscosity. Dimensionless exponent. See the general documentation of this model for a formula that states the dependence of the viscosity on this factor, which is called $\beta$ there.
</documentation>
<pattern>
463
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20viscosity_20exponent>
<Viscosity>
<value>
5e24
</value>
<default_value>
5e24
</default_value>
<documentation>
The value of the constant viscosity $\eta_0$. This viscosity may be modified by both temperature and compositional dependencies. Units: \si{\pascal\second}.
</documentation>
<pattern>
461
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity>
</Simple_20model>
<Simpler_20model>
<Reference_20density>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
Reference density $\rho_0$. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
473
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20density>
<Reference_20specific_20heat>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
The value of the specific heat $C_p$. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
475
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20specific_20heat>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. The reference temperature is used in both the density and viscosity formulas. Units: \si{\kelvin}.
</documentation>
<pattern>
474
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
477
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20expansion_20coefficient>
<value>
2e-5
</value>
<default_value>
2e-5
</default_value>
<documentation>
The value of the thermal expansion coefficient $\alpha$. Units: \si{\per\kelvin}.
</documentation>
<pattern>
476
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20expansion_20coefficient>
<Viscosity>
<value>
5000000000000000452984832.000000
</value>
<default_value>
5000000000000000452984832.000000
</default_value>
<documentation>
The value of the viscosity $\eta$. Units: \si{\pascal\second}.
</documentation>
<pattern>
478
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Viscosity>
</Simpler_20model>
<Steinberger_20model>
<Bilinear_20interpolation>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to use bilinear interpolation to compute material properties (slower but more accurate). 
</documentation>
<pattern>
502
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Bilinear_20interpolation>
<Composition_20viscosity_20prefactors>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
List of N prefactors that are used to modify the reference viscosity, where N is either equal to one or the number of chemical components in the simulation. If only one value is given, then all components use the same value. Units: \si{\pascal\second}.
</documentation>
<pattern>
487
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Composition_20viscosity_20prefactors>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/material-model/steinberger/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/material-model/steinberger/
</default_value>
<documentation>
The path to the model data. The path may also include the special text &apos;$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT. 
</documentation>
<pattern>
498
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Derivatives_20file_20names>
<value/>
<default_value/>
<documentation>
The file names of the enthalpy derivatives data. List with as many components as active compositional fields (material data is assumed to be in order with the ordering of the fields).
</documentation>
<pattern>
500
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Derivatives_20file_20names>
<Latent_20heat>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to include latent heat effects in the calculation of thermal expansivity and specific heat. If true, ASPECT follows the approach of Nakagawa et al. 2009, using pressure and temperature derivatives of the enthalpy to calculate the thermal expansivity and specific heat. If false, ASPECT uses the thermal expansivity and specific heat values from the material properties table.
</documentation>
<pattern>
503
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Latent_20heat>
<Lateral_20viscosity_20file_20name>
<value>
temp-viscosity-prefactor.txt
</value>
<default_value>
temp-viscosity-prefactor.txt
</default_value>
<documentation>
The file name of the lateral viscosity data. 
</documentation>
<pattern>
481
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Lateral_20viscosity_20file_20name>
<Material_20file_20format>
<value>
perplex
</value>
<default_value>
perplex
</default_value>
<documentation>
The material file format to be read in the property tables.
</documentation>
<pattern>
501
</pattern>
<pattern_description>
[Selection perplex|hefesto ]
</pattern_description>
</Material_20file_20format>
<Material_20file_20names>
<value>
pyr-ringwood88.txt
</value>
<default_value>
pyr-ringwood88.txt
</default_value>
<documentation>
The file names of the material data (material data is assumed to be in order with the ordering of the compositional fields). Note that there are three options on how many files need to be listed here: 1. If only one file is provided, it is used for the whole model domain, and compositional fields are ignored. 2. If there is one more file name than the number of compositional fields, then the first file is assumed to define a `background composition&apos; that is modified by the compositional fields. If there are exactly as many files as compositional fields, the fields are assumed to represent the fractions of different materials and the average property is computed as a sum of the value of the compositional field times the material property of that field.
</documentation>
<pattern>
499
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Material_20file_20names>
<Maximum_20latent_20heat_20substeps>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The maximum number of substeps over the temperature pressure range to calculate the averaged enthalpy gradient over a cell.
</documentation>
<pattern>
504
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Maximum_20latent_20heat_20substeps>
<Maximum_20lateral_20viscosity_20variation>
<value>
1e2
</value>
<default_value>
1e2
</default_value>
<documentation>
The relative cutoff value for lateral viscosity variations caused by temperature deviations. The viscosity may vary laterally by this factor squared.
</documentation>
<pattern>
486
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20lateral_20viscosity_20variation>
<Maximum_20thermal_20conductivity>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
The maximum thermal conductivity that is allowed in the model. Larger values will be cut off.
</documentation>
<pattern>
497
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20thermal_20conductivity>
<Maximum_20viscosity>
<value>
1e23
</value>
<default_value>
1e23
</default_value>
<documentation>
The maximum viscosity that is allowed in the viscosity calculation. Larger values will be cut off.
</documentation>
<pattern>
485
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20viscosity>
<Minimum_20viscosity>
<value>
1e19
</value>
<default_value>
1e19
</default_value>
<documentation>
The minimum viscosity that is allowed in the viscosity calculation. Smaller values will be cut off.
</documentation>
<pattern>
484
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20viscosity>
<Number_20lateral_20average_20bands>
<value>
10
</value>
<default_value>
10
</default_value>
<documentation>
Number of bands to compute laterally averaged temperature within.
</documentation>
<pattern>
483
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Number_20lateral_20average_20bands>
<Pressure_20dependencies_20of_20thermal_20conductivity>
<value>
3.3e-10, 3.4e-10, 3.6e-10, 1.05e-10
</value>
<default_value>
3.3e-10, 3.4e-10, 3.6e-10, 1.05e-10
</default_value>
<documentation>
A list of values that determine the linear scaling of the thermal conductivity with the pressure in the &apos;p-T-dependent&apos; Thermal conductivity formulation. Units: \si{\watt\per\meter\per\kelvin\per\pascal}.
</documentation>
<pattern>
493
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Pressure_20dependencies_20of_20thermal_20conductivity>
<Radial_20viscosity_20file_20name>
<value>
radial-visc.txt
</value>
<default_value>
radial-visc.txt
</default_value>
<documentation>
The file name of the radial viscosity data. 
</documentation>
<pattern>
480
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Radial_20viscosity_20file_20name>
<Reference_20temperatures_20for_20thermal_20conductivity>
<value>
300, 300, 300, 1200
</value>
<default_value>
300, 300, 300, 1200
</default_value>
<documentation>
A list of values of reference temperatures used to determine the temperature-dependence of the thermal conductivity in the &apos;p-T-dependent&apos; Thermal conductivity formulation. Units: \si{\kelvin}.
</documentation>
<pattern>
494
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20temperatures_20for_20thermal_20conductivity>
<Reference_20thermal_20conductivities>
<value>
2.47, 3.81, 3.52, 4.9
</value>
<default_value>
2.47, 3.81, 3.52, 4.9
</default_value>
<documentation>
A list of base values of the thermal conductivity for each of the horizontal layers in the &apos;p-T-dependent&apos; Thermal conductivity formulation. Pressure- and temperature-dependence will be appliedon top of this base value, according to the parameters &apos;Pressure dependencies of thermal conductivity&apos; and &apos;Reference temperatures for thermal conductivity&apos;. Units: \si{\watt\per\meter\per\kelvin}
</documentation>
<pattern>
492
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20thermal_20conductivities>
<Saturation_20prefactors>
<value>
0, 0, 0, 1
</value>
<default_value>
0, 0, 0, 1
</default_value>
<documentation>
A list of values that indicate how a given layer in the conductivity formulation should take into account the effects of saturation on the temperature-dependence of the thermal conducitivity. This factor is multiplied with a saturation function based on the theory of Roufosse and Klemens, 1974. A value of 1 reproduces the formulation of Stackhouse et al. (2015), a value of 0 reproduces the formulation of Tosi et al., (2013). Units: none.
</documentation>
<pattern>
496
</pattern>
<pattern_description>
[List of &lt;[Double 0...1 (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Saturation_20prefactors>
<Thermal_20conductivity>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
The value of the thermal conductivity $k$. Only used in case the &apos;constant&apos; Thermal conductivity formulation is selected. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
489
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Thermal_20conductivity>
<Thermal_20conductivity_20exponents>
<value>
0.48, 0.56, 0.61, 1.0
</value>
<default_value>
0.48, 0.56, 0.61, 1.0
</default_value>
<documentation>
A list of exponents in the temperature-dependent term of the &apos;p-T-dependent&apos; Thermal conductivity formulation. Note that this exponent is not used (and should have a value of 1) in the formulation of Stackhouse et al. (2015). Units: none.
</documentation>
<pattern>
495
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Thermal_20conductivity_20exponents>
<Thermal_20conductivity_20formulation>
<value>
constant
</value>
<default_value>
constant
</default_value>
<documentation>
Which law should be used to compute the thermal conductivity. The &apos;constant&apos; law uses a constant value for the thermal conductivity. The &apos;p-T-dependent&apos; formulation uses equations from Stackhouse et al. (2015): First-principles calculations of the lattice thermal conductivity of the lower mantle (https://doi.org/10.1016/j.epsl.2015.06.050), and Tosi et al. (2013): Mantle dynamics with pressure- and temperature-dependent thermal expansivity and conductivity (https://doi.org/10.1016/j.pepi.2013.02.004) to compute the thermal conductivity in dependence of temperature and pressure. The thermal conductivity parameter sets can be chosen in such a way that either the Stackhouse or the Tosi relations are used. The conductivity description can consist of several layers with different sets of parameters. Note that the Stackhouse parametrization is only valid for the lower mantle (bridgmanite).
</documentation>
<pattern>
490
</pattern>
<pattern_description>
[Selection constant|p-T-dependent ]
</pattern_description>
</Thermal_20conductivity_20formulation>
<Thermal_20conductivity_20transition_20depths>
<value>
410000, 520000, 660000
</value>
<default_value>
410000, 520000, 660000
</default_value>
<documentation>
A list of depth values that indicate where the transitions between the different conductivity parameter sets should occur in the &apos;p-T-dependent&apos; Thermal conductivity formulation (in most cases, this will be the depths of major mantle phase transitions). Units: \si{\meter}.
</documentation>
<pattern>
491
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Thermal_20conductivity_20transition_20depths>
<Use_20lateral_20average_20temperature_20for_20viscosity>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to use the laterally averaged temperature instead of the adiabatic temperature as reference for the viscosity calculation. This ensures that the laterally averaged viscosities remain more or less constant over the model runtime. This behavior might or might not be desired.
</documentation>
<pattern>
482
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20lateral_20average_20temperature_20for_20viscosity>
<Viscosity_20averaging_20scheme>
<value>
harmonic
</value>
<default_value>
harmonic
</default_value>
<documentation>
Method to average viscosities over multiple compositional fields. One of arithmetic, harmonic, geometric or maximum composition.
</documentation>
<pattern>
488
</pattern>
<pattern_description>
[Selection arithmetic|harmonic|geometric|maximum composition ]
</pattern_description>
</Viscosity_20averaging_20scheme>
</Steinberger_20model>
<Visco_20Plastic>
<Activation_20energies_20for_20Peierls_20creep>
<value>
320e3
</value>
<default_value>
320e3
</default_value>
<documentation>
List of activation energies, $E$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\joule\per\mole}.
</documentation>
<pattern>
577
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Activation_20energies_20for_20Peierls_20creep>
<Activation_20energies_20for_20diffusion_20creep>
<value>
375e3
</value>
<default_value>
375e3
</default_value>
<documentation>
List of activation energies, $E_a$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\joule\per\mole}.
</documentation>
<pattern>
560
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Activation_20energies_20for_20diffusion_20creep>
<Activation_20energies_20for_20dislocation_20creep>
<value>
530e3
</value>
<default_value>
530e3
</default_value>
<documentation>
List of activation energies, $E_a$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\joule\per\mole}.
</documentation>
<pattern>
565
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Activation_20energies_20for_20dislocation_20creep>
<Activation_20volumes_20for_20Peierls_20creep>
<value>
1.4e-5
</value>
<default_value>
1.4e-5
</default_value>
<documentation>
List of activation volumes, $V$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\meter\cubed\per\mole}.
</documentation>
<pattern>
578
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Activation_20volumes_20for_20Peierls_20creep>
<Activation_20volumes_20for_20diffusion_20creep>
<value>
6e-6
</value>
<default_value>
6e-6
</default_value>
<documentation>
List of activation volumes, $V_a$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\meter\cubed\per\mole}.
</documentation>
<pattern>
561
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Activation_20volumes_20for_20diffusion_20creep>
<Activation_20volumes_20for_20dislocation_20creep>
<value>
1.4e-5
</value>
<default_value>
1.4e-5
</default_value>
<documentation>
List of activation volumes, $V_a$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\meter\cubed\per\mole}.
</documentation>
<pattern>
566
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Activation_20volumes_20for_20dislocation_20creep>
<Adiabat_20temperature_20gradient_20for_20viscosity>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
Add an adiabatic temperature gradient to the temperature used in the flow law so that the activation volume is consistent with what one would use in a earth-like (compressible) model. Default is set so this is off. Note that this is a linear approximation of the real adiabatic gradient, which is okay for the upper mantle, but is not really accurate for the lower mantle. Using a pressure gradient of 32436 Pa/m, then a value of 0.3 K/km = 0.0003 K/m = 9.24e-09 K/Pa gives an earth-like adiabat.Units: \si{\kelvin\per\pascal}.
</documentation>
<pattern>
597
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Adiabat_20temperature_20gradient_20for_20viscosity>
<Allow_20negative_20pressures_20in_20plasticity>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to allow negative pressures to be used in the computation of plastic yield stresses and viscosities. Setting this parameter to true may be advantageous in models without gravity where the dynamic stresses are much higher than the lithostatic pressure. If false, the minimum pressure in the plasticity formulation will be set to zero.
</documentation>
<pattern>
554
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Allow_20negative_20pressures_20in_20plasticity>
<Angles_20of_20internal_20friction>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
List of angles of internal friction, $\phi$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. For a value of zero, in 2d the von Mises criterion is retrieved. Angles higher than 30 degrees are harder to solve numerically. Units: degrees.
</documentation>
<pattern>
591
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Angles_20of_20internal_20friction>
<Apply_20strict_20stress_20cutoff_20for_20Peierls_20creep>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether the cutoff stresses for Peierls creep are used as the minimum stresses in the Peierls rheology
</documentation>
<pattern>
584
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Apply_20strict_20stress_20cutoff_20for_20Peierls_20creep>
<Cohesion_20strain_20weakening_20factors>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
List of cohesion strain weakening factors for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: None.
</documentation>
<pattern>
521
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Cohesion_20strain_20weakening_20factors>
<Cohesions>
<value>
1e20
</value>
<default_value>
1e20
</default_value>
<documentation>
List of cohesions, $C$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. The extremely large default cohesion value (1e20 Pa) prevents the viscous stress from exceeding the yield stress. Units: \si{\pascal}.
</documentation>
<pattern>
592
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Cohesions>
<Constant_20viscosity_20prefactors>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
List of constant viscosity prefactors (i.e., multiplicative factors) for background material and compositional fields, for a total of N+1 where N is the number of all compositional fields or only those corresponding to chemical compositions. Units: none.
</documentation>
<pattern>
586
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Constant_20viscosity_20prefactors>
<Cutoff_20stresses_20for_20Peierls_20creep>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
List of the Stress thresholds below which the strain rate is solved for as a quadratic function of stress to aid with convergence when stress exponent n=0. Units: \si{\pascal}
</documentation>
<pattern>
583
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Cutoff_20stresses_20for_20Peierls_20creep>
<Define_20thermal_20conductivities>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to directly define thermal conductivities for each compositional field instead of calculating the values through the specified thermal diffusivities, densities, and heat capacities. 
</documentation>
<pattern>
599
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Define_20thermal_20conductivities>
<Define_20transition_20by_20depth_20instead_20of_20pressure>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to list phase transitions by depth or pressure. If this parameter is true, then the input file will use Phase transitions depths and Phase transition widths to define the phase transition. If it is false, the parameter file will read in phase transition data from Phase transition pressures and Phase transition pressure widths.
</documentation>
<pattern>
509
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Define_20transition_20by_20depth_20instead_20of_20pressure>
<Densities>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
List of densities for background mantle and compositional fields,for a total of N+M+1 values, where N is the number of compositional fields and M is the number of phases. If only one value is given, then all use the same value. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
515
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Densities>
<Dynamic_20angles_20of_20internal_20friction>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
List of dynamic angles of internal friction, $\phi$, for background material and compositional fields, for a total of N$+$1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. Dynamic angles of friction are used as the current friction angle when the effective strain rate is well above the &apos;dynamic characteristic strain rate&apos;. Units: \si{\degree}.
</documentation>
<pattern>
536
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Dynamic_20angles_20of_20internal_20friction>
<Dynamic_20characteristic_20strain_20rate>
<value>
1e-12
</value>
<default_value>
1e-12
</default_value>
<documentation>
The characteristic strain rate value at which the angle of friction is equal to $\mu = (\mu_s+\mu_d)/2$. When the effective strain rate is very high, the dynamic angle of friction is taken, when it is very low, the static angle of internal friction is used. Around the dynamic characteristic strain rate, there is a smooth gradient from the static to the dynamic angle of internal friction. Units: \si{\per\second}.
</documentation>
<pattern>
535
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Dynamic_20characteristic_20strain_20rate>
<Dynamic_20friction_20smoothness_20exponent>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
An exponential factor in the equation for the calculation of the friction angle when a static and a dynamic angle of internal friction are specified. A factor of 1 returns the equation to Equation (13) in \cite{van_dinther_seismic_2013}. A factor between 0 and 1 makes the curve of the friction angle vs. the strain rate smoother, while a factor $&gt;$ 1 makes the change between static and dynamic friction angle more steplike. Units: none.
</documentation>
<pattern>
537
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Dynamic_20friction_20smoothness_20exponent>
<Elastic_20damper_20viscosity>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
Viscosity of a viscous damper that acts in parallel with the elastic element to stabilize behavior. Units: \si{\pascal\second}
</documentation>
<pattern>
546
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Elastic_20damper_20viscosity>
<Elastic_20shear_20moduli>
<value>
75.0e9
</value>
<default_value>
75.0e9
</default_value>
<documentation>
List of elastic shear moduli, $G$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. The default value of 75 GPa is representative of mantle rocks. Units: Pa.
</documentation>
<pattern>
542
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Elastic_20shear_20moduli>
<End_20plasticity_20strain_20weakening_20intervals>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
List of strain weakening interval final strains for the cohesion and friction angle parameters of the background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: None.
</documentation>
<pattern>
520
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</End_20plasticity_20strain_20weakening_20intervals>
<End_20prefactor_20strain_20weakening_20intervals>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
List of strain weakening interval final strains for the diffusion and dislocation prefactor parameters of the background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: None.
</documentation>
<pattern>
524
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</End_20prefactor_20strain_20weakening_20intervals>
<Fixed_20elastic_20time_20step>
<value>
1.e3
</value>
<default_value>
1.e3
</default_value>
<documentation>
The fixed elastic time step $dte$. Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
544
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Fixed_20elastic_20time_20step>
<Friction_20mechanism>
<value>
none
</value>
<default_value>
none
</default_value>
<documentation>
Whether to make the friction angle dependent on strain rate or not. This rheology is intended to be used together with the visco-plastic rheology model.

\item ``none&apos;&apos;: No dependence of the friction angle is applied. 

\item ``dynamic friction&apos;&apos;: The friction angle is rate dependent.When &apos;dynamic angles of internal friction&apos; are specified, the friction angle will be weakened for high strain rates with: $\mu = \mu_d + \frac{\mu_s-\mu_d}{1+\frac{\dot{\epsilon}_{ii}}{\dot{\epsilon}_C}}^x$  where $\mu_s$ and $\mu_d$ are the friction angles at low and high strain rates, respectively. $\dot{\epsilon}_{ii}$ is the second invariant of the strain rate and $\dot{\epsilon}_C$ is the &apos;dynamic characteristic strain rate&apos; where $\mu = (\mu_s+\mu_d)/2$. The &apos;dynamic friction smoothness exponent&apos; x controls how smooth or step-like the change from $\mu_s$ to $\mu_d$ is. The equation is modified after Equation (13) in \cite{van_dinther_seismic_2013}. $\mu_s$ and $\mu_d$ can be specified by setting &apos;Angles of internal friction&apos; and &apos;Dynamic angles of internal friction&apos;, respectively. This relationship is similar to rate-and-state friction constitutive relationships, which are applicable to the strength of rocks during earthquakes.

\item ``function&apos;&apos;: Specify the friction angle as a function of space and time for each compositional field.
</documentation>
<pattern>
534
</pattern>
<pattern_description>
[Selection none|dynamic friction|function ]
</pattern_description>
</Friction_20mechanism>
<Friction_20strain_20weakening_20factors>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
List of friction strain weakening factors for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: None.
</documentation>
<pattern>
522
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Friction_20strain_20weakening_20factors>
<Grain_20size>
<value>
1e-3
</value>
<default_value>
1e-3
</default_value>
<documentation>
The fixed grain size of the material. This grain size is only used if the parent material model does not provide its own (possibly variable) grain size when calling this rheology.Units: \si{\meter}.
</documentation>
<pattern>
562
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Grain_20size>
<Grain_20size_20exponents_20for_20diffusion_20creep>
<value>
3.
</value>
<default_value>
3.
</default_value>
<documentation>
List of grain size exponents, $m_{\text{diffusion}}$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: None.
</documentation>
<pattern>
559
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Grain_20size_20exponents_20for_20diffusion_20creep>
<Heat_20capacities>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
List of specific heats $C_p$ for background mantle and compositional fields,for a total of N+M+1 values, where N is the number of compositional fields and M is the number of phases. If only one value is given, then all use the same value. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
517
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Heat_20capacities>
<Include_20Peierls_20creep>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to include Peierls creep in the rheological formulation.
</documentation>
<pattern>
585
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Include_20Peierls_20creep>
<Lower_20temperature_20for_20maximum_20strain_20weakening>
<value>
923.
</value>
<default_value>
923.
</default_value>
<documentation>
List of lower temperature for maximum strain weakening for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\kelvin}.
</documentation>
<pattern>
528
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Lower_20temperature_20for_20maximum_20strain_20weakening>
<Lower_20temperature_20for_20onset_20of_20strain_20weakening>
<value>
823.
</value>
<default_value>
823.
</default_value>
<documentation>
List of lower temperature for onset of strain weakening for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\kelvin}.
</documentation>
<pattern>
527
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Lower_20temperature_20for_20onset_20of_20strain_20weakening>
<Maximum_20Peierls_20strain_20rate_20iterations>
<value>
40
</value>
<default_value>
40
</default_value>
<documentation>
Maximum number of iterations to find the correct Peierls strain rate.
</documentation>
<pattern>
574
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Maximum_20Peierls_20strain_20rate_20iterations>
<Maximum_20viscosity>
<value>
1e28
</value>
<default_value>
1e28
</default_value>
<documentation>
Upper cutoff for effective viscosity. Units: \si{\pascal\second}. List with as many components as active compositional fields (material data is assumed to be in order with the ordering of the fields). 
</documentation>
<pattern>
550
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Maximum_20viscosity>
<Maximum_20yield_20stress>
<value>
1e12
</value>
<default_value>
1e12
</default_value>
<documentation>
Limits the maximum value of the yield stress determined by the Drucker-Prager plasticity parameters. Default value is chosen so this is not automatically used. Values of 100e6--1000e6 $Pa$ have been used in previous models. Units: \si{\pascal}.
</documentation>
<pattern>
593
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20yield_20stress>
<Minimum_20mass_20fraction_20bound_20water_20content_20for_20fugacity>
<value>
6.15e-6
</value>
<default_value>
6.15e-6
</default_value>
<documentation>
The minimum water content for the HK04 olivine hydration viscosity prefactor scheme. This acts as the cutoff between &apos;dry&apos; creep and &apos;wet&apos; creep for olivine, and the default value is chosen based on the value reported by Hirth &amp; Kohlstaedt 2004. For a mass fraction of bound water beneath this value, this value is used instead to compute the water fugacity. Units: \si{\kg} / \si{\kg} %.
</documentation>
<pattern>
587
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Minimum_20mass_20fraction_20bound_20water_20content_20for_20fugacity>
<Minimum_20strain_20rate>
<value>
1.0e-20
</value>
<default_value>
1.0e-20
</default_value>
<documentation>
Stabilizes strain dependent viscosity. Units: \si{\per\second}.
</documentation>
<pattern>
547
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20strain_20rate>
<Minimum_20viscosity>
<value>
1e17
</value>
<default_value>
1e17
</default_value>
<documentation>
Lower cutoff for effective viscosity. Units: \si{\pascal\second}. List with as many components as active compositional fields (material data is assumed to be in order with the ordering of the fields). 
</documentation>
<pattern>
549
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Minimum_20viscosity>
<Peierls_20creep_20flow_20law>
<value>
viscosity approximation
</value>
<default_value>
viscosity approximation
</default_value>
<documentation>
Select what type of Peierls creep flow law to use. Currently, the available options are &apos;exact&apos;, which uses a Newton-Raphson iterative method to find the stress and then compute viscosity, and &apos;viscosity approximation&apos;, in which viscosity is an explicit function of the strain rate invariant, rather than stress. 
</documentation>
<pattern>
572
</pattern>
<pattern_description>
[Selection viscosity approximation|exact ]
</pattern_description>
</Peierls_20creep_20flow_20law>
<Peierls_20fitting_20parameters>
<value>
0.17
</value>
<default_value>
0.17
</default_value>
<documentation>
List of fitting parameters $\gamma$ between stress $\sigma$ and the Peierls stress $\sigma_{\text{peierls}}$ for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: none
</documentation>
<pattern>
580
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Peierls_20fitting_20parameters>
<Peierls_20glide_20parameters_20p>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
List of the first Peierls creep glide parameters, $p$, for background and compositional fields for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: none
</documentation>
<pattern>
581
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Peierls_20glide_20parameters_20p>
<Peierls_20glide_20parameters_20q>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
List of the second Peierls creep glide parameters, $q$, for background and compositional fields for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: none
</documentation>
<pattern>
582
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Peierls_20glide_20parameters_20q>
<Peierls_20strain_20rate_20residual_20tolerance>
<value>
1e-10
</value>
<default_value>
1e-10
</default_value>
<documentation>
Tolerance for the iterative solve to find the correct Peierls creep strain rate. The tolerance is expressed as the difference between the natural logarithm of the input strain rate and the strain rate at the current iteration.
</documentation>
<pattern>
573
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Peierls_20strain_20rate_20residual_20tolerance>
<Peierls_20stresses>
<value>
5.e9
</value>
<default_value>
5.e9
</default_value>
<documentation>
List of stress limits for Peierls creep $\sigma_{\text{peierls}}$ for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\pascal}
</documentation>
<pattern>
579
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Peierls_20stresses>
<Phase_20transition_20Clapeyron_20slopes>
<value/>
<default_value/>
<documentation>
A list of Clapeyron slopes for each phase transition. A positive Clapeyron slope indicates that the phase transition will occur in a greater depth, if the temperature is higher than the one given in Phase transition temperatures and in a smaller depth, if the temperature is smaller than the one given in Phase transition temperatures. For negative slopes the other way round. List must have the same number of entries as Phase transition depths. Units: \si{\pascal\per\kelvin}.
</documentation>
<pattern>
513
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20Clapeyron_20slopes>
<Phase_20transition_20depths>
<value/>
<default_value/>
<documentation>
A list of depths where phase transitions occur. Values must monotonically increase. Units: \si{\meter}.
</documentation>
<pattern>
505
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20depths>
<Phase_20transition_20pressure_20widths>
<value/>
<default_value/>
<documentation>
A list of widths for each phase transition, in terms of pressure. The phase functions are scaled with these values, leading to a jump between phases for a value of zero and a gradual transition for larger values. List must have the same number of entries as Phase transition pressures. Define transition by depth instead of pressure must be set to false to use this parameter. Units: \si{\pascal}.
</documentation>
<pattern>
508
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20pressure_20widths>
<Phase_20transition_20pressures>
<value/>
<default_value/>
<documentation>
A list of pressures where phase transitions occur. Values must monotonically increase. Define transition by depth instead of pressure must be set to false to use this parameter. Units: \si{\pascal}.
</documentation>
<pattern>
507
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20pressures>
<Phase_20transition_20temperature_20lower_20limits>
<value>
-1.7976931348623157e+308
</value>
<default_value>
-1.7976931348623157e+308
</default_value>
<documentation>
A list of lower temperature limits for each phase transition. Below this temperature the respective phase transition is deactivated. The default value means there is no lower limit for any phase transition. List must have the same number of entries as Phase transition depths. When the optional temperature limits are applied, the user has to be careful about the consistency between adjacent phases. Phase transitions should be continuous in pressure-temperature space. We recommend producing a phase diagram with simple model setups to check the implementation as a starting point.Units: \si{\kelvin}.
</documentation>
<pattern>
512
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20temperature_20lower_20limits>
<Phase_20transition_20temperature_20upper_20limits>
<value>
1.7976931348623157e+308
</value>
<default_value>
1.7976931348623157e+308
</default_value>
<documentation>
A list of upper temperature limits for each phase transition. Above this temperature the respective phase transition is deactivated. The default value means there is no upper limit for any phase transitions. List must have the same number of entries as Phase transition depths. When the optional temperature limits are applied, the user has to be careful about the consistency between adjacent phases. Phase transitions should be continuous in pressure-temperature space. We recommend producing a phase diagram with simple model setups to check the implementation as a starting point.Units: \si{\kelvin}.
</documentation>
<pattern>
511
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20temperature_20upper_20limits>
<Phase_20transition_20temperatures>
<value/>
<default_value/>
<documentation>
A list of temperatures where phase transitions occur. Higher or lower temperatures lead to phase transition occurring in smaller or greater depths than given in Phase transition depths, depending on the Clapeyron slope given in Phase transition Clapeyron slopes. List must have the same number of entries as Phase transition depths. Units: \si{\kelvin}.
</documentation>
<pattern>
510
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20temperatures>
<Phase_20transition_20widths>
<value/>
<default_value/>
<documentation>
A list of widths for each phase transition, in terms of depth. The phase functions are scaled with these values, leading to a jump between phases for a value of zero and a gradual transition for larger values. List must have the same number of entries as Phase transition depths. Units: \si{\meter}.
</documentation>
<pattern>
506
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Phase_20transition_20widths>
<Plastic_20damper_20viscosity>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
Viscosity of the damper that acts in parallel with the plastic viscosity to produce mesh-independent behavior at sufficient resolutions. Units: \si{\pascal\second}
</documentation>
<pattern>
595
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Plastic_20damper_20viscosity>
<Prefactor_20strain_20weakening_20factors>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
List of viscous strain weakening factors for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: None.
</documentation>
<pattern>
525
</pattern>
<pattern_description>
[List of &lt;[Double 0...1 (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Prefactor_20strain_20weakening_20factors>
<Prefactors_20for_20Frank_20Kamenetskii>
<value>
1.e21
</value>
<default_value>
1.e21
</default_value>
<documentation>
A viscosity prefactor for the viscosity approximation, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: None
</documentation>
<pattern>
568
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Prefactors_20for_20Frank_20Kamenetskii>
<Prefactors_20for_20Peierls_20creep>
<value>
1.4e-19
</value>
<default_value>
1.4e-19
</default_value>
<documentation>
List of viscosity prefactors, $A$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\pascal}$^{-n_{\text{peierls}}}$ \si{\per\second}
</documentation>
<pattern>
575
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Prefactors_20for_20Peierls_20creep>
<Prefactors_20for_20diffusion_20creep>
<value>
1.5e-15
</value>
<default_value>
1.5e-15
</default_value>
<documentation>
List of viscosity prefactors, $A$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\per\pascal\meter}$^{m_{\text{diffusion}}}$\si{\per\second}.
</documentation>
<pattern>
557
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Prefactors_20for_20diffusion_20creep>
<Prefactors_20for_20dislocation_20creep>
<value>
1.1e-16
</value>
<default_value>
1.1e-16
</default_value>
<documentation>
List of viscosity prefactors, $A$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\pascal}$^{-n_{\text{dislocation}}}$ \si{\per\second}.
</documentation>
<pattern>
563
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Prefactors_20for_20dislocation_20creep>
<Pressure_20prefactors_20for_20Frank_20Kamenetskii>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
A prefactor for the pressure term in the viscosity approximation, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: None
</documentation>
<pattern>
569
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Pressure_20prefactors_20for_20Frank_20Kamenetskii>
<Reference_20pressures_20for_20Frank_20Kamenetskii>
<value>
1.7976931348623157e+308
</value>
<default_value>
1.7976931348623157e+308
</default_value>
<documentation>
A reference pressure in the viscosity approximation which specifies where the FK pressure dependence goes to 0.Given for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: Pa
</documentation>
<pattern>
571
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20pressures_20for_20Frank_20Kamenetskii>
<Reference_20strain_20rate>
<value>
1.0e-15
</value>
<default_value>
1.0e-15
</default_value>
<documentation>
Reference strain rate for first time step. Units: \si{\per\second}.
</documentation>
<pattern>
548
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20strain_20rate>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. Units: \si{\kelvin}.
</documentation>
<pattern>
514
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Reference_20temperatures_20for_20Frank_20Kamenetskii>
<value>
1.7976931348623157e+308
</value>
<default_value>
1.7976931348623157e+308
</default_value>
<documentation>
A reference temperature in the viscosity approximation which specifies where the FK temperature dependence goes to 0. Given for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: K
</documentation>
<pattern>
570
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Reference_20temperatures_20for_20Frank_20Kamenetskii>
<Specific_20heats>
<alias>
Heat capacities
</alias>
<deprecation_status>
false
</deprecation_status>
</Specific_20heats>
<Stabilization_20time_20scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
A stabilization factor for the elastic stresses that influences how fast elastic stresses adjust to deformation. This value is equal to the elastic time step divided by the computational time step. The default value of 1.0 may lead to oscillatory motion. Increasing this factor to 2.0 can reduce oscillations while preserving an immediate elastic response. In complex models the factor can be increased further to improve convergence behaviour. As the stabilization factor increases, the effective viscosity gets smaller, and is balanced by an increasing body force term. For composite rheologies that use this formulation of elasticity, setting an infinite shear modulus only recovers the nonelastic part of the rheology if this stabilization factor is equal to 1.0.
</documentation>
<pattern>
545
</pattern>
<pattern_description>
[Double 1...MAX_DOUBLE (inclusive)]
</pattern_description>
</Stabilization_20time_20scale_20factor>
<Start_20plasticity_20strain_20weakening_20intervals>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
List of strain weakening interval initial strains for the cohesion and friction angle parameters of the background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: None.
</documentation>
<pattern>
519
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Start_20plasticity_20strain_20weakening_20intervals>
<Start_20prefactor_20strain_20weakening_20intervals>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
List of strain weakening interval initial strains for the diffusion and dislocation prefactor parameters of the background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: None.
</documentation>
<pattern>
523
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Start_20prefactor_20strain_20weakening_20intervals>
<Strain_20healing_20mechanism>
<value>
no healing
</value>
<default_value>
no healing
</default_value>
<documentation>
Whether to apply strain healing to plastic yielding and viscosity terms, and if yes, which method to use. The following methods are available:

\item ``no healing&apos;&apos;: No strain healing is applied. 

\item ``temperature dependent&apos;&apos;: Purely temperature dependent strain healing applied to plastic yielding and viscosity terms, similar to the temperature-dependent Frank Kamenetskii formulation, computes strain healing as removing strain as a function of temperature, time, and a user-defined healing rate and prefactor as done in Fuchs and Becker, 2019, for mantle convection
</documentation>
<pattern>
531
</pattern>
<pattern_description>
[Selection no healing|temperature dependent ]
</pattern_description>
</Strain_20healing_20mechanism>
<Strain_20healing_20temperature_20dependent_20prefactor>
<value>
15.
</value>
<default_value>
15.
</default_value>
<documentation>
Prefactor for temperature dependent strain healing. Units: None
</documentation>
<pattern>
533
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Strain_20healing_20temperature_20dependent_20prefactor>
<Strain_20healing_20temperature_20dependent_20recovery_20rate>
<value>
1.e-15
</value>
<default_value>
1.e-15
</default_value>
<documentation>
Recovery rate prefactor for temperature dependent strain healing. Units: $1/s$
</documentation>
<pattern>
532
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Strain_20healing_20temperature_20dependent_20recovery_20rate>
<Strain_20weakening_20mechanism>
<value>
default
</value>
<default_value>
default
</default_value>
<documentation>
Whether to apply strain weakening to viscosity, cohesion and internal angleof friction based on accumulated finite strain, and if yes, which method to use. The following methods are available:

\item ``none&apos;&apos;: No strain weakening is applied. 

\item ``finite strain tensor&apos;&apos;: The full finite strain tensor is tracked, and its second invariant is used to weaken both the plastic yield stress (specifically, the cohesion and friction angle) and the pre-yield viscosity that arises from diffusion and/or dislocation creep.

\item ``total strain&apos;&apos;: The finite strain is approximated as the product of the second invariant of the strain rate in each time step and the time step size, and this quantity is integrated and tracked over time. It is used to weaken both the plastic yield stress (specifically, the cohesion and friction angle) and the pre-yield viscosity.

\item ``plastic weakening with plastic strain only&apos;&apos;: The finite strain is approximated as the product of the second invariant of the strain ratein each time step and the time step size in regions where material is plastically yielding. This quantity is integrated and tracked over time, and used to weaken the cohesion and friction angle. The pre-yield viscosity is not weakened.

\item ``plastic weakening with total strain only&apos;&apos;: The finite strain is approximated as the product of the second invariant of the strain rate in each time step and the time step size, and this quantity is integrated and tracked over time. It is used to weaken the plastic yield stress (specifically, the cohesion and internal friction angle). The pre-yield viscosity is not weakened.

\item ``plastic weakening with plastic strain and viscous weakening with viscous strain&apos;&apos;: Both the finite strain accumulated by plastic deformation and by viscous deformation are computed separately (each approximated as the product of the second invariant of the corresponding strain rate in each time step and the time step size). The plastic strain is used to weaken the plastic yield stress (specifically, the cohesion and yield angle), and the viscous strain is used to weaken the pre-yield viscosity.

\item ``viscous weakening with viscous strain only&apos;&apos;: The finite strain is approximated as the product of the second invariant of the strain rate in each time step and the time step size in regions where material is not plastically yielding. This quantity is integrated and tracked over time, and used to weaken the pre-yield viscosity. The cohesion and friction angle are not weakened.

\item ``default&apos;&apos;: The default option has the same behavior as ``none&apos;&apos;, but is there to make sure that the original parameters for specifying the strain weakening mechanism (``Use plastic/viscous strain weakening&apos;&apos;) are still allowed, but to guarantee that one uses either the old parameter names or the new ones, never both.

If a compositional field named &apos;noninitial\_plastic\_strain&apos; is included in the parameter file, this field will automatically be excluded from from volume fraction calculation and track the cumulative plastic strain with the initial plastic strain values removed.
</documentation>
<pattern>
518
</pattern>
<pattern_description>
[Selection none|finite strain tensor|total strain|plastic weakening with plastic strain only|plastic weakening with total strain only|plastic weakening with plastic strain and viscous weakening with viscous strain|viscous weakening with viscous strain only|default ]
</pattern_description>
</Strain_20weakening_20mechanism>
<Stress_20exponents_20for_20Peierls_20creep>
<value>
2.0
</value>
<default_value>
2.0
</default_value>
<documentation>
List of stress exponents, $n_{\text{peierls}}$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: None.
</documentation>
<pattern>
576
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Stress_20exponents_20for_20Peierls_20creep>
<Stress_20exponents_20for_20diffusion_20creep>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
List of stress exponents, $n_{\text{diffusion}}$, for background mantle and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. The stress exponent for diffusion creep is almost always equal to one. If only one value is given, then all use the same value.  Units: None.
</documentation>
<pattern>
558
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Stress_20exponents_20for_20diffusion_20creep>
<Stress_20exponents_20for_20dislocation_20creep>
<value>
3.5
</value>
<default_value>
3.5
</default_value>
<documentation>
List of stress exponents, $n_{\text{dislocation}}$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: None.
</documentation>
<pattern>
564
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Stress_20exponents_20for_20dislocation_20creep>
<Stress_20limiter_20exponents>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
List of stress limiter exponents, $n_{\text{lim}}$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. Units: none.
</documentation>
<pattern>
596
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Stress_20limiter_20exponents>
<Thermal_20conductivities>
<value>
3.0
</value>
<default_value>
3.0
</default_value>
<documentation>
List of thermal conductivities, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
600
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Thermal_20conductivities>
<Thermal_20diffusivities>
<value>
0.8e-6
</value>
<default_value>
0.8e-6
</default_value>
<documentation>
List of thermal diffusivities, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value.  Units: \si{\meter\squared\per\second}.
</documentation>
<pattern>
598
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Thermal_20diffusivities>
<Thermal_20expansivities>
<value>
0.000035
</value>
<default_value>
0.000035
</default_value>
<documentation>
List of thermal expansivities for background mantle and compositional fields,for a total of N+M+1 values, where N is the number of compositional fields and M is the number of phases. If only one value is given, then all use the same value. Units: \si{\per\kelvin}.
</documentation>
<pattern>
516
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Thermal_20expansivities>
<Upper_20temperature_20for_20maximum_20strain_20weakening>
<value>
1023.
</value>
<default_value>
1023.
</default_value>
<documentation>
List of upper temperatures for maximum strain weakening for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\kelvin}.
</documentation>
<pattern>
529
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Upper_20temperature_20for_20maximum_20strain_20weakening>
<Upper_20temperature_20for_20onset_20of_20strain_20weakening>
<value>
1123.
</value>
<default_value>
1123.
</default_value>
<documentation>
List of upper temperatures for onset of strain weakeningfor background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\kelvin}.
</documentation>
<pattern>
530
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Upper_20temperature_20for_20onset_20of_20strain_20weakening>
<Use_20adiabatic_20pressure_20in_20creep_20viscosity>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use the adiabatic pressure instead of the full pressure (default) when calculating viscous creep. This may be helpful in models where the full pressure has an unusually large negative value arising from large negative dynamic pressure, resulting in solver convergence issue and in some cases a viscosity of zero.
</documentation>
<pattern>
555
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20adiabatic_20pressure_20in_20creep_20viscosity>
<Use_20adiabatic_20pressure_20in_20plasticity>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use the adiabatic pressure instead of the full pressure when calculating plastic yield stress. This may be helpful in models where the full pressure has unusually large variations, resulting in solver convergence issues. Be aware that this setting will change the plastic shear band angle.
</documentation>
<pattern>
556
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20adiabatic_20pressure_20in_20plasticity>
<Use_20fixed_20elastic_20time_20step>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Select whether the material time scale in the viscoelastic constitutive relationship uses the regular numerical time step or a separate fixed elastic time step throughout the model run. The fixed elastic time step is always used during the initial time step. If a fixed elastic time step is used throughout the model run, a stress averaging scheme is applied to account for differences with the numerical time step. An alternative approach is to limit the maximum time step size so that it is equal to the elastic time step. The default value of this parameter is &apos;unspecified&apos;, which throws an exception during runtime. In order for the model to run the user must select &apos;true&apos; or &apos;false&apos;.
</documentation>
<pattern>
543
</pattern>
<pattern_description>
[Selection true|false|unspecified ]
</pattern_description>
</Use_20fixed_20elastic_20time_20step>
<Use_20plastic_20damper>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use a plastic damper when computing the Drucker-Prager plastic viscosity. The damper acts to stabilize the plastic shear band width and remove associated mesh-dependent behavior at sufficient resolutions.
</documentation>
<pattern>
594
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20plastic_20damper>
<Use_20temperature_20activated_20strain_20softening>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether viscous strain softening factor depends on temperature
</documentation>
<pattern>
526
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20temperature_20activated_20strain_20softening>
<Viscosity_20averaging_20scheme>
<value>
harmonic
</value>
<default_value>
harmonic
</default_value>
<documentation>
When more than one compositional field is present at a point with different viscosities, we need to come up with an average viscosity at that point.  Select a weighted harmonic, arithmetic, geometric, or maximum composition.
</documentation>
<pattern>
551
</pattern>
<pattern_description>
[Selection arithmetic|harmonic|geometric|maximum composition ]
</pattern_description>
</Viscosity_20averaging_20scheme>
<Viscosity_20prefactor_20scheme>
<value>
none
</value>
<default_value>
none
</default_value>
<documentation>
Select what type of viscosity multiplicative prefactor scheme to apply. Allowed entries are &apos;none&apos;, and &apos;HK04 olivine hydration&apos;. HK04 olivine hydration calculates the viscosity change due to hydrogen incorporation into olivine following Hirth &amp; Kohlstaedt 2004 (10.1029/138GM06). none does not modify the viscosity. Units: none.
</documentation>
<pattern>
590
</pattern>
<pattern_description>
[Selection none|HK04 olivine hydration ]
</pattern_description>
</Viscosity_20prefactor_20scheme>
<Viscosity_20ratios_20for_20Frank_20Kamenetskii>
<value>
15.
</value>
<default_value>
15.
</default_value>
<documentation>
An adjusted viscosity ratio, $E$, for the viscosity approximation, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: None
</documentation>
<pattern>
567
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Viscosity_20ratios_20for_20Frank_20Kamenetskii>
<Viscous_20flow_20law>
<value>
composite
</value>
<default_value>
composite
</default_value>
<documentation>
Select what type of viscosity law to use between diffusion, dislocation, frank kamenetskii, and composite options. Soon there will be an option to select a specific flow law for each assigned composition 
</documentation>
<pattern>
552
</pattern>
<pattern_description>
[Selection diffusion|dislocation|frank kamenetskii|composite ]
</pattern_description>
</Viscous_20flow_20law>
<Water_20fugacity_20exponents_20for_20diffusion_20creep>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
List of water fugacity exponents for diffusion creep for background material and compositional fields, for a total of N+1 where N is the number of all compositional fields or only those corresponding to chemical compositions. This is only applied when using the Viscosity prefactor scheme &apos;HK04 olivine hydration&apos;. Note, the water fugacity exponent required by ASPECT for diffusion creep is r/n, where n is the stress exponent for diffusion creep, which typically is 1. Units: none.
</documentation>
<pattern>
588
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Water_20fugacity_20exponents_20for_20diffusion_20creep>
<Water_20fugacity_20exponents_20for_20dislocation_20creep>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
List of water fugacity exponents for dislocation creep for background material and compositional fields, for a total of N+1 where N is the number of all compositional fields or only those corresponding to chemical compositions. This is only applied when using the Viscosity prefactor scheme &apos;HK04 olivine hydration&apos;. Note, the water fugacity exponent required by ASPECT for dislocation creep is r/n, where n is the stress exponent for dislocation creep, which typically is 3.5. Units: none.
</documentation>
<pattern>
589
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Water_20fugacity_20exponents_20for_20dislocation_20creep>
<Yield_20mechanism>
<value>
drucker
</value>
<default_value>
drucker
</default_value>
<documentation>
Select what type of yield mechanism to use between Drucker Prager and stress limiter options.
</documentation>
<pattern>
553
</pattern>
<pattern_description>
[Selection drucker|limiter ]
</pattern_description>
</Yield_20mechanism>
<Friction_20function>
<Coordinate_20system>
<value>
cartesian
</value>
<default_value>
cartesian
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `cartesian&apos;, `spherical&apos;, and `depth&apos;. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle. `depth&apos; will create a function, in which only the first parameter is non-zero, which is interpreted to be the depth of the point.
</documentation>
<pattern>
538
</pattern>
<pattern_description>
[Selection cartesian|spherical|depth ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
541
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
540
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
539
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Friction_20function>
</Visco_20Plastic>
<Viscoelastic>
<Densities>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
List of densities for background mantle and compositional fields,for a total of N+M+1 values, where N is the number of compositional fields and M is the number of phases. If only one value is given, then all use the same value. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
602
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Densities>
<Elastic_20damper_20viscosity>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
Viscosity of a viscous damper that acts in parallel with the elastic element to stabilize behavior. Units: \si{\pascal\second}
</documentation>
<pattern>
609
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Elastic_20damper_20viscosity>
<Elastic_20shear_20moduli>
<value>
75.0e9
</value>
<default_value>
75.0e9
</default_value>
<documentation>
List of elastic shear moduli, $G$, for background material and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. The default value of 75 GPa is representative of mantle rocks. Units: Pa.
</documentation>
<pattern>
605
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Elastic_20shear_20moduli>
<Fixed_20elastic_20time_20step>
<value>
1.e3
</value>
<default_value>
1.e3
</default_value>
<documentation>
The fixed elastic time step $dte$. Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
607
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Fixed_20elastic_20time_20step>
<Heat_20capacities>
<value>
1250.
</value>
<default_value>
1250.
</default_value>
<documentation>
List of specific heats $C_p$ for background mantle and compositional fields,for a total of N+M+1 values, where N is the number of compositional fields and M is the number of phases. If only one value is given, then all use the same value. Units: \si{\joule\per\kelvin\per\kilogram}.
</documentation>
<pattern>
604
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Heat_20capacities>
<Reference_20temperature>
<value>
293.
</value>
<default_value>
293.
</default_value>
<documentation>
The reference temperature $T_0$. Units: \si{\kelvin}.
</documentation>
<pattern>
601
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20temperature>
<Specific_20heats>
<alias>
Heat capacities
</alias>
<deprecation_status>
false
</deprecation_status>
</Specific_20heats>
<Stabilization_20time_20scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
A stabilization factor for the elastic stresses that influences how fast elastic stresses adjust to deformation. This value is equal to the elastic time step divided by the computational time step. The default value of 1.0 may lead to oscillatory motion. Increasing this factor to 2.0 can reduce oscillations while preserving an immediate elastic response. In complex models the factor can be increased further to improve convergence behaviour. As the stabilization factor increases, the effective viscosity gets smaller, and is balanced by an increasing body force term. For composite rheologies that use this formulation of elasticity, setting an infinite shear modulus only recovers the nonelastic part of the rheology if this stabilization factor is equal to 1.0.
</documentation>
<pattern>
608
</pattern>
<pattern_description>
[Double 1...MAX_DOUBLE (inclusive)]
</pattern_description>
</Stabilization_20time_20scale_20factor>
<Thermal_20conductivities>
<value>
4.7
</value>
<default_value>
4.7
</default_value>
<documentation>
List of thermal conductivities for background mantle and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\watt\per\meter\per\kelvin}.
</documentation>
<pattern>
611
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Thermal_20conductivities>
<Thermal_20expansivities>
<value>
0.000035
</value>
<default_value>
0.000035
</default_value>
<documentation>
List of thermal expansivities for background mantle and compositional fields,for a total of N+M+1 values, where N is the number of compositional fields and M is the number of phases. If only one value is given, then all use the same value. Units: \si{\per\kelvin}.
</documentation>
<pattern>
603
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Thermal_20expansivities>
<Use_20fixed_20elastic_20time_20step>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Select whether the material time scale in the viscoelastic constitutive relationship uses the regular numerical time step or a separate fixed elastic time step throughout the model run. The fixed elastic time step is always used during the initial time step. If a fixed elastic time step is used throughout the model run, a stress averaging scheme is applied to account for differences with the numerical time step. An alternative approach is to limit the maximum time step size so that it is equal to the elastic time step. The default value of this parameter is &apos;unspecified&apos;, which throws an exception during runtime. In order for the model to run the user must select &apos;true&apos; or &apos;false&apos;.
</documentation>
<pattern>
606
</pattern>
<pattern_description>
[Selection true|false|unspecified ]
</pattern_description>
</Use_20fixed_20elastic_20time_20step>
<Viscosities>
<value>
1.e21
</value>
<default_value>
1.e21
</default_value>
<documentation>
List of viscosities for background mantle and compositional fields, for a total of N+1 values, where N is the number of all compositional fields or only those corresponding to chemical compositions. If only one value is given, then all use the same value. Units: \si{\pascal\second}.
</documentation>
<pattern>
610
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Viscosities>
<Viscosity_20averaging_20scheme>
<value>
harmonic
</value>
<default_value>
harmonic
</default_value>
<documentation>
When more than one compositional field is present at a point with different viscosities, we need to come up with an average viscosity at that point.  Select a weighted harmonic, arithmetic, geometric, or maximum composition.
</documentation>
<pattern>
612
</pattern>
<pattern_description>
[Selection arithmetic|harmonic|geometric|maximum composition  ]
</pattern_description>
</Viscosity_20averaging_20scheme>
</Viscoelastic>
</Material_20model>
<Melt_20settings>
<Average_20melt_20velocity>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to cell-wise average the material properties that are used to compute the melt velocity or not. The melt velocity is computed as the sum of the solid velocity and the phase separation flux $ - K_D / \phi (\nabla p_f - \rho_f \mathbf g)$. If this parameter is set to true, $K_D$ and $\phi$ will be averaged cell-wise in the computation of the phase separation flux. This is useful because in some models the melt velocity can have spikes close to the interface between regions of melt and no melt, as both $K_D$ and $\phi$ go to zero for vanishing melt fraction. As the melt velocity is used for computing the time step size, and in models that use heat transport by melt or shear heating of melt, setting this parameter to true can speed up the model and make it mode stable. In computations where accuracy and convergence behavior of the melt velocity is important (like in benchmark cases with an analytical solution), this parameter should probably be set to &apos;false&apos;.
</documentation>
<pattern>
109
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Average_20melt_20velocity>
<Heat_20advection_20by_20melt>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use a porosity weighted average of the melt and solid velocity to advect heat in the temperature equation or not. If this is set to true, additional terms are assembled on the left-hand side of the temperature advection equation. Only used if Include melt transport is true. If this is set to false, only the solid velocity is used (as in models without melt migration).
</documentation>
<pattern>
107
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Heat_20advection_20by_20melt>
<Include_20melt_20transport>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to include the transport of melt into the model or not. If this is set to true, two additional pressures (the fluid pressure and the compaction pressure) will be added to the finite element. Including melt transport in the simulation also requires that there is one compositional field that has the name `porosity&apos;. This field will be used for computing the additional pressures and the melt velocity, and has a different advection equation than other compositional fields, as it is effectively advected with the melt velocity.
</documentation>
<pattern>
55
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Include_20melt_20transport>
<Melt_20scaling_20factor_20threshold>
<value>
1e-7
</value>
<default_value>
1e-7
</default_value>
<documentation>
The factor by how much the Darcy coefficient K\_D in a cell can be smaller than the reference Darcy coefficient for this cell still to be considered a melt cell (for which the melt transport equations are solved). For smaller Darcy coefficients, the Stokes equations (without melt) are solved instead. Only used if ``Include melt transport&apos;&apos; is true. 
</documentation>
<pattern>
106
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Melt_20scaling_20factor_20threshold>
<Use_20discontinuous_20compaction_20pressure>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to use a discontinuous element for the compaction pressure or not. From our preliminary tests, continuous elements seem to work better in models where the porosity is &gt; 0 everywhere in the domain, and discontinuous elements work better in models where in parts of the domain the porosity = 0.
</documentation>
<pattern>
108
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20discontinuous_20compaction_20pressure>
</Melt_20settings>
<Mesh_20deformation>
<Additional_20tangential_20mesh_20velocity_20boundary_20indicators>
<value/>
<default_value/>
<documentation>
A comma separated list of names denoting those boundaries where there the mesh is allowed to move tangential to the boundary. All tangential mesh movements along those boundaries that have tangential material velocity boundary conditions are allowed by default, this parameters allows to generate mesh movements along other boundaries that are open, or have prescribed material velocities or tractions.

The names of the boundaries listed here can either be numbers (in which case they correspond to the numerical boundary indicators assigned by the geometry object), or they can correspond to any of the symbolic names the geometry object may have provided for each part of the boundary. You may want to compare this with the documentation of the geometry model you use in your model.
</documentation>
<pattern>
124
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Additional_20tangential_20mesh_20velocity_20boundary_20indicators>
<Mesh_20deformation_20boundary_20indicators>
<value/>
<default_value/>
<documentation>
A comma separated list of names denoting those boundaries where there the mesh is allowed to move according to the specified mesh deformation objects. 

The names of the boundaries listed here can either be numbers (in which case they correspond to the numerical boundary indicators assigned by the geometry object), or they can correspond to any of the symbolic names the geometry object may have provided for each part of the boundary. You may want to compare this with the documentation of the geometry model you use in your model. 

The format is id1: object1 \&amp; object2, id2: object3 \&amp; object2, where objects are one of `ascii data&apos;: Implementation of a model in which the initial mesh deformation (initial topography) is derived from a file containing data in ascii format. The following geometry models are currently supported: box, chunk, spherical. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `Topography [m]&apos; in a 2d model and  `x&apos;, `y&apos;, `Topography [m]&apos; in a 3d model, which means that there has to be a single column containing the topography. Note that the data in the input file needs to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the assumed grid changes. `x&apos; will be replaced by the azimuth angle in radians  and `y&apos; by the polar angle in radians measured positive from the north pole. The grid will be assumed to be a longitude-colatitude grid. Note that the order of spherical coordinates is `phi&apos;, `theta&apos; and not `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`boundary function&apos;: A plugin, which prescribes the surface mesh to deform according to an analytically prescribed function. Note that the function prescribes a deformation velocity, i.e. the return value of this plugin is later multiplied by the time step length to compute the displacement increment in this time step. Although the function&apos;s time variable is interpreted as years when Use years in output instead of seconds is set to true, the boundary deformation velocity should still be given in m/s. The format of the functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`diffusion&apos;: A plugin that computes the deformation of surface vertices according to the solution of the hillslope diffusion problem. Specifically, at the end of each timestep, or after a specific number of timesteps, this plugin solves the following equation: \begin{align*}  \frac{\partial h}{\partial t} = \kappa \left( \frac{\partial^{2} h}{\partial x^{2}} + \frac{\partial^{2} h}{\partial y^{2}} \right), \end{align*} where $\kappa$ is the hillslope diffusion coefficient (diffusivity), and $h(x,y)$ the height of a point along the top boundary with respect to the surface of the unperturbed domain. 

Using this definition, the plugin then solves for one time step, i.e., using as initial condition $h(t_{n-1})$ the current surface elevation, and computing $h(t_n)$ from it by solving the equation above over the time interval $t_n-t_{n-1}$. From this, one can then compute a surface velocity $v = \frac{h(t_n)-h(t_{n-1})}{t_n-t_{n-1}}$. 

This surface velocity is used to deform the surface and as a boundary condition for solving the Laplace equation to determine the mesh velocity in the domain interior. Diffusion can be applied every timestep, mimicking surface processes of erosion and deposition, or at a user-defined timestep interval to purely smooth the surface topography to avoid too great a distortion of mesh elements when a free surface is also used.

`free surface&apos;: A plugin that computes the deformation of surface vertices according to the solution of the flow problem. In particular this means if the surface of the domain is left open to flow, this flow will carry the mesh with it. The implementation was described in \cite{rose_freesurface}, with the stabilization of the free surface originally described in \cite{kaus:etal:2010}.
</documentation>
<pattern>
125
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Mesh_20deformation_20boundary_20indicators>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/geometry-model/initial-topography-model/ascii-data/test/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/geometry-model/initial-topography-model/ascii-data/test/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
133
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
box_3d_%s.0.txt
</value>
<default_value>
box_3d_%s.0.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
134
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
135
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Ascii_20data_20model>
<Boundary_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
132
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0; 0
</value>
<default_value>
0; 0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
131
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
130
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Boundary_20function>
<Diffusion>
<Hillslope_20transport_20coefficient>
<value>
1e-6
</value>
<default_value>
1e-6
</default_value>
<documentation>
The hillslope transport coefficient $\kappa$ used to diffuse the free surface, either as a  stabilization step or to mimic erosional and depositional processes. Units: $\si{m^2/s}$. 
</documentation>
<pattern>
127
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Hillslope_20transport_20coefficient>
<Time_20steps_20between_20diffusion>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The number of time steps between each application of diffusion.
</documentation>
<pattern>
128
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Time_20steps_20between_20diffusion>
</Diffusion>
<Free_20surface>
<Free_20surface_20stabilization_20theta>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
Theta parameter described in \cite{kaus:etal:2010}. An unstabilized free surface can overshoot its equilibrium position quite easily and generate unphysical results.  One solution is to use a quasi-implicit correction term to the forces near the free surface.  This parameter describes how much the free surface is stabilized with this term, where zero is no stabilization, and one is fully implicit.
</documentation>
<pattern>
126
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Free_20surface_20stabilization_20theta>
<Surface_20velocity_20projection>
<value>
normal
</value>
<default_value>
normal
</default_value>
<documentation>
After each time step the free surface must be advected in the direction of the velocity field. Mass conservation requires that the mesh velocity is in the normal direction of the surface. However, for steep topography or large curvature, advection in the normal direction can become ill-conditioned, and instabilities in the mesh can form. Projection of the mesh velocity onto the local vertical direction can preserve the mesh quality better, but at the cost of slightly poorer mass conservation of the domain.
</documentation>
<pattern>
129
</pattern>
<pattern_description>
[Selection normal|vertical ]
</pattern_description>
</Surface_20velocity_20projection>
</Free_20surface>
</Mesh_20deformation>
<Mesh_20refinement>
<Adapt_20by_20fraction_20of_20cells>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Use fraction of the total number of cells instead of fraction of the total error as the limit for refinement and coarsening.
</documentation>
<pattern>
64
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Adapt_20by_20fraction_20of_20cells>
<Additional_20refinement_20times>
<value/>
<default_value/>
<documentation>
A list of times so that if the end time of a time step is beyond this time, an additional round of mesh refinement is triggered. This is mostly useful to make sure we can get through the initial transient phase of a simulation on a relatively coarse mesh, and then refine again when we are in a time range that we are interested in and where we would like to use a finer mesh. Units: Each element of the list has units years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
66
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Additional_20refinement_20times>
<Coarsening_20fraction>
<value>
0.05
</value>
<default_value>
0.05
</default_value>
<documentation>
Cells are sorted from largest to smallest by their total error (determined by the Strategy). Then the cells with the smallest error (bottom of this sorted list) that account for the given fraction of the error are coarsened.
</documentation>
<pattern>
63
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Coarsening_20fraction>
<Initial_20adaptive_20refinement>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The number of adaptive refinement steps performed after initial global refinement but while still within the first time step. These refinement steps (n) are added to the value for initial global refinement (m) so that the final mesh has cells that are at most on refinement level $n+m$.
</documentation>
<pattern>
60
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Initial_20adaptive_20refinement>
<Initial_20global_20refinement>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
The number of global refinement steps performed on the initial coarse mesh, before the problem is first solved there.

Note that it is possible to supply conflicting refinement and coarsening settings, such as an &apos;Initial global refinement&apos; of 4 and a &apos;Maximum refinement function&apos; strategy that limits the refinement locally to 2. In this case, the tagging strategies such as the &apos;Maximum refinement function&apos; will remove refinement flags in each initial global refinement step, such that the resulting mesh is not necessarily uniform or of the level given by the &apos;Initial global refinement&apos; parameter.
</documentation>
<pattern>
59
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Initial_20global_20refinement>
<Minimum_20refinement_20level>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The minimum refinement level each cell should have, and that can not be exceeded by coarsening. Should not be higher than the &apos;Initial global refinement&apos; parameter.
</documentation>
<pattern>
65
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Minimum_20refinement_20level>
<Normalize_20individual_20refinement_20criteria>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
If multiple refinement criteria are specified in the ``Strategy&apos;&apos; parameter, then they need to be combined somehow to form the final refinement indicators. This is done using the method described by the ``Refinement criteria merge operation&apos;&apos; parameter which can either operate on the raw refinement indicators returned by each strategy (i.e., dimensional quantities) or using normalized values where the indicators of each strategy are first normalized to the interval $[0,1]$ (which also makes them non-dimensional). This parameter determines whether this normalization will happen.
</documentation>
<pattern>
408
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Normalize_20individual_20refinement_20criteria>
<Refinement_20criteria_20merge_20operation>
<value>
max
</value>
<default_value>
max
</default_value>
<documentation>
If multiple mesh refinement criteria are computed for each cell (by passing a list of more than element to the \texttt{Strategy} parameter in this section of the input file) then one will have to decide which criteria should win when deciding which cells to refine. The operation that determines how to combine these competing criteria is the one that is selected here. The options are:

\begin{itemize}
\item \texttt{plus}: Add the various error indicators together and refine those cells on which the sum of indicators is largest.
\item \texttt{max}: Take the maximum of the various error indicators and refine those cells on which the maximal indicators is largest.
\end{itemize}The refinement indicators computed by each strategy are modified by the ``Normalize individual refinement criteria&apos;&apos; and ``Refinement criteria scale factors&apos;&apos; parameters.
</documentation>
<pattern>
410
</pattern>
<pattern_description>
[Selection plus|max ]
</pattern_description>
</Refinement_20criteria_20merge_20operation>
<Refinement_20criteria_20scaling_20factors>
<value/>
<default_value/>
<documentation>
A list of scaling factors by which every individual refinement criterion will be multiplied by. If only a single refinement criterion is selected (using the ``Strategy&apos;&apos; parameter, then this parameter has no particular meaning. On the other hand, if multiple criteria are chosen, then these factors are used to weigh the various indicators relative to each other. 

If ``Normalize individual refinement criteria&apos;&apos; is set to true, then the criteria will first be normalized to the interval $[0,1]$ and then multiplied by the factors specified here. You will likely want to choose the factors to be not too far from 1 in that case, say between 1 and 10, to avoid essentially disabling those criteria with small weights. On the other hand, if the criteria are not normalized to $[0,1]$ using the parameter mentioned above, then the factors you specify here need to take into account the relative numerical size of refinement indicators (which in that case carry physical units).

You can experimentally play with these scaling factors by choosing to output the refinement indicators into the graphical output of a run.

If the list of indicators given in this parameter is empty, then this indicates that they should all be chosen equal to one. If the list is not empty then it needs to have as many entries as there are indicators chosen in the ``Strategy&apos;&apos; parameter.
</documentation>
<pattern>
409
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Refinement_20criteria_20scaling_20factors>
<Refinement_20fraction>
<value>
0.3
</value>
<default_value>
0.3
</default_value>
<documentation>
Cells are sorted from largest to smallest by their total error (determined by the Strategy). Then the cells with the largest error (top of this sorted list) that account for given fraction of the error are refined.
</documentation>
<pattern>
62
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Refinement_20fraction>
<Run_20postprocessors_20on_20initial_20refinement>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether or not the postprocessors should be executed after each of the initial adaptive refinement cycles that are run at the start of the simulation. This is useful for plotting/analyzing how the mesh refinement parameters are working for a particular model.
</documentation>
<pattern>
67
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Run_20postprocessors_20on_20initial_20refinement>
<Skip_20setup_20initial_20conditions_20on_20initial_20refinement>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether or not the initial conditions should be set up during the adaptive refinement cycles that are run at the start of the simulation.
</documentation>
<pattern>
69
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Skip_20setup_20initial_20conditions_20on_20initial_20refinement>
<Skip_20solvers_20on_20initial_20refinement>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether or not solvers should be executed during the initial adaptive refinement cycles that are run at the start of the simulation.
</documentation>
<pattern>
68
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Skip_20solvers_20on_20initial_20refinement>
<Strategy>
<value>
thermal energy density
</value>
<default_value>
thermal energy density
</default_value>
<documentation>
A comma separated list of mesh refinement criteria that will be run whenever mesh refinement is required. The results of each of these criteria, i.e., the refinement indicators they produce for all the cells of the mesh will then be normalized to a range between zero and one and the results of different criteria will then be merged through the operation selected in this section.

The following criteria are available:

`artificial viscosity&apos;: A mesh refinement criterion that computes refinement indicators from the artificial viscosity of the temperature or compositional fields based on user specified weights.

`boundary&apos;: A class that implements a mesh refinement criterion which always flags all cells on specified boundaries for refinement. This is useful to provide high accuracy for processes at or close to the edge of the model domain.

To use this refinement criterion, you may want to combine it with other refinement criteria, setting the &apos;Normalize individual refinement criteria&apos; flag and using the `max&apos; setting for &apos;Refinement criteria merge operation&apos;.

`compaction length&apos;: A mesh refinement criterion for models with melt transport that computes refinement indicators based on the compaction length, defined as $\delta = \sqrt{\frac{(\xi + 4 \eta/3) k}{\eta_f}}$. $\xi$ is the bulk viscosity, $\eta$ is the shear viscosity, $k$ is the permeability and $\eta_f$ is the melt viscosity. If the cell width or height exceeds a multiple (which is specified as an input parameter) of this compaction length, the cell is marked for refinement.

`composition&apos;: A mesh refinement criterion that computes refinement indicators from the compositional fields. If there is more than one compositional field, then it simply takes the sum of the indicators computed from each of the compositional field.

The way these indicators are computed is by evaluating the `Kelly error indicator&apos; on each compositional field. This error indicator takes the finite element approximation of the compositional field and uses it to compute an approximation of the second derivatives of the composition for each cell. This approximation is then multiplied by an appropriate power of the cell&apos;s diameter to yield an indicator for how large the error is likely going to be on this cell. This construction rests on the observation that for many partial differential equations, the error on each cell is proportional to some power of the cell&apos;s diameter times the second derivatives of the solution on that cell.

For complex equations such as those we solve here, this observation may not be strictly true in the mathematical sense, but it often yields meshes that are surprisingly good.

`composition approximate gradient&apos;: A mesh refinement criterion that computes refinement indicators from the gradients of compositional fields. If there is more than one compositional field, then it simply takes the sum of the indicators times a user-specified weight for each field.

In contrast to the `composition gradient&apos; refinement criterion, the current criterion does not compute the gradient at quadrature points on each cell, but by a finite difference approximation between the centers of cells. Consequently, it also works if the compositional fields are computed using discontinuous finite elements.

`composition gradient&apos;: A mesh refinement criterion that computes refinement indicators from the gradients of compositional fields. If there is more than one compositional field, then it simply takes the sum of the indicators times a user-specified weight for each field.

This refinement criterion computes the gradient of the compositional field at quadrature points on each cell, and then averages them in some way to obtain a refinement indicator for each cell. This will give a reasonable approximation of the true gradient of the compositional field if you are using a continuous finite element.

On the other hand, for discontinuous finite elements (see the `Use discontinuous composition discretization&apos; parameter in the `Discretization&apos; section), the gradient at quadrature points does not include the contribution of jumps in the compositional field between cells, and consequently will not be an accurate approximation of the true gradient. As an extreme example, consider the case of using piecewise constant finite elements for compositional fields; in that case, the gradient of the solution at quadrature points inside each cell will always be exactly zero, even if the finite element solution is different from each cell to the next. Consequently, the current refinement criterion will likely not be useful in this situation. That said, the `composition approximate gradient&apos; refinement criterion exists for exactly this purpose.

`composition threshold&apos;: A mesh refinement criterion that computes refinement indicators from the compositional fields. If any field exceeds the threshold given in the input file, the cell is marked for refinement.

`density&apos;: A mesh refinement criterion that computes refinement indicators from a field that describes the spatial variability of the density, $\rho$. Because this quantity may not be a continuous function ($\rho$ and $C_p$ may be discontinuous functions along discontinuities in the medium, for example due to phase changes), we approximate the gradient of this quantity to refine the mesh. The error indicator defined here takes the magnitude of the approximate gradient and scales it by $h_K^{1+d/2}$ where $h_K$ is the diameter of each cell and $d$ is the dimension. This scaling ensures that the error indicators converge to zero as $h_K\rightarrow 0$ even if the energy density is discontinuous, since the gradient of a discontinuous function grows like $1/h_K$.

`isosurfaces&apos;: A mesh refinement criterion that computes coarsening and refinement indicators between two isosurfaces of specific field entries (e.g. temperature, composition).

The way these indicators are derived between pairs of isosurfaces is by checking whether the solutions of specific fields are within the ranges of the isosurface values given. If these conditions hold, then coarsening and refinement indicators are set such that the mesh refinement levels lies within the range of levels given. Usage of this plugin allows the user to put a conditional minimum and maximum refinement function onto fields that they are interested in.

For now, only temperature and compositional fields are allowed as field entries. The key words could be &apos;Temperature&apos; or one of the names of the compositional fields which are either specified by user or set up as C\_0, C\_1, etc.

Usage: A list of isosurfaces separated by semi-colons (;). Each isosurface entry consists of multiple entries separated by a comma. The first two entries indicate the minimum and maximum refinement levels respectively. The entries after the first two describe the fields the isosurface applies to, followed by a colon (:), which again is followed by the minimum and maximum field values separated by a bar (|). An example for two isosurface entries is &apos;0, 2, Temperature: 300 | 600; 2, 2, C\_1: 0.5 | 1&apos;. If both isoterm entries are triggered at the same location and the current refinement level is 1, it means that the first isoline will not set any flag and the second isoline will set a refinement flag. This means the cell will be refined. If both the coarsening and refinement flags are set, preference is given to refinement. 

The minimum and maximum refinement levels per isosurface can be provided in absolute values relative to the global minimum and maximum refinement. This is done with the &apos;min&apos; and &apos;max&apos; key words. For example: &apos;set Isosurfaces = max-2,  max,    Temperature: 0 | 600 ; min + 1,min+2, Temperature: 1600 | 3000,   C\_2 : 0.0 | 0.5&apos;.

`maximum refinement function&apos;: A mesh refinement criterion that ensures a maximum refinement level described by an explicit formula with the depth or position as argument. Which coordinate representation is used is determined by an input parameter. Whatever the coordinate system chosen, the function you provide in the input file will by default depend on variables `x&apos;, `y&apos; and `z&apos; (if in 3d). However, the meaning of these symbols depends on the coordinate system. In the Cartesian coordinate system, they simply refer to their natural meaning. If you have selected `depth&apos; for the coordinate system, then `x&apos; refers to the depth variable and `y&apos; and `z&apos; will simply always be zero. If you have selected a spherical coordinate system, then `x&apos; will refer to the radial distance of the point to the origin, `y&apos; to the azimuth angle and `z&apos; to the polar angle measured positive from the north pole. Note that the order of spherical coordinates is r,phi,theta and not r,theta,phi, since this allows for dimension independent expressions. Each coordinate system also includes a final `t&apos; variable which represents the model time, evaluated in years if the &apos;Use years in output instead of seconds&apos; parameter is set, otherwise evaluated in seconds. After evaluating the function, its values are rounded to the nearest integer.

The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`minimum refinement function&apos;: A mesh refinement criterion that ensures a minimum refinement level described by an explicit formula with the depth or position as argument. Which coordinate representation is used is determined by an input parameter. Whatever the coordinate system chosen, the function you provide in the input file will by default depend on variables `x&apos;, `y&apos; and `z&apos; (if in 3d). However, the meaning of these symbols depends on the coordinate system. In the Cartesian coordinate system, they simply refer to their natural meaning. If you have selected `depth&apos; for the coordinate system, then `x&apos; refers to the depth variable and `y&apos; and `z&apos; will simply always be zero. If you have selected a spherical coordinate system, then `x&apos; will refer to the radial distance of the point to the origin, `y&apos; to the azimuth angle and `z&apos; to the polar angle measured positive from the north pole. Note that the order of spherical coordinates is r,phi,theta and not r,theta,phi, since this allows for dimension independent expressions. Each coordinate system also includes a final `t&apos; variable which represents the model time, evaluated in years if the &apos;Use years in output instead of seconds&apos; parameter is set, otherwise evaluated in seconds. After evaluating the function, its values are rounded to the nearest integer.

The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`nonadiabatic temperature&apos;: A mesh refinement criterion that computes refinement indicators from the excess temperature(difference between temperature and adiabatic temperature.

`nonadiabatic temperature threshold&apos;: A mesh refinement criterion that computes refinement indicators from the temperature difference between the actual temperature and the adiabatic conditions (the nonadiabatic temperature). If the temperature anomaly exceeds the threshold given in the input file, the cell is marked for refinement.

`particle density&apos;: A mesh refinement criterion that computes refinement indicators based on the density of particles. In practice this plugin equilibrates the number of particles per cell, leading to fine cells in high particle density regions and coarse cells in low particle density regions. This plugin is mostly useful for models with inhomogeneous particle density, e.g. when tracking an initial interface with a high particle density, or when the spatial particle density denotes the region of interest. Additionally, this plugin tends to balance the computational load between processes in parallel computations, because the particle and mesh density is more aligned.

`slope&apos;: A class that implements a mesh refinement criterion intended for use with deforming mesh boundaries, like the free surface. It calculates a local slope based on the angle between the surface normal and the local gravity vector. Cells with larger angles are marked for refinement.

To use this refinement criterion, you may want to combine it with other refinement criteria, setting the &apos;Normalize individual refinement criteria&apos; flag and using the `max&apos; setting for &apos;Refinement criteria merge operation&apos;.

`strain rate&apos;: A mesh refinement criterion that computes the refinement indicators equal to the strain rate norm computed at the center of the elements.

`temperature&apos;: A mesh refinement criterion that computes refinement indicators from the temperature field.

The way these indicators are computed is by evaluating the `Kelly error indicator&apos; on the temperature field. This error indicator takes the finite element approximation of the temperature field and uses it to compute an approximation of the second derivatives of the temperature for each cell. This approximation is then multiplied by an appropriate power of the cell&apos;s diameter to yield an indicator for how large the error is likely going to be on this cell. This construction rests on the observation that for many partial differential equations, the error on each cell is proportional to some power of the cell&apos;s diameter times the second derivatives of the solution on that cell.

For complex equations such as those we solve here, this observation may not be strictly true in the mathematical sense, but it often yields meshes that are surprisingly good.

`thermal energy density&apos;: A mesh refinement criterion that computes refinement indicators from a field that describes the spatial variability of the thermal energy density, $\rho C_p T$. Because this quantity may not be a continuous function ($\rho$ and $C_p$ may be discontinuous functions along discontinuities in the medium, for example due to phase changes), we approximate the gradient of this quantity to refine the mesh. The error indicator defined here takes the magnitude of the approximate gradient and scales it by $h_K^{1.5}$ where $h_K$ is the diameter of each cell. This scaling ensures that the error indicators converge to zero as $h_K\rightarrow 0$ even if the energy density is discontinuous, since the gradient of a discontinuous function grows like $1/h_K$.

`topography&apos;: A class that implements a mesh refinement criterion, which always flags all cells in the uppermost layer for refinement. This is useful to provide high accuracy for processes at or close to the surface.

To use this refinement criterion, you may want to combine it with other refinement criteria, setting the &apos;Normalize individual refinement criteria&apos; flag and using the `max&apos; setting for &apos;Refinement criteria merge operation&apos;.

`velocity&apos;: A mesh refinement criterion that computes refinement indicators from the velocity field.

The way these indicators are computed is by evaluating the `Kelly error indicator&apos; on the velocity field. This error indicator takes the finite element approximation of the velocity field and uses it to compute an approximation of the second derivatives of the velocity for each cell. This approximation is then multiplied by an appropriate power of the cell&apos;s diameter to yield an indicator for how large the error is likely going to be on this cell. This construction rests on the observation that for many partial differential equations, the error on each cell is proportional to some power of the cell&apos;s diameter times the second derivatives of the solution on that cell.

For complex equations such as those we solve here, this observation may not be strictly true in the mathematical sense, but it often yields meshes that are surprisingly good.

`viscosity&apos;: A mesh refinement criterion that computes refinement indicators from a field that describes the spatial variability of the logarithm of the viscosity, $\log\eta$. (We choose the logarithm of the viscosity because it can vary by orders of magnitude.)Because this quantity may not be a continuous function ($\eta$ may be a discontinuous function along discontinuities in the medium, for example due to phase changes), we approximate the gradient of this quantity to refine the mesh. The error indicator defined here takes the magnitude of the approximate gradient and scales it by $h_K^{1+d/2}$ where $h_K$ is the diameter of each cell and $d$ is the dimension. This scaling ensures that the error indicators converge to zero as $h_K\rightarrow 0$ even if the viscosity is discontinuous, since the gradient of a discontinuous function grows like $1/h_K$.

`volume of fluid interface&apos;: A class that implements a mesh refinement criterion, which ensures a minimum level of refinement near the volume of fluid interface boundary.
</documentation>
<pattern>
407
</pattern>
<pattern_description>
[MultipleSelection artificial viscosity|boundary|compaction length|composition|composition approximate gradient|composition gradient|composition threshold|density|isosurfaces|maximum refinement function|minimum refinement function|nonadiabatic temperature|nonadiabatic temperature threshold|particle density|slope|strain rate|temperature|thermal energy density|topography|velocity|viscosity|volume of fluid interface ]
</pattern_description>
</Strategy>
<Time_20steps_20between_20mesh_20refinement>
<value>
10
</value>
<default_value>
10
</default_value>
<documentation>
The number of time steps after which the mesh is to be adapted again based on computed error indicators. If 0 then the mesh will never be changed.
</documentation>
<pattern>
61
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Time_20steps_20between_20mesh_20refinement>
<Artificial_20viscosity>
<Compositional_20field_20scaling_20factors>
<value/>
<default_value/>
<documentation>
A list of scaling factors by which every individual compositional field will be multiplied. These factors are used to weigh the various indicators relative to each other and to the temperature. 

If the list of scaling factors given in this parameter is empty, then this indicates that they should all be chosen equal to 0. If the list is not empty then it needs to have as many entries as there are compositional fields.
</documentation>
<pattern>
428
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Compositional_20field_20scaling_20factors>
<Temperature_20scaling_20factor>
<value>
0.0
</value>
<default_value>
0.0
</default_value>
<documentation>
A scaling factor for the artificial viscosity  of the temperature equation. Use 0.0 to disable.
</documentation>
<pattern>
427
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Temperature_20scaling_20factor>
</Artificial_20viscosity>
<Boundary>
<Boundary_20refinement_20indicators>
<value/>
<default_value/>
<documentation>
A comma separated list of names denoting those boundaries where there should be mesh refinement.

The names of the boundaries listed here can either be numbers (in which case they correspond to the numerical boundary indicators assigned by the geometry object), or they can correspond to any of the symbolic names the geometry object may have provided for each part of the boundary. You may want to compare this with the documentation of the geometry model you use in your model.
</documentation>
<pattern>
429
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Boundary_20refinement_20indicators>
</Boundary>
<Compaction_20length>
<Mesh_20cells_20per_20compaction_20length>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
The desired ratio between compaction length and size of the mesh cells, or, in other words, how many cells the mesh should (at least) have per compaction length. Every cell where this ratio is smaller than the value specified by this parameter (in places with fewer mesh cells per compaction length) is marked for refinement.
</documentation>
<pattern>
430
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Mesh_20cells_20per_20compaction_20length>
</Compaction_20length>
<Composition>
<Compositional_20field_20scaling_20factors>
<value/>
<default_value/>
<documentation>
A list of scaling factors by which every individual compositional field will be multiplied. If only a single compositional field exists, then this parameter has no particular meaning. On the other hand, if multiple criteria are chosen, then these factors are used to weigh the various indicators relative to each other. 

If the list of scaling factors given in this parameter is empty, then this indicates that they should all be chosen equal to one. If the list is not empty then it needs to have as many entries as there are compositional fields.
</documentation>
<pattern>
418
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Compositional_20field_20scaling_20factors>
</Composition>
<Composition_20approximate_20gradient>
<Compositional_20field_20scaling_20factors>
<value/>
<default_value/>
<documentation>
A list of scaling factors by which every individual compositional field gradient will be multiplied. If only a single compositional field exists, then this parameter has no particular meaning. On the other hand, if multiple criteria are chosen, then these factors are used to weigh the various indicators relative to each other. 

If the list of scaling factors given in this parameter is empty, then this indicates that they should all be chosen equal to one. If the list is not empty then it needs to have as many entries as there are compositional fields.
</documentation>
<pattern>
419
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Compositional_20field_20scaling_20factors>
</Composition_20approximate_20gradient>
<Composition_20gradient>
<Compositional_20field_20scaling_20factors>
<value/>
<default_value/>
<documentation>
A list of scaling factors by which every individual compositional field gradient will be multiplied. If only a single compositional field exists, then this parameter has no particular meaning. On the other hand, if multiple criteria are chosen, then these factors are used to weigh the various indicators relative to each other. 

If the list of scaling factors given in this parameter is empty, then this indicates that they should all be chosen equal to one. If the list is not empty then it needs to have as many entries as there are compositional fields.
</documentation>
<pattern>
420
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Compositional_20field_20scaling_20factors>
</Composition_20gradient>
<Composition_20threshold>
<Compositional_20field_20thresholds>
<value/>
<default_value/>
<documentation>
A list of thresholds that every individual compositional field will be evaluated against.
</documentation>
<pattern>
421
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Compositional_20field_20thresholds>
</Composition_20threshold>
<Isosurfaces>
<Isosurfaces>
<value/>
<default_value/>
<documentation>
A list of isosurfaces separated by semi-colons (;). Each isosurface entry consists of multiple entries separated by a comma. The first two entries indicate the minimum and maximum refinement levels respectively. The entries after the first two describe the fields the isosurface applies to, followed by a colon (:), which is again followed by the minimum and maximum property values separated by bar (|). An example for an isosurface is &apos;0, 2, Temperature: 300 | 600; 2, 2, C\_1: 0.5 | 1&apos;. In this example the mesh refinement is kept between level 0 and level 2 if the temperature is between 300 and 600 and at level 2 when the compositional field C\_1 is between 0.5 and 1. If both happen at the same location and the current refinement level is 1, it means that the first isoline will not set any flag and the second isoline will set a refinement flag. This means the cell will be refined. If both the coarsening and refinement flags are set, preference is given to refinement. 

The first two entries for each isosurface, describing the minimum and maximum grid levels, can be two numbers or contain one of the key values &apos;min&apos; and &apos;max&apos;. This indicates the key will be replaced with the global minimum and maximum refinement levels. The &apos;min&apos; and &apos;max&apos; keys also accept adding values to be added or subtracted from them respectively. This is done by adding a &apos;+&apos; or &apos;-&apos; and a number behind them (e.g. min+2 or max-1). Note that you can&apos;t subtract a value from a minimum value or add a value to the maximum value. If, for example, `max-4` drops below the minimum or `min+4` goes above the maximum, it will simply use the global minimum and maximum values respectively. The same holds for any mesh refinement level below the global minimum or above the global maximum.
</documentation>
<pattern>
422
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Isosurfaces>
</Isosurfaces>
<Maximum_20refinement_20function>
<Coordinate_20system>
<value>
depth
</value>
<default_value>
depth
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `depth&apos;, `cartesian&apos; and `spherical&apos;. `depth&apos; will create a function, in which only the first variable is non-zero, which is interpreted to be the depth of the point. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle.
</documentation>
<pattern>
423
</pattern>
<pattern_description>
[Selection depth|cartesian|spherical ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
426
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
425
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
424
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Maximum_20refinement_20function>
<Minimum_20refinement_20function>
<Coordinate_20system>
<value>
depth
</value>
<default_value>
depth
</default_value>
<documentation>
A selection that determines the assumed coordinate system for the function variables. Allowed values are `depth&apos;, `cartesian&apos; and `spherical&apos;. `depth&apos; will create a function, in which only the first variable is non-zero, which is interpreted to be the depth of the point. `spherical&apos; coordinates are interpreted as r,phi or r,phi,theta in 2d/3d respectively with theta being the polar angle.
</documentation>
<pattern>
412
</pattern>
<pattern_description>
[Selection depth|cartesian|spherical ]
</pattern_description>
</Coordinate_20system>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
415
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
414
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
413
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Minimum_20refinement_20function>
<Nonadiabatic_20temperature_20threshold>
<Temperature_20anomaly_20type>
<value>
absolute value
</value>
<default_value>
absolute value
</default_value>
<documentation>
What type of temperature anomaly should be considered when evaluating against the threshold: Only negative anomalies (negative only), only positive anomalies (positive only) or the absolute value of the nonadiabatic temperature.
</documentation>
<pattern>
417
</pattern>
<pattern_description>
[Selection negative only|positive only|absolute value ]
</pattern_description>
</Temperature_20anomaly_20type>
<Threshold>
<value>
100
</value>
<default_value>
100
</default_value>
<documentation>
A threshold that the nonadiabatic temperature will be evaluated against. Units: \si{\kelvin}
</documentation>
<pattern>
416
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Threshold>
</Nonadiabatic_20temperature_20threshold>
<Volume_20of_20fluid_20interface>
<Strict_20coarsening>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
If true, then explicitly coarsen any cells not neighboring the VolumeOfFluid interface.
</documentation>
<pattern>
411
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Strict_20coarsening>
</Volume_20of_20fluid_20interface>
</Mesh_20refinement>
<Nullspace_20removal>
<Remove_20nullspace>
<value/>
<default_value/>
<documentation>
Choose none, one or several from 

\begin{itemize} \item net rotation \item angular momentum \item net translation \item net surface rotation\item linear momentum \item net x translation \item net y translation \item net z translation \item linear x momentum \item linear y momentum \item linear z momentum \end{itemize}

These are a selection of operations to remove certain parts of the nullspace from the velocity after solving. For some geometries and certain boundary conditions the velocity field is not uniquely determined but contains free translations and/or rotations. Depending on what you specify here, these non-determined modes will be removed from the velocity field at the end of the Stokes solve step.


The ``angular momentum&apos;&apos; option removes a rotation such that the net angular momentum is zero. The ``linear * momentum&apos;&apos; options remove translations such that the net momentum in the relevant direction is zero.  The ``net rotation&apos;&apos; option removes the net rotation of the whole domain, the ``net surface rotation&apos;&apos; option removes the net rotation of the top surface, and the ``net * translation&apos;&apos; options remove the net translations in the relevant directions.  For most problems there should not be a significant difference between the momentum and rotation/translation versions of nullspace removal, although the momentum versions are more physically motivated. They are equivalent for constant density simulations, and approximately equivalent when the density variations are small.

Note that while more than one operation can be selected it only makes sense to pick one rotational and one translational operation.
</documentation>
<pattern>
58
</pattern>
<pattern_description>
[MultipleSelection net rotation|angular momentum|net surface rotation|net translation|linear momentum|net x translation|net y translation|net z translation|linear x momentum|linear y momentum|linear z momentum ]
</pattern_description>
</Remove_20nullspace>
</Nullspace_20removal>
<Particles>
<Allow_20cells_20without_20particles>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
By default, every cell needs to contain particles to use this interpolator plugin. If this parameter is set to true, cells are allowed to have no particles. In case both the current cell and its neighbors are empty, the interpolator will return 0 for the current cell&apos;s properties.
</documentation>
<pattern>
248
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Allow_20cells_20without_20particles>
<Integration_20scheme>
<value>
rk2
</value>
<default_value>
rk2
</default_value>
<documentation>
This parameter is used to decide which method to use to solve the equation that describes the position of particles, i.e., $\frac{d}{dt}\mathbf x_k(t) = \mathbf u(\mathbf x_k(t),t)$, where $k$ is an index that runs over all particles, and $\mathbf u(\mathbf x,t)$ is the velocity field that results from the Stokes equations.

In practice, the exact velocity $\mathbf u(\mathbf x,t)$ is of course not available, but only a numerical approximation $\mathbf u_h(\mathbf x,t)$. Furthermore, this approximation is only available at discrete time steps, $\mathbf u^n(\mathbf x)=\mathbf u(\mathbf x,t^n)$, and these need to be interpolated between time steps if the integrator for the equation above requires an evaluation at time points between the discrete time steps. If we denote this interpolation in time by $\tilde{\mathbf u}_h(\mathbf x,t)$ where $\tilde{\mathbf u}_h(\mathbf x,t^n)=\mathbf u^n(\mathbf x)$, then the equation the differential equation solver really tries to solve is $\frac{d}{dt}\tilde{\mathbf x}_k(t) =  \tilde{\mathbf u}_h(\mathbf x_k(t),t)$.

As a consequence of these considerations, if you try to assess convergence properties of an ODE integrator -- for example to verify that the RK4 integrator converges with fourth order --, it is important to recall that the integrator may not solve the equation you think it solves. If, for example, we call the numerical solution of the ODE $\tilde{\mathbf x}_{k,h}(t)$, then the error will typically satisfy a relationship like \[  \| \tilde{\mathbf x}_k(T) - \tilde{\mathbf x}_{k,h}(T) \|  \le  C(T) \Delta t^p\] where $\Delta t$ is the time step and $p$ the convergence order of the method, and $C(T)$ is a (generally unknown) constant that depends on the end time $T$ at which one compares the solutions. On the other hand, an analytically computed trajectory would likely use the \textit{exact} velocity, and one may be tempted to compute $\| \mathbf x_k(T) - \tilde{\mathbf x}_{k,h}(T) \|$, but this quantity will, in the best case, only satisfy an estimate of the form \[  \| \mathbf x_k(T) - \tilde{\mathbf x}_{k,h}(T) \|  \le  C_1(T) \Delta t^p  + C_2(T) \| \mathbf u-\mathbf u_h \|  + C_3(T) \| \mathbf u_h-\tilde{\mathbf u}_h \|\] with appropriately chosen norms for the second and third term. These second and third terms typically converge to zero at relatively low rates (compared to the order $p$ of the integrator, which can often be chosen relatively high) in the mesh size $h$ and the time step size $\\Delta t$, limiting the overall accuracy of the ODE integrator.

Select one of the following models:

`euler&apos;: Explicit Euler scheme integrator, where $y_{n+1} = y_n + \Delta t \, v(y_n)$. This requires only one integration substep per timestep.

`rk2&apos;: Second Order Runge Kutta integrator $y_{n+1} = y_n + \Delta t\, v(t_{n+1/2}, y_{n} + \frac{1}{2} k_1)$ where $k_1 = \Delta t\, v(t_{n}, y_{n})$

`rk4&apos;: Runge Kutta fourth order integrator, where $y_{n+1} = y_n + \frac{1}{6} k_1 + \frac{1}{3} k_2 + \frac{1}{3} k_3 + \frac{1}{6} k_4$ and $k_1$, $k_2$, $k_3$, $k_4$ are defined as usual.
</documentation>
<pattern>
241
</pattern>
<pattern_description>
[Selection euler|rk2|rk4 ]
</pattern_description>
</Integration_20scheme>
<Interpolation_20scheme>
<value>
cell average
</value>
<default_value>
cell average
</default_value>
<documentation>
Select one of the following models:

`bilinear least squares&apos;: Uses linear least squares to obtain the slopes and center of a 2d or 3d plane from the particle positions and a particular property value on those particles. Interpolate this property onto a vector of points. If the limiter is enabled then it will ensure the interpolated properties do not exceed the range of the minimum and maximum of the values of the property on the particles. Note that deal.II must be configured with BLAS and LAPACK to support this operation.

`cell average&apos;: Return the arithmetic average of all particle properties in the given cell, or in the neighboring cells if the given cell is empty. In case the neighboring cells are also empty, and &apos;Allow cells without particles&apos; is set to true, the interpolator returns 0. Otherwise, an exception is thrown. 

`distance weighted average&apos;: Interpolates particle properties onto a vector of points using a distance weighed averaging method.

`harmonic average&apos;: Return the harmonic average of all particle properties in the given cell. If the cell contains no particles, return the harmonic average of the properties in the neighboring cells. In case the neighboring cells are also empty, and &apos;Allow cells without particles&apos; is set to true, the interpolator returns 0. Otherwise, an exception is thrown. 

`nearest neighbor&apos;: Return the properties of the nearest neighboring particle in the current cell, or nearest particle in nearest neighboring cell if current cell is empty. In case the neighboring cells are also empty, and &apos;Allow cells without particles&apos; is set to true, the interpolator returns 0. Otherwise, an exception is thrown. 

`quadratic least squares&apos;: Interpolates particle properties onto a vector of points using a quadratic least squares method. Note that deal.II must be configured with BLAS/LAPACK.
</documentation>
<pattern>
243
</pattern>
<pattern_description>
[Selection bilinear least squares|cell average|distance weighted average|harmonic average|nearest neighbor|quadratic least squares ]
</pattern_description>
</Interpolation_20scheme>
<List_20of_20particle_20properties>
<value/>
<default_value/>
<documentation>
A comma separated list of particle properties that should be tracked. By default none is selected, which means only position, velocity and id of the particles are output. 

The following properties are available:

`composition&apos;: Implementation of a plugin in which the particle property is defined by the compositional fields in the model. This can be used to track solid compositionevolution over time.

`cpo bingham average&apos;: This is a particle property plugin which computes the Bingham average for the Crystal Preferred Orientation particle property plugin so that it can be visualized.

`cpo elastic tensor&apos;: A plugin in which the particle property tensor is defined as the Voigt average of the elastic tensors of the minerals in the textured rock.Currently only Olivine and Enstatite are supported.

`crystal preferred orientation&apos;: WARNING: all the CPO plugins are a work in progress and not ready for production use yet. See https://github.com/geodynamics/aspect/issues/3885 for current status and alternatives. The plugin manages and computes the evolution of Lattice/Crystal Preferred Orientations (LPO/CPO) on particles. Each ASPECT particle can be assigned many grains. Each grain is assigned a size and a orientation matrix. This allows for CPO evolution tracking with polycrystalline kinematic CrystalPreferredOrientation evolution models such as D-Rex (Kaminski and Ribe, 2001; Kaminski et al., 2004).

`elastic stress&apos;: A plugin in which the particle property tensor is defined as the total elastic stress a particle has accumulated. See the viscoelastic material model documentation for more detailed information.

`elastic tensor decomposition&apos;: A plugin which decomposes the elastic tensor into different approximations (Isotropic, Hexagonal, Tetragonal, Orthorhombic, Monoclinic and Triclinic) and provides the eigenvectors of the tensor.

`function&apos;: Implementation of a model in which the particle property is set by evaluating an explicit function at the initial position of each particle. The function is defined in the parameters in section ``Particles|Function&apos;&apos;. The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`grain size&apos;: A plugin in which the particle property is defined as the evolving grain size of a particle. See the grain_size material model documentation for more detailed information.

`initial composition&apos;: Implementation of a plugin in which the particle property is given as the initial composition at the particle&apos;s initial position. The particle gets as many properties as there are compositional fields.

`initial position&apos;: Implementation of a plugin in which the particle property is given as the initial position of the particle. This property is vector-valued with as many components as there are space dimensions. In practice, it is often most useful to only visualize one of the components of this vector, or the magnitude of the vector. For example, in a spherical mantle simulation, the magnitude of this property equals the starting radius of a particle, and is thereby indicative of which part of the mantle a particle comes from.

`integrated strain&apos;: A plugin in which the particle property tensor is defined as the deformation gradient tensor $\mathbf F$ this particle has experienced. $\mathbf F$ can be polar-decomposed into the left stretching tensor $\mathbf L$ (the finite strain we are interested in), and the rotation tensor $\mathbf Q$. See the corresponding cookbook in the manual for more detailed information.

`integrated strain invariant&apos;: A plugin in which the particle property is defined as the finite strain invariant ($\varepsilon_{ii}$). This property is calculated with the timestep ($dt$) and the second invariant of the deviatoric strain rate tensor ($\dot{\varepsilon}_{ii}$), where the value at time step $n$ is $\varepsilon_{ii}^{n} = \varepsilon_{ii}^{n-1} + dt\dot{\varepsilon}_{ii}$.

`melt particle&apos;: Implementation of a plugin in which the particle property is defined as presence of melt above a threshold, which can be set as an input parameter. This property is set to 0 if melt is not present and set to 1 if melt is present.

`pT path&apos;: Implementation of a plugin in which the particle property is defined as the current pressure and temperature at this position. This can be used to generate pressure-temperature paths of material points over time.

`position&apos;: Implementation of a plugin in which the particle property is defined as the current position.

`reference position&apos;: Implementation of a plugin in which the particle property is defined as the current reference position.

`strain rate&apos;: Implementation of a plugin in which the time evolution of strain rate is saved and stored on the particles.

`velocity&apos;: Implementation of a plugin in which the particle property is defined as the recent velocity at this position.

`viscoplastic strain invariants&apos;: A plugin that calculates the finite strain invariant a particle has experienced and assigns it to either the plastic and/or viscous strain field based on whether the material is plastically yielding, or the total strain field used in the visco plastic material model. The implementation of this property is equivalent to the implementation for compositional fields that is located in the plugin in \texttt{benchmarks/buiter\_et\_al\_2008\_jgr/plugin/},and is effectively the same as what the visco plastic material model uses for compositional fields.
</documentation>
<pattern>
251
</pattern>
<pattern_description>
[MultipleSelection composition|cpo bingham average|cpo elastic tensor|crystal preferred orientation|elastic stress|elastic tensor decomposition|function|grain size|initial composition|initial position|integrated strain|integrated strain invariant|melt particle|pT path|position|reference position|strain rate|velocity|viscoplastic strain invariants ]
</pattern_description>
</List_20of_20particle_20properties>
<Load_20balancing_20strategy>
<value>
repartition
</value>
<default_value>
repartition
</default_value>
<documentation>
Strategy that is used to balance the computational load across processors for adaptive meshes.
</documentation>
<pattern>
205
</pattern>
<pattern_description>
[MultipleSelection none|remove particles|add particles|remove and add particles|repartition ]
</pattern_description>
</Load_20balancing_20strategy>
<Maximum_20particles_20per_20cell>
<value>
100
</value>
<default_value>
100
</default_value>
<documentation>
Upper limit for particle number per cell. This limit is useful for adaptive meshes to prevent coarse cells from slowing down the whole model. It will be checked and enforced after mesh refinement, after MPI transfer of particles and after particle movement. If there are \texttt{n\_number\_of\_particles} $&gt;$ \texttt{max\_particles\_per\_cell} particles in one cell then \texttt{n\_number\_of\_particles} - \texttt{max\_particles\_per\_cell} particles in this cell are randomly chosen and destroyed.
</documentation>
<pattern>
207
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Maximum_20particles_20per_20cell>
<Minimum_20particles_20per_20cell>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Lower limit for particle number per cell. This limit is useful for adaptive meshes to prevent fine cells from being empty of particles. It will be checked and enforced after mesh refinement and after particle movement. If there are \texttt{n\_number\_of\_particles} $&lt;$ \texttt{min\_particles\_per\_cell} particles in one cell then \texttt{min\_particles\_per\_cell} - \texttt{n\_number\_of\_particles} particles are generated and randomly placed in this cell. If the particles carry properties the individual property plugins control how the properties of the new particles are initialized.
</documentation>
<pattern>
206
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Minimum_20particles_20per_20cell>
<Number_20of_20particle_20systems>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The number of particle systems to be created. The maximum number of particle systems is set by the CMake variable `ASPECT_MAX_NUM_PARTICLE_SYSTEMS` and is by default 2.
</documentation>
<pattern>
23
</pattern>
<pattern_description>
[Integer range 0...2 (inclusive)]
</pattern_description>
</Number_20of_20particle_20systems>
<Particle_20generator_20name>
<value>
random uniform
</value>
<default_value>
random uniform
</default_value>
<documentation>
Select one of the following models:

`ascii file&apos;: Generates a distribution of particles from coordinates specified in an Ascii data file. The file format is a simple text file, with as many columns as spatial dimensions and as many lines as particles to be generated. Initial comment lines starting with `#&apos; will be discarded. Note that this plugin always generates as many particles as there are coordinates in the data file, the ``Particles/Number of particles&apos;&apos; parameter has no effect on this plugin. All of the values that define this generator are read from a section ``Particles/Generator/Ascii file&apos;&apos; in the input file, see Section~\ref{parameters:Particles/Generator/Ascii_20file}.

`probability density function&apos;: Generate a random distribution of particles over the entire simulation domain. The probability density is prescribed in the form of a user-prescribed function. The format of this function follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`. The return value of the function is always checked to be a non-negative probability density but it can be zero in parts of the domain.

`quadrature points&apos;: Generates particles at the quadrature points of each active cell of the triangulation. Here, Gauss quadrature of degree (velocity\_degree + 1), is used similarly to the assembly of Stokes matrix.

`random uniform&apos;: Generates a random uniform distribution of particles over the entire simulation domain.

`reference cell&apos;: Generates a uniform distribution of particles per cell and spatial direction in the unit cell and transforms each of the particles back to real region in the model domain. Uniform here means the particles will be generated with an equal spacing in each spatial dimension.

`uniform box&apos;: Generate a uniform distribution of particles over a rectangular domain in 2d or 3d. Uniform here means the particles will be generated with an equal spacing in each spatial dimension. Note that in order to produce a regular distribution the number of generated particles might not exactly match the one specified in the input file.

`uniform radial&apos;: Generate a uniform distribution of particles over a spherical domain in 2d or 3d. Uniform here means the particles will be generated with an equal spacing in each spherical spatial dimension, i.e., the particles are created at positions that increase linearly with equal spacing in radius, colatitude and longitude around a certain center point. Note that in order to produce a regular distribution the number of generated particles might not exactly match the one specified in the input file.
</documentation>
<pattern>
210
</pattern>
<pattern_description>
[Selection ascii file|probability density function|quadrature points|random uniform|reference cell|uniform box|uniform radial ]
</pattern_description>
</Particle_20generator_20name>
<Particle_20weight>
<value>
10
</value>
<default_value>
10
</default_value>
<documentation>
Weight that is associated with the computational load of a single particle. The sum of particle weights will be added to the sum of cell weights to determine the partitioning of the mesh if the `repartition&apos; particle load balancing strategy is selected. The optimal weight depends on the used integrator and particle properties. In general for a more expensive integrator and more expensive properties a larger particle weight is recommended. Before adding the weights of particles, each cell already carries a weight of 1000 to account for the cost of field-based computations.
</documentation>
<pattern>
208
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Particle_20weight>
<Update_20ghost_20particles>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Some particle interpolation algorithms require knowledge about particles in neighboring cells. To allow this, particles in ghost cells need to be exchanged between the processes neighboring this cell. This parameter determines whether this transport is happening. This parameter is deprecated and will be removed in the future. Ghost particle updates are always performed. Please set the parameter to `true&apos;.
</documentation>
<pattern>
209
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Update_20ghost_20particles>
<CPO_20Bingham_20Average>
<Number_20of_20samples>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
This determines how many samples are taken when using the random draw volume averaging. Setting it to zero means that the number of samples is set to be equal to the number of grains.
</documentation>
<pattern>
254
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Number_20of_20samples>
<Random_20number_20seed>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The seed used to generate random numbers. This will make sure that results are reproducible as long as the problem is run with the same amount of MPI processes. It is implemented as final seed = Random number seed + MPI Rank. 
</documentation>
<pattern>
253
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Random_20number_20seed>
</CPO_20Bingham_20Average>
<Crystal_20Preferred_20Orientation>
<CPO_20derivatives_20algorithm>
<value>
Spin tensor
</value>
<default_value>
Spin tensor
</default_value>
<documentation>
Options: Spin tensor
</documentation>
<pattern>
260
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</CPO_20derivatives_20algorithm>
<Number_20of_20grains_20per_20particle>
<value>
50
</value>
<default_value>
50
</default_value>
<documentation>
The number of grains of each different mineral each particle contains.
</documentation>
<pattern>
256
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20grains_20per_20particle>
<Property_20advection_20max_20iterations>
<value>
100
</value>
<default_value>
100
</default_value>
<documentation>
The Backward Euler property advection method involve internal iterations. This option allows for setting the maximum number of iterations. Note that when the iteration is ended by the max iteration amount an assert is thrown.
</documentation>
<pattern>
259
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Property_20advection_20max_20iterations>
<Property_20advection_20method>
<value>
Backward Euler
</value>
<default_value>
Backward Euler
</default_value>
<documentation>
Options: Forward Euler, Backward Euler
</documentation>
<pattern>
257
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Property_20advection_20method>
<Property_20advection_20tolerance>
<value>
1e-10
</value>
<default_value>
1e-10
</default_value>
<documentation>
The Backward Euler property advection method involve internal iterations. This option allows for setting a tolerance. When the norm of tensor new - tensor old is smaller than this tolerance, the iteration is stopped.
</documentation>
<pattern>
258
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Property_20advection_20tolerance>
<Random_20number_20seed>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The seed used to generate random numbers. This will make sure that results are reproducible as long as the problem is run with the same number of MPI processes. It is implemented as final seed = user seed + MPI Rank. 
</documentation>
<pattern>
255
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Random_20number_20seed>
<D_2dRex_202004>
<Exponents_20p>
<value>
1.5
</value>
<default_value>
1.5
</default_value>
<documentation>
This is exponent p as defined in equation 11 of Kaminski et al., 2004. 
</documentation>
<pattern>
267
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Exponents_20p>
<Mobility>
<value>
50
</value>
<default_value>
50
</default_value>
<documentation>
The dimensionless intrinsic grain boundary mobility for both olivine and enstatite.
</documentation>
<pattern>
264
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Mobility>
<Nucleation_20efficiency>
<value>
5
</value>
<default_value>
5
</default_value>
<documentation>
This is the dimensionless nucleation rate as defined in equation 8 of Kaminski et al., 2004. 
</documentation>
<pattern>
268
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Nucleation_20efficiency>
<Stress_20exponents>
<value>
3.5
</value>
<default_value>
3.5
</default_value>
<documentation>
This is the power law exponent that characterizes the rheology of the slip systems. It is used in equation 11 of Kaminski et al., 2004.
</documentation>
<pattern>
266
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Stress_20exponents>
<Threshold_20GBS>
<value>
0.3
</value>
<default_value>
0.3
</default_value>
<documentation>
The Dimensionless Grain Boundary Sliding (GBS) threshold. This is a grain size threshold below which grain deform by GBS and become strain-free grains.
</documentation>
<pattern>
269
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Threshold_20GBS>
<Volume_20fractions_20minerals>
<value>
0.5, 0.5
</value>
<default_value>
0.5, 0.5
</default_value>
<documentation>
The volume fraction for the different minerals. There need to be the same amount of values as there are minerals
</documentation>
<pattern>
265
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Volume_20fractions_20minerals>
</D_2dRex_202004>
<Initial_20grains>
<Minerals>
<value>
Olivine: Karato 2008, Enstatite
</value>
<default_value>
Olivine: Karato 2008, Enstatite
</default_value>
<documentation>
This determines what minerals and fabrics or fabric selectors are used used for the LPO/CPO calculation. The options are Olivine: Passive, A-fabric, Olivine: B-fabric, Olivine: C-fabric, Olivine: D-fabric, Olivine: E-fabric, Olivine: Karato 2008 or Enstatite. Passive sets all RRSS entries to the maximum. The Karato 2008 selector selects a fabric based on stress and water content as defined in figure 4 of the Karato 2008 review paper (doi: 10.1146/annurev.earth.36.031207.124120).
</documentation>
<pattern>
262
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Minerals>
<Model_20name>
<value>
Uniform grains and random uniform rotations
</value>
<default_value>
Uniform grains and random uniform rotations
</default_value>
<documentation>
The model used to initialize the CPO for all particles. Currently &apos;Uniform grains and random uniform rotations&apos; and &apos;World Builder&apos; are the only valid option.
</documentation>
<pattern>
261
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Model_20name>
<Volume_20fractions_20minerals>
<value>
0.7, 0.3
</value>
<default_value>
0.7, 0.3
</default_value>
<documentation>
The volume fractions for the different minerals. There need to be the same number of values as there are minerals.Note that the currently implemented scheme is incompressible and does not allow chemical interaction or the formation of new phases
</documentation>
<pattern>
263
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Volume_20fractions_20minerals>
</Initial_20grains>
</Crystal_20Preferred_20Orientation>
<Function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
273
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
272
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Number_20of_20components>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The number of function components where each component is described by a function expression delimited by a &apos;;&apos;.
</documentation>
<pattern>
270
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20components>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
271
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<Generator>
<Ascii_20file>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/particle/generator/ascii/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/particle/generator/ascii/
</default_value>
<documentation>
The name of a directory that contains the particle data. This path may either be absolute (if starting with a &apos;/&apos;) or relative to the current directory. The path may also include the special text &apos;$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT. 
</documentation>
<pattern>
233
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
particle.dat
</value>
<default_value>
particle.dat
</default_value>
<documentation>
The name of the particle file.
</documentation>
<pattern>
234
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
</Ascii_20file>
<Probability_20density_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
237
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
236
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Number_20of_20particles>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
Total number of particles to create (not per processor or per element). The number is parsed as a floating point number (so that one can specify, for example, &apos;1e4&apos; particles) but it is interpreted as an integer, of course.
</documentation>
<pattern>
238
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Number_20of_20particles>
<Random_20cell_20selection>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
If true, particle numbers per cell are calculated randomly according to their respective probability density. This means particle numbers per cell can deviate statistically from the integral of the probability density. If false, first determine how many particles each cell should have based on the integral of the density over each of the cells, and then once we know how many particles we want on each cell, choose their locations randomly within each cell.
</documentation>
<pattern>
239
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Random_20cell_20selection>
<Random_20number_20seed>
<value>
5432
</value>
<default_value>
5432
</default_value>
<documentation>
The seed for the random number generator that controls the particle generation. Keep constant to generate identical particle distributions in subsequent model runs. Change to get a different distribution. In parallel computations the seed is further modified on each process to ensure different particle patterns on different processes. Note that the number of particles per processor is not affected by the seed.
</documentation>
<pattern>
240
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Random_20number_20seed>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
235
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Probability_20density_20function>
<Random_20uniform>
<Number_20of_20particles>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
Total number of particles to create (not per processor or per element). The number is parsed as a floating point number (so that one can specify, for example, &apos;1e4&apos; particles) but it is interpreted as an integer, of course.
</documentation>
<pattern>
211
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Number_20of_20particles>
<Random_20cell_20selection>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
If true, particle numbers per cell are calculated randomly according to their respective probability density. This means particle numbers per cell can deviate statistically from the integral of the probability density. If false, first determine how many particles each cell should have based on the integral of the density over each of the cells, and then once we know how many particles we want on each cell, choose their locations randomly within each cell.
</documentation>
<pattern>
212
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Random_20cell_20selection>
<Random_20number_20seed>
<value>
5432
</value>
<default_value>
5432
</default_value>
<documentation>
The seed for the random number generator that controls the particle generation. Keep constant to generate identical particle distributions in subsequent model runs. Change to get a different distribution. In parallel computations the seed is further modified on each process to ensure different particle patterns on different processes. Note that the number of particles per processor is not affected by the seed.
</documentation>
<pattern>
213
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Random_20number_20seed>
</Random_20uniform>
<Reference_20cell>
<Number_20of_20particles_20per_20cell_20per_20direction>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
List of number of particles to create per cell and spatial dimension. The size of the list is the number of spatial dimensions. If only one value is given, then each spatial dimension is set to the same value. The list of numbers are parsed as a floating point number (so that one can specify, for example, &apos;1e4&apos; particles) but it is interpreted as an integer, of course.
</documentation>
<pattern>
214
</pattern>
<pattern_description>
[List of &lt;[Integer range 1...2147483647 (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Number_20of_20particles_20per_20cell_20per_20direction>
</Reference_20cell>
<Uniform_20box>
<Maximum_20x>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum x coordinate for the region of particles.
</documentation>
<pattern>
217
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20x>
<Maximum_20y>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum y coordinate for the region of particles.
</documentation>
<pattern>
219
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20y>
<Maximum_20z>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum z coordinate for the region of particles.
</documentation>
<pattern>
221
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20z>
<Minimum_20x>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum x coordinate for the region of particles.
</documentation>
<pattern>
216
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20x>
<Minimum_20y>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum y coordinate for the region of particles.
</documentation>
<pattern>
218
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20y>
<Minimum_20z>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum z coordinate for the region of particles.
</documentation>
<pattern>
220
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20z>
<Number_20of_20particles>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
Total number of particles to create (not per processor or per element). The number is parsed as a floating point number (so that one can specify, for example, &apos;1e4&apos; particles) but it is interpreted as an integer, of course.
</documentation>
<pattern>
215
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Number_20of_20particles>
</Uniform_20box>
<Uniform_20radial>
<Center_20x>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
x coordinate for the center of the spherical region, where particles are generated.
</documentation>
<pattern>
223
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Center_20x>
<Center_20y>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
y coordinate for the center of the spherical region, where particles are generated.
</documentation>
<pattern>
224
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Center_20y>
<Center_20z>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
z coordinate for the center of the spherical region, where particles are generated.
</documentation>
<pattern>
225
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Center_20z>
<Maximum_20latitude>
<value>
180.
</value>
<default_value>
180.
</default_value>
<documentation>
Maximum latitude coordinate for the region of particles in degrees. Measured from the center position, and from the north pole.
</documentation>
<pattern>
231
</pattern>
<pattern_description>
[Double 0...180 (inclusive)]
</pattern_description>
</Maximum_20latitude>
<Maximum_20longitude>
<value>
360.
</value>
<default_value>
360.
</default_value>
<documentation>
Maximum longitude coordinate for the region of particles in degrees. Measured from the center position.
</documentation>
<pattern>
229
</pattern>
<pattern_description>
[Double -180...360 (inclusive)]
</pattern_description>
</Maximum_20longitude>
<Maximum_20radius>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum radial coordinate for the region of particles. Measured from the center position.
</documentation>
<pattern>
227
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20radius>
<Minimum_20latitude>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum latitude coordinate for the region of particles in degrees. Measured from the center position, and from the north pole.
</documentation>
<pattern>
230
</pattern>
<pattern_description>
[Double 0...180 (inclusive)]
</pattern_description>
</Minimum_20latitude>
<Minimum_20longitude>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum longitude coordinate for the region of particles in degrees. Measured from the center position.
</documentation>
<pattern>
228
</pattern>
<pattern_description>
[Double -180...360 (inclusive)]
</pattern_description>
</Minimum_20longitude>
<Minimum_20radius>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum radial coordinate for the region of particles. Measured from the center position.
</documentation>
<pattern>
226
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20radius>
<Number_20of_20particles>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
Total number of particles to create (not per processor or per element). The number is parsed as a floating point number (so that one can specify, for example, &apos;1e4&apos; particles) but it is interpreted as an integer, of course.
</documentation>
<pattern>
222
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Number_20of_20particles>
<Radial_20layers>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The number of radial shells of particles that will be generated around the central point.
</documentation>
<pattern>
232
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Radial_20layers>
</Uniform_20radial>
</Generator>
<Integrator>
<RK2>
<Higher_20order_20accurate_20in_20time>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to correctly evaluate old and current velocity solution to reach higher-order accuracy in time. If set to &apos;false&apos; only the old velocity solution is evaluated to simulate a first order method in time. This is only recommended for benchmark purposes.
</documentation>
<pattern>
242
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Higher_20order_20accurate_20in_20time>
</RK2>
</Integrator>
<Interpolator>
<Bilinear_20least_20squares>
<Use_20boundary_20extrapolation>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Extends the range used by &apos;Use linear least squares limiter&apos; by linearly interpolating values at cell boundaries from neighboring cells. If more than one value is given, it will be treated as a list with one component per particle property. Enabling &apos;Use boundary extrapolation&apos; requires enabling &apos;Use linear least squares limiter&apos;.
</documentation>
<pattern>
245
</pattern>
<pattern_description>
[List of &lt;[Bool]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Use_20boundary_20extrapolation>
<Use_20linear_20least_20squares_20limiter>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Limit the interpolation of particle properties onto the cell, so that the value of each property is no smaller than its minimum and no larger than its maximum on the particles of each cell, and the average of neighboring cells. If more than one value is given, it will be treated as a list with one component per particle property.
</documentation>
<pattern>
244
</pattern>
<pattern_description>
[List of &lt;[Bool]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Use_20linear_20least_20squares_20limiter>
</Bilinear_20least_20squares>
<Quadratic_20least_20squares>
<Use_20boundary_20extrapolation>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Extends the range used by &apos;Use quadratic least squares limiter&apos; by linearly interpolating values at cell boundaries from neighboring cells. If more than one value is given, it will be treated as a list with one component per particle property. Enabling &apos;Use boundary extrapolation&apos; requires enabling &apos;Use quadratic least squares limiter&apos;.
</documentation>
<pattern>
250
</pattern>
<pattern_description>
[List of &lt;[Bool]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Use_20boundary_20extrapolation>
<Use_20quadratic_20least_20squares_20limiter>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Limit the interpolation of particle properties onto the cell, so that the value of each property is no smaller than its minimum and no larger than its maximum on the particles of each cell, and the average of neighboring cells. If more than one value is given, it will be treated as a list with one component per particle property.
</documentation>
<pattern>
249
</pattern>
<pattern_description>
[List of &lt;[Bool]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Use_20quadratic_20least_20squares_20limiter>
</Quadratic_20least_20squares>
</Interpolator>
<Melt_20particle>
<Threshold_20for_20melt_20presence>
<value>
1e-3
</value>
<default_value>
1e-3
</default_value>
<documentation>
The minimum porosity that has to be present at the position of a particle for it to be considered a melt particle (in the sense that the melt presence property is set to 1).
</documentation>
<pattern>
252
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Threshold_20for_20melt_20presence>
</Melt_20particle>
</Particles>
<Particles_202>
<Allow_20cells_20without_20particles>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
By default, every cell needs to contain particles to use this interpolator plugin. If this parameter is set to true, cells are allowed to have no particles. In case both the current cell and its neighbors are empty, the interpolator will return 0 for the current cell&apos;s properties.
</documentation>
<pattern>
317
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Allow_20cells_20without_20particles>
<Integration_20scheme>
<value>
rk2
</value>
<default_value>
rk2
</default_value>
<documentation>
This parameter is used to decide which method to use to solve the equation that describes the position of particles, i.e., $\frac{d}{dt}\mathbf x_k(t) = \mathbf u(\mathbf x_k(t),t)$, where $k$ is an index that runs over all particles, and $\mathbf u(\mathbf x,t)$ is the velocity field that results from the Stokes equations.

In practice, the exact velocity $\mathbf u(\mathbf x,t)$ is of course not available, but only a numerical approximation $\mathbf u_h(\mathbf x,t)$. Furthermore, this approximation is only available at discrete time steps, $\mathbf u^n(\mathbf x)=\mathbf u(\mathbf x,t^n)$, and these need to be interpolated between time steps if the integrator for the equation above requires an evaluation at time points between the discrete time steps. If we denote this interpolation in time by $\tilde{\mathbf u}_h(\mathbf x,t)$ where $\tilde{\mathbf u}_h(\mathbf x,t^n)=\mathbf u^n(\mathbf x)$, then the equation the differential equation solver really tries to solve is $\frac{d}{dt}\tilde{\mathbf x}_k(t) =  \tilde{\mathbf u}_h(\mathbf x_k(t),t)$.

As a consequence of these considerations, if you try to assess convergence properties of an ODE integrator -- for example to verify that the RK4 integrator converges with fourth order --, it is important to recall that the integrator may not solve the equation you think it solves. If, for example, we call the numerical solution of the ODE $\tilde{\mathbf x}_{k,h}(t)$, then the error will typically satisfy a relationship like \[  \| \tilde{\mathbf x}_k(T) - \tilde{\mathbf x}_{k,h}(T) \|  \le  C(T) \Delta t^p\] where $\Delta t$ is the time step and $p$ the convergence order of the method, and $C(T)$ is a (generally unknown) constant that depends on the end time $T$ at which one compares the solutions. On the other hand, an analytically computed trajectory would likely use the \textit{exact} velocity, and one may be tempted to compute $\| \mathbf x_k(T) - \tilde{\mathbf x}_{k,h}(T) \|$, but this quantity will, in the best case, only satisfy an estimate of the form \[  \| \mathbf x_k(T) - \tilde{\mathbf x}_{k,h}(T) \|  \le  C_1(T) \Delta t^p  + C_2(T) \| \mathbf u-\mathbf u_h \|  + C_3(T) \| \mathbf u_h-\tilde{\mathbf u}_h \|\] with appropriately chosen norms for the second and third term. These second and third terms typically converge to zero at relatively low rates (compared to the order $p$ of the integrator, which can often be chosen relatively high) in the mesh size $h$ and the time step size $\\Delta t$, limiting the overall accuracy of the ODE integrator.

Select one of the following models:

`euler&apos;: Explicit Euler scheme integrator, where $y_{n+1} = y_n + \Delta t \, v(y_n)$. This requires only one integration substep per timestep.

`rk2&apos;: Second Order Runge Kutta integrator $y_{n+1} = y_n + \Delta t\, v(t_{n+1/2}, y_{n} + \frac{1}{2} k_1)$ where $k_1 = \Delta t\, v(t_{n}, y_{n})$

`rk4&apos;: Runge Kutta fourth order integrator, where $y_{n+1} = y_n + \frac{1}{6} k_1 + \frac{1}{3} k_2 + \frac{1}{3} k_3 + \frac{1}{6} k_4$ and $k_1$, $k_2$, $k_3$, $k_4$ are defined as usual.
</documentation>
<pattern>
310
</pattern>
<pattern_description>
[Selection euler|rk2|rk4 ]
</pattern_description>
</Integration_20scheme>
<Interpolation_20scheme>
<value>
cell average
</value>
<default_value>
cell average
</default_value>
<documentation>
Select one of the following models:

`bilinear least squares&apos;: Uses linear least squares to obtain the slopes and center of a 2d or 3d plane from the particle positions and a particular property value on those particles. Interpolate this property onto a vector of points. If the limiter is enabled then it will ensure the interpolated properties do not exceed the range of the minimum and maximum of the values of the property on the particles. Note that deal.II must be configured with BLAS and LAPACK to support this operation.

`cell average&apos;: Return the arithmetic average of all particle properties in the given cell, or in the neighboring cells if the given cell is empty. In case the neighboring cells are also empty, and &apos;Allow cells without particles&apos; is set to true, the interpolator returns 0. Otherwise, an exception is thrown. 

`distance weighted average&apos;: Interpolates particle properties onto a vector of points using a distance weighed averaging method.

`harmonic average&apos;: Return the harmonic average of all particle properties in the given cell. If the cell contains no particles, return the harmonic average of the properties in the neighboring cells. In case the neighboring cells are also empty, and &apos;Allow cells without particles&apos; is set to true, the interpolator returns 0. Otherwise, an exception is thrown. 

`nearest neighbor&apos;: Return the properties of the nearest neighboring particle in the current cell, or nearest particle in nearest neighboring cell if current cell is empty. In case the neighboring cells are also empty, and &apos;Allow cells without particles&apos; is set to true, the interpolator returns 0. Otherwise, an exception is thrown. 

`quadratic least squares&apos;: Interpolates particle properties onto a vector of points using a quadratic least squares method. Note that deal.II must be configured with BLAS/LAPACK.
</documentation>
<pattern>
312
</pattern>
<pattern_description>
[Selection bilinear least squares|cell average|distance weighted average|harmonic average|nearest neighbor|quadratic least squares ]
</pattern_description>
</Interpolation_20scheme>
<List_20of_20particle_20properties>
<value/>
<default_value/>
<documentation>
A comma separated list of particle properties that should be tracked. By default none is selected, which means only position, velocity and id of the particles are output. 

The following properties are available:

`composition&apos;: Implementation of a plugin in which the particle property is defined by the compositional fields in the model. This can be used to track solid compositionevolution over time.

`cpo bingham average&apos;: This is a particle property plugin which computes the Bingham average for the Crystal Preferred Orientation particle property plugin so that it can be visualized.

`cpo elastic tensor&apos;: A plugin in which the particle property tensor is defined as the Voigt average of the elastic tensors of the minerals in the textured rock.Currently only Olivine and Enstatite are supported.

`crystal preferred orientation&apos;: WARNING: all the CPO plugins are a work in progress and not ready for production use yet. See https://github.com/geodynamics/aspect/issues/3885 for current status and alternatives. The plugin manages and computes the evolution of Lattice/Crystal Preferred Orientations (LPO/CPO) on particles. Each ASPECT particle can be assigned many grains. Each grain is assigned a size and a orientation matrix. This allows for CPO evolution tracking with polycrystalline kinematic CrystalPreferredOrientation evolution models such as D-Rex (Kaminski and Ribe, 2001; Kaminski et al., 2004).

`elastic stress&apos;: A plugin in which the particle property tensor is defined as the total elastic stress a particle has accumulated. See the viscoelastic material model documentation for more detailed information.

`elastic tensor decomposition&apos;: A plugin which decomposes the elastic tensor into different approximations (Isotropic, Hexagonal, Tetragonal, Orthorhombic, Monoclinic and Triclinic) and provides the eigenvectors of the tensor.

`function&apos;: Implementation of a model in which the particle property is set by evaluating an explicit function at the initial position of each particle. The function is defined in the parameters in section ``Particles|Function&apos;&apos;. The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.

`grain size&apos;: A plugin in which the particle property is defined as the evolving grain size of a particle. See the grain_size material model documentation for more detailed information.

`initial composition&apos;: Implementation of a plugin in which the particle property is given as the initial composition at the particle&apos;s initial position. The particle gets as many properties as there are compositional fields.

`initial position&apos;: Implementation of a plugin in which the particle property is given as the initial position of the particle. This property is vector-valued with as many components as there are space dimensions. In practice, it is often most useful to only visualize one of the components of this vector, or the magnitude of the vector. For example, in a spherical mantle simulation, the magnitude of this property equals the starting radius of a particle, and is thereby indicative of which part of the mantle a particle comes from.

`integrated strain&apos;: A plugin in which the particle property tensor is defined as the deformation gradient tensor $\mathbf F$ this particle has experienced. $\mathbf F$ can be polar-decomposed into the left stretching tensor $\mathbf L$ (the finite strain we are interested in), and the rotation tensor $\mathbf Q$. See the corresponding cookbook in the manual for more detailed information.

`integrated strain invariant&apos;: A plugin in which the particle property is defined as the finite strain invariant ($\varepsilon_{ii}$). This property is calculated with the timestep ($dt$) and the second invariant of the deviatoric strain rate tensor ($\dot{\varepsilon}_{ii}$), where the value at time step $n$ is $\varepsilon_{ii}^{n} = \varepsilon_{ii}^{n-1} + dt\dot{\varepsilon}_{ii}$.

`melt particle&apos;: Implementation of a plugin in which the particle property is defined as presence of melt above a threshold, which can be set as an input parameter. This property is set to 0 if melt is not present and set to 1 if melt is present.

`pT path&apos;: Implementation of a plugin in which the particle property is defined as the current pressure and temperature at this position. This can be used to generate pressure-temperature paths of material points over time.

`position&apos;: Implementation of a plugin in which the particle property is defined as the current position.

`reference position&apos;: Implementation of a plugin in which the particle property is defined as the current reference position.

`strain rate&apos;: Implementation of a plugin in which the time evolution of strain rate is saved and stored on the particles.

`velocity&apos;: Implementation of a plugin in which the particle property is defined as the recent velocity at this position.

`viscoplastic strain invariants&apos;: A plugin that calculates the finite strain invariant a particle has experienced and assigns it to either the plastic and/or viscous strain field based on whether the material is plastically yielding, or the total strain field used in the visco plastic material model. The implementation of this property is equivalent to the implementation for compositional fields that is located in the plugin in \texttt{benchmarks/buiter\_et\_al\_2008\_jgr/plugin/},and is effectively the same as what the visco plastic material model uses for compositional fields.
</documentation>
<pattern>
320
</pattern>
<pattern_description>
[MultipleSelection composition|cpo bingham average|cpo elastic tensor|crystal preferred orientation|elastic stress|elastic tensor decomposition|function|grain size|initial composition|initial position|integrated strain|integrated strain invariant|melt particle|pT path|position|reference position|strain rate|velocity|viscoplastic strain invariants ]
</pattern_description>
</List_20of_20particle_20properties>
<Load_20balancing_20strategy>
<value>
repartition
</value>
<default_value>
repartition
</default_value>
<documentation>
Strategy that is used to balance the computational load across processors for adaptive meshes.
</documentation>
<pattern>
274
</pattern>
<pattern_description>
[MultipleSelection none|remove particles|add particles|remove and add particles|repartition ]
</pattern_description>
</Load_20balancing_20strategy>
<Maximum_20particles_20per_20cell>
<value>
100
</value>
<default_value>
100
</default_value>
<documentation>
Upper limit for particle number per cell. This limit is useful for adaptive meshes to prevent coarse cells from slowing down the whole model. It will be checked and enforced after mesh refinement, after MPI transfer of particles and after particle movement. If there are \texttt{n\_number\_of\_particles} $&gt;$ \texttt{max\_particles\_per\_cell} particles in one cell then \texttt{n\_number\_of\_particles} - \texttt{max\_particles\_per\_cell} particles in this cell are randomly chosen and destroyed.
</documentation>
<pattern>
276
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Maximum_20particles_20per_20cell>
<Minimum_20particles_20per_20cell>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Lower limit for particle number per cell. This limit is useful for adaptive meshes to prevent fine cells from being empty of particles. It will be checked and enforced after mesh refinement and after particle movement. If there are \texttt{n\_number\_of\_particles} $&lt;$ \texttt{min\_particles\_per\_cell} particles in one cell then \texttt{min\_particles\_per\_cell} - \texttt{n\_number\_of\_particles} particles are generated and randomly placed in this cell. If the particles carry properties the individual property plugins control how the properties of the new particles are initialized.
</documentation>
<pattern>
275
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Minimum_20particles_20per_20cell>
<Particle_20generator_20name>
<value>
random uniform
</value>
<default_value>
random uniform
</default_value>
<documentation>
Select one of the following models:

`ascii file&apos;: Generates a distribution of particles from coordinates specified in an Ascii data file. The file format is a simple text file, with as many columns as spatial dimensions and as many lines as particles to be generated. Initial comment lines starting with `#&apos; will be discarded. Note that this plugin always generates as many particles as there are coordinates in the data file, the ``Particles/Number of particles&apos;&apos; parameter has no effect on this plugin. All of the values that define this generator are read from a section ``Particles/Generator/Ascii file&apos;&apos; in the input file, see Section~\ref{parameters:Particles/Generator/Ascii_20file}.

`probability density function&apos;: Generate a random distribution of particles over the entire simulation domain. The probability density is prescribed in the form of a user-prescribed function. The format of this function follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`. The return value of the function is always checked to be a non-negative probability density but it can be zero in parts of the domain.

`quadrature points&apos;: Generates particles at the quadrature points of each active cell of the triangulation. Here, Gauss quadrature of degree (velocity\_degree + 1), is used similarly to the assembly of Stokes matrix.

`random uniform&apos;: Generates a random uniform distribution of particles over the entire simulation domain.

`reference cell&apos;: Generates a uniform distribution of particles per cell and spatial direction in the unit cell and transforms each of the particles back to real region in the model domain. Uniform here means the particles will be generated with an equal spacing in each spatial dimension.

`uniform box&apos;: Generate a uniform distribution of particles over a rectangular domain in 2d or 3d. Uniform here means the particles will be generated with an equal spacing in each spatial dimension. Note that in order to produce a regular distribution the number of generated particles might not exactly match the one specified in the input file.

`uniform radial&apos;: Generate a uniform distribution of particles over a spherical domain in 2d or 3d. Uniform here means the particles will be generated with an equal spacing in each spherical spatial dimension, i.e., the particles are created at positions that increase linearly with equal spacing in radius, colatitude and longitude around a certain center point. Note that in order to produce a regular distribution the number of generated particles might not exactly match the one specified in the input file.
</documentation>
<pattern>
279
</pattern>
<pattern_description>
[Selection ascii file|probability density function|quadrature points|random uniform|reference cell|uniform box|uniform radial ]
</pattern_description>
</Particle_20generator_20name>
<Particle_20weight>
<value>
10
</value>
<default_value>
10
</default_value>
<documentation>
Weight that is associated with the computational load of a single particle. The sum of particle weights will be added to the sum of cell weights to determine the partitioning of the mesh if the `repartition&apos; particle load balancing strategy is selected. The optimal weight depends on the used integrator and particle properties. In general for a more expensive integrator and more expensive properties a larger particle weight is recommended. Before adding the weights of particles, each cell already carries a weight of 1000 to account for the cost of field-based computations.
</documentation>
<pattern>
277
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Particle_20weight>
<Update_20ghost_20particles>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Some particle interpolation algorithms require knowledge about particles in neighboring cells. To allow this, particles in ghost cells need to be exchanged between the processes neighboring this cell. This parameter determines whether this transport is happening. This parameter is deprecated and will be removed in the future. Ghost particle updates are always performed. Please set the parameter to `true&apos;.
</documentation>
<pattern>
278
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Update_20ghost_20particles>
<CPO_20Bingham_20Average>
<Number_20of_20samples>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
This determines how many samples are taken when using the random draw volume averaging. Setting it to zero means that the number of samples is set to be equal to the number of grains.
</documentation>
<pattern>
323
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Number_20of_20samples>
<Random_20number_20seed>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The seed used to generate random numbers. This will make sure that results are reproducible as long as the problem is run with the same amount of MPI processes. It is implemented as final seed = Random number seed + MPI Rank. 
</documentation>
<pattern>
322
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Random_20number_20seed>
</CPO_20Bingham_20Average>
<Crystal_20Preferred_20Orientation>
<CPO_20derivatives_20algorithm>
<value>
Spin tensor
</value>
<default_value>
Spin tensor
</default_value>
<documentation>
Options: Spin tensor
</documentation>
<pattern>
329
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</CPO_20derivatives_20algorithm>
<Number_20of_20grains_20per_20particle>
<value>
50
</value>
<default_value>
50
</default_value>
<documentation>
The number of grains of each different mineral each particle contains.
</documentation>
<pattern>
325
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20grains_20per_20particle>
<Property_20advection_20max_20iterations>
<value>
100
</value>
<default_value>
100
</default_value>
<documentation>
The Backward Euler property advection method involve internal iterations. This option allows for setting the maximum number of iterations. Note that when the iteration is ended by the max iteration amount an assert is thrown.
</documentation>
<pattern>
328
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Property_20advection_20max_20iterations>
<Property_20advection_20method>
<value>
Backward Euler
</value>
<default_value>
Backward Euler
</default_value>
<documentation>
Options: Forward Euler, Backward Euler
</documentation>
<pattern>
326
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Property_20advection_20method>
<Property_20advection_20tolerance>
<value>
1e-10
</value>
<default_value>
1e-10
</default_value>
<documentation>
The Backward Euler property advection method involve internal iterations. This option allows for setting a tolerance. When the norm of tensor new - tensor old is smaller than this tolerance, the iteration is stopped.
</documentation>
<pattern>
327
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Property_20advection_20tolerance>
<Random_20number_20seed>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The seed used to generate random numbers. This will make sure that results are reproducible as long as the problem is run with the same number of MPI processes. It is implemented as final seed = user seed + MPI Rank. 
</documentation>
<pattern>
324
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Random_20number_20seed>
<D_2dRex_202004>
<Exponents_20p>
<value>
1.5
</value>
<default_value>
1.5
</default_value>
<documentation>
This is exponent p as defined in equation 11 of Kaminski et al., 2004. 
</documentation>
<pattern>
336
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Exponents_20p>
<Mobility>
<value>
50
</value>
<default_value>
50
</default_value>
<documentation>
The dimensionless intrinsic grain boundary mobility for both olivine and enstatite.
</documentation>
<pattern>
333
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Mobility>
<Nucleation_20efficiency>
<value>
5
</value>
<default_value>
5
</default_value>
<documentation>
This is the dimensionless nucleation rate as defined in equation 8 of Kaminski et al., 2004. 
</documentation>
<pattern>
337
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Nucleation_20efficiency>
<Stress_20exponents>
<value>
3.5
</value>
<default_value>
3.5
</default_value>
<documentation>
This is the power law exponent that characterizes the rheology of the slip systems. It is used in equation 11 of Kaminski et al., 2004.
</documentation>
<pattern>
335
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Stress_20exponents>
<Threshold_20GBS>
<value>
0.3
</value>
<default_value>
0.3
</default_value>
<documentation>
The Dimensionless Grain Boundary Sliding (GBS) threshold. This is a grain size threshold below which grain deform by GBS and become strain-free grains.
</documentation>
<pattern>
338
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Threshold_20GBS>
<Volume_20fractions_20minerals>
<value>
0.5, 0.5
</value>
<default_value>
0.5, 0.5
</default_value>
<documentation>
The volume fraction for the different minerals. There need to be the same amount of values as there are minerals
</documentation>
<pattern>
334
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Volume_20fractions_20minerals>
</D_2dRex_202004>
<Initial_20grains>
<Minerals>
<value>
Olivine: Karato 2008, Enstatite
</value>
<default_value>
Olivine: Karato 2008, Enstatite
</default_value>
<documentation>
This determines what minerals and fabrics or fabric selectors are used used for the LPO/CPO calculation. The options are Olivine: Passive, A-fabric, Olivine: B-fabric, Olivine: C-fabric, Olivine: D-fabric, Olivine: E-fabric, Olivine: Karato 2008 or Enstatite. Passive sets all RRSS entries to the maximum. The Karato 2008 selector selects a fabric based on stress and water content as defined in figure 4 of the Karato 2008 review paper (doi: 10.1146/annurev.earth.36.031207.124120).
</documentation>
<pattern>
331
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Minerals>
<Model_20name>
<value>
Uniform grains and random uniform rotations
</value>
<default_value>
Uniform grains and random uniform rotations
</default_value>
<documentation>
The model used to initialize the CPO for all particles. Currently &apos;Uniform grains and random uniform rotations&apos; and &apos;World Builder&apos; are the only valid option.
</documentation>
<pattern>
330
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Model_20name>
<Volume_20fractions_20minerals>
<value>
0.7, 0.3
</value>
<default_value>
0.7, 0.3
</default_value>
<documentation>
The volume fractions for the different minerals. There need to be the same number of values as there are minerals.Note that the currently implemented scheme is incompressible and does not allow chemical interaction or the formation of new phases
</documentation>
<pattern>
332
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Volume_20fractions_20minerals>
</Initial_20grains>
</Crystal_20Preferred_20Orientation>
<Function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
342
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
341
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Number_20of_20components>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The number of function components where each component is described by a function expression delimited by a &apos;;&apos;.
</documentation>
<pattern>
339
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20components>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
340
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<Generator>
<Ascii_20file>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/particle/generator/ascii/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/particle/generator/ascii/
</default_value>
<documentation>
The name of a directory that contains the particle data. This path may either be absolute (if starting with a &apos;/&apos;) or relative to the current directory. The path may also include the special text &apos;$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT. 
</documentation>
<pattern>
302
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
particle.dat
</value>
<default_value>
particle.dat
</default_value>
<documentation>
The name of the particle file.
</documentation>
<pattern>
303
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
</Ascii_20file>
<Probability_20density_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
306
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
305
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Number_20of_20particles>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
Total number of particles to create (not per processor or per element). The number is parsed as a floating point number (so that one can specify, for example, &apos;1e4&apos; particles) but it is interpreted as an integer, of course.
</documentation>
<pattern>
307
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Number_20of_20particles>
<Random_20cell_20selection>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
If true, particle numbers per cell are calculated randomly according to their respective probability density. This means particle numbers per cell can deviate statistically from the integral of the probability density. If false, first determine how many particles each cell should have based on the integral of the density over each of the cells, and then once we know how many particles we want on each cell, choose their locations randomly within each cell.
</documentation>
<pattern>
308
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Random_20cell_20selection>
<Random_20number_20seed>
<value>
5432
</value>
<default_value>
5432
</default_value>
<documentation>
The seed for the random number generator that controls the particle generation. Keep constant to generate identical particle distributions in subsequent model runs. Change to get a different distribution. In parallel computations the seed is further modified on each process to ensure different particle patterns on different processes. Note that the number of particles per processor is not affected by the seed.
</documentation>
<pattern>
309
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Random_20number_20seed>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
304
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Probability_20density_20function>
<Random_20uniform>
<Number_20of_20particles>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
Total number of particles to create (not per processor or per element). The number is parsed as a floating point number (so that one can specify, for example, &apos;1e4&apos; particles) but it is interpreted as an integer, of course.
</documentation>
<pattern>
280
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Number_20of_20particles>
<Random_20cell_20selection>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
If true, particle numbers per cell are calculated randomly according to their respective probability density. This means particle numbers per cell can deviate statistically from the integral of the probability density. If false, first determine how many particles each cell should have based on the integral of the density over each of the cells, and then once we know how many particles we want on each cell, choose their locations randomly within each cell.
</documentation>
<pattern>
281
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Random_20cell_20selection>
<Random_20number_20seed>
<value>
5432
</value>
<default_value>
5432
</default_value>
<documentation>
The seed for the random number generator that controls the particle generation. Keep constant to generate identical particle distributions in subsequent model runs. Change to get a different distribution. In parallel computations the seed is further modified on each process to ensure different particle patterns on different processes. Note that the number of particles per processor is not affected by the seed.
</documentation>
<pattern>
282
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Random_20number_20seed>
</Random_20uniform>
<Reference_20cell>
<Number_20of_20particles_20per_20cell_20per_20direction>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
List of number of particles to create per cell and spatial dimension. The size of the list is the number of spatial dimensions. If only one value is given, then each spatial dimension is set to the same value. The list of numbers are parsed as a floating point number (so that one can specify, for example, &apos;1e4&apos; particles) but it is interpreted as an integer, of course.
</documentation>
<pattern>
283
</pattern>
<pattern_description>
[List of &lt;[Integer range 1...2147483647 (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Number_20of_20particles_20per_20cell_20per_20direction>
</Reference_20cell>
<Uniform_20box>
<Maximum_20x>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum x coordinate for the region of particles.
</documentation>
<pattern>
286
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20x>
<Maximum_20y>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum y coordinate for the region of particles.
</documentation>
<pattern>
288
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20y>
<Maximum_20z>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum z coordinate for the region of particles.
</documentation>
<pattern>
290
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20z>
<Minimum_20x>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum x coordinate for the region of particles.
</documentation>
<pattern>
285
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20x>
<Minimum_20y>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum y coordinate for the region of particles.
</documentation>
<pattern>
287
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20y>
<Minimum_20z>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum z coordinate for the region of particles.
</documentation>
<pattern>
289
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20z>
<Number_20of_20particles>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
Total number of particles to create (not per processor or per element). The number is parsed as a floating point number (so that one can specify, for example, &apos;1e4&apos; particles) but it is interpreted as an integer, of course.
</documentation>
<pattern>
284
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Number_20of_20particles>
</Uniform_20box>
<Uniform_20radial>
<Center_20x>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
x coordinate for the center of the spherical region, where particles are generated.
</documentation>
<pattern>
292
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Center_20x>
<Center_20y>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
y coordinate for the center of the spherical region, where particles are generated.
</documentation>
<pattern>
293
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Center_20y>
<Center_20z>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
z coordinate for the center of the spherical region, where particles are generated.
</documentation>
<pattern>
294
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Center_20z>
<Maximum_20latitude>
<value>
180.
</value>
<default_value>
180.
</default_value>
<documentation>
Maximum latitude coordinate for the region of particles in degrees. Measured from the center position, and from the north pole.
</documentation>
<pattern>
300
</pattern>
<pattern_description>
[Double 0...180 (inclusive)]
</pattern_description>
</Maximum_20latitude>
<Maximum_20longitude>
<value>
360.
</value>
<default_value>
360.
</default_value>
<documentation>
Maximum longitude coordinate for the region of particles in degrees. Measured from the center position.
</documentation>
<pattern>
298
</pattern>
<pattern_description>
[Double -180...360 (inclusive)]
</pattern_description>
</Maximum_20longitude>
<Maximum_20radius>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Maximum radial coordinate for the region of particles. Measured from the center position.
</documentation>
<pattern>
296
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20radius>
<Minimum_20latitude>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum latitude coordinate for the region of particles in degrees. Measured from the center position, and from the north pole.
</documentation>
<pattern>
299
</pattern>
<pattern_description>
[Double 0...180 (inclusive)]
</pattern_description>
</Minimum_20latitude>
<Minimum_20longitude>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum longitude coordinate for the region of particles in degrees. Measured from the center position.
</documentation>
<pattern>
297
</pattern>
<pattern_description>
[Double -180...360 (inclusive)]
</pattern_description>
</Minimum_20longitude>
<Minimum_20radius>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Minimum radial coordinate for the region of particles. Measured from the center position.
</documentation>
<pattern>
295
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20radius>
<Number_20of_20particles>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
Total number of particles to create (not per processor or per element). The number is parsed as a floating point number (so that one can specify, for example, &apos;1e4&apos; particles) but it is interpreted as an integer, of course.
</documentation>
<pattern>
291
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Number_20of_20particles>
<Radial_20layers>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The number of radial shells of particles that will be generated around the central point.
</documentation>
<pattern>
301
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Radial_20layers>
</Uniform_20radial>
</Generator>
<Integrator>
<RK2>
<Higher_20order_20accurate_20in_20time>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to correctly evaluate old and current velocity solution to reach higher-order accuracy in time. If set to &apos;false&apos; only the old velocity solution is evaluated to simulate a first order method in time. This is only recommended for benchmark purposes.
</documentation>
<pattern>
311
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Higher_20order_20accurate_20in_20time>
</RK2>
</Integrator>
<Interpolator>
<Bilinear_20least_20squares>
<Use_20boundary_20extrapolation>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Extends the range used by &apos;Use linear least squares limiter&apos; by linearly interpolating values at cell boundaries from neighboring cells. If more than one value is given, it will be treated as a list with one component per particle property. Enabling &apos;Use boundary extrapolation&apos; requires enabling &apos;Use linear least squares limiter&apos;.
</documentation>
<pattern>
314
</pattern>
<pattern_description>
[List of &lt;[Bool]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Use_20boundary_20extrapolation>
<Use_20linear_20least_20squares_20limiter>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Limit the interpolation of particle properties onto the cell, so that the value of each property is no smaller than its minimum and no larger than its maximum on the particles of each cell, and the average of neighboring cells. If more than one value is given, it will be treated as a list with one component per particle property.
</documentation>
<pattern>
313
</pattern>
<pattern_description>
[List of &lt;[Bool]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Use_20linear_20least_20squares_20limiter>
</Bilinear_20least_20squares>
<Quadratic_20least_20squares>
<Use_20boundary_20extrapolation>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Extends the range used by &apos;Use quadratic least squares limiter&apos; by linearly interpolating values at cell boundaries from neighboring cells. If more than one value is given, it will be treated as a list with one component per particle property. Enabling &apos;Use boundary extrapolation&apos; requires enabling &apos;Use quadratic least squares limiter&apos;.
</documentation>
<pattern>
319
</pattern>
<pattern_description>
[List of &lt;[Bool]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Use_20boundary_20extrapolation>
<Use_20quadratic_20least_20squares_20limiter>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Limit the interpolation of particle properties onto the cell, so that the value of each property is no smaller than its minimum and no larger than its maximum on the particles of each cell, and the average of neighboring cells. If more than one value is given, it will be treated as a list with one component per particle property.
</documentation>
<pattern>
318
</pattern>
<pattern_description>
[List of &lt;[Bool]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Use_20quadratic_20least_20squares_20limiter>
</Quadratic_20least_20squares>
</Interpolator>
<Melt_20particle>
<Threshold_20for_20melt_20presence>
<value>
1e-3
</value>
<default_value>
1e-3
</default_value>
<documentation>
The minimum porosity that has to be present at the position of a particle for it to be considered a melt particle (in the sense that the melt presence property is set to 1).
</documentation>
<pattern>
321
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Threshold_20for_20melt_20presence>
</Melt_20particle>
</Particles_202>
<Postprocess>
<List_20of_20postprocessors>
<value/>
<default_value/>
<documentation>
A comma separated list of postprocessor objects that should be run at the end of each time step. Some of these postprocessors will declare their own parameters which may, for example, include that they will actually do something only every so many time steps or years. Alternatively, the text `all&apos; indicates that all available postprocessors should be run after each time step.

The following postprocessors are available:

`ODE statistics&apos;: A postprocessor that computes some statistics about ODEs solved during the model evolution, specifically, how many iterations are needed to solve these ODEs on average. 

`Stokes residual&apos;: A postprocessor that outputs the Stokes residuals during the iterative solver algorithm into a file stokes_residuals.txt in the output directory.

`basic statistics&apos;: A postprocessor that outputs some simplified statistics like the Rayleigh number and other quantities that only make sense in certain model setups. The output is written after completing initial adaptive refinement steps. The postprocessor assumes a point at the surface at the adiabatic surface temperature and pressure is a reasonable reference condition for computing these properties. Furthermore, the Rayleigh number is computed using the model depth (i.e. not the radius of the Earth), as we need a definition that is geometry independent. Take care when comparing these values to published studies and make sure they use the same definitions.

`boundary densities&apos;: A postprocessor that computes the laterally averaged density at the top and bottom of the domain.

`boundary pressures&apos;: A postprocessor that computes the laterally averaged pressure at the top and bottom of the domain.

`boundary strain rate residual statistics&apos;: A postprocessor that computes some statistics about the surface strain rate residual along the top boundary. The residual is the difference between the second invariant of the model strain rate and the second strain rate invariant read from the input data file. Currently, the strain residual statistics, i.e., min, max and the rms magnitude, are computed at the top surface.

`boundary velocity residual statistics&apos;: A postprocessor that computes some statistics about the velocity residual along the top boundary. The velocity residual is the difference between the model solution velocities and the input velocities (GPlates model or ascii data). Currently, the velocity residual statistics, i.e., min, max and the rms magnitude, is computed at the top surface.

`command&apos;: A postprocessor that executes a command line process.

`composition statistics&apos;: A postprocessor that computes some statistics about the compositional fields, if present in this simulation. In particular, it computes maximal and minimal values of each field, as well as the total mass contained in this field as defined by the integral $m_i(t) = \int_\Omega c_i(\mathbf x,t) \; \text{d}x$.

`composition velocity statistics&apos;: A postprocessor that computes the root mean square velocity over the area spanned by each compositional field (i.e. where the field values are larger or equal to 0.5.

`core statistics&apos;: A postprocessor that computes some statistics about the core evolution. (Working only with dynamic core boundary temperature plugin)

`crystal preferred orientation&apos;: A Postprocessor that writes out CPO specific particle data.It can write out the CPO data as it is stored (raw) and/or as arandom draw volume weighted representation. The latter oneis recommended for plotting against real data. For both representationsthe specific output fields and their order can be set.The work of this postprocessor should better be done by the main particles postprocessor, however we need to be able to process the data before outputting it, which does not work with that postprocessor. If this is added to the other postprocessor in the future this one becomes obsolete.

`depth average&apos;: A postprocessor that computes depth averaged quantities and writes them into a file &lt;depth_average.ext&gt; in the output directory, where the extension of the file is determined by the output format you select. In addition to the output format, a number of other parameters also influence this postprocessor, and they can be set in the section \texttt{Postprocess/Depth average} in the input file.

In the output files, the $x$-value of each data point corresponds to the depth, whereas the $y$-value corresponds to the simulation time. The time is provided in seconds or, if the global ``Use years in output instead of seconds&apos;&apos; parameter is set, in years.

`domain volume statistics&apos;: A postprocessor that computes the total area (in 2d) or volume (in 3d) of the computational domain. 

`dynamic topography&apos;: A postprocessor that computes a measure of dynamic topography based on the stress at the boundary. The data is written into text files named `dynamic\_topography_\X.NNNNN&apos; in the output directory, where X is the name of the boundary and NNNNN is the number of the time step.

The exact approach works as follows: At each selected boundary, we compute the traction that acts normal to the boundary faces using the consistent boundary flux method as described in ``Gresho, Lee, Sani, Maslanik, Eaton (1987). The consistent Galerkin FEM for computing derived boundary quantities in thermal and or fluids problems. International Journal for Numerical Methods in Fluids, 7(4), 371-394.&apos;&apos; From this traction, the dynamic topography is computed using the formula $h=\frac{\sigma_{n}}{g \rho}$ where $g$ is the norm of the gravity and $\rho$ is the density. For the bottom surface we chose the convention that positive values are up and negative values are down, analogous to the deformation of the upper surface. Note that this implementation takes the direction of gravity into account, which means that reversing the flow in backward advection calculations will not reverse the instantaneous topography because the reverse flow will be divided by the reverse surface gravity.  
The file format then consists of lines with Euclidean coordinates followed by the corresponding topography value.

`entropy viscosity statistics&apos;: A postprocessor that computes the maximum and volume averagedentropy viscosity stabilization for the temperature field.

`geoid&apos;: A postprocessor that computes a representation of the geoid based on the density structure in the mantle, as well as the topography at the surface and core mantle boundary (CMB) if desired. The topography is based on the dynamic topography postprocessor in case of no free surface, and based on the real surface from the geometry model in case of a free surface. The geoid is computed from a spherical harmonic expansion, so the geometry of the domain must be a 3d spherical shell.

`global statistics&apos;: A postprocessor that outputs all the global statistics information, e.g. the time of the simulation, the timestep number, number of degrees of freedom and solver iterations for each timestep. The postprocessor can output different formats, the first printing one line in the statistics file per nonlinear solver iteration (if a nonlinear solver scheme is selected). The second prints one line per timestep, summing the information about all nonlinear iterations in this line. Note that this postprocessor is always active independent on whether or not it is selected in the parameter file.

`gravity calculation&apos;: A postprocessor that computes gravity, gravity anomalies, gravity potential and gravity gradients for a set of points (e.g. satellites) in or above the model surface for either a user-defined range of latitudes, longitudes and radius or a list of point coordinates.Spherical coordinates in the output file are radius, colatitude and colongitude. Gravity is here based on the density distribution from the material model (and non adiabatic). This means that the density may come directly from an ascii file. This postprocessor also computes theoretical gravity and its derivatives, which corresponds to the analytical solution of gravity in the same geometry but filled with a reference density. The reference density is also used to determine density anomalies for computing gravity anomalies. Thus one must carefully evaluate the meaning of the gravity anomaly output, because the solution may not reflect the actual gravity anomaly (due to differences in the assumed reference density). On way to guarantee correct gravity anomalies is to subtract gravity of a certain point from the average gravity on the map. Another way is to directly use density anomalies for this postprocessor.The average- minimum- and maximum gravity acceleration and potential are written into the statistics file.

`heat flux densities&apos;: A postprocessor that computes some statistics about the heat flux density for each boundary id. The heat flux density across each boundary is computed in outward direction, i.e., from the domain to the outside. The heat flux is computed as sum of advective heat flux and conductive heat flux through Neumann boundaries, both computed as integral over the boundary area, and conductive heat flux through Dirichlet boundaries, which is computed using the consistent boundary flux method as described in ``Gresho, Lee, Sani, Maslanik, Eaton (1987). The consistent Galerkin FEM for computing derived boundary quantities in thermal and or fluids problems. International Journal for Numerical Methods in Fluids, 7(4), 371-394.&apos;&apos;

Note that the ``heat flux statistics&apos;&apos; postprocessor computes the same quantity as the one here, but not divided by the area of the surface. In other words, it computes the \textit{total} heat flux through each boundary.

`heat flux map&apos;: A postprocessor that computes the heat flux density across each boundary in outward direction, i.e., from the domain to the outside. The heat flux is computed as sum of advective heat flux and conductive heat flux through Neumann boundaries, both computed as integral over the boundary area, and conductive heat flux through Dirichlet boundaries, which is computed using the consistent boundary flux method as described in ``Gresho, Lee, Sani, Maslanik, Eaton (1987). The consistent Galerkin FEM for computing derived boundary quantities in thermal and or fluids problems. International Journal for Numerical Methods in Fluids, 7(4), 371-394.&apos;&apos;

`heat flux statistics&apos;: A postprocessor that computes some statistics about the heat flux density across each boundary in outward direction, i.e., from the domain to the outside. The heat flux is computed as sum of advective heat flux and conductive heat flux through Neumann boundaries, both computed as integral over the boundary area, and conductive heat flux through Dirichlet boundaries, which is computed using the consistent boundary flux method as described in ``Gresho, Lee, Sani, Maslanik, Eaton (1987). The consistent Galerkin FEM for computing derived boundary quantities in thermal and or fluids problems. International Journal for Numerical Methods in Fluids, 7(4), 371-394.&apos;&apos;The point-wise heat flux can be obtained from the heat flux map postprocessor, which outputs the heat flux to a file, or the heat flux map visualization postprocessor, which outputs the heat flux for visualization. 

As stated, this postprocessor computes the \textit{outbound} heat flux. If you are interested in the opposite direction, for example from the core into the mantle when the domain describes the mantle, then you need to multiply the result by -1.

:::{note}
In geodynamics, the term ``heat flux&apos;&apos; is often understood to be the quantity $- k \nabla T$, which is really a heat flux \textit{density}, i.e., a vector-valued field. In contrast to this, the current postprocessor only computes the integrated flux over each part of the boundary. Consequently, the units of the quantity computed here are $W=\frac{J}{s}$.
:::

The ``heat flux densities&apos;&apos; postprocessor computes the same quantity as the one here, but divided by the area of the surface.

`heating statistics&apos;: A postprocessor that computes some statistics about heating, averaged by volume. 

`load balance statistics&apos;: A postprocessor that computes statistics about the distribution of cells, and if present particles across subdomains. In particular, it computes maximal, average and minimal number of cells across all ranks. If there are particles it also computes the maximal, average, and minimum number of particles across all ranks, and maximal, average, and minimal ratio between local number of particles and local number of cells across all processes. All of these numbers can be useful to assess the load balance between different MPI ranks, as the difference between the minimal and maximal load should be as small as possible.

`mass flux statistics&apos;: A postprocessor that computes some statistics about the mass flux across boundaries. For each boundary indicator (see your geometry description for which boundary indicators are used), the mass flux is computed in outward direction, i.e., from the domain to the outside, using the formula $\int_{\Gamma_i} \rho \mathbf v \cdot \mathbf n$ where $\Gamma_i$ is the part of the boundary with indicator $i$, $\rho$ is the density as reported by the material model, $\mathbf v$ is the velocity, and $\mathbf n$ is the outward normal. 

As stated, this postprocessor computes the \textit{outbound} mass flux. If you are interested in the opposite direction, for example from the core into the mantle when the domain describes the mantle, then you need to multiply the result by -1.

:::{note}
In geodynamics, the term ``mass flux&apos;&apos; is often understood to be the quantity $\rho \mathbf v$, which is really a mass flux \textit{density}, i.e., a vector-valued field. In contrast to this, the current postprocessor only computes the integrated flux over each part of the boundary. Consequently, the units of the quantity computed here are $\frac{kg}{s}$.
:::

`material statistics&apos;: A postprocessor that computes some statistics about the material properties. In particular, it computes the volume-averages of the density and viscosity, and the total mass in the model. Specifically, it implements the following formulas in each time step: $\left&lt;\rho\right&gt; = \frac{1}{|\Omega|} \int_\Omega \rho(\mathbf x) \, \text{d}x$, $\left&lt;\eta\right&gt; = \frac{1}{|\Omega|} \int_\Omega \eta(\mathbf x) \, \text{d}x$, $M = \int_\Omega \rho(\mathbf x) \, \text{d}x$, where $|\Omega|$ is the volume of the domain.

`matrix statistics&apos;: A postprocessor that computes some statistics about the matrices. In particular, it outputs total memory consumption, total non-zero elements, and non-zero elements per block, for system matrix and system preconditioner matrix.

`maximum depth of field&apos;: A postprocessor that for each compositional field outputs the largest depth at which a quadrature point is found where the field has a value of 0.5 or larger. For fields that do not represent materials, but for example track a certain quantity like strain, this value of 0.5 does not necessarily make sense. 

`melt statistics&apos;: A postprocessor that computes some statistics about the melt (volume) fraction. If the material model does not implement a melt fraction function, the output is set to zero.

`memory statistics&apos;: A postprocessor that computes some statistics about the memory consumption. In particular, it computes the memory usage of the system matrix, triangulation, p4est, DoFHandler, current constraints, solution vector, and peak virtual memory usage, all in MB. It also outputs the memory usage of the system matrix to the screen.

`mobility statistics&apos;: A postprocessor that computes some statistics about mobility following Tackley (2000) and Lourenco et al. (2020).

`particle count statistics&apos;: A postprocessor that computes some statistics about the particle distribution, if present in this simulation. In particular, it computes minimal, average and maximal values of particles per cell in the global domain.

`particles&apos;: A Postprocessor that creates particles that follow the velocity field of the simulation. The particles can be generated and propagated in various ways and they can carry a number of constant or time-varying properties. The postprocessor can write output positions and properties of all particles at chosen intervals, although this is not mandatory. It also allows other parts of the code to query the particles for information.

`point values&apos;: A postprocessor that evaluates the solution (i.e., velocity, pressure, temperature, and compositional fields along with other fields that are treated as primary variables) at the end of every time step or after a user-specified time interval at a given set of points and then writes this data into the file &lt;point\_values.txt&gt; in the output directory. The points at which the solution should be evaluated are specified in the section \texttt{Postprocess/Point values} in the input file.

In the output file, data is organized as (i) time, (ii) the 2 or 3 coordinates of the evaluation points, and (iii) followed by the values of the solution vector at this point. The time is provided in seconds or, if the global ``Use years in output instead of seconds&apos;&apos; parameter is set, in years. In the latter case, the velocity is also converted to meters/year, instead of meters/second.

:::{note}
Evaluating the solution of a finite element field at arbitrarily chosen points is an expensive process. Using this postprocessor will only be efficient if the number of evaluation points or output times is relatively small. If you need a very large number of evaluation points, you should consider extracting this information from the visualization program you use to display the output of the `visualization&apos; postprocessor.
:::

`pressure statistics&apos;: A postprocessor that computes some statistics about the pressure field.

`rotation statistics&apos;: A postprocessor that computes some statistics about the rotational velocity of the model (i.e. integrated net rotation and angular momentum). In 2d we assume the model to be a cross-section through an infinite domain in z direction, with a zero z-velocity. Thus, the z-axis is the only possible rotation axis and both moment of inertia and angular momentum are scalar instead of tensor quantities.

`sea level&apos;: A postprocessor that computes the sea level for glacial isostatic adjustmentmodeling. When ice melts and enters the ocean, the ocean water needs to beredistributed in a gravitationally consistent way. With the updated surfaceloading (ocean and ice) the free surface deformation needs to be computediteratively before moving to the next time step. A postprocessor intended for use with a deforming top surface. After every step it computes the sea level based on the topography, ocean basin, ice melt, perturbed gravitational potential of the Earth model and gravitational potential of the ice load, relative to a reference datum (initial radius for a spherical shell geometry model). The sea level computation is based on \cite{Martinec2018}. If &apos;SeaLevel.Output to file&apos; is set to true, also outputs sea level into text files named `sea_level.NNNNN&apos; in the output directory, where NNNNN is the number of the time step. 

The file format then consists of lines with Euclidean coordinates followed by the corresponding sea level value. Sea level is printed/written in meters. 

`spherical velocity statistics&apos;: A postprocessor that computes radial, tangential and total RMS velocity.

`temperature statistics&apos;: A postprocessor that computes some statistics about the temperature field.

`topography&apos;: A postprocessor intended for use with a deforming top surface.  After every step it loops over all the vertices on the top surface and determines the maximum and minimum topography relative to a reference datum (initial box height for a box geometry model or initial radius for a sphere/spherical shell geometry model). If &apos;Topography.Output to file&apos; is set to true, also outputs topography into text files named `topography.NNNNN&apos; in the output directory, where NNNNN is the number of the time step.
The file format then consists of lines with Euclidean coordinates followed by the corresponding topography value.Topography is printed/written in meters.

It is worth comparing this postprocessor with the visualization postprocessor called ``surface elevation&apos;&apos;. The latter is used to *visualize* the surface elevation in graphical form, by outputting it into the same files that the solution and other postprocessed variables are written, to then be used for visualization using programs such as VisIt or Paraview. In contrast, the current postprocessor generates the same *kind* of information, but instead writes it as a point cloud that can then more easily be processed using tools other than visualization programs.

`velocity boundary statistics&apos;: A postprocessor that computes some statistics about the velocity along the boundaries. For each boundary indicator (see your geometry description for which boundary indicators are used), the min and max velocity magnitude is computed.

`velocity statistics&apos;: A postprocessor that computes the root mean square and maximum velocity in the computational domain.

`viscous dissipation statistics&apos;: A postprocessor that outputs the viscous rate of dissipation of energy for each compositional field (where the field has a value of 0.5 or more) as well as over the whole domain. When all the fields represent lithologies and there is no background field, the sum of the individual field&apos;s dissipation should equal that over the whole domain. The viscous dissipation is computed as: $\int_{V}\left(\sigma^\prime \dot{\epsilon}^\prime \right)$, where $\sigma^\prime$  is the deviatoric stress and $\dot{\epsilon}^\prime$ the deviatoric strain rate.Note then when shear heating is included in the temperature equation, it is better to use the &apos;heating statistics&apos; postprocessor.

`visualization&apos;: A postprocessor that takes the solution and writes it into files that can be read by a graphical visualization program. Additional run time parameters are read from the parameter subsection &apos;Visualization&apos;.

`volume of fluid statistics&apos;: A postprocessor that computes some statistics about the volume-of-fluid fields.
</documentation>
<pattern>
136
</pattern>
<pattern_description>
[MultipleSelection ODE statistics|Stokes residual|basic statistics|boundary densities|boundary pressures|boundary strain rate residual statistics|boundary velocity residual statistics|command|composition statistics|composition velocity statistics|core statistics|crystal preferred orientation|depth average|domain volume statistics|dynamic topography|entropy viscosity statistics|geoid|global statistics|gravity calculation|heat flux densities|heat flux map|heat flux statistics|heating statistics|load balance statistics|mass flux statistics|material statistics|matrix statistics|maximum depth of field|melt statistics|memory statistics|mobility statistics|particle count statistics|particles|point values|pressure statistics|rotation statistics|sea level|spherical velocity statistics|temperature statistics|topography|velocity boundary statistics|velocity statistics|viscous dissipation statistics|visualization|volume of fluid statistics ]
</pattern_description>
</List_20of_20postprocessors>
<Run_20postprocessors_20on_20nonlinear_20iterations>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether or not the postprocessors should be executed after each of the nonlinear iterations done within one time step. As this is mainly an option for the purposes of debugging, it is not supported when the &apos;Time between graphical output&apos; is larger than zero, or when the postprocessor is not intended to be run more than once per timestep.
</documentation>
<pattern>
70
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Run_20postprocessors_20on_20nonlinear_20iterations>
<Boundary_20strain_20rate_20residual_20statistics>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/postprocess/boundary-strain-rate-residual/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/postprocess/boundary-strain-rate-residual/
</default_value>
<documentation>
The name of a directory that contains the ascii data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
394
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
box_3d_boundary_strain_rate.txt
</value>
<default_value>
box_3d_boundary_strain_rate.txt
</default_value>
<documentation>
The file name of the input surface strain rate an ascii data. The file has one column in addition to the coordinate columns corresponding to the second invariant of strain rate. 
</documentation>
<pattern>
395
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model.
</documentation>
<pattern>
396
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
</Boundary_20strain_20rate_20residual_20statistics>
<Boundary_20velocity_20residual_20statistics>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/boundary-velocity/gplates/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/boundary-velocity/gplates/
</default_value>
<documentation>
The name of a directory that contains the GPlates model or the ascii data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
397
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
current_day.gpml
</value>
<default_value>
current_day.gpml
</default_value>
<documentation>
The file name of the input velocity as a GPlates model or an ascii data. For the GPlates model, provide file in the same format as described in the &apos;gplates&apos; boundary velocity plugin. For the ascii data, provide file in the same format as described in  &apos;ascii data&apos; initial composition plugin.
</documentation>
<pattern>
398
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/year set this factor to 0.01.
</documentation>
<pattern>
399
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
<Use_20ascii_20data>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Use ascii data files (e.g., GPS) for computing residual velocities instead of GPlates data.
</documentation>
<pattern>
401
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20ascii_20data>
<Use_20spherical_20unit_20vectors>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Specify velocity as r, phi, and theta components instead of x, y, and z. Positive velocities point up, east, and north (in 3d) or out and clockwise (in 2d). This setting only makes sense for spherical geometries.GPlates data is always interpreted to be in east and north directions and is not affected by this parameter.
</documentation>
<pattern>
400
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20spherical_20unit_20vectors>
</Boundary_20velocity_20residual_20statistics>
<Command>
<Command>
<value/>
<default_value/>
<documentation>
Command to execute.
</documentation>
<pattern>
404
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Command>
<Run_20on_20all_20processes>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to run command from all processes (true), or only on process 0 (false).
</documentation>
<pattern>
403
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Run_20on_20all_20processes>
<Terminate_20on_20failure>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Select whether \aspect{} should terminate if the command returns a non-zero exit status.
</documentation>
<pattern>
402
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Terminate_20on_20failure>
</Command>
<Composition_20velocity_20statistics>
<Names_20of_20selected_20compositional_20fields>
<value/>
<default_value/>
<documentation>
A list of names for each of the compositional fields that you want to compute the combined RMS velocity for.
</documentation>
<pattern>
405
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Names_20of_20selected_20compositional_20fields>
</Composition_20velocity_20statistics>
<Crystal_20Preferred_20Orientation>
<Compress_20cpo_20data_20files>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to compress the raw and weighted cpo data output files with zlib.
</documentation>
<pattern>
352
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Compress_20cpo_20data_20files>
<Random_20number_20seed>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
The seed used to generate random numbers. This will make sure that results are reproducible as long as the problem is run with the same amount of MPI processes. It is implemented as final seed = random number seed + MPI Rank. 
</documentation>
<pattern>
347
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Random_20number_20seed>
<Temporary_20output_20location>
<value/>
<default_value/>
<documentation>
On large clusters it can be advantageous to first write the output to a temporary file on a local file system and later move this file to a network file system. If this variable is set to a non-empty string it will be interpreted as a temporary storage location.
</documentation>
<pattern>
349
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Temporary_20output_20location>
<Time_20between_20data_20output>
<value>
1e8
</value>
<default_value>
1e8
</default_value>
<documentation>
The time interval between each generation of output files. A value of zero indicates that output should be generated every time step.

Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
346
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Time_20between_20data_20output>
<Write_20in_20background_20thread>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
File operations can potentially take a long time, blocking the progress of the rest of the model run. Setting this variable to `true&apos; moves this process into background threads, while the rest of the model continues.
</documentation>
<pattern>
348
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Write_20in_20background_20thread>
<Write_20out_20draw_20volume_20weighted_20cpo_20data>
<value>
olivine Euler angles,enstatite Euler angles
</value>
<default_value>
olivine Euler angles,enstatite Euler angles
</default_value>
<documentation>
A list containing the what part of the random draw volume weighted particle cpo data needs to be written out after the particle id. after using a random draw volume weighting. The random draw volume weigthing uses a uniform random distribution This writes out the raw cpo data files for each MPI process. It can write out the following data: olivine volume fraction, olivine rotation matrix, olivine Euler angles, enstatite volume fraction, enstatite rotation matrix, enstatite Euler angles. 
Note that the rotation matrix and Euler angles both contain the same information, but in a different format. Euler angles are recommended over the rotation matrix since they only require to write 3 values instead of 9. If the list is empty, this file will not be written. Furthermore, the entries will be written out in the order given, and if entries are entered multiple times, they will be written out multiple times.
</documentation>
<pattern>
351
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Write_20out_20draw_20volume_20weighted_20cpo_20data>
<Write_20out_20raw_20cpo_20data>
<value>
olivine volume fraction,olivine Euler angles,enstatite volume fraction,enstatite Euler angles
</value>
<default_value>
olivine volume fraction,olivine Euler angles,enstatite volume fraction,enstatite Euler angles
</default_value>
<documentation>
A list containing what particle cpo data needs to be written out after the particle id. This writes out the raw cpo data files for each MPI process. It can write out the following data: olivine volume fraction, olivine rotation matrix, olivine Euler angles, enstatite volume fraction, enstatite rotation matrix, enstatite Euler angles. 
Note that the rotation matrix and Euler angles both contain the same information, but in a different format. Euler angles are recommended over the rotation matrix since they only require to write 3 values instead of 9. If the list is empty, this file will not be written.Furthermore, the entries will be written out in the order given, and if entries are entered multiple times, they will be written out multiple times.
</documentation>
<pattern>
350
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Write_20out_20raw_20cpo_20data>
</Crystal_20Preferred_20Orientation>
<Depth_20average>
<Depth_20boundaries_20of_20zones>
<value/>
<default_value/>
<documentation>
The depth boundaries of zones within which we are to compute averages. By default this list is empty and we subdivide the entire domain into equidistant depth zones and compute averages within each of these zones. If this list is not empty it has to contain one more entry than the &apos;Number of zones&apos; parameter, representing the upper and lower depth boundary of each zone. It is not necessary to cover the whole depth-range (i.e. you can select to only average in a single layer by choosing 2 arbitrary depths as the boundaries of that layer).
</documentation>
<pattern>
355
</pattern>
<pattern_description>
[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Depth_20boundaries_20of_20zones>
<List_20of_20output_20variables>
<value>
all
</value>
<default_value>
all
</default_value>
<documentation>
A comma separated list which specifies which quantities to average in each depth slice. It defaults to averaging all available quantities, but this can be an expensive operation, so you may want to select only a few.

Specifically, the sinking velocity is defined as the scalar product of the velocity and a unit vector in the direction of gravity, if positive (being zero if this product is negative, which would correspond to an upward velocity). The rising velocity is the opposite: the scalar product of the velocity and a unit vector in the direction opposite of gravity, if positive (being zero for downward velocities). 

List of options:
all|temperature|composition|adiabatic temperature|adiabatic pressure|adiabatic density|adiabatic density derivative|velocity magnitude|sinking velocity|rising velocity|Vs|Vp|log viscosity|viscosity|vertical heat flux|vertical mass flux|composition mass
</documentation>
<pattern>
357
</pattern>
<pattern_description>
[MultipleSelection all|temperature|composition|adiabatic temperature|adiabatic pressure|adiabatic density|adiabatic density derivative|velocity magnitude|sinking velocity|rising velocity|Vs|Vp|log viscosity|viscosity|vertical heat flux|vertical mass flux|composition mass ]
</pattern_description>
</List_20of_20output_20variables>
<Number_20of_20zones>
<value>
10
</value>
<default_value>
10
</default_value>
<documentation>
The number of zones in depth direction within which we are to compute averages. By default, we subdivide the entire domain into 10 depth zones and compute temperature and other averages within each of these zones. However, if you have a very coarse mesh, it may not make much sense to subdivide the domain into so many zones and you may wish to choose less than this default. It may also make computations slightly faster. On the other hand, if you have an extremely highly resolved mesh, choosing more zones might also make sense.
</documentation>
<pattern>
354
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20zones>
<Output_20format>
<value>
gnuplot, txt
</value>
<default_value>
gnuplot, txt
</default_value>
<documentation>
A list of formats in which the output shall be produced. The format in which the output is generated also determines the extension of the file into which data is written. The list of possible output formats that can be given here is documented in the appendix of the manual where the current parameter is described. By default the output is written as gnuplot file (for plotting), and as a simple text file.
</documentation>
<pattern>
356
</pattern>
<pattern_description>
[MultipleSelection none|dx|ucd|gnuplot|povray|eps|gmv|tecplot|vtk|vtu|hdf5|svg|deal.II intermediate|txt ]
</pattern_description>
</Output_20format>
<Time_20between_20graphical_20output>
<value>
1e8
</value>
<default_value>
1e8
</default_value>
<documentation>
The time interval between each generation of graphical output files. A value of zero indicates that output should be generated in each time step. Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
353
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Time_20between_20graphical_20output>
</Depth_20average>
<Dynamic_20core_20statistics>
<Excess_20entropy_20only>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Output the excess entropy only instead the each entropy terms.
</documentation>
<pattern>
406
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Excess_20entropy_20only>
</Dynamic_20core_20statistics>
<Dynamic_20topography>
<Density_20above>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Dynamic topography is calculated as the excess or lack of mass that is supported by mantle flow. This value depends on the density of material that is moved up or down, i.e. crustal rock, and the density of the material that is displaced (generally water or air). While the density of crustal rock is part of the material model, this parameter `Density above&apos; allows the user to specify the density value of material that is displaced above the solid surface. By default this material is assumed to be air, with a density of 0. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
358
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Density_20above>
<Density_20below>
<value>
9900.
</value>
<default_value>
9900.
</default_value>
<documentation>
Dynamic topography is calculated as the excess or lack of mass that is supported by mantle flow. This value depends on the density of material that is moved up or down, i.e. mantle above CMB, and the density of the material that is displaced (generally outer core material). While the density of mantle rock is part of the material model, this parameter `Density below&apos; allows the user to specify the density value of material that is displaced below the solid surface. By default this material is assumed to be outer core material with a density of 9900. Units: \si{\kilogram\per\meter\cubed}.
</documentation>
<pattern>
359
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Density_20below>
<Output_20bottom>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to output a file containing the bottom (i.e., CMB) dynamic topography.
</documentation>
<pattern>
361
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20bottom>
<Output_20surface>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to output a file containing the surface dynamic topography.
</documentation>
<pattern>
360
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20surface>
</Dynamic_20topography>
<Geoid>
<Also_20output_20the_20gravity_20anomaly>
<alias>
Output gravity anomaly
</alias>
<deprecation_status>
false
</deprecation_status>
</Also_20output_20the_20gravity_20anomaly>
<Also_20output_20the_20spherical_20harmonic_20coefficients_20of_20CMB_20dynamic_20topography_20contribution>
<alias>
Output CMB topography contribution coefficients
</alias>
<deprecation_status>
false
</deprecation_status>
</Also_20output_20the_20spherical_20harmonic_20coefficients_20of_20CMB_20dynamic_20topography_20contribution>
<Also_20output_20the_20spherical_20harmonic_20coefficients_20of_20density_20anomaly_20contribution>
<alias>
Output density anomaly contribution coefficients
</alias>
<deprecation_status>
false
</deprecation_status>
</Also_20output_20the_20spherical_20harmonic_20coefficients_20of_20density_20anomaly_20contribution>
<Also_20output_20the_20spherical_20harmonic_20coefficients_20of_20geoid_20anomaly>
<alias>
Output geoid anomaly coefficients
</alias>
<deprecation_status>
false
</deprecation_status>
</Also_20output_20the_20spherical_20harmonic_20coefficients_20of_20geoid_20anomaly>
<Also_20output_20the_20spherical_20harmonic_20coefficients_20of_20surface_20dynamic_20topography_20contribution>
<alias>
Output surface topography contribution coefficients
</alias>
<deprecation_status>
false
</deprecation_status>
</Also_20output_20the_20spherical_20harmonic_20coefficients_20of_20surface_20dynamic_20topography_20contribution>
<Density_20above>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The density value above the surface boundary.
</documentation>
<pattern>
367
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Density_20above>
<Density_20below>
<value>
9900.
</value>
<default_value>
9900.
</default_value>
<documentation>
The density value below the CMB boundary.
</documentation>
<pattern>
368
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Density_20below>
<Include_20CMB_20topography_20contribution>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Option to include the contribution from CMB topography on geoid. The default is true.
</documentation>
<pattern>
363
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Include_20CMB_20topography_20contribution>
<Include_20surface_20topography_20contribution>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Option to include the contribution from surface topography on geoid. The default is true.
</documentation>
<pattern>
362
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Include_20surface_20topography_20contribution>
<Maximum_20degree>
<value>
20
</value>
<default_value>
20
</default_value>
<documentation>
This parameter can be a random positive integer. However, the value normally should not exceed the maximum degree of the initial perturbed temperature field. For example, if the initial temperature uses S40RTS, the maximum degree should not be larger than 40.
</documentation>
<pattern>
364
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Maximum_20degree>
<Minimum_20degree>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
This parameter normally is set to 2 since the perturbed gravitational potential at degree 1 always vanishes in a reference frame with the planetary center of mass same as the center of figure.
</documentation>
<pattern>
365
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Minimum_20degree>
<Output_20CMB_20topography_20contribution_20coefficients>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Option to output the spherical harmonic coefficients of the CMB topography contribution to the maximum degree. The default is false. 
</documentation>
<pattern>
371
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20CMB_20topography_20contribution_20coefficients>
<Output_20data_20in_20geographical_20coordinates>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Option to output the geoid anomaly in geographical coordinates (latitude and longitude). The default is false, so the postprocessor will output the data in geocentric coordinates (x,y,z) as normally.
</documentation>
<pattern>
366
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20data_20in_20geographical_20coordinates>
<Output_20density_20anomaly_20contribution_20coefficients>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Option to output the spherical harmonic coefficients of the density anomaly contribution to the maximum degree. The default is false. 
</documentation>
<pattern>
372
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20density_20anomaly_20contribution_20coefficients>
<Output_20geoid_20anomaly_20coefficients>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Option to output the spherical harmonic coefficients of the geoid anomaly up to the maximum degree. The default is false, so the postprocessor will only output the geoid anomaly in grid format. 
</documentation>
<pattern>
369
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20geoid_20anomaly_20coefficients>
<Output_20gravity_20anomaly>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Option to output the free-air gravity anomaly up to the maximum degree. The unit of the output is in SI, hence $m/s^2$ ($1mgal = 10^-5 m/s^2$). The default is false. 
</documentation>
<pattern>
373
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20gravity_20anomaly>
<Output_20surface_20topography_20contribution_20coefficients>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Option to output the spherical harmonic coefficients of the surface topography contribution to the maximum degree. The default is false. 
</documentation>
<pattern>
370
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20surface_20topography_20contribution_20coefficients>
</Geoid>
<Global_20statistics>
<Write_20statistics_20for_20each_20nonlinear_20iteration>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to put every nonlinear iteration into a separate line in the statistics file (if true), or to output only one line per time step that contains the total number of iterations of the Stokes and advection linear system solver.
</documentation>
<pattern>
374
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Write_20statistics_20for_20each_20nonlinear_20iteration>
</Global_20statistics>
<Gravity_20calculation>
<List_20of_20latitude>
<value/>
<default_value/>
<documentation>
Parameter for the list of points sampling scheme: List of satellite latitude coordinates.
</documentation>
<pattern>
391
</pattern>
<pattern_description>
[List of &lt;[Double -90...90 (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</List_20of_20latitude>
<List_20of_20longitude>
<value/>
<default_value/>
<documentation>
Parameter for the list of points sampling scheme: List of satellite longitude coordinates.
</documentation>
<pattern>
390
</pattern>
<pattern_description>
[List of &lt;[Double -180...180 (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</List_20of_20longitude>
<List_20of_20radius>
<value/>
<default_value/>
<documentation>
Parameter for the list of points sampling scheme: List of satellite radius coordinates. Just specify one radius if all points values have the same radius. If not, make sure there are as many radius as longitude and latitude
</documentation>
<pattern>
389
</pattern>
<pattern_description>
[List of &lt;[Double 0...MAX_DOUBLE (inclusive)]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</List_20of_20radius>
<Maximum_20latitude>
<value>
90
</value>
<default_value>
90
</default_value>
<documentation>
Parameter for the uniform distribution sampling scheme: Gravity may be calculated for a sets of points along the latitude between a minimum and maximum latitude.
</documentation>
<pattern>
386
</pattern>
<pattern_description>
[Double -90...90 (inclusive)]
</pattern_description>
</Maximum_20latitude>
<Maximum_20longitude>
<value>
180.
</value>
<default_value>
180.
</default_value>
<documentation>
Parameter for the uniform distribution sampling scheme: Gravity may be calculated for a sets of points along the longitude between a minimum and maximum longitude.
</documentation>
<pattern>
385
</pattern>
<pattern_description>
[Double -180...180 (inclusive)]
</pattern_description>
</Maximum_20longitude>
<Maximum_20radius>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Parameter for the map sampling scheme: Maximum radius can be defined in or outside the model.
</documentation>
<pattern>
382
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20radius>
<Minimum_20latitude>
<value>
-90.
</value>
<default_value>
-90.
</default_value>
<documentation>
Parameter for the uniform distribution sampling scheme: Gravity may be calculated for a sets of points along the latitude between a minimum and maximum latitude.
</documentation>
<pattern>
384
</pattern>
<pattern_description>
[Double -90...90 (inclusive)]
</pattern_description>
</Minimum_20latitude>
<Minimum_20longitude>
<value>
-180.
</value>
<default_value>
-180.
</default_value>
<documentation>
Parameter for the uniform distribution sampling scheme: Gravity may be calculated for a sets of points along the longitude between a minimum and maximum longitude.
</documentation>
<pattern>
383
</pattern>
<pattern_description>
[Double -180...180 (inclusive)]
</pattern_description>
</Minimum_20longitude>
<Minimum_20radius>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Parameter for the map sampling scheme: Minimum radius may be defined in or outside the model. Prescribe a minimum radius for a sampling coverage at a specific height.
</documentation>
<pattern>
381
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20radius>
<Number_20points_20fibonacci_20spiral>
<value>
200
</value>
<default_value>
200
</default_value>
<documentation>
Parameter for the fibonacci spiral sampling scheme: This specifies the desired number of satellites per radius layer. The default value is 200. Note that sampling becomes more uniform with increasing number of satellites
</documentation>
<pattern>
376
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20points_20fibonacci_20spiral>
<Number_20points_20latitude>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Parameter for the map sampling scheme: This specifies the number of points along the latitude (e.g. gravity map) between a minimum and maximum latitude.
</documentation>
<pattern>
380
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20points_20latitude>
<Number_20points_20longitude>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Parameter for the map sampling scheme: This specifies the number of points along the longitude (e.g. gravity map) between a minimum and maximum longitude.
</documentation>
<pattern>
379
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20points_20longitude>
<Number_20points_20radius>
<value>
1
</value>
<default_value>
1
</default_value>
<documentation>
Parameter for the map sampling scheme: This specifies the number of points along the radius (e.g. depth profile) between a minimum and maximum radius.
</documentation>
<pattern>
378
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20points_20radius>
<Precision_20in_20gravity_20output>
<value>
12
</value>
<default_value>
12
</default_value>
<documentation>
Set the precision of gravity acceleration, potential and gradients in the gravity output and statistics file.
</documentation>
<pattern>
388
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Precision_20in_20gravity_20output>
<Quadrature_20degree_20increase>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
Quadrature degree increase over the velocity element degree may be required when gravity is calculated near the surface or inside the model. An increase in the quadrature element adds accuracy to the gravity solution from noise due to the model grid.
</documentation>
<pattern>
377
</pattern>
<pattern_description>
[Integer range -1...2147483647 (inclusive)]
</pattern_description>
</Quadrature_20degree_20increase>
<Reference_20density>
<value>
3300.
</value>
<default_value>
3300.
</default_value>
<documentation>
Gravity anomalies may be computed using density anomalies relative to a reference density.
</documentation>
<pattern>
387
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reference_20density>
<Sampling_20scheme>
<value>
map
</value>
<default_value>
map
</default_value>
<documentation>
Choose the sampling scheme. By default, the map produces a grid of equally angled points between a minimum and maximum radius, longitude, and latitude. A list of points contains the specific coordinates of the satellites. The fibonacci spiral sampling scheme produces a uniformly distributed map on the surface of sphere defined by a minimum and/or maximum radius.
</documentation>
<pattern>
375
</pattern>
<pattern_description>
[Selection map|list|list of points|fibonacci spiral ]
</pattern_description>
</Sampling_20scheme>
<Time_20between_20gravity_20output>
<value>
1e8
</value>
<default_value>
1e8
</default_value>
<documentation>
The time interval between each generation of gravity output files. A value of 0 indicates that output should be generated in each time step. Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
392
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Time_20between_20gravity_20output>
<Time_20steps_20between_20gravity_20output>
<value>
2147483647
</value>
<default_value>
2147483647
</default_value>
<documentation>
The maximum number of time steps between each generation of gravity output files.
</documentation>
<pattern>
393
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Time_20steps_20between_20gravity_20output>
</Gravity_20calculation>
<Memory_20statistics>
<Output_20peak_20virtual_20memory_20_28VmPeak_29>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
If set to &apos;true&apos;, also output the peak virtual memory usage (computed as the maximum over all processors).
</documentation>
<pattern>
198
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20peak_20virtual_20memory_20_28VmPeak_29>
</Memory_20statistics>
<Particles>
<Data_20output_20format>
<value>
vtu
</value>
<default_value>
vtu
</default_value>
<documentation>
A comma separated list of file formats to be used for graphical output. The list of possible output formats that can be given here is documented in the appendix of the manual where the current parameter is described.
</documentation>
<pattern>
200
</pattern>
<pattern_description>
[MultipleSelection none|dx|ucd|gnuplot|povray|eps|gmv|tecplot|vtk|vtu|hdf5|svg|deal.II intermediate|ascii ]
</pattern_description>
</Data_20output_20format>
<Exclude_20output_20properties>
<value/>
<default_value/>
<documentation>
A comma separated list of particle properties that should \textit{not} be output. If this list contains the entry `all&apos;, only the id of particles will be provided in graphical output files.
</documentation>
<pattern>
204
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Exclude_20output_20properties>
<Number_20of_20grouped_20files>
<value>
16
</value>
<default_value>
16
</default_value>
<documentation>
VTU file output supports grouping files from several CPUs into a given number of files using MPI I/O when writing on a parallel filesystem. Select 0 for no grouping. This will disable parallel file output and instead write one file per processor. A value of 1 will generate one big file containing the whole solution, while a larger value will create that many files (at most as many as there are MPI ranks).
</documentation>
<pattern>
201
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20grouped_20files>
<Temporary_20output_20location>
<value/>
<default_value/>
<documentation>
On large clusters it can be advantageous to first write the output to a temporary file on a local file system and later move this file to a network file system. If this variable is set to a non-empty string it will be interpreted as a temporary storage location.
</documentation>
<pattern>
203
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Temporary_20output_20location>
<Time_20between_20data_20output>
<value>
1e8
</value>
<default_value>
1e8
</default_value>
<documentation>
The time interval between each generation of output files. A value of zero indicates that output should be generated every time step.

Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
199
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Time_20between_20data_20output>
<Write_20in_20background_20thread>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
File operations can potentially take a long time, blocking the progress of the rest of the model run. Setting this variable to `true&apos; moves this process into a background thread, while the rest of the model continues.
</documentation>
<pattern>
202
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Write_20in_20background_20thread>
</Particles>
<Point_20values>
<Evaluation_20points>
<value/>
<default_value/>
<documentation>
The list of points at which the solution should be evaluated. Points need to be separated by semicolons, and coordinates of each point need to be separated by commas.
</documentation>
<pattern>
344
</pattern>
<pattern_description>
[List of &lt;[List of &lt;[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]&gt; of length 2...2 (inclusive)]&gt; of length 0...4294967295 (inclusive) separated by &lt;;&gt;]
</pattern_description>
</Evaluation_20points>
<Time_20between_20point_20values_20output>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The time interval between each generation of point values output. A value of zero indicates that output should be generated in each time step. Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
343
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Time_20between_20point_20values_20output>
<Use_20natural_20coordinates>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether or not the Evaluation points are specified in the natural coordinates of the geometry model, e.g. radius, lon, lat for the chunk model. Currently, natural coordinates for the spherical shell and sphere geometries are not supported. 
</documentation>
<pattern>
345
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20natural_20coordinates>
</Point_20values>
<Rotation_20statistics>
<Output_20full_20moment_20of_20inertia_20tensor>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to write the full moment of inertia tensor into the statistics output instead of its norm for the current rotation axis. This is a second-order symmetric tensor with 6 components in 3d. In 2d this option has no effect, because the rotation axis is fixed and thus the moment of inertia is always a scalar.
</documentation>
<pattern>
187
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20full_20moment_20of_20inertia_20tensor>
<Use_20constant_20density_20of_20one>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use a constant density of one for the computation of the angular momentum and moment of inertia. This is an approximation that assumes that the &apos;volumetric&apos; rotation is equal to the &apos;mass&apos; rotation. If this parameter is true this postprocessor computes &apos;net rotation&apos; instead of &apos;angular momentum&apos;.
</documentation>
<pattern>
186
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20constant_20density_20of_20one>
</Rotation_20statistics>
<Sea_20level>
<Data_20directory_20ice_20height>
<value>
$ASPECT_SOURCE_DIR/data/postprocess/sea-level/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/postprocess/sea-level/
</default_value>
<documentation>
The name of a directory that contains the ice height [m] ascii data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
192
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory_20ice_20height>
<Data_20directory_20topography>
<value>
$ASPECT_SOURCE_DIR/data/postprocess/sea-level/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/postprocess/sea-level/
</default_value>
<documentation>
The name of a directory that contains the topography ascii data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
190
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory_20topography>
<Data_20file_20name_20ice_20height>
<value>
shell_3d_ice_top.0.txt
</value>
<default_value>
shell_3d_ice_top.0.txt
</default_value>
<documentation>
The file name of the ice height ascii data. For the ascii data, provide file in the same format as described in &apos;ascii data&apos; initial composition plugin.
</documentation>
<pattern>
193
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name_20ice_20height>
<Data_20file_20name_20topography>
<value>
shell_3d_topo_top.0.txt
</value>
<default_value>
shell_3d_topo_top.0.txt
</default_value>
<documentation>
The file name of the topography ascii data. For the ascii data, provide file in the same format as described in &apos;ascii data&apos; initial composition plugin.
</documentation>
<pattern>
191
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name_20topography>
<Ice_20density>
<value>
931
</value>
<default_value>
931
</default_value>
<documentation>
The density of ice [kg/m3]
</documentation>
<pattern>
188
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Ice_20density>
<Output_20to_20file>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether or not to write sea level to a text file named named &apos;sea_level.NNNNN&apos; in the output directory
</documentation>
<pattern>
194
</pattern>
<pattern_description>
[List of &lt;[Bool]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Output_20to_20file>
<Time_20between_20text_20output>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The time interval between each generation of text output files. A value of zero indicates that output should be generated in each time step. Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
195
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Time_20between_20text_20output>
<Water_20density>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
The density of water [kg/m3]
</documentation>
<pattern>
189
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Water_20density>
</Sea_20level>
<Topography>
<Output_20to_20file>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether or not to write topography to a text file named named &apos;topography.NNNNN&apos; in the output directory
</documentation>
<pattern>
196
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20to_20file>
<Time_20between_20text_20output>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
The time interval between each generation of text output files. A value of zero indicates that output should be generated in each time step. Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
197
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Time_20between_20text_20output>
</Topography>
<Visualization>
<Filter_20output>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
deal.II offers the possibility to filter duplicate vertices for HDF5 output files. This merges the vertices of adjacent cells and therefore saves disk space, but misrepresents discontinuous output properties. Activating this function reduces the disk space by about a factor of $2^{dim}$ for HDF5 output, and currently has no effect on other output formats. :::{warning}
Setting this flag to true will result in visualization output that does not accurately represent discontinuous fields. This may be because you are using a discontinuous finite element for the pressure, temperature, or compositional variables, or because you use a visualization postprocessor that outputs quantities as discontinuous fields (e.g., the strain rate, viscosity, etc.). These will then all be visualized as \textit{continuous} quantities even though, internally, \aspect{} considers them as discontinuous fields.
:::
</documentation>
<pattern>
146
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Filter_20output>
<Interpolate_20output>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
deal.II offers the possibility to linearly interpolate output fields of higher order elements to a finer resolution. This somewhat compensates the fact that most visualization software only offers linear interpolation between grid points and therefore the output file is a very coarse representation of the actual solution field. Activating this option increases the spatial resolution in each dimension by a factor equal to the polynomial degree used for the velocity finite element (usually 2). In other words, instead of showing one quadrilateral or hexahedron in the visualization per cell on which \aspect{} computes, it shows multiple (for quadratic elements, it will describe each cell of the mesh on which we compute as $2\times 2$ or $2\times 2\times 2$ cells in 2d and 3d, respectively; correspondingly more subdivisions are used if you use cubic, quartic, or even higher order elements for the velocity).

The effect of using this option can be seen in the following picture showing a variation of the output produced with the input files from Section~\ref{sec:cookbooks:shell_simple_2d}:

\begin{center}  \includegraphics[width=0.5\textwidth]{viz/parameters/build-patches}\end{center}Here, the left picture shows one visualization cell per computational cell (i.e., the option is switched off), and the right picture shows the same simulation with the option switched on (which is the default). The images show the same data, demonstrating that interpolating the solution onto bilinear shape functions as is commonly done in visualizing data loses information.

Of course, activating this option also greatly increases the amount of data \aspect{} will write to disk: approximately by a factor of 4 in 2d, and a factor of 8 in 3d, when using quadratic elements for the velocity, and correspondingly more for even higher order elements.
</documentation>
<pattern>
143
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Interpolate_20output>
<List_20of_20output_20variables>
<value/>
<default_value/>
<documentation>
A comma separated list of visualization objects that should be run whenever writing graphical output. By default, the graphical output files will always contain the primary variables velocity, pressure, and temperature. However, one frequently wants to also visualize derived quantities, such as the thermodynamic phase that corresponds to a given temperature-pressure value, or the corresponding seismic wave speeds. The visualization objects do exactly this: they compute such derived quantities and place them into the output file. The current parameter is the place where you decide which of these additional output variables you want to have in your output file.

The following postprocessors are available:

`ISA rotation timescale&apos;: A visualization output object that generates output showing the timescale for the rotation of grains toward the infinite strain axis. Kaminski and Ribe (see \cite{Kaminski2002}) call this quantity $\tau_\text{ISA}$ and define it as $\tau_\text{ISA} \approx \frac{1}{\dot{\epsilon}}$ where $\dot{\epsilon}$ is the largest eigenvalue of the strain rate tensor. It can be used, along with the grain lag angle $\Theta$, to calculate the grain orientation lag parameter.

Physical units: \si{\second}.

`Vp anomaly&apos;: A visualization output object that generates output showing the percentage anomaly in the seismic compressional wave speed $V_p$ as a spatially variable function with one value per cell. This anomaly is either shown as a percentage anomaly relative to the reference profile given by adiabatic conditions (with the compositions given by the current composition, such that the reference could potentially change through time), or as a percentage change relative to the laterally averaged velocity at the depth of the cell. This velocity is calculated by linear interpolation between average values calculated within equally thick depth slices. The number of depth slices in the domain is user-defined. Typically, the best results will be obtained if the number of depth slices is balanced between being large enough to capture step changes in velocities, but small enough to maintain a reasonable number of evaluation points per slice. Bear in mind that lateral averaging subsamples the finite element mesh. Note that this plugin requires a material model that provides seismic velocities.

Physical units: None, the quantity being output is a fractional change provided as a percentage.

`Vs anomaly&apos;: A visualization output object that generates output showing the percentage anomaly in the seismic shear wave speed $V_s$ as a spatially variable function with one value per cell. This anomaly is either shown as a percentage anomaly relative to the reference profile given by adiabatic conditions (with the compositions given by the current composition, such that the reference could potentially change through time), or as a percentage change relative to the laterally averaged velocity at the depth of the cell. This velocity is calculated by linear interpolation between average values calculated within equally thick depth slices. The number of depth slices in the domain is user-defined. Typically, the best results will be obtained if the number of depth slices is balanced between being large enough to capture step changes in velocities, but small enough to maintain a reasonable number of evaluation points per slice. Bear in mind that lateral averaging subsamples the finite element mesh. Note that this plugin requires a material model that provides seismic velocities.

Physical units: None, the quantity being output is a fractional change provided as a percentage.

`adiabat&apos;: A visualization output object that generates adiabatic temperature, pressure, density, and density derivative (with regard to depth)as produced by the \texttt{AdiabaticConditions} class.

Physical units: \si{\kelvin}, \si{\pascal}, \si{\kilo\gram\per\meter\cubed\per\meter}, respectively, for the four components.

`artificial viscosity&apos;: A visualization output object that generates output showing the value of the artificial viscosity on each cell.

Physical units: \si{\watt\per\meter\per\kelvin}.

`artificial viscosity composition&apos;: A visualization output object that generates output showing the value of the artificial viscosity for a compositional field on each cell.

Physical units: \si{\meter\squared\per\second}.

`boundary indicators&apos;: A visualization output object that generates output about the used boundary indicators. In a loop over the active cells, if a cell lies at a domain boundary, the boundary indicator of the face along the boundary is requested. In case the cell does not lie along any domain boundary, the cell is assigned the value of the largest used boundary indicator plus one. When a cell is situated in one of the corners of the domain, multiple faces will have a boundary indicator. This postprocessor returns the value of the first face along a boundary that is encountered in a loop over all the faces.

Physical units: None.

`boundary strain rate residual&apos;: A visualization output object that generates output for the strain rate residual at the top surface. The residual is computed at each point at the surface as the difference between the strain rate invariant in the model and the input data, where the invariant is computed like in the &apos;strain rate&apos; postprocessor. The user chooses the input data as ascii data files with coordinate columns and column corresponding to the surface strain rate norm.

Physical units: $\frac{1}{\text{s}}$ or $\frac{1}{\text{year}}$, depending on settings in the input file.

`boundary velocity residual&apos;: A visualization output object that generates output for the velocity residual at the top surface. The residual is computed at each point at the surface as the difference between the modeled velocities and the input data velocities for each vector component. The user has an option to choose the input data as ascii data files (e.g. GPS velocities) with columns in the same format as described for the &apos;ascii data&apos; initial temperature plugin or a velocity field computed from the GPlates program as described in the gplates boundary velocity plugin.

Physical units: $\frac{\text{m}}{\text{s}}$ or $\frac{\text{m}}{\text{year}}$, depending on settings in the input file.

`compositional vector&apos;: A visualization output object that outputs vectors whose components are derived from compositional fields. Input parameters for this postprocessor are defined in section Postprocess/Visualization/Compositional fields as vectors.

Physical units: None.

`darcy velocity&apos;: A visualization output object that outputs the Darcy velocity vector. This postprocessor requires a compositional field named &apos;porosity&apos;.

Physical units: $\frac{\text{m}}{\text{s}}$ or $\frac{\text{m}}{\text{year}}$, depending on settings in the input file.

`depth&apos;: A visualization output postprocessor that outputs the depth for all points inside the domain, as determined by the geometry model.

It is worth comparing this visualization postprocessor with the one called ``surface elevation&apos;&apos;. The current one is used to visualize a volume variable, whereas the latter only outputs information on the surface. Moreover ``depth&apos;&apos; is based on a member function of the geometry models that is documented as never returning a number less than zero -- in other words, it returns the depth of an evaluation point with regard to a reference surface that defines a zero depth, but for points that lie above this reference surface, it returns zero. As a consequence, it cannot be used to visualize positive elevations, whereas the the one called ``surface elevation&apos;&apos; can.

Physical units: \si{\meter}.

`dynamic topography&apos;: A visualization output object that generates output for the dynamic topography at the top and bottom of the model space. The actual computation of this topography is handled inside the &apos;dynamic topography&apos; postprocessor, please check its documentation for details about the numerical methods.

Strictly speaking, the dynamic topography is of course a quantity that is only of interest at the surface. However, we compute it everywhere to make things fit into the framework within which we produce data for visualization. You probably only want to visualize whatever data this postprocessor generates at the surface of your domain and simply ignore the rest of the data generated.

Alternatively, consider using the &quot;surface dynamic topography&quot; visualization postprocessor to only output the dynamic topography at the boundary of the domain.

Physical units: \si{\meter}.

`error indicator&apos;: A visualization output object that generates output showing the estimated error or other mesh refinement indicator as a spatially variable function with one value per cell.

Physical units: None. (Strictly speaking, errors have physical units of course, but because error \textit{indicators} can be computed from different solution components and other input, we consider error indicators unitless.)

`geoid&apos;: Visualization for the geoid solution. The geoid is given by the equivalent water column height due to a gravity perturbation. 

Physical units: \si{\meter}.

`grain lag angle&apos;: A visualization output object that generates output showing the angle between the ~infinite strain axis and the flow velocity. Kaminski and Ribe (see \cite{Kaminski2002}) call this quantity $\Theta$ and define it as $\Theta = \cos^{-1}(\hat{u}\cdot\hat{e})$  where $\hat{u}=\vec{u}/|{u}|$, $\vec{u}$ is the local flow velocity, and $\hat{e}$ is the local infinite strain axis, which we calculate as the first eigenvector of the &apos;left stretch&apos; tensor. $\Theta$ can be used to calculate the grain orientation lag parameter.

Physical units: \si{\radian}.

`gravity&apos;: A visualization output object that outputs the gravity vector.

Physical units: \si {\meter\per\second\squared} .

`heat flux map&apos;: A visualization output object that generates output for the heat flux density across the top and bottom boundary in outward direction. The heat flux is computed as sum of advective heat flux and conductive heat flux through Neumann boundaries, both computed as integral over the boundary area, and conductive heat flux through Dirichlet boundaries, which is computed using the consistent boundary flux method as described in ``Gresho, Lee, Sani, Maslanik, Eaton (1987). The consistent Galerkin FEM for computing derived boundary quantities in thermal and or fluids problems. International Journal for Numerical Methods in Fluids, 7(4), 371-394.&apos;&apos; If only conductive heat flux through Dirichlet boundaries is of interest, the postprocessor can produce output of higher resolution by evaluating the CBF solution vector point-wise instead of computing cell-wise averaged values.

Physical units: \si{\watt\per\meter\squared}.

`heating&apos;: A visualization output object that generates output for all the heating terms used in the energy equation.

Physical units: \si{\watt\per\cubic\meter}.

`material properties&apos;: A visualization output object that generates output for the material properties given by the material model. The current postprocessor allows to output a (potentially large) subset of all of the information provided by material models at once, with just a single material model evaluation per output point. Although individual properties can still be listed in the ``List of output variables&apos;&apos;, this visualization plugin is called internally to avoid duplicated evaluations of the material model. 

In almost all places inside \aspect{}, the program can use ``averaged&apos;&apos; material properties, for example for the assembly of matrices and right hand side vectors. To accurately reflect the material parameters used internally, this visualization postprocessor averages in the same way as is used to do the assembly, and consequently the graphical output will reflect not pointwise properties, but averaged properties.

Physical units: Various.

`maximum horizontal compressive stress&apos;: A plugin that computes the direction and magnitude of the maximum horizontal component of the compressive stress as a vector field. The direction of this vector can often be used to visualize the principal mode of deformation (e.g., at normal faults or extensional margins) and can be correlated with seismic anisotropy. Recall that the \textit{compressive} stress is simply the negative stress, $\sigma_c=-\sigma=-\left[     2\eta (\varepsilon(\mathbf u)             - \frac 13 (\nabla \cdot \mathbf u) I)     + pI\right]$.

Following \cite{LundTownend07}, we define the maximum horizontal stress direction as that \textit{horizontal} direction $\mathbf n$ that maximizes $\mathbf n^T \sigma_c \mathbf n$. We call a vector \textit{horizontal} if it is perpendicular to the gravity vector $\mathbf g$.

In two space dimensions, $\mathbf n$ is simply a vector that is horizontal (we choose one of the two possible choices). This direction is then scaled by the size of the horizontal stress in this direction, i.e., the plugin outputs the vector $\mathbf w = (\mathbf n^T \sigma_c \mathbf n) \; \mathbf n$.

In three space dimensions, given two horizontal, perpendicular, unit length, but otherwise arbitrarily chosen vectors $\mathbf u,\mathbf v$, we can express $\mathbf n = (\cos \alpha)\mathbf u + (\sin\alpha)\mathbf v$ where $\alpha$ maximizes the expression \begin{align*}  f(\alpha) = \mathbf n^T \sigma_c \mathbf n  = (\mathbf u^T \sigma_c \mathbf u)(\cos\alpha)^2    +2(\mathbf u^T \sigma_c \mathbf v)(\cos\alpha)(\sin\alpha)    +(\mathbf v^T \sigma_c \mathbf v)(\sin\alpha)^2.\end{align*}

The maximum of $f(\alpha)$ is attained where $f^\prime(\alpha)=0$. Evaluating the derivative and using trigonometric identities, one finds that $\alpha$ has to satisfy the equation \begin{align*}  \tan(2\alpha) = \frac{2.0\mathbf u^T \sigma_c \mathbf v}                          {\mathbf u^T \sigma_c \mathbf u                            - \mathbf v^T \sigma_c \mathbf v}.\end{align*}Since the transform $\alpha\mapsto\alpha+\pi$ flips the direction of $\mathbf n$, we only need to seek a solution to this equation in the interval $\alpha\in[0,\pi)$. These are given by $\alpha_1=\frac 12 \arctan \frac{\mathbf u^T \sigma_c \mathbf v}{\mathbf u^T \sigma_c \mathbf u - \mathbf v^T \sigma_c \mathbf v}$ and $\alpha_2=\alpha_1+\frac{\pi}{2}$, one of which will correspond to a minimum and the other to a maximum of $f(\alpha)$. One checks the sign of $f^{\prime\prime}(\alpha)=-2(\mathbf u^T \sigma_c \mathbf u - \mathbf v^T \sigma_c \mathbf v)\cos(2\alpha) - 2 (\mathbf u^T \sigma_c \mathbf v) \sin(2\alpha)$ for each of these to determine the $\alpha$ that maximizes $f(\alpha)$, and from this immediately arrives at the correct form for the maximum horizontal stress $\mathbf n$.

The description above computes a 3d \textit{direction} vector $\mathbf n$. If one were to scale this vector the same way as done in 2d, i.e., with the magnitude of the stress in this direction, one will typically get vectors whose length is principally determined by the hydrostatic pressure at a given location simply because the hydrostatic pressure is the largest component of the overall stress. On the other hand, the hydrostatic pressure does not determine any principal direction because it is an isotropic, anti-compressive force. As a consequence, there are often points in simulations (e.g., at the center of convection rolls) where the stress has no dominant horizontal direction, and the algorithm above will then in essence choose a random direction because the stress is approximately equal in all horizontal directions. If one scaled the output by the magnitude of the stress in this direction (i.e., approximately equal to the hydrostatic pressure at this point), one would get randomly oriented vectors at these locations with significant lengths.

To avoid this problem, we scale the maximal horizontal compressive stress direction $\mathbf n$ by the \textit{difference} between the stress in the maximal and minimal horizontal stress directions. In other words, let $\mathbf n_\perp=(\sin \alpha)\mathbf u - (\cos\alpha)\mathbf v$ be the horizontal direction perpendicular to $\mathbf n$, then this plugin outputs the vector quantity $\mathbf w = (\mathbf n^T \sigma_c \mathbf n                -\mathbf n^T_\perp \sigma_c \mathbf n_\perp)               \; \mathbf n$. In other words, the length of the vector produced indicates \textit{how dominant} the direction of maximal horizontal compressive strength is.

Fig.~\ref{fig:max-horizontal-compressive-stress} shows a simple example for this kind of visualization in 3d.

\begin{figure}  \includegraphics[width=0.3\textwidth]    {viz/plugins/maximum_horizontal_compressive_stress/temperature.png}  \hfill  \includegraphics[width=0.3\textwidth]    {viz/plugins/maximum_horizontal_compressive_stress/velocity.png}  \hfill  \includegraphics[width=0.3\textwidth]    {viz/plugins/maximum_horizontal_compressive_stress/horizontal-stress.png}  \caption{\it Illustration of the `maximum horizontal     compressive stress&apos; visualization plugin. The left     figure shows a ridge-like temperature anomaly. Together     with no-slip boundary along all six boundaries, this     results in two convection rolls (center). The maximal     horizontal compressive strength at the bottom center     of the domain is perpendicular to the ridge because     the flow comes together there from the left and right,     yielding a compressive force in left-right direction.     At the top of the model, the flow separates outward,     leading to a \textit{negative} compressive stress     in left-right direction; because there is no flow     in front-back direction, the compressive strength     in front-back direction is zero, making the along-ridge     direction the dominant one. At the center of the     convection rolls, both horizontal directions yield     the same stress; the plugin therefore chooses an     essentially arbitrary horizontal vector, but then     uses a zero magnitude given that the difference     between the maximal and minimal horizontal stress     is zero at these points.}  \label{fig:max-horizontal-compressive-stress}\end{figure}

Physical units: \si{\pascal}.

`melt fraction&apos;: A visualization output object that generates output for the melt fraction at the temperature and pressure of the current point. If the material model computes a melt fraction, this is the quantity that will be visualized. Otherwise, a specific parametrization for batch melting (as described in the following) will be used. It does not take into account latent heat. If there are no compositional fields, or no fields called &apos;pyroxenite&apos;,  this postprocessor will visualize the melt fraction of peridotite (calculated using the anhydrous model of Katz, 2003). If there is a compositional field called &apos;pyroxenite&apos;, the postprocessor assumes that this compositional field is the content of pyroxenite, and will visualize the melt fraction for a mixture of peridotite and pyroxenite (using the melting model of Sobolev, 2011 for pyroxenite). All the parameters that were used in these calculations can be changed in the input file, the most relevant maybe being the mass fraction of Cpx in peridotite in the Katz melting model (Mass fraction cpx), which right now has a default of 15\%. The corresponding $p$-$T$-diagrams can be generated by running the tests melt\_postprocessor\_peridotite and melt\_postprocessor\_pyroxenite.

Physical units: None.

`melt material properties&apos;: A visualization output object that generates output for melt related properties of the material model. Note that this postprocessor always outputs the compaction pressure, but can output a large range of additional properties, as selected in the ``List of properties&apos;&apos; parameter.

Physical units: Various, depending on what is being output.

`named additional outputs&apos;: Some material models can compute quantities other than those that typically appear in the equations that \aspect{} solves (such as the viscosity, density, etc). Examples of quantities material models may be able to compute are seismic velocities, or other quantities that can be derived from the state variables and the material coefficients such as the stress or stress anisotropies. These quantities are generically referred to as `named outputs&apos; because they are given an explicit name different from the usual outputs of material models.

This visualization postprocessor outputs whatever quantities the material model can compute. What quantities these are is specific to the material model in use for a simulation, and for many models in fact does not contain any named outputs at all.

Physical units: Various, depending on what is being output.

`nonadiabatic pressure&apos;: A visualization output object that generates output for the non-adiabatic component of the pressure.

The variable that is outputted this way is computed by taking the pressure at each point and subtracting from it the adiabatic pressure computed at the beginning of the simulation. Because the adiabatic pressure is one way of defining a static pressure background field, what this visualization postprocessor therefore produces is \textit{one} way to compute a \textit{dynamic pressure}. There are, however, other ways as well, depending on the choice of the ``background pressure&apos;&apos;.

Physical units: \si{\pascal}.

`nonadiabatic temperature&apos;: A visualization output object that generates output for the non-adiabatic component of the temperature.

Physical units: \si{\kelvin}.

`particle count&apos;: A visualization output object that generates output about the number of particles per cell.

Physical units: None.

`partition&apos;: A visualization output object that generates output for the parallel partition that every cell of the mesh is associated with.

Physical units: None.

`principal stress&apos;: A visualization output object that outputs the principal stresses and directions, i.e., the eigenvalues and eigenvectors of the stress tensor. Wikipedia defines principal stresses as follows: At every point in a stressed body there are at least three planes, called principal planes, with normal vectors, called principal directions, where the corresponding stress vector is perpendicular to the plane, and where there are no normal shear stresses. The three stresses normal to these principal planes are called principal stresses. This postprocessor can either operate on the full stress tensor or only on the deviatoric stress tensor, depending on what run-time parameters are set.

Physical units: \si{\pascal}.

`shear stress&apos;: A visualization output object that generates output for the 3 (in 2d) or 6 (in 3d) components of the shear stress tensor, i.e., for the components of the tensor $-2\eta\varepsilon(\mathbf u)$ in the incompressible case and $-2\eta\left[\varepsilon(\mathbf u)-\tfrac 13(\textrm{tr}\;\varepsilon(\mathbf u))\mathbf I\right]$ in the compressible case. If elasticity is used, the elastic contribution is being accounted for. The shear stress differs from the full stress tensor by the absence of the pressure. Note that the convention of positive compressive stress is followed.

Physical units: \si{\pascal}.

`spd factor&apos;: A visualization output object that generates output for the spd factor. The spd factor is a factor which scales a part of the Jacobian used for the Newton solver to make sure that the Jacobian remains positive definite.

Physical units: None.

`spherical velocity components&apos;: A visualization output object that outputs the polar coordinates components $v_r$ and $v_\phi$ of the velocity field in 2d and the spherical coordinates components $v_r$, $v_{\phi}$ and $v_{\theta}$ of the velocity field in 3d.

Physical units: $\frac{\text{m}}{\text{s}}$ or $\frac{\text{m}}{\text{year}}$, depending on settings in the input file.

`strain rate&apos;: A visualization output object that generates output for the norm of the strain rate, i.e., for the quantity $\sqrt{\varepsilon(\mathbf u):\varepsilon(\mathbf u)}$ in the incompressible case and $\sqrt{[\varepsilon(\mathbf u)-\tfrac 13(\textrm{tr}\;\varepsilon(\mathbf u))\mathbf I]:[\varepsilon(\mathbf u)-\tfrac 13(\textrm{tr}\;\varepsilon(\mathbf u))\mathbf I]}$ in the compressible case.

This postprocessor outputs the quantity computed herein as a tensor, i.e., programs such as VisIt or Pararview can visualize it as tensors represented by ellipses, not just as individual fields. That said, you can also visualize individual tensor components, by noting that the components that are written to the output file correspond to the tensor components $t_{xx}, t_{xy}, t_{yx}, t_{yy}$ (in 2d) or  $t_{xx}, t_{xy}, t_{xz}, t_{yx}, t_{yy}, t_{yz}, t_{zx}, t_{zy}, t_{zz}$ (in 3d) of a tensor $t$ in a Cartesian coordinate system. Even though the tensor we output is symmetric, the output contains all components of the tensor because that is what the file format requires.

Physical units: \si{\per\second}.

`strain rate tensor&apos;: A visualization output object that generates output for the 4 (in 2d) or 9 (in 3d) components of the strain rate tensor, i.e., for the components of the tensor $\varepsilon(\mathbf u)$ in the incompressible case and $\varepsilon(\mathbf u)-\tfrac 13(\textrm{tr}\;\varepsilon(\mathbf u))\mathbf I$ in the compressible case.

This postprocessor outputs the quantity computed herein as a tensor, i.e., programs such as VisIt or Pararview can visualize it as tensors represented by ellipses, not just as individual fields. That said, you can also visualize individual tensor components, by noting that the components that are written to the output file correspond to the tensor components $t_{xx}, t_{xy}, t_{yx}, t_{yy}$ (in 2d) or  $t_{xx}, t_{xy}, t_{xz}, t_{yx}, t_{yy}, t_{yz}, t_{zx}, t_{zy}, t_{zz}$ (in 3d) of a tensor $t$ in a Cartesian coordinate system. Even though the tensor we output is symmetric, the output contains all components of the tensor because that is what the file format requires.

Physical units: \si{\per\second}.

`stress&apos;: A visualization output object that generates output for the 3 (in 2d) or 6 (in 3d) components of the stress tensor, i.e., for the components of the tensor $-2\eta\varepsilon(\mathbf u)+pI$ in the incompressible case and $-2\eta\left[\varepsilon(\mathbf u)-\tfrac 13(\textrm{tr}\;\varepsilon(\mathbf u))\mathbf I\right]+pI$ in the compressible case. If elasticity is used, the elastic contribution is being accounted for. Note that the convention of positive compressive stress is followed.

This postprocessor outputs the quantity computed herein as a tensor, i.e., programs such as VisIt or Pararview can visualize it as tensors represented by ellipses, not just as individual fields. That said, you can also visualize individual tensor components, by noting that the components that are written to the output file correspond to the tensor components $t_{xx}, t_{xy}, t_{yx}, t_{yy}$ (in 2d) or  $t_{xx}, t_{xy}, t_{xz}, t_{yx}, t_{yy}, t_{yz}, t_{zx}, t_{zy}, t_{zz}$ (in 3d) of a tensor $t$ in a Cartesian coordinate system. Even though the tensor we output is symmetric, the output contains all components of the tensor because that is what the file format requires.

Physical units: \si{\pascal}.

`stress second invariant&apos;: A visualization output object that outputs the second moment invariant of the deviatoric stress tensor.

Physical units: \si{\pascal}.

`surface dynamic topography&apos;: A visualization output object that generates output for the dynamic topography at the top and bottom of the model space. The actual computation of this topography is handled inside the &apos;dynamic topography&apos; postprocessor, please check its documentation for details about the numerical methods.

In contrast to the `dynamic topography&apos; visualization postprocessor, this plugin really only evaluates the dynamic topography at faces of cells that are adjacent to `bottom&apos; and `top&apos; boundaries, and only outputs information on the surface of the domain, rather than padding the information with zeros in the interior of the domain.

Physical units: \si{\meter}.

`surface elevation&apos;: This postprocessor is used to visualize the elevation of points on the surface of the geometry relative to a ``reference elevation&apos;&apos; defined by an undeformed geometry. It can be used, for example, to visualize an initial topography field, as well as the result of dynamic surface deformation due to a free surface.

The surface elevation is computed only for those parts of the boundary that the geometry description marks as ``top&apos;&apos;. On all other parts of the boundary, the class outputs a zero elevation.

It is worth comparing this visualization postprocessor with the one called ``depth&apos;&apos;. The latter is used to visualize a volume variable, whereas the current one only outputs information on the surface. Moreover ``depth&apos;&apos; is based on a member function of the geometry models that is documented as never returning a number less than zero -- in other words, it returns the depth of an evaluation point with regard to a reference surface that defines a zero depth, but for points that lie above this reference surface, it returns zero. As a consequence, it cannot be used to visualize positive elevations, whereas the current visualization postprocessor can.

Finally, it is worth pointing out the ``topography&apos;&apos; postprocessor (not a visualization postprocessor) that returns the surface elevation as a point cloud into a text file. The information is comparable to what the current object creates, but it is not as easily used to visualize information.

Physical units: \si{\meter}.

`surface strain rate tensor&apos;: A visualization output object that generates output on the surface of the domain for the 4 (in 2d) or 9 (in 3d) components of the strain rate tensor, i.e., for the components of the tensor $\varepsilon(\mathbf u)$ in the incompressible case and $\varepsilon(\mathbf u)-\tfrac 13(\textrm{tr}\;\varepsilon(\mathbf u))\mathbf I$ in the compressible case.Note that both in 2d and in 3d the output tensor will have 9 elements, but that in 2d, only 4 are filled. 

Physical units: \si{\per\second}.

`surface stress&apos;: A visualization output object that generates output on the surface of the domain for the 3 (in 2d) or 6 (in 3d) components of the stress tensor, i.e., for the components of the tensor $-2\eta\varepsilon(\mathbf u)+pI$ in the incompressible case and $-2\eta\left[\varepsilon(\mathbf u)-\tfrac 13(\textrm{tr}\;\varepsilon(\mathbf u))\mathbf I\right]+pI$ in the compressible case. If elasticity is included, its contribution is accounted for. Note that the convention of positive compressive stress is followed.The stress outputted on the surface of the domain will equal the stress on the surface of the volume output if the parameter &apos;Point-wise stress and strain&apos; in the Visualization subsection is set to true. 

This postprocessor outputs the quantity computed herein as a tensor, i.e., programs such as VisIt or Pararview can visualize it as tensors represented by ellipses, not just as individual fields. That said, you can also visualize individual tensor components, by noting that the components that are written to the output file correspond to the tensor components $t_{xx}, t_{xy}, t_{yx}, t_{yy}$ (in 2d) or  $t_{xx}, t_{xy}, t_{xz}, t_{yx}, t_{yy}, t_{yz}, t_{zx}, t_{zy}, t_{zz}$ (in 3d) of a tensor $t$ in a Cartesian coordinate system. Even though the tensor we output is symmetric, the output contains all components of the tensor because that is what the file format requires.

Physical units: \si{\pascal}.

`temperature anomaly&apos;: A visualization output postprocessor that outputs the temperature minus the depth-average of the temperature.The average temperature is calculated using the lateral averaging function from the ``depth average&apos;&apos; postprocessor and interpolated linearly between the layers specified through ``Number of depth slices&apos;&apos;.

Physical units: \si{\kelvin}.

`vertical heat flux&apos;: A visualization output object that generates output for the heat flux in the vertical direction, which is the sum of the advective and the conductive heat flux, with the sign convention of positive flux upwards.

Physical units: \si{\watt\per\square\meter}.

`volume of fluid values&apos;: A visualization output object that outputs the volume fraction and optionally a level set field and the interface normal vectors of volume of fluid fields.

Physical units: None.

`volumetric strain rate&apos;: A visualization output object that generates output for the volumetric strain rate, i.e., for the quantity $\nabla\cdot\mathbf u = \textrm{div}\; \mathbf u = \textrm{trace}\; \varepsilon(\mathbf u)$. This should be zero (in some average sense) in incompressible convection models, but can be non-zero in compressible models and models with melt transport.

Physical units: \si{\per\second}.
</documentation>
<pattern>
151
</pattern>
<pattern_description>
[MultipleSelection ISA rotation timescale|Vp anomaly|Vs anomaly|adiabat|artificial viscosity|artificial viscosity composition|boundary indicators|boundary strain rate residual|boundary velocity residual|compositional vector|darcy velocity|depth|dynamic topography|error indicator|geoid|grain lag angle|gravity|heat flux map|heating|material properties|maximum horizontal compressive stress|melt fraction|melt material properties|named additional outputs|nonadiabatic pressure|nonadiabatic temperature|particle count|partition|principal stress|shear stress|spd factor|spherical velocity components|strain rate|strain rate tensor|stress|stress second invariant|surface dynamic topography|surface elevation|surface strain rate tensor|surface stress|temperature anomaly|vertical heat flux|volume of fluid values|volumetric strain rate|density|specific heat|thermal conductivity|thermal diffusivity|thermal expansivity|viscosity ]
</pattern_description>
</List_20of_20output_20variables>
<Number_20of_20grouped_20files>
<value>
16
</value>
<default_value>
16
</default_value>
<documentation>
VTU file output supports grouping files from several CPUs into a given number of files using MPI I/O when writing on a parallel filesystem. Select 0 for no grouping. This will disable parallel file output and instead write one file per processor. A value of 1 will generate one big file containing the whole solution, while a larger value will create that many files (at most as many as there are MPI ranks).
</documentation>
<pattern>
140
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20grouped_20files>
<Output_20base_20variables_20on_20mesh_20surface>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether or not to also output the base variables velocity, fluid pressure (when present), fluid velocity (when present), pressure, temperature and compositional fields (when present) on the surface of the mesh. The mesh surface includes not only the top boundary, but all boundaries of the domain. 
</documentation>
<pattern>
150
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20base_20variables_20on_20mesh_20surface>
<Output_20format>
<value>
vtu
</value>
<default_value>
vtu
</default_value>
<documentation>
The file format to be used for graphical output. The list of possible output formats that can be given here is documented in the appendix of the manual where the current parameter is described.
</documentation>
<pattern>
139
</pattern>
<pattern_description>
[Selection none|dx|ucd|gnuplot|povray|eps|gmv|tecplot|vtk|vtu|hdf5|svg|deal.II intermediate|parallel deal.II intermediate ]
</pattern_description>
</Output_20format>
<Output_20mesh_20displacement>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
For computations with deforming meshes, ASPECT uses an Arbitrary-Lagrangian-Eulerian formulation to handle deforming the domain. The displacement vector from the reference configuration may be written as an output field by setting this parameter to true.
</documentation>
<pattern>
148
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20mesh_20displacement>
<Output_20mesh_20velocity>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
For computations with deforming meshes, ASPECT uses an Arbitrary-Lagrangian-Eulerian formulation to handle deforming the domain, so the mesh has its own velocity field.  This may be written as an output field by setting this parameter to true.
</documentation>
<pattern>
147
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20mesh_20velocity>
<Output_20undeformed_20mesh>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
For computations with deforming meshes, ASPECT uses an Arbitrary-Lagrangian-Eulerian formulation to handle deforming the domain. By default, we output the deformed mesh. If this setting is set to true, the mesh will be written in the reference state without deformation instead. If you output the mesh displacement, you can obtain the deformed mesh by using the &apos;warp by vector&apos; ParaView filter.
</documentation>
<pattern>
149
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20undeformed_20mesh>
<Point_2dwise_20stress_20and_20strain>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
If set to true, quantities related to stress and strain are computed in each vertex. Otherwise, an average per cell is computed.
</documentation>
<pattern>
144
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Point_2dwise_20stress_20and_20strain>
<Temporary_20output_20location>
<value/>
<default_value/>
<documentation>
On large clusters it can be advantageous to first write the output to a temporary file on a local file system and later move this file to a network file system. If this variable is set to a non-empty string it will be interpreted as a temporary storage location.
</documentation>
<pattern>
142
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Temporary_20output_20location>
<Time_20between_20graphical_20output>
<value>
1e8
</value>
<default_value>
1e8
</default_value>
<documentation>
The time interval between each generation of graphical output files. A value of zero indicates that output should be generated in each time step. Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
137
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Time_20between_20graphical_20output>
<Time_20steps_20between_20graphical_20output>
<value>
2147483647
</value>
<default_value>
2147483647
</default_value>
<documentation>
The maximum number of time steps between each generation of graphical output files.
</documentation>
<pattern>
138
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Time_20steps_20between_20graphical_20output>
<Write_20higher_20order_20output>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
deal.II offers the possibility to write vtu files with higher order representations of the output data. This means each cell will correctly show the higher order representation of the output data instead of the linear interpolation between vertices that ParaView and VisIt usually show. Note that activating this option is safe and recommended, but requires that (i) ``Output format&apos;&apos; is set to ``vtu&apos;&apos;, (ii) ``Interpolate output&apos;&apos; is set to true, (iii) you use a sufficiently new version of Paraview or VisIt to read the files (Paraview version 5.5 or newer, and VisIt version to be determined), and (iv) you use deal.II version 9.1.0 or newer. 
The effect of using this option can be seen in the following picture:

\begin{center}  \includegraphics[width=0.5\textwidth]{viz/parameters/higher-order-output}\end{center}The top figure shows the plain output without interpolation or higher order output. The middle figure shows output that was interpolated as discussed for the ``Interpolate output&apos;&apos; option. The bottom panel shows higher order output that achieves better accuracy than the interpolated output at a lower memory cost.
</documentation>
<pattern>
145
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Write_20higher_20order_20output>
<Write_20in_20background_20thread>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
File operations can potentially take a long time, blocking the progress of the rest of the model run. Setting this variable to `true&apos; moves this process into a background thread, while the rest of the model continues.
</documentation>
<pattern>
141
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Write_20in_20background_20thread>
<Artificial_20viscosity_20composition>
<Name_20of_20compositional_20field>
<value/>
<default_value/>
<documentation>
The name of the compositional field whose output should be visualized. 
</documentation>
<pattern>
185
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Name_20of_20compositional_20field>
</Artificial_20viscosity_20composition>
<Compositional_20fields_20as_20vectors>
<Names_20of_20fields>
<value/>
<default_value/>
<documentation>
A list of sets of compositional fields which should be output as vectors. Sets are separated from each other by semicolons and vector components within each set are separated by commas (e.g. $vec1_x$, $vec1_y$ ; $vec2_x$, $vec2_y$) where each name must be a defined named compositional field. If only one name is given in a set, it is interpreted as the first in a sequence of dim consecutive compositional fields.
</documentation>
<pattern>
184
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Names_20of_20fields>
<Names_20of_20vectors>
<value/>
<default_value/>
<documentation>
Names of vectors as they will appear in the output.
</documentation>
<pattern>
183
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Names_20of_20vectors>
</Compositional_20fields_20as_20vectors>
<Heat_20flux_20map>
<Output_20point_20wise_20heat_20flux>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
A boolean flag that controls whether to output the heat flux map as a point wise value, or as a cell-wise averaged value. The point wise output is more accurate, but it currently omits prescribed heat flux values at boundaries and advective heat flux that is caused by velocities non-tangential to boundaries. If you do not use these two features it is recommended to switch this setting on to benefit from the increased output resolution.
</documentation>
<pattern>
162
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20point_20wise_20heat_20flux>
</Heat_20flux_20map>
<Material_20properties>
<List_20of_20material_20properties>
<value>
density,thermal expansivity,specific heat,viscosity
</value>
<default_value>
density,thermal expansivity,specific heat,viscosity
</default_value>
<documentation>
A comma separated list of material properties that should be written whenever writing graphical output. By default, the material properties will always contain the density, thermal expansivity, specific heat and viscosity. The following material properties are available:

viscosity|density|thermal expansivity|specific heat|thermal conductivity|thermal diffusivity|compressibility|entropy derivative temperature|entropy derivative pressure|reaction terms|melt fraction
</documentation>
<pattern>
163
</pattern>
<pattern_description>
[MultipleSelection viscosity|density|thermal expansivity|specific heat|thermal conductivity|thermal diffusivity|compressibility|entropy derivative temperature|entropy derivative pressure|reaction terms|melt fraction ]
</pattern_description>
</List_20of_20material_20properties>
</Material_20properties>
<Melt_20fraction>
<A1>
<value>
1085.7
</value>
<default_value>
1085.7
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the solidus of peridotite. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
165
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A1>
<A2>
<value>
1.329e-7
</value>
<default_value>
1.329e-7
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the solidus of peridotite. \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
166
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A2>
<A3>
<value>
-5.1e-18
</value>
<default_value>
-5.1e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the solidus of peridotite. \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
167
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</A3>
<B1>
<value>
1475.0
</value>
<default_value>
1475.0
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the lherzolite liquidus used for calculating the fraction of peridotite-derived melt. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
168
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B1>
<B2>
<value>
8.0e-8
</value>
<default_value>
8.0e-8
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the  lherzolite liquidus used for calculating the fraction of peridotite-derived melt. \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
169
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B2>
<B3>
<value>
-3.2e-18
</value>
<default_value>
-3.2e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the  lherzolite liquidus used for calculating the fraction of peridotite-derived melt. \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
170
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</B3>
<C1>
<value>
1780.0
</value>
<default_value>
1780.0
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the liquidus of peridotite. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
171
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C1>
<C2>
<value>
4.50e-8
</value>
<default_value>
4.50e-8
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the liquidus of peridotite. \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
172
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C2>
<C3>
<value>
-2.0e-18
</value>
<default_value>
-2.0e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the liquidus of peridotite. \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
173
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</C3>
<D1>
<value>
976.0
</value>
<default_value>
976.0
</default_value>
<documentation>
Constant parameter in the quadratic function that approximates the solidus of pyroxenite. Units: \si{\degreeCelsius}.
</documentation>
<pattern>
178
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</D1>
<D2>
<value>
1.329e-7
</value>
<default_value>
1.329e-7
</default_value>
<documentation>
Prefactor of the linear pressure term in the quadratic function that approximates the solidus of pyroxenite. Note that this factor is different from the value given in Sobolev, 2011, because they use the potential temperature whereas we use the absolute temperature. \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
179
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</D2>
<D3>
<value>
-5.1e-18
</value>
<default_value>
-5.1e-18
</default_value>
<documentation>
Prefactor of the quadratic pressure term in the quadratic function that approximates the solidus of pyroxenite. \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
180
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</D3>
<E1>
<value>
663.8
</value>
<default_value>
663.8
</default_value>
<documentation>
Prefactor of the linear depletion term in the quadratic function that approximates the melt fraction of pyroxenite. \si{\degreeCelsius\per\pascal}.
</documentation>
<pattern>
181
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</E1>
<E2>
<value>
-611.4
</value>
<default_value>
-611.4
</default_value>
<documentation>
Prefactor of the quadratic depletion term in the quadratic function that approximates the melt fraction of pyroxenite. \si{\degreeCelsius\per\pascal\squared}.
</documentation>
<pattern>
182
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</E2>
<Mass_20fraction_20cpx>
<value>
0.15
</value>
<default_value>
0.15
</default_value>
<documentation>
Mass fraction of clinopyroxene in the peridotite to be molten. Units: non-dimensional.
</documentation>
<pattern>
177
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Mass_20fraction_20cpx>
<beta>
<value>
1.5
</value>
<default_value>
1.5
</default_value>
<documentation>
Exponent of the melting temperature in the melt fraction calculation. Units: non-dimensional.
</documentation>
<pattern>
176
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</beta>
<r1>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
Constant in the linear function that approximates the clinopyroxene reaction coefficient. Units: non-dimensional.
</documentation>
<pattern>
174
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</r1>
<r2>
<value>
8e-11
</value>
<default_value>
8e-11
</default_value>
<documentation>
Prefactor of the linear pressure term in the linear function that approximates the clinopyroxene reaction coefficient. Units: \si{\per\pascal}.
</documentation>
<pattern>
175
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</r2>
</Melt_20fraction>
<Melt_20material_20properties>
<List_20of_20properties>
<value>
compaction viscosity,permeability
</value>
<default_value>
compaction viscosity,permeability
</default_value>
<documentation>
A comma separated list of melt properties that should be written whenever writing graphical output. The following material properties are available:

compaction viscosity|fluid viscosity|permeability|fluid density|fluid density gradient|is melt cell|darcy coefficient|darcy coefficient no cutoff|compaction length
</documentation>
<pattern>
164
</pattern>
<pattern_description>
[MultipleSelection compaction viscosity|fluid viscosity|permeability|fluid density|fluid density gradient|is melt cell|darcy coefficient|darcy coefficient no cutoff|compaction length ]
</pattern_description>
</List_20of_20properties>
</Melt_20material_20properties>
<Principal_20stress>
<Use_20deviatoric_20stress>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use the deviatoric stress tensor instead of the full stress tensor to compute principal stress directions and values.
</documentation>
<pattern>
157
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20deviatoric_20stress>
</Principal_20stress>
<Temperature_20anomaly>
<Number_20of_20depth_20slices>
<value>
20
</value>
<default_value>
20
</default_value>
<documentation>
Number of depth slices used to define average temperature.
</documentation>
<pattern>
152
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20depth_20slices>
<Use_20maximal_20temperature_20for_20bottom>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
If true, use the specified boundary temperatures as average temperatures at the surface. If false, extrapolate the temperature gradient between the first and second cells to the surface. This option will only work for models with a fixed surface temperature. 
</documentation>
<pattern>
153
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20maximal_20temperature_20for_20bottom>
<Use_20minimal_20temperature_20for_20surface>
<value>
true
</value>
<default_value>
true
</default_value>
<documentation>
Whether to use the minimal specified boundary temperature as the bottom boundary temperature. This option will only work for models with a fixed bottom boundary temperature. 
</documentation>
<pattern>
154
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20minimal_20temperature_20for_20surface>
</Temperature_20anomaly>
<Volume_20of_20Fluid>
<Output_20interface_20normals>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Include the internal data for the interface normal on the unit cells.
</documentation>
<pattern>
156
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20interface_20normals>
<Output_20interface_20reconstruction_20contour>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Include fields defined such that the 0 contour is the fluid interface.
</documentation>
<pattern>
155
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20interface_20reconstruction_20contour>
</Volume_20of_20Fluid>
<Vp_20anomaly>
<Average_20velocity_20scheme>
<value>
reference profile
</value>
<default_value>
reference profile
</default_value>
<documentation>
Scheme to compute the average velocity-depth profile. The reference profile option evaluates the conditions along the reference adiabat according to the material model. The lateral average option instead calculates a lateral average from subdivision of the mesh. The lateral average option may produce spurious results where there are sharp velocity changes.
</documentation>
<pattern>
160
</pattern>
<pattern_description>
[Selection reference profile|lateral average ]
</pattern_description>
</Average_20velocity_20scheme>
<Number_20of_20depth_20slices>
<value>
50
</value>
<default_value>
50
</default_value>
<documentation>
Number of depth slices used to define average seismic compressional wave velocities from which anomalies are calculated. Units: non-dimensional.
</documentation>
<pattern>
161
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20depth_20slices>
</Vp_20anomaly>
<Vs_20anomaly>
<Average_20velocity_20scheme>
<value>
reference profile
</value>
<default_value>
reference profile
</default_value>
<documentation>
Scheme to compute the average velocity-depth profile. The reference profile option evaluates the conditions along the reference adiabat according to the material model. The lateral average option instead calculates a lateral average from subdivision of the mesh. The lateral average option may produce spurious results where there are sharp velocity changes.
</documentation>
<pattern>
158
</pattern>
<pattern_description>
[Selection reference profile|lateral average ]
</pattern_description>
</Average_20velocity_20scheme>
<Number_20of_20depth_20slices>
<value>
50
</value>
<default_value>
50
</default_value>
<documentation>
Number of depth slices used to define average seismic shear wave velocities from which anomalies are calculated. Units: non-dimensional.
</documentation>
<pattern>
159
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20depth_20slices>
</Vs_20anomaly>
</Visualization>
</Postprocess>
<Prescribed_20Stokes_20solution>
<Model_20name>
<value>
unspecified
</value>
<default_value>
unspecified
</default_value>
<documentation>
Select one of the following models:

`ascii data&apos;: Implementation of a model in which the velocity is derived from files containing data in ascii format. Note the required format of the input data: The first lines may contain any number of comments if they begin with `#&apos;, but one of these lines needs to contain the number of grid points in each dimension as for example `# POINTS: 3 3&apos;. The order of the data columns has to be `x&apos;, `y&apos;, `v${}_x$&apos; , `v${}_y$&apos; in a 2d model and  `x&apos;, `y&apos;, `z&apos;, `v${}_x$&apos; , `v${}_y$&apos; , `v${}_z$&apos; in a 3d model. Note that the data in the input files need to be sorted in a specific order: the first coordinate needs to ascend first, followed by the second and the third at last in order to assign the correct data to the prescribed coordinates. If you use a spherical model, then the data will still be handled as Cartesian, however the assumed grid changes. `x&apos; will be replaced by the radial distance of the point to the bottom of the model, `y&apos; by the azimuth angle and `z&apos; by the polar angle measured positive from the north pole. The grid will be assumed to be a latitude-longitude grid. Note that the order of spherical coordinates is `r&apos;, `phi&apos;, `theta&apos; and not `r&apos;, `theta&apos;, `phi&apos;, since this allows for dimension independent expressions.

`circle&apos;: This value describes a vector field that rotates around the z-axis with constant angular velocity (i.e., with a velocity that increases with distance from the axis). The pressure is set to zero.

`function&apos;: This plugin allows to prescribe the Stokes solution for the velocity and pressure field in terms of an explicit formula. The format of these functions follows the syntax understood by the muparser library, see {ref}\`sec:run-aspect:parameters-overview:muparser-format\`.
</documentation>
<pattern>
1303
</pattern>
<pattern_description>
[Selection ascii data|circle|function|unspecified ]
</pattern_description>
</Model_20name>
<Ascii_20data_20model>
<Data_20directory>
<value>
$ASPECT_SOURCE_DIR/data/prescribed-stokes-solution/
</value>
<default_value>
$ASPECT_SOURCE_DIR/data/prescribed-stokes-solution/
</default_value>
<documentation>
The name of a directory that contains the model data. This path may either be absolute (if starting with a `/&apos;) or relative to the current directory. The path may also include the special text `$ASPECT_SOURCE_DIR&apos; which will be interpreted as the path in which the ASPECT source files were located when ASPECT was compiled. This interpretation allows, for example, to reference files located in the `data/&apos; subdirectory of ASPECT.
</documentation>
<pattern>
1319
</pattern>
<pattern_description>
[DirectoryName]
</pattern_description>
</Data_20directory>
<Data_20file_20name>
<value>
box_2d.txt
</value>
<default_value>
box_2d.txt
</default_value>
<documentation>
The file name of the model data.
</documentation>
<pattern>
1320
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Data_20file_20name>
<First_20point_20on_20slice>
<value>
0.0,1.0,0.0
</value>
<default_value>
0.0,1.0,0.0
</default_value>
<documentation>
Point that determines the plane in which the 2d slice lies in. This variable is only used if &apos;Slice dataset in 2d plane&apos; is true. The slice will go through this point, the point defined by the parameter &apos;Second point on slice&apos;, and the center of the model domain. After the rotation, this first point will lie along the (0,1,0) axis of the coordinate system. The coordinates of the point have to be given in Cartesian coordinates.
</documentation>
<pattern>
1323
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</First_20point_20on_20slice>
<Scale_20factor>
<value>
1.
</value>
<default_value>
1.
</default_value>
<documentation>
Scalar factor, which is applied to the model data. You might want to use this to scale the input to a reference model. Another way to use this factor is to convert units of the input files. For instance, if you provide velocities in cm/yr set this factor to 0.01.
</documentation>
<pattern>
1321
</pattern>
<pattern_description>
[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]
</pattern_description>
</Scale_20factor>
<Second_20point_20on_20slice>
<value>
1.0,0.0,0.0
</value>
<default_value>
1.0,0.0,0.0
</default_value>
<documentation>
Second point that determines the plane in which the 2d slice lies in. This variable is only used if &apos;Slice dataset in 2d plane&apos; is true. The slice will go through this point, the point defined by the parameter &apos;First point on slice&apos;, and the center of the model domain. The coordinates of the point have to be given in Cartesian coordinates.
</documentation>
<pattern>
1324
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Second_20point_20on_20slice>
<Slice_20dataset_20in_202D_20plane>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to use a 2d data slice of a 3d data file or the entire data file. Slicing a 3d dataset is only supported for 2d models.
</documentation>
<pattern>
1322
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Slice_20dataset_20in_202D_20plane>
</Ascii_20data_20model>
<Compaction_20pressure_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1315
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1314
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1313
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Compaction_20pressure_20function>
<Fluid_20pressure_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1312
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1311
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1310
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Fluid_20pressure_20function>
<Fluid_20velocity_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1318
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0; 0
</value>
<default_value>
0; 0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1317
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1316
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Fluid_20velocity_20function>
<Pressure_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1309
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1308
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1307
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Pressure_20function>
<Velocity_20function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
1306
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
0; 0
</value>
<default_value>
0; 0
</default_value>
<documentation>
The formula that denotes the function you want to evaluate for particular values of the independent variables. This expression may contain any of the usual operations such as addition or multiplication, as well as all of the common functions such as `sin&apos; or `cos&apos;. In addition, it may contain expressions like `if(x&gt;0, 1, -1)&apos; where the expression evaluates to the second argument if the first argument is true, and to the third argument otherwise. For a full overview of possible expressions accepted see the documentation of the muparser library at http://muparser.beltoforion.de/.

If the function you are describing represents a vector-valued function with multiple components, then separate the expressions for individual components by a semicolon.
</documentation>
<pattern>
1305
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
x,y,t
</value>
<default_value>
x,y,t
</default_value>
<documentation>
The names of the variables as they will be used in the function, separated by commas. By default, the names of variables at which the function will be evaluated are `x&apos; (in 1d), `x,y&apos; (in 2d) or `x,y,z&apos; (in 3d) for spatial coordinates and `t&apos; for time. You can then use these variable names in your function expression and they will be replaced by the values of these variables at which the function is currently evaluated. However, you can also choose a different set of names for the independent variables at which to evaluate your function expression. For example, if you work in spherical coordinates, you may wish to set this input parameter to `r,phi,theta,t&apos; and then use these variable names in your function expression.
</documentation>
<pattern>
1304
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Velocity_20function>
</Prescribed_20Stokes_20solution>
<Solver_20parameters>
<Composition_20solver_20tolerance>
<value>
1e-12
</value>
<default_value>
1e-12
</default_value>
<documentation>
The relative tolerance up to which the linear system for the composition system gets solved. See `Stokes solver parameters/Linear solver tolerance&apos; for more details.
</documentation>
<pattern>
25
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Composition_20solver_20tolerance>
<Temperature_20solver_20tolerance>
<value>
1e-12
</value>
<default_value>
1e-12
</default_value>
<documentation>
The relative tolerance up to which the linear system for the temperature system gets solved. See `Stokes solver parameters/Linear solver tolerance&apos; for more details.
</documentation>
<pattern>
24
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Temperature_20solver_20tolerance>
<AMG_20parameters>
<AMG_20aggregation_20threshold>
<value>
0.001
</value>
<default_value>
0.001
</default_value>
<documentation>
This threshold tells the AMG setup how the coarsening should be performed. In the AMG used by ML, all points that strongly couple with the tentative coarse-level point form one aggregate. The term strong coupling is controlled by the variable aggregation\_threshold, meaning that all elements that are not smaller than aggregation\_threshold times the diagonal element do couple strongly. The default is strongly recommended. There are indications that for the Newton solver a different value might be better. For extensive benchmarking of various settings of the AMG parameters in this section for the Stokes problem and others, see https://github.com/geodynamics/aspect/pull/234.
</documentation>
<pattern>
42
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</AMG_20aggregation_20threshold>
<AMG_20output_20details>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Turns on extra information on the AMG solver. Note that this will generate much more output.
</documentation>
<pattern>
43
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</AMG_20output_20details>
<AMG_20smoother_20sweeps>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
Determines how many sweeps of the smoother should be performed. When the flag elliptic is set to true, (which is true for ASPECT), the polynomial degree of the Chebyshev smoother is set to this value. The term sweeps refers to the number of matrix-vector products performed in the Chebyshev case. In the non-elliptic case, this parameter sets the number of SSOR relaxation sweeps for post-smoothing to be performed. The default is strongly recommended. There are indications that for the Newton solver a different value might be better. For extensive benchmarking of various settings of the AMG parameters in this section for the Stokes problem and others, see https://github.com/geodynamics/aspect/pull/234.
</documentation>
<pattern>
41
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</AMG_20smoother_20sweeps>
<AMG_20smoother_20type>
<value>
Chebyshev
</value>
<default_value>
Chebyshev
</default_value>
<documentation>
This parameter sets the type of smoother for the AMG. The default is strongly recommended for any normal runs with ASPECT. There are some indications that the symmetric Gauss-Seidel might be better and more stable for the Newton solver. For extensive benchmarking of various settings of the AMG parameters in this section for the Stokes problem and others, see https://github.com/geodynamics/aspect/pull/234.
</documentation>
<pattern>
40
</pattern>
<pattern_description>
[Selection Chebyshev|symmetric Gauss-Seidel ]
</pattern_description>
</AMG_20smoother_20type>
</AMG_20parameters>
<Advection_20solver_20parameters>
<GMRES_20solver_20restart_20length>
<value>
50
</value>
<default_value>
50
</default_value>
<documentation>
This is the number of iterations that define the GMRES solver restart length. Increasing this parameter makes the solver more robust and decreases the number of iterations. Be aware that increasing this number increases the memory usage of the advection solver, and makes individual iterations more expensive.
</documentation>
<pattern>
26
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</GMRES_20solver_20restart_20length>
</Advection_20solver_20parameters>
<Diffusion_20solver_20parameters>
<Diffusion_20length_20scale>
<value>
1.e4
</value>
<default_value>
1.e4
</default_value>
<documentation>
Set a length scale for the diffusion of advection fields if the ``prescribed field with diffusion&apos;&apos; method is selected for a field. More precisely, this length scale represents the square root of the product of diffusivity and time in the diffusion equation, and controls the distance over which features are diffused. Units: \si{\meter}.
</documentation>
<pattern>
48
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Diffusion_20length_20scale>
</Diffusion_20solver_20parameters>
<Matrix_20Free>
<Execute_20solver_20timings>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Executes different parts of the Stokes solver repeatedly and print timing information. This is for internal benchmarking purposes: It is useful if you want to see how the solver performs. Otherwise, you don&apos;t want to enable this, since it adds additional computational cost to get the timing information.
</documentation>
<pattern>
123
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Execute_20solver_20timings>
<Output_20details>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Turns on extra information for the matrix free GMG solver to be printed.
</documentation>
<pattern>
122
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Output_20details>
</Matrix_20Free>
<Newton_20solver_20parameters>
<Max_20Newton_20line_20search_20iterations>
<value>
5
</value>
<default_value>
5
</default_value>
<documentation>
The maximum number of line search iterations allowed. If the criterion is not reached after this number of iterations, we apply the scaled increment even though it does not satisfy the necessary criteria and simply continue with the next Newton iteration.
</documentation>
<pattern>
114
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Max_20Newton_20line_20search_20iterations>
<Max_20pre_2dNewton_20nonlinear_20iterations>
<value>
10
</value>
<default_value>
10
</default_value>
<documentation>
If the &apos;Nonlinear Newton solver switch tolerance&apos; is reached before the maximal number of Picard iterations, then the solver switches to Newton solves anyway.
</documentation>
<pattern>
113
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Max_20pre_2dNewton_20nonlinear_20iterations>
<Maximum_20linear_20Stokes_20solver_20tolerance>
<value>
1e-2
</value>
<default_value>
1e-2
</default_value>
<documentation>
The linear Stokes solver tolerance is dynamically chosen for the Newton solver, based on the Eisenstat Walker (1994) paper (https://doi.org/10.1137/0917003), equation 2.2. Because this value can become larger than one, we limit this value by this parameter.
</documentation>
<pattern>
116
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Maximum_20linear_20Stokes_20solver_20tolerance>
<Nonlinear_20Newton_20solver_20switch_20tolerance>
<value>
1e-5
</value>
<default_value>
1e-5
</default_value>
<documentation>
A relative tolerance with respect to the residual of the first iteration, up to which the nonlinear Picard solver will iterate, before changing to the Newton solver.
</documentation>
<pattern>
112
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Nonlinear_20Newton_20solver_20switch_20tolerance>
<SPD_20safety_20factor>
<value>
0.9
</value>
<default_value>
0.9
</default_value>
<documentation>
When stabilizing the Newton matrix, we can encounter situations where the coefficient inside the elliptic (top-left) block becomes negative or zero. This coefficient has the form $1+x$ where $x$ can sometimes be smaller than $-1$. In this case, the top-left block of the matrix is no longer positive definite, and both preconditioners and iterative solvers may fail. To prevent this, the stabilization computes an $\alpha$ so that $1+\alpha x$ is never negative and so that always $0\le \alpha \le 1$.  On the other hand, we also want to stay away from $1+\alpha x=0$, and so modify the choice of $\alpha$ by a factor $c$ between zero and one so that if $c&lt;1$, we are assured that $1+\alpha x&gt;0$, i.e., bounded away from zero. If $c=1$, we allow $1+\alpha x=0$, i.e., an unsafe situation. If $c=0$, then $\alpha$ is always set to zero which guarantees the desired property that $1+\alpha x=1&gt;0$, but at the cost of a diminished convergence rate of the Newton method.
</documentation>
<pattern>
120
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</SPD_20safety_20factor>
<Stabilization_20preconditioner>
<value>
SPD
</value>
<default_value>
SPD
</default_value>
<documentation>
This parameters allows for the stabilization of the preconditioner. If one derives the Newton method without any modifications, the matrix created for the preconditioning is not necessarily Symmetric Positive Definite. This is problematic (see \cite{fraters:etal:2019}). When `none&apos; is chosen, the preconditioner is not stabilized. The `symmetric&apos; parameters symmetrizes the matrix, and `PD&apos; makes the matrix Positive Definite. `SPD&apos; is the full stabilization, where the matrix is guaranteed Symmetric Positive Definite.
</documentation>
<pattern>
117
</pattern>
<pattern_description>
[Selection SPD|PD|symmetric|none ]
</pattern_description>
</Stabilization_20preconditioner>
<Stabilization_20velocity_20block>
<value>
SPD
</value>
<default_value>
SPD
</default_value>
<documentation>
This parameters allows for the stabilization of the velocity block. If one derives the Newton method without any modifications, the matrix created for the velocity block is not necessarily Symmetric Positive Definite. This is problematic (see \cite{fraters:etal:2019}). When `none&apos; is chosen, the velocity block is not stabilized. The `symmetric&apos; parameters symmetrizes the matrix, and `PD&apos; makes the matrix Positive Definite. `SPD&apos; is the full stabilization, where the matrix is guaranteed Symmetric Positive Definite.
</documentation>
<pattern>
118
</pattern>
<pattern_description>
[Selection SPD|PD|symmetric|none ]
</pattern_description>
</Stabilization_20velocity_20block>
<Use_20Eisenstat_20Walker_20method_20for_20Picard_20iterations>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
If set to true, the Picard iteration uses the Eisenstat Walker method to determine how accurately linear systems need to be solved. The Picard iteration is used, for example, in the first few iterations of the Newton method before the matrix is built including derivatives of the model, since the Picard iteration generally converges even from points where Newton&apos;s method does not. 

Once derivatives are used in a Newton method, \aspect{} always uses the Eisenstat Walker method.
</documentation>
<pattern>
121
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20Eisenstat_20Walker_20method_20for_20Picard_20iterations>
<Use_20Newton_20failsafe>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
When this parameter is true and the linear solver fails, we try again, but now with SPD stabilization for both the preconditioner and the velocity block. The SPD stabilization will remain active until the next timestep, when the default values are restored.
</documentation>
<pattern>
119
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20Newton_20failsafe>
<Use_20Newton_20residual_20scaling_20method>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
This method allows to slowly introduce the derivatives based on the improvement of the residual. If set to false, the scaling factor for the Newton derivatives is set to one immediately when switching on the Newton solver. When this is set to true, the derivatives are slowly introduced by the following equation: $\max(0.0, (1.0-(residual/switch\_initial\_residual)))$, where switch\_initial\_residual is the residual at the time when the Newton solver is switched on.
</documentation>
<pattern>
115
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20Newton_20residual_20scaling_20method>
</Newton_20solver_20parameters>
<Operator_20splitting_20parameters>
<Reaction_20solver_20relative_20tolerance>
<value>
1e-6
</value>
<default_value>
1e-6
</default_value>
<documentation>
The relative solver tolerance used in the ARKode reaction solver. This tolerance is used to adaptively determine the reaction step size. For more details, see the ARKode documentation. This parameter is only used if the `ARKode&apos; reaction solver type is used. Units: none.
</documentation>
<pattern>
45
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reaction_20solver_20relative_20tolerance>
<Reaction_20solver_20type>
<value>
ARKode
</value>
<default_value>
ARKode
</default_value>
<documentation>
This parameter determines what solver will be used when the reactions are computed within the operator splitting scheme. For reactions where the reaction rate is a known, finite quantity, the appropriate choice is `ARKode&apos;, which uses an ODE solver from SUNDIALs ARKode (adaptive-step additive Runge Kutta ODE solver methods) to compute the solution. ARKode will pick a reasonable step size based on the reaction rate and the given `Reaction solver relative tolerance&apos;. However, in some cases we have instantaneous reactions, where we know the new value of a compositional field (and the reaction rate would be infinite), or reaction where we need to know or be able to control the step size we use to compute the reactions. In theses cases, it is appropriate to use the `fixed step&apos; scheme, a method that a forward Euler scheme and a fixed number of steps given by the `Reaction time step&apos; and `Reaction time steps per advection step&apos; parameters. 
</documentation>
<pattern>
44
</pattern>
<pattern_description>
[Selection ARKode|fixed step ]
</pattern_description>
</Reaction_20solver_20type>
<Reaction_20time_20step>
<value>
1000.0
</value>
<default_value>
1000.0
</default_value>
<documentation>
Set a time step size for computing reactions of compositional fields and the temperature field in case operator splitting is used. This is only used when the parameter ``Use operator splitting&apos;&apos; is set to true and when the `fixed step&apos; reaction solver type is used. The reaction time step must be greater than 0. If you want to prescribe the reaction time step only as a relative value compared to the advection time step as opposed to as an absolute value, you should use the parameter ``Reaction time steps per advection step&apos;&apos; and set this parameter to the same (or larger) value as the ``Maximum time step&apos;&apos; (which is 5.69e+300 by default). Units: Years or seconds, depending on the ``Use years in output instead of seconds&apos;&apos; parameter.
</documentation>
<pattern>
46
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Reaction_20time_20step>
<Reaction_20time_20steps_20per_20advection_20step>
<value>
0
</value>
<default_value>
0
</default_value>
<documentation>
The number of reaction time steps done within one advection time step in case operator splitting is used. This is only used if the parameter ``Use operator splitting&apos;&apos; is set to true and when the `fixed step&apos; reaction solver type is used. If set to zero, this parameter is ignored. Otherwise, the reaction time step size is chosen according to this criterion and the ``Reaction time step&apos;&apos;, whichever yields the smaller time step. Units: none.
</documentation>
<pattern>
47
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Reaction_20time_20steps_20per_20advection_20step>
</Operator_20splitting_20parameters>
<Stokes_20solver_20parameters>
<Force_20nonsymmetric_20A_20block_20solver>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
This parameter determines whether to enforce a solver that supports nonsymmetric matrices when solving the inner $A$ block of the Stokes system. By default ASPECT recognizes cases where the A block is nonsymmetric automatically, and chooses an appropriate solver. However, if the inner A block solver does not converge, this parameter can be set to &apos;true&apos; to force the use of a solver that can handle nonsymmetric matrices.
</documentation>
<pattern>
38
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Force_20nonsymmetric_20A_20block_20solver>
<GMRES_20solver_20restart_20length>
<value>
100
</value>
<default_value>
100
</default_value>
<documentation>
This is the number of iterations that define the GMRES solver restart length. Increasing this parameter helps with convergence issues arising from high localized viscosity jumps in the domain. Be aware that increasing this number increases the memory usage of the Stokes solver, and makes individual Stokes iterations more expensive.
</documentation>
<pattern>
35
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</GMRES_20solver_20restart_20length>
<IDR_28s_29_20parameter>
<value>
2
</value>
<default_value>
2
</default_value>
<documentation>
This is the sole parameter for the IDR(s) Krylov solver and will dictate the number of matrix-vector products and preconditioner applications per iteration (s+1) and the total number of temporary vectors required (5+3*s). For s=1, this method is analogous to BiCGStab. As s is increased this method is expected to converge to GMRES in terms of matrix-vector/preconditioner applications to solution.
</documentation>
<pattern>
31
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</IDR_28s_29_20parameter>
<Krylov_20method_20for_20cheap_20solver_20steps>
<value>
GMRES
</value>
<default_value>
GMRES
</default_value>
<documentation>
This is the Krylov method used to solve the Stokes system. Both options, GMRES and IDR(s), solve non-symmetric, indefinite systems. GMRES guarantees the residual will be reduced in each iteration while IDR(s) has no such property. On the other hand, the vector storage requirement for GMRES is dependent on the restart length and can be quite restrictive (since, for the matrix-free GMG solver, memory is dominated by these vectors) whereas IDR(s) has a short term recurrence. Note that the IDR(s) Krylov method is not available for the AMG solver since it is not a flexible method, i.e., it cannot handle a preconditioner which may change in each iteration (the AMG-based preconditioner contains a CG solve in the pressure space which may have different number of iterations each step).
</documentation>
<pattern>
30
</pattern>
<pattern_description>
[Selection GMRES|IDR(s) ]
</pattern_description>
</Krylov_20method_20for_20cheap_20solver_20steps>
<Linear_20solver_20A_20block_20tolerance>
<value>
1e-2
</value>
<default_value>
1e-2
</default_value>
<documentation>
A relative tolerance up to which the approximate inverse of the $A$ block of the Stokes system is computed. This approximate $A$ is used in the preconditioning used in the GMRES solver. The exact definition of this block preconditioner for the Stokes equation can be found in \cite{kronbichler:etal:2012}.
</documentation>
<pattern>
36
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Linear_20solver_20A_20block_20tolerance>
<Linear_20solver_20S_20block_20tolerance>
<value>
1e-6
</value>
<default_value>
1e-6
</default_value>
<documentation>
A relative tolerance up to which the approximate inverse of the $S$ block (i.e., the Schur complement matrix $S = BA^{-1}B^{T}$) of the Stokes system is computed. This approximate inverse of the $S$ block is used in the preconditioning used in the GMRES solver. The exact definition of this block preconditioner for the Stokes equation can be found in \cite{kronbichler:etal:2012}.
</documentation>
<pattern>
39
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Linear_20solver_20S_20block_20tolerance>
<Linear_20solver_20tolerance>
<value>
1e-7
</value>
<default_value>
1e-7
</default_value>
<documentation>
A relative tolerance up to which the linear Stokes systems in each time or nonlinear step should be solved. The absolute tolerance will then be $\| M x_0 - F \| \cdot \text{tol}$, where $x_0 = (0,p_0)$ is the initial guess of the pressure, $M$ is the system matrix, $F$ is the right-hand side, and tol is the parameter specified here. We include the initial guess of the pressure to remove the dependency of the tolerance on the static pressure. A given tolerance value of 1 would mean that a zero solution vector is an acceptable solution since in that case the norm of the residual of the linear system equals the norm of the right hand side. A given tolerance of 0 would mean that the linear system has to be solved exactly, since this is the only way to obtain a zero residual.

In practice, you should choose the value of this parameter to be so that if you make it smaller the results of your simulation do not change any more (qualitatively) whereas if you make it larger, they do. For most cases, the default value should be sufficient. In fact, a tolerance of 1e-4 might be accurate enough.
</documentation>
<pattern>
32
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Linear_20solver_20tolerance>
<Maximum_20number_20of_20expensive_20Stokes_20solver_20steps>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
This sets the maximum number of iterations used in the expensive Stokes solver. If this value is set too low for the size of the problem, the Stokes solver will not converge and return an error message pointing out that the user didn&apos;t allow a sufficiently large number of iterations for the iterative solver to converge.
</documentation>
<pattern>
34
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Maximum_20number_20of_20expensive_20Stokes_20solver_20steps>
<Number_20of_20cheap_20Stokes_20solver_20steps>
<value>
1000
</value>
<default_value>
1000
</default_value>
<documentation>
As explained in the paper that describes ASPECT (Kronbichler, Heister, and Bangerth, 2012, see \cite{kronbichler:etal:2012}) we first try to solve the Stokes system in every time step using a GMRES iteration with a poor but cheap preconditioner. By default, we try whether we can converge the GMRES solver in 200 such iterations before deciding that we need a better preconditioner. This is sufficient for simple problems with variable viscosity and we never need the second phase with the more expensive preconditioner. On the other hand, for more complex problems, and in particular for problems with strongly nonlinear viscosity, the 200 cheap iterations don&apos;t actually do very much good and one might skip this part right away. In that case, this parameter can be set to zero, i.e., we immediately start with the better but more expensive preconditioner.
</documentation>
<pattern>
33
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</Number_20of_20cheap_20Stokes_20solver_20steps>
<Stokes_20solver_20type>
<value>
default solver
</value>
<default_value>
default solver
</default_value>
<documentation>
This is the type of solver used on the Stokes system. The block geometric multigrid solver currently has a limited implementation and therefore may trigger Asserts in the code when used. If this is the case, please switch to &apos;block AMG&apos;. Additionally, the block GMG solver requires using material model averaging. The &apos;default solver&apos; chooses the geometric multigrid solver if supported, otherwise the AMG solver.
</documentation>
<pattern>
27
</pattern>
<pattern_description>
[Selection default solver|block AMG|direct solver|block GMG ]
</pattern_description>
</Stokes_20solver_20type>
<Use_20direct_20solver_20for_20Stokes_20system>
<value>
true
</value>
<default_value>
false
</default_value>
<documentation>
If set to true the linear system for the Stokes equation will be solved using Trilinos klu, otherwise an iterative Schur complement solver is used. The direct solver is only efficient for small problems.
</documentation>
<pattern>
28
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20direct_20solver_20for_20Stokes_20system>
<Use_20full_20A_20block_20as_20preconditioner>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
This parameter determines whether we use an simplified approximation of the $A$ block as preconditioner for the Stokes solver, or the full $A$ block. The simplified approximation only contains the terms that describe the coupling of identical components (plus boundary conditions) as described in \cite{kronbichler:etal:2012}. The full block is closer to the description in \cite{rudi2017weighted}.

There is no clear way to determine which preconditioner performs better. The default value (simplified approximation) requires more outer GMRES iterations, but is faster to apply in each iteration. The full block needs less assembly time (because the block is available anyway), converges in less GMRES iterations, but requires more time per iteration. There are also differences in the amount of memory consumption between the two approaches.

The default value should be good for relatively simple models, but in particular for very strong viscosity contrasts the full $A$ block can be advantageous. This parameter is always set to true when using the GMG solver.
</documentation>
<pattern>
37
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20full_20A_20block_20as_20preconditioner>
<Use_20weighted_20BFBT_20for_20Schur_20complement>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
If set to true, the Schur complement approximation in the Block preconditioner uses the weighted BFBT preconditioner, otherwise a weighted mass matrix will be used. The BFBT preconditioner is more expensive, but works better for large viscosity variations.
</documentation>
<pattern>
29
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Use_20weighted_20BFBT_20for_20Schur_20complement>
</Stokes_20solver_20parameters>
</Solver_20parameters>
<Temperature_20field>
<Temperature_20method>
<value>
field
</value>
<default_value>
field
</default_value>
<documentation>
A comma separated list denoting the solution method of the temperature field. Each entry of the list must be one of the currently implemented field types.

These choices correspond to the following methods by which the temperature field gains its values:\begin{itemize}\item ``field&apos;&apos;: If the temperature is marked with this method, then its values are computed in each time step by solving the temperature advection-diffusion equation. In other words, this corresponds to the usual notion of a temperature. 
\item ``prescribed field&apos;&apos;: The value of the temperature is determined in each time step from the material model. If a compositional field is marked with this method, then the value of a specific additional material model output, called the `PrescribedTemperatureOutputs&apos; is interpolated onto the temperature. This field does not change otherwise, it is not advected with the flow. 
\item ``prescribed field with diffusion&apos;&apos;: If the temperature field is marked this way, the value of a specific additional material model output, called the `PrescribedTemperatureOutputs&apos; is interpolated onto the field, as in the ``prescribed field&apos;&apos; method. Afterwards, the field is diffused based on a solver parameter, the diffusion length scale, smoothing the field. Specifically, the field is updated by solving the equation $(I-l^2 \Delta) T_\text{smoothed} = T_\text{prescribed}$, where $l$ is the diffusion length scale. Note that this means that the amount of diffusion is independent of the time step size, and that the field is not advected with the flow.
\item ``static&apos;&apos;: If a temperature field is marked this way, then it does not evolve at all. Its values are simply set to the initial conditions, and will then never change.\end{itemize}
</documentation>
<pattern>
94
</pattern>
<pattern_description>
[Selection field|prescribed field|prescribed field with diffusion|static ]
</pattern_description>
</Temperature_20method>
</Temperature_20field>
<Termination_20criteria>
<Checkpoint_20on_20termination>
<value>
false
</value>
<default_value>
false
</default_value>
<documentation>
Whether to checkpoint the simulation right before termination.
</documentation>
<pattern>
443
</pattern>
<pattern_description>
[Bool]
</pattern_description>
</Checkpoint_20on_20termination>
<End_20step>
<value>
100
</value>
<default_value>
100
</default_value>
<documentation>
Terminate the simulation once the specified timestep has been reached.
</documentation>
<pattern>
433
</pattern>
<pattern_description>
[Integer range 0...2147483647 (inclusive)]
</pattern_description>
</End_20step>
<Termination_20criteria>
<value>
end time
</value>
<default_value>
end time
</default_value>
<documentation>
A comma separated list of termination criteria that will determine when the simulation should end. Whether explicitly stated or not, the ``end time&apos;&apos; termination criterion will always be used.The following termination criteria are available:

`end step&apos;: Terminate the simulation once the specified timestep has been reached. 

`end time&apos;: Terminate the simulation once the end time specified in the input file has been reached. Unlike all other termination criteria, this criterion is \textit{always} active, whether it has been explicitly selected or not in the input file (this is done to preserve historical behavior of \aspect{}, but it also likely does not inconvenience anyone since it is what would be selected in most cases anyway).

`steady state heat flux&apos;: A criterion that terminates the simulation when the integrated heat flux over a given list of boundaries stays within a certain range for a specified period of time.

The criterion considers the total heat flux over all boundaries listed by their boundary indicators, rather than each boundary separately. As a consequence, if the \textit{sum} of heat fluxes over individual parts of the boundary no longer changes, then this criterion recommends termination, even if the heat flux over individual parts of the boundary continues to change.

`steady state temperature&apos;: A criterion that terminates the simulation when the global integral of the temperature field stays within a certain range for a specified period of time.

`steady state velocity&apos;: A criterion that terminates the simulation when the RMS of the velocity field stays within a certain range for a specified period of time.

`user request&apos;: Terminate the simulation gracefully when a file with a specified name appears in the output directory. This allows the user to gracefully exit the simulation at any time by simply creating such a file using, for example, \texttt{touch output/terminate}. The file&apos;s location is chosen to be in the output directory, rather than in a generic location such as the ASPECT directory, so that one can run multiple simulations at the same time (which presumably write to different output directories) and can selectively terminate a particular one.

`wall time&apos;: Terminate the simulation once the wall time limit has reached.
</documentation>
<pattern>
431
</pattern>
<pattern_description>
[MultipleSelection end step|end time|steady state heat flux|steady state temperature|steady state velocity|user request|wall time ]
</pattern_description>
</Termination_20criteria>
<Wall_20time>
<value>
24.
</value>
<default_value>
24.
</default_value>
<documentation>
The wall time of the simulation. Unit: hours.
</documentation>
<pattern>
435
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Wall_20time>
<Steady_20state_20heat_20flux>
<Boundary_20indicators>
<value/>
<default_value/>
<documentation>
A comma separated list of names denoting those boundaries that should be taken into account for integrating the heat flux. Note that the plugin will compute the integrated heat flux over these boundaries (instead of taking them into account individually).

The names of the boundaries listed here can either be numbers (in which case they correspond to the numerical boundary indicators assigned by the geometry object), or they can correspond to any of the symbolic names the geometry object may have provided for each part of the boundary. You may want to compare this with the documentation of the geometry model you use in your model.
</documentation>
<pattern>
438
</pattern>
<pattern_description>
[List of &lt;[Anything]&gt; of length 0...4294967295 (inclusive)]
</pattern_description>
</Boundary_20indicators>
<Maximum_20relative_20deviation>
<value>
0.05
</value>
<default_value>
0.05
</default_value>
<documentation>
The maximum relative deviation of the heat flux in recent simulation time for the system to be considered in steady state. If the actual deviation is smaller than this number, then the simulation will be terminated.
</documentation>
<pattern>
436
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20relative_20deviation>
<Time_20in_20steady_20state>
<value>
1e7
</value>
<default_value>
1e7
</default_value>
<documentation>
The minimum length of simulation time that the system should be in steady state before termination. Note that if the time step size is similar to or larger than this value, the termination criterion will only have very few (in the most extreme case, just two) heat flux values to check. To ensure that a larger number of time steps are included in the check for steady state, this value should be much larger than the time step size. Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
437
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Time_20in_20steady_20state>
</Steady_20state_20heat_20flux>
<Steady_20state_20temperature>
<Maximum_20relative_20deviation>
<value>
0.05
</value>
<default_value>
0.05
</default_value>
<documentation>
The maximum relative deviation of the temperature in recent simulation time for the system to be considered in steady state. If the actual deviation is smaller than this number, then the simulation will be terminated.
</documentation>
<pattern>
441
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20relative_20deviation>
<Time_20in_20steady_20state>
<value>
1e7
</value>
<default_value>
1e7
</default_value>
<documentation>
The minimum length of simulation time that the system should be in steady state before termination.Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
442
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Time_20in_20steady_20state>
</Steady_20state_20temperature>
<Steady_20state_20velocity>
<Maximum_20relative_20deviation>
<value>
0.05
</value>
<default_value>
0.05
</default_value>
<documentation>
The maximum relative deviation of the RMS in recent simulation time for the system to be considered in steady state. If the actual deviation is smaller than this number, then the simulation will be terminated.
</documentation>
<pattern>
439
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Maximum_20relative_20deviation>
<Time_20in_20steady_20state>
<value>
1e7
</value>
<default_value>
1e7
</default_value>
<documentation>
The minimum length of simulation time that the system should be in steady state before termination.Units: years if the &apos;Use years in output instead of seconds&apos; parameter is set; seconds otherwise.
</documentation>
<pattern>
440
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Time_20in_20steady_20state>
</Steady_20state_20velocity>
<User_20request>
<File_20name>
<value>
terminate-aspect
</value>
<default_value>
terminate-aspect
</default_value>
<documentation>
The name of a file that, if it exists in the output directory (whose name is also specified in the input file) will lead to termination of the simulation. The file&apos;s location is chosen to be in the output directory, rather than in a generic location such as the ASPECT directory, so that one can run multiple simulations at the same time (which presumably write to different output directories) and can selectively terminate a particular one.
</documentation>
<pattern>
432
</pattern>
<pattern_description>
[FileName (Type: input)]
</pattern_description>
</File_20name>
</User_20request>
</Termination_20criteria>
<Time_20stepping>
<List_20of_20model_20names>
<value/>
<default_value/>
<documentation>
A comma separated list of time stepping plugins that will be used to calculate the time step size. The minimum of the  result of each plugin will be used.

The following plugins are available:

`conduction time step&apos;: This model computes the conduction time step as the minimum over all cells of $ CFL h^2 \cdot \rho C_p / k$, where k is the thermal conductivity. This plugin will always request advancing to the next time step.

`convection time step&apos;: This model computes the convection time step as $ CFL / \max \| u \| / h$ over all cells, where $u$ is the velocity and $h$ is the product of mesh size and temperature polynomial degree.

`function&apos;: This model uses a time step specified in the parameter file specified as a function of time. This plugin will always request advancing to the next time step.

`repeat on cutback&apos;: This time stepping plugin will detect a situation where the computed time step shrinks by more than a user-controlled factor. In that situation, the previous time step will be repeated with a smaller step size.
A large reduction in time step size typically happens when velocities change abruptly. Repeating the time step ensure properly resolving this event. It is useful to consider setting the &quot;Maximum relative increase in time step&quot; option to avoid repeatedly repeating every other time step.

`repeat on nonlinear solver failure&apos;: This time stepping plugin will react when the nonlinear solver does not converge in the specified maximum number of iterations and repeats the current timestep with a smaller step size. This plugin is enabled automatically if &quot;Nonlinear solver failure strategy&quot; is set to &quot;cut timestep size&quot;.
</documentation>
<pattern>
445
</pattern>
<pattern_description>
[MultipleSelection conduction time step|convection time step|function|repeat on cutback|repeat on nonlinear solver failure ]
</pattern_description>
</List_20of_20model_20names>
<Minimum_20time_20step_20size>
<value>
0.
</value>
<default_value>
0.
</default_value>
<documentation>
Specify a minimum time step size (or 0 to disable).
</documentation>
<pattern>
444
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Minimum_20time_20step_20size>
<Function>
<Function_20constants>
<value/>
<default_value/>
<documentation>
Sometimes it is convenient to use symbolic constants in the expression that describes the function, rather than having to use its numeric value everywhere the constant appears. These values can be defined using this parameter, in the form `var1=value1, var2=value2, ...&apos;.

A typical example would be to set this runtime parameter to `pi=3.1415926536&apos; and then use `pi&apos; in the expression of the actual formula. (That said, for convenience this class actually defines both `pi&apos; and `Pi&apos; by default, but you get the idea.)
</documentation>
<pattern>
448
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20constants>
<Function_20expression>
<value>
1.0
</value>
<default_value>
1.0
</default_value>
<documentation>
Expression for the time step size as a function of &apos;time&apos;.
</documentation>
<pattern>
449
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Function_20expression>
<Variable_20names>
<value>
time
</value>
<default_value>
time
</default_value>
<documentation>
Name for the variable representing the current time.
</documentation>
<pattern>
450
</pattern>
<pattern_description>
[Anything]
</pattern_description>
</Variable_20names>
</Function>
<Repeat_20on_20cutback>
<Cut_20back_20amount>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
A factor that controls the size of the time step when repeating. The default of 0.5 corresponds to 50\% of the original step taken.
</documentation>
<pattern>
452
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Cut_20back_20amount>
<Relative_20repeat_20threshold>
<value>
0.2
</value>
<default_value>
0.2
</default_value>
<documentation>
A factor that controls when a step is going to be repeated. If the newly computed step size is smaller than the last step size multiplied by this factor, the step is repeated.
</documentation>
<pattern>
451
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Relative_20repeat_20threshold>
</Repeat_20on_20cutback>
<Repeat_20on_20nonlinear_20solver_20failure>
<Cut_20back_20factor>
<value>
0.5
</value>
<default_value>
0.5
</default_value>
<documentation>
A factor that controls the size of the time step when repeating. The default of 0.5 corresponds to 50\% of the original step taken.
</documentation>
<pattern>
453
</pattern>
<pattern_description>
[Double 0...MAX_DOUBLE (inclusive)]
</pattern_description>
</Cut_20back_20factor>
</Repeat_20on_20nonlinear_20solver_20failure>
</Time_20stepping>
<Volume_20of_20Fluid>
<Number_20initialization_20samples>
<value>
3
</value>
<default_value>
3
</default_value>
<documentation>
Number of divisions per dimension when computing the initial volume fractions.If set to the default of 3 for a 2d model, then initialization will be based on the initialization criterion at $3^2=9$ points within each cell. If the initialization based on a composition style initial condition, a larger value may be desired for better approximation of the initial fluid fractions. Smaller values will suffice in the case of level set initializations due to the presence of more information to better approximate the initial fluid fractions.
</documentation>
<pattern>
104
</pattern>
<pattern_description>
[Integer range 1...2147483647 (inclusive)]
</pattern_description>
</Number_20initialization_20samples>
<Volume_20fraction_20threshold>
<value>
1e-6
</value>
<default_value>
1e-6
</default_value>
<documentation>
Minimum significant volume. Fluid fractions below this value are considered to be zero.
</documentation>
<pattern>
102
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Volume_20fraction_20threshold>
<Volume_20of_20Fluid_20solver_20tolerance>
<value>
1e-12
</value>
<default_value>
1e-12
</default_value>
<documentation>
The relative tolerance up to which the linear system for the Volume of Fluid system gets solved. See &apos;Solver parameters/Composition solver tolerance&apos; for more details.
</documentation>
<pattern>
103
</pattern>
<pattern_description>
[Double 0...1 (inclusive)]
</pattern_description>
</Volume_20of_20Fluid_20solver_20tolerance>
</Volume_20of_20Fluid>
</ParameterHandler>