ScottDyksterhuis - 20 Oct 2003

Ellipsis Input Manual

Introduction

Ellipsis is a well-established particle-in-cell finite element modelling program, written by Dr. Louis Moresi, and extended into 3D by Dr. Richard Albert and Dr Frédéric Dufour. This document describes the use of Ellipsis and the format of its input file. Sections within the Ellipsis input file are divided into Novice and Advanced user options. This manual is also divided in such a manner with Novice user options outlined in chapter 3 and the Advanced user options discussed in chapter 4. General overviews of each major section within the Ellipsis input file are given within each sub-heading in the Novice chapter.

Type Conventions

Throughout this document, the following typesetting conventions are used:

Acknowledgements

Overview

Layout of the Input File

The input file is plain text, consisting of a large list of token=value pairs. Blank lines are ignored, and everything following a # on a line is ignored as a comment. Values cannot be split over multiple lines.

Vim and Syntax Highlighting

In order for easier visualisation of the Ellipsis input file some arbitrary formatting rules are applied. Any text following a single # is a section heading in the input file and when using the vim editor with default colouring should be displayed in red. Any text following ## will be displayed as a comment and should appear in blue while any text after #: indicates a material section heading.

Below is a snippet from an Ellipsis input file. The only information that Ellipsis will get from it is the values for dimenx, dimenz and dimeny. Everything else (including indentation) is solely for the benefit of the user.

# MODEL DESIGN
## Novice
## Cartesian
dimenx=3.0 ## size of box - grid extents in arbitrary units (no default)
dimenz=2.0
dimeny=1.0

ALERT! Parameter names are case-sensitive. VERBOSE and verbose are two different parameters.

How to Install/Use VIM Syntax Highlighting

The syntax highlighting files are written so as to automatically recognize any file named with the convention *.input as an Ellipsis input file. If the file is not named using this convention or VIM does not automatically recognise the file as the Ellipsis input syntax, you can set the syntax highlighting manually by typing the following into the vim editor:
:set syn=ellipsis

For more information on using VIM (which is by far one of the best multiplatform, free text editors on the market), see the University of Sydney Institute of Marine Science Geophysics Handbook.

Linux

  1. mkdir $HOME/.vim/syntax (if you don't have a .vim directory you should!)
  2. copy the ellipsis.vim syntax highlighting file to $HOME/.vim/syntax
  3. make a file (call it myfiletype.vim) in your .vim directory (NOT the syntax directory) with the following text:

augroup filetype
au!
au! BufRead,BufNewFile *.input
set filetype=ellipsis
augroup END

  1. Add the following to your .vimrc file located in your home directory:
so $HOME/.vim/myfiletypes.vim

Windows

  1. Copy the ellipsis.vim syntax highlighting file to C: \Vim\vimfiles\syntax\
  2. Add the following lines to the file called _vimrc in the C:\Vim directory:
augroup filetype 
au!
au! BufRead,BufNewFile *.input set filetype=ellipsis
augroup END

Axes and Model Geometry

The X axis extends horizontally toward the right, the Z axis extends vertically down, and the Y axis extends out of the screen (Only applicable when Geometry=cart3d in the input file). See figure below. This is a right-handed coordinate system.

Data Types

There are seven main data types for values.

Units

In order to obtain computational efficiency when dealing with very large numbers, throughout Ellipsis almost all data is considered to be unit independent. That means that the units can be chosen arbitrarily, as long as consistency is maintained throughout the entire input. This is simply a process of scaling real world values into smaller numbers by using a scaling factor.

For example, if you decide to give linear length measurements in thousands of rods (krd), time in fortnights (fn), and mass in ounces (oz), then you must give thermal diffusivity in millions of square rods per fortnight (Mrd2:fn-1), and dynamic viscosity in milli-ounces per rod per fortnight (moz:rd :fn ). However, there are a couple of exceptions (notably angular measures) that are pointed out in this document.

Scaling and Non-Dimentionalisation

Models in Ellipsis can be scaled to be non-dimentional, that is as long as two systems are geometrically and dynamically similar, results from the one experiment can be applied to both systems no matter what the size of each system. Models are said to be geometrically similar when all lengths, areas and volumes are related by the same scaling factors and all angles between arbitrary lines are equal (see figure below). Models are said to be dynamically similar when the inertial, pressure, viscous and body (gravity) forces scale with the same scaling factors between the two systems.

In order to non-dimentionalise the values used in the Ellipsis input file one must convert from real-world values into non-dimentional values by using scaling factors. Care must be taken with this since there are some values which are independent and others that are dependant. Independent variables can be scaled arbitrarily while dependent variables are derived from combinations of independent variables.

Independant Dependant
Density Stress
Gravity Strain
Length Viscosity
Temperature Velocity
Thermal Diffusivity Specific Heat
  Time

A simple way of calculating an independent scaling factor is by using:

value_ellipsis = value_nature/value_scale

ALERT! Take care to make sure all dependent variables are scaled according to the scaling of the independent variables

Running Ellipsis

If you would like to use Ellipsis you musy first obtain a copy of the source code, which you will probably find at web-address. You must then compile it under your system. At the moment Ellpispis will only run under UNIX, Linux and OSX. To compile Ellipsis simply enter the directory named Perl Scripts and run the Build Ellpisis script. This should compile Ellipsis and place an executable file in the top level of the Ellipsis directory strucure.

To run Ellipsis you simply type:

$HOME/ellipsis/executeable/path input_file.input

Input Template - Novice

Variables listed in the Novice subdivision of each main section are those that are most commonly changed and those of primary importance in creating a working input file. Generally defaults for variables in this subdivision are usually quite sensible.

General

This section deals with the verbosity (how much output is written to the screen) of the model run and naming of the output.

DESCRIBE=off (Boolean) Whether to describe the search for parameters. Default is off.

VERBOSE=off (Boolean) Whether to print out the input values as they are read in. Default is off.

BEGINNER=off (Boolean) Whether to be verbose when parameters are missing. Only applicable when VERBOSE=on. Default is off.

verbose=off (Boolean) Whether the code should be verbose about its behavior. Default is off.

datafile="root_name" (String) The root name of the output file names, ie. the prefix to which all file extensions will be appended.

Advection-diffusion Parameters

Solver Related Matters

vel_relaxations=10 Maximum number of velocity loops. Default is 2.

piterations=100 Maximum Uzawa iteration loops. Default is 100.

viterations=20 Number of velocity iterations before checking convergence. Default is 251, although 20 is good from modelling experience.

Model Design

In this section the model geometry is assigned and the resolution is then set.

Model Geometry

Here you define the geometry of your model. There is no default for this section, though values are usually scaled to be between 0 and 5.

dimenx=3.0 (Real) Length of model along the X axis

dimenz=2.0 (Real) Length of model along the Z axis

dimeny=1.0 (Real) Length of model along the Y axis (only relevant for when Geometry=cart3d is selected)

Resolution

Resolution of models in Ellipsis is handled using a multigrid. This is where a solution is converged upon using a coarsely meshed model (top image in figure below) and this solution is used as input for a more finely gridded mesh and so on. This is a very computationally efficient method to solve for high resolution problems. As illustrated in figure below at each multigrid level, each cell on the coarse mesh is divided into 4 cells on the finer mesh. For example, a level 1 coarse mesh with 4 cells will be divided into a level 2 mesh with 16 cells, a level 3 mesh with 64 cells and so on. Each of these cells are then filled with a user specified number of tracers or particles (now you understand the term particle in cell modelling and can feel comfortable bringing it up at a dinner party!). If the user has specified a tracer density of 4, there will be 16 tracers per element/cell since the value for tracer density refers to how many tracers in each axis direction. For example, a tracer density of 4 means create a matrix of 4 tracers in the X direction and 4 tracers in the Z direction (for a 2D model) resulting in a matrix of 16 tracers within the element. Thus a level 1 mesh with 4 cells will contain a total of 64 tracers, the level 2 mesh with 16 cells will contain 256 tracers, the level 3 mesh with 64 cells will contain 1024 tracers, etc.

The resolution can then be changed in two ways, by either increasing the base mesh resolution (increasing the model resolution) or by increasing the number of multigrid levels (increasing model resolution).

mgunitx=15 Number of elements in the X axis direction for the base (coarsest) multigrid. Minimum is 2.

mgunitz=5 Number of elements in the Z axis direction for the base (coarsest) multigrid. Minimum is 2.

levels=4 Number of multigrid levels. Minimum is 1.

Tracer Setup

Tracers=on Initialise tracers. ALERT! Always set to on.

Tracer_appetite=0.5 Size(tracer1)+size(tracer2) ) * Tracer_appetite (default=0.5)

Tracer_voids=off Allow tracers to disappear (default=off)

Tracer_rect=1 Number of rectangular regions of different tracer densities (default=0)

Tracer_rect_density=4 Tracer density (N x N per finest element) (<=12)

Tracer_rect_x1=0 Coordinate extent of region. ALERT! Same size as the model box!

Tracer_rect_x2=3

Tracer_rect_z1=0

Tracer_rect_z2=1

Material Properties

In this section properties are assigned for each material that can be used in the model. There must be at least one kind of material in the system, which is called Material_0, with other materials counting upwards from this (ie. material 0, material 1, ...). Naming convention follows the below pattern:

Material_Number_Property=

where Number is the corresponding material number (0,1,2,...) and Property is the various material property variable name you wish to set (eg. density, thermal_diff).

ALERT! Not all materials defined in this section must be used, this is simply creating the materials while you assign them to regions of the model in the Assign Material section.

Assign Materials

To read about definig materials go here

Initial Conditions

Boundary Conditions

Output Files

Graphical Specifications of Output Files

Profile/History Extraction

Over-riding (GOD Switches)

This section contains so the called GOD Switches. Here one can easily turn on/off or set parameter values without going through the entire input file and changing such things individualy for each material. For example, if one wanted a model with no temperature dependant rheological paramters you can simply set TDEPV=off instead of having to negotiate your way through each material property and set the parameters to yeild no temperture sependant rheology.

TDEPV=on Turns temperature dependent rheological parameters on or off. Default is on. off is faster than turning all viscosity values to 1)

VMAX=off Limit the value for viscosity to a maximum value (set below). Default is off.

VMIN=off Limit the value for viscosity to a minimum value (set below). Default is off.

visc_max= Set the value for maximum viscosity cut-off. No default.

visc_min= Set the value for minimum viscosity cut-off. No default.

SDEPV=off Use stress dependence of viscosity. Default is off.

GRDEPV=off Use grain size dependence of viscosity. Default is off.

YIELD=off Turn on/off yield stress parameters. Default is off.

Input Template - Advanced

Advection-diffusion Parameters

Solver Related Matters

Model Design

Material Properties

Thermal Parameters

        Material_4_therm_exp=1.0        # thermal expansion coefficient (default=0.0)
Material_4_therm_diff=1 # thermal diffusivity (default=0.0)
Material_4_Cp=1 # isobaric heat capacity (default=1.0)
Material_4_Qt=1.0 # internal heating rate by mass (default=0.0)

## Melt Parameters

Material_4_depl_T_type=1 #Depletion model, 1=pressure
#2=depth
Material_4_depl_exp=0.0 #Density change of depleted material

Material_4_sp0=0.6 # Solidus of material, based on third order
Material_4_sp1=2e-5 # polynomial fit of data:
Material_4_sp2=0.0 # s=sp0+sp1*p+sp2*p^2+sp3*p^3
Material_4_sp3=0.0

Material_4_lp0=0.75 #Liquidus, defined same way
Material_4_lp1=2e-5
Material_4_lp2=0.0
Material_4_lp3=0.0

Initial Conditions

Boundary Conditions

Output Files

Graphical Specifications of Output Files

Profile/History Extraction

Over-riding (GOD Switches)

Versions

During it's evolution Ellipsis has had many different versions developed with many similarities, however some conflicts between versions also exist. For this reason one should be aware of what version one is using and what potential differences there are with other Ellipsis versions. Conflicts between versions mainly occur with property display variables found mainly in the "Graphical Specification of Output Files" section of the input file.

Melt

+Faults (SNARK Prototype)

3D

SNARK

Appendix

Ellipsis Input Template

This is a stanard input template for a 2D ellipsis model. It is written to conform to the VIM sytax highlighting standard.

VIM Syntax Highlighting File

This is the VIM syntax highlighting file, simply cut and paste the text into a file called ellipsis.vim

Example Materials

This section contains a number of material definitions for a 2D ellipsis input file. All values are accepted as resonable for each particular material.

Air

#: Air

## Novice
Material_0_density=0.01 ## density (default=1.0)
Material_0_Bulk_visc=2.0 ## bulk visc ratio at initial porosity ( >1.0(2D), >2/3(3D) )
## bulk visc = ratio*visc (default=-1.0=infinite)
## div(v) + p/(bulk_visc-2/3*visc) = 0
Material_0_Bulk_modulus=0.0 ## B in dp = B*div(v)*dt (slightly compressible formulation)
## (default=0.0) where dp is on tracers (isotropic stress)

## Colouring
Material_0_Red=1.0,1 ## RGB values for "cold" material (list one per PPM file)
Material_0_Green=1.0,1 ## ("hot" and "cold" are determined from T extremes)
Material_0_Blue=1.0,1
Material_0_Opacity=1.4,1.4 ## opacity for "cold" material (negative=off)
Material_0_Red_hot=0.76,1 ## values for "hot" material
Material_0_Green_hot=0.92,1
Material_0_Blue_hot=1.0,1
Material_0_Opacity_hot=1.4,1.4
Material_0_Red_strained=0.76,0.76 ## values for strained material
Material_0_Green_strained=0.92,0.92
Material_0_Blue_strained=1.0,1.0
Material_0_Opacity_strained=1.4,1.4

## Advanced
Material_0_reproduction=on ## allow tracer reproduction (default=on)

## Rheological model
Material_0_rheol_T_type=1 ## rheological temperature-dependence model (default=2)
## (1) visc=N0*exp(-T1*T) (Frank-Kamenetski)
## (2) visc=N0*exp{ (E+Z*z)/(T1*(T+T0)) } (Arrhenius)
## where z=depth
Material_0_viscN0=1e-2 ## N0 in viscosity models (default=1.0)
Material_0_viscT1=0.0 ## T1 in viscosity models (default=1.0)

## Thermal parameters
Material_0_therm_exp=0.0 ## thermal expansion coefficient (default=0.0)
Material_0_therm_diff=1e9 ## thermal diffusivity (default=0.0)
Material_0_Cp=1.0 ## isobaric heat capacity (default=1.0)
Material_0_Qt=0.0 ## internal heating rate by mass (default=0.0)

## Stress-strain relationship - ## YIELD PARAMATERS ##
## stress = visc * (strain rate)
## post-yield visc = (yield stress)/(strain rate)
## yield stress = max{ (B0 + Bz*z + Bp*p) * f(e,edot) , minimum yield stress }
## yield stress = min{ (B0 + Bz*z + Bp*p) * f(e,edot) , maximum yield stress }
## yield stress = yield stress * 0.001, if (-p) > Bc
## e=strain, z=depth, p=pressure
## f(e,edot) = decreasing power law for 0 < e < E0 and 0 < edot < Edot0
## = constant for e > E0 and edot > Edot0
## f(e,edot) = 1 - (1-Ea)*(e/E0)^En - (1-Edota)*(edot/Edot0)^Edotn

Material_0_yield_stress_minimum=1.e-32 ## minimum yield stress for plastic deformation (default=1.e-32)
Material_0_yield_stress_maximum=1.e32 ## maximum yield stress for semi-brittle effect (default=1.e32)
Material_0_yield_stress_B0=1.e32 ## "cohesion" B0 in above eqn (default=1.e32)

Upper Crust

#: Upper crust

## Novice
Material_1_density=2900 ## density (default=1.0)
Material_1_porosity=0.05 ## initial porosity (default=0.0)
## NB: initial porosity = 0 ensures that Bulk_visc is constant
Material_1_Bulk_visc=-1.e3 ## bulk visc ratio at initial porosity ( >1.0(2D), >2/3(3D) )
## bulk visc = ratio*visc (default=-1.0=infinite)
## div(v) + p/(bulk_visc-2/3*visc) = 0
Material_1_Bulk_modulus=0.0 ## B in dp = B*div(v)*dt (slightly compressible formulation)
## (default=0.0) where dp is on tracers (isotropic stress)

## Colouring
Material_1_Red=0.0,.7,.7 ## RGB values for "cold" material (list one per PPM file)
Material_1_Green=0.0,.6,.6 ## ("hot" and "cold" are determined from T extremes)
Material_1_Blue=2.0,.1,.1
Material_1_Opacity=1.4,1.4,1.4 ## opacity for "cold" material (negative=off)
Material_1_Red_hot=2.0,1,1 ## values for "hot" material
Material_1_Green_hot=0.0,0,0
Material_1_Blue_hot=0.0,0,0
Material_1_Opacity_hot=1.4,1.4,1.4
Material_1_Red_strained=0.0,1.0,0 ## values for strained material
Material_1_Green_strained=0.0,0.0,0
Material_1_Blue_strained=1.0,0.0,1
Material_1_Opacity_strained=1.4,0.4,1.4

## Advanced
Material_1_reproduction=on ## allow tracer reproduction (default=on)
Material_1_phases=1 ## number of unique phases (first phase is phase 0) (default=1)
## then visc = { sum(1/visc_n) }^(-1)
Material_1_T_block=-1.e32 ## (blocking) T above which phase change can occur (default=-1.e32)
Material_1_rheol_cpts=1 ## number of rheological components (at least one per phase) (default=1)
## then visc = { sum(1/visc_n) }^(-1)
Material_1_Trange_min=-1.e8 ## temperature range to which rheology applies
Material_1_Trange_max=1.e8 ## (default=-1.e8,1.e8)
Material_1_rheol_phase=0 ## phase to which each rheology applies (start from 0) (default=0)


## Rheological model
Material_1_rheol_T_type=1 ## rheological temperature-dependence model (default=2)
## (1) visc=N0*exp(-T1*T) (Frank-Kamenetski)
## (2) visc=N0*exp{ (E+Z*z)/(T1*(T+T0)) } (Arrhenius)
## where z=depth
Material_1_viscN0=1e5 ## N0 in viscosity models (default=1.0)
Material_1_viscT1=0.0 ## T1 in viscosity models (default=1.0)
Material_1_viscT0=0.0 ## T0 in Arhennius viscosity model (default=0.0)
Material_1_viscZ=0.0 ## Z in Arrhenius viscosity model (default=0.0)
Material_1_viscE=0.0 ## E in Arrhenius viscosity model (default=0.0)
Material_1_viscTmax=1.e32 ## maximum and minimum T to use in calculating viscosity
Material_1_viscTmin=0.0 ## (default=1.e32,0.0)
Material_1_sdepv_expt=1.0 ## exponent "s" in stress dependance of viscosity
## visc = edot^[(1-s)/s] * N0^(1/s) (default=1.0)

## Thermal parameters
Material_1_therm_exp=0.0 ## thermal expansion coefficient (default=0.0)
Material_1_therm_diff=1e-2 ## thermal diffusivity (default=0.0)
Material_1_Cp=1 ## isobaric heat capacity (default=1.0)
Material_1_Qt=10.0 ## internal heating rate by mass (default=0.0)

## Stress-strain relationship
## stress = visc * (strain rate)
## post-yield visc = (yield stress)/(strain rate)
## yield stress = max{ (B0 + Bz*z + Bp*p) * f(e,edot) , minimum yield stress }
## yield stress = min{ (B0 + Bz*z + Bp*p) * f(e,edot) , maximum yield stress }
## yield stress = yield stress * 0.001, if (-p) > Bc
## e=strain, z=depth, p=pressure
## f(e,edot) = decreasing power law for 0 < e < E0 and 0 < edot < Edot0
## = constant for e > E0 and edot > Edot0
## f(e,edot) = 1 - (1-Ea)*(e/E0)^En - (1-Edota)*(edot/Edot0)^Edotn

Material_1_yield_stress_minimum=1.e-32 ## minimum yield stress for plastic deformation (default=1.e-32)
Material_1_yield_stress_maximum=1.e32 ## maximum yield stress for semi-brittle effect (default=1.e32)
Material_1_yield_stress_B0=3e3 ## "cohesion" B0 in above eqn (default=1.e32)
Material_1_yield_stress_Bz=0.0 ## "friction coefficient" Bz in above eqn (default=0.0)
Material_1_yield_stress_Bp=0.2 ## "friction coefficient" Bp in above eqn (default=0.0)
Material_1_yield_stress_Bc=1.e32 ## tension cutoff Bc in above law (default=1.e32)
Material_1_yield_stress_Ea=0.2 ## ratio Ea = f(0,0)/f(E0,0) (default=1.0,range=[0,1])0
Material_1_yield_stress_E0=0.5 ## strain weakening E0 (default=1.e32)
Material_1_yield_stress_En=2.0 ## exponent En in f(e), e<E0 (default=0.0)
Material_1_yield_stress_Edota=1.0 ## ratio Edota = f(0,0)/f(0,Edot0) (default=1.0,range=[0,1])
Material_1_yield_stress_Edot0=0.0 ## strain rate weakening Edot0 (default=0.0)
Material_1_yield_stress_Edotn=0.0 ## exponent Edotn in f(e), edot<Edot0 (default=0.0)
Material_1_yield_stress_ET=1.e32 ## T above which strain weakening is reset (default=1.e32)
Material_1_yield_stress_E0dt=0.0 ## time rate of strain reduction (healing)
## de/dt = E0dt*e (default=0.0)

Lower Crust

#: Lower crust 

## Novice
Material_2_density=2800 ## density (default=1.0)
Material_2_Bulk_visc=-1.0 ## bulk visc ratio at initial porosity ( >1.0(2D), >2/3(3D) )
## bulk visc = ratio*visc (default=-1.0=infinite)
## div(v) + p/(bulk_visc-2/3*visc) = 0
Material_2_Bulk_modulus=0.0 ## B in dp = B*div(v)*dt (slightly compressible formulation)
## (default=0.0) where dp is on tracers (isotropic stress)
Material_2_porosity=0.05 ## initial porosity (default=0.0)
## NB: initial porosity = 0 ensures that Bulk_visc is constant
Material_2_Bulk_visc=-1.e3 ## bulk visc ratio at initial porosity ( >1.0(2D), >2/3(3D) )
## bulk visc = ratio*visc (default=-1.0=infinite)
## div(v) + p/(bulk_visc-2/3*visc) = 0
## Colouring
Material_2_Red=0.8,0.52,0.52 ## RGB values for "cold" material (list one per PPM file)
Material_2_Green=0.2,0.9,0.9 ## ("hot" and "cold" are determined from T extremes)
Material_2_Blue=0.0,1.5,1.5
Material_2_Opacity=1.4,1.4,1.4 ## opacity for "cold" material (negative=off)
Material_2_Red_hot=0.9,.52,.52 ## values for "hot" material
Material_2_Green_hot=0.1,.9,.9
Material_2_Blue_hot=0.0,1.5,1.5
Material_2_Opacity_hot=1.4,1.4,1.4
Material_2_Red_strained=0.52,.52,.52 ## values for strained material
Material_2_Green_strained=0.90,.9,.9
Material_2_Blue_strained=1.5,1.5,1.5
Material_2_Opacity_strained=1.4,1.4,1.4


## Advanced
Material_2_reproduction=on ## allow tracer reproduction (default=on)
Material_2_phases=1 ## number of unique phases (first phase is phase 0) (default=1)
## then visc = { sum(1/visc_n) }^(-1)
Material_2_T_block=-1.e32 ## (blocking) T above which phase change can occur (default=-1.e32)
Material_2_rheol_cpts=1 ## number of rheological components (at least one per phase) (default=1)
## then visc = { sum(1/visc_n) }^(-1)
Material_2_Trange_min=-1.e8 ## temperature range to which rheology applies
Material_2_Trange_max=1.e8 ## (default=-1.e8,1.e8)
Material_2_rheol_phase=0 ## phase to which each rheology applies (start from 0) (default=0)

## Rheological model
Material_2_rheol_T_type=1 ## rheological temperature-dependence model (default=2)
## (1) visc=N0*exp(-T1*T) (Frank-Kamenetski)
## (2) visc=N0*exp{ (E+Z*z)/(T1*(T+T0)) } (Arrhenius)
## where z=depth
Material_2_viscN0=10 ## N0 in viscosity models (default=1.0)
Material_2_viscT1=0.0 ## T1 in viscosity models (default=1.0)

## Thermal parameters
Material_2_therm_exp=0.0 ## thermal expansion coefficient (default=0.0)
Material_2_therm_diff=1 ## thermal diffusivity (default=0.0)
Material_2_Cp=1 ## isobaric heat capacity (default=1.0)
Material_2_Qt=0.0 ## internal heating rate by mass (default=0.0)

## Stress-strain relationship
## stress = visc * (strain rate)
## post-yield visc = (yield stress)/(strain rate)
## yield stress = max{ (B0 + Bz*z + Bp*p) * f(e,edot) , minimum yield stress }
## yield stress = min{ (B0 + Bz*z + Bp*p) * f(e,edot) , maximum yield stress }
## yield stress = yield stress * 0.001, if (-p) > Bc
## e=strain, z=depth, p=pressure
## f(e,edot) = decreasing power law for 0 < e < E0 and 0 < edot < Edot0
## = constant for e > E0 and edot > Edot0
## f(e,edot) = 1 - (1-Ea)*(e/E0)^En - (1-Edota)*(edot/Edot0)^Edotn

Material_2_yield_stress_minimum=1.e-32 ## minimum yield stress for plastic deformation (default=1.e-32)
Material_2_yield_stress_maximum=1.e32 ## maximum yield stress for semi-brittle effect (default=1.e32)
Material_2_yield_stress_B0=1.e32 ## "cohesion" B0 in above eqn (default=1.e32)

Upper Mantle

#: Upper mantle lithosphere

## Novice
Material_3_density=3200 ## density (default=1.0)
Material_3_porosity=0.00 ## initial porosity (default=0.0)
## NB: initial porosity = 0 ensures that Bulk_visc is constant
Material_3_Bulk_visc=-1.e3 ## bulk visc ratio at initial porosity ( >1.0(2D), >2/3(3D) )
## bulk visc = ratio*visc (default=-1.0=infinite)
## div(v) + p/(bulk_visc-2/3*visc) = 0
Material_3_Bulk_modulus=0.0 ## B in dp = B*div(v)*dt (slightly compressible formulation)
## (default=0.0) where dp is on tracers (isotropic stress)
## Colouring
Material_3_Red=0.0,0.8 ## RGB values for "cold" material (list one per PPM file)
Material_3_Green=0.0,0.8 ## ("hot" and "cold" are determined from T extremes)
Material_3_Blue=2.0,1.1
Material_3_Opacity=1.4,1.4 ## opacity for "cold" material (negative=off)
Material_3_Red_hot=2,1.1 ## values for "hot" material
Material_3_Green_hot=0,0.8
Material_3_Blue_hot=0,0.8
Material_3_Opacity_hot=1.4,1.4
Material_3_Red_strained=0,0 ## values for strained material
Material_3_Green_strained=0,0
Material_3_Blue_strained=1,1
Material_3_Opacity_strained=0.2,0.2,1.4

## Advanced
Material_3_reproduction=on ## allow tracer reproduction (default=on)
Material_3_phases=1 ## number of unique phases (first phase is phase 0) (default=1)
## then visc = { sum(1/visc_n) }^(-1)
Material_3_T_block=-1.e32 ## (blocking) T above which phase change can occur (default=-1.e32)
Material_3_rheol_cpts=1 ## number of rheological components (at least one per phase) (default=1)
## then visc = { sum(1/visc_n) }^(-1)
Material_3_Trange_min=-1.e8 ## temperature range to which rheology applies
Material_3_Trange_max=1.e8 ## (default=-1.e8,1.e8)
Material_3_rheol_phase=0 ## phase to which each rheology applies (start from 0) (default=0)

## Rheological model
Material_3_rheol_T_type=1 ## rheological temperature-dependence model (default=2)
## (1) visc=N0*exp(-T1*T) (Frank-Kamenetski)
## (2) visc=N0*exp{ (E+Z*z)/(T1*(T+T0)) } (Arrhenius)
## where z=depth
Material_3_viscN0=1e5 ## N0 in viscosity models (default=1.0)
Material_3_viscT1=0 ## T1 in viscosity models (default=1.0)
Material_3_viscT0=0.0 ## T0 in Arhennius viscosity model (default=0.0)
Material_3_viscZ=0.0 ## Z in Arrhenius viscosity model (default=0.0)
Material_3_viscE=0.0 ## E in Arrhenius viscosity model (default=0.0)
Material_3_viscTmax=1.e32 ## maximum and minimum T to use in calculating viscosity
Material_3_viscTmin=0.0 ## (default=1.e32,0.0)
Material_3_sdepv_expt=1.0 ## exponent "s" in stress dependance of viscosity
## visc = edot^[(1-s)/s] * N0^(1/s) (default=1.0)

## Thermal parameters
Material_3_therm_exp=0.0 ## thermal expansion coefficient (default=0.0)
Material_3_therm_diff=1e-2 ## thermal diffusivity (default=0.0)
Material_3_Cp=1 ## isobaric heat capacity (default=1.0)
Material_3_Qt=0.0 ## internal heating rate by mass (default=0.0)

## Stress-strain relationship
## stress = visc * (strain rate)
## post-yield visc = (yield stress)/(strain rate)
## yield stress = max{ (B0 + Bz*z + Bp*p) * f(e,edot) , minimum yield stress }
## yield stress = min{ (B0 + Bz*z + Bp*p) * f(e,edot) , maximum yield stress }
## yield stress = yield stress * 0.001, if (-p) > Bc
## e=strain, z=depth, p=pressure
## f(e,edot) = decreasing power law for 0 < e < E0 and 0 < edot < Edot0
## = constant for e > E0 and edot > Edot0
## f(e,edot) = 1 - (1-Ea)*(e/E0)^En - (1-Edota)*(edot/Edot0)^Edotn

Material_3_yield_stress_minimum=1.e-32 ## minimum yield stress for plastic deformation (default=1.e-32)
Material_3_yield_stress_maximum=1.e32 ## maximum yield stress for semi-brittle effect (default=1.e32)
Material_3_yield_stress_B0=1e3 ## "cohesion" B0 in above eqn (default=1.e32)
Material_3_yield_stress_Bz=0.0 ## "friction coefficient" Bz in above eqn (default=0.0)
Material_3_yield_stress_Bp=0.2 ## "friction coefficient" Bp in above eqn (default=0.0)
Material_3_yield_stress_Bc=1.e32 ## tension cutoff Bc in above law (default=1.e32)
Material_3_yield_stress_Ea=0.2 ## ratio Ea = f(0,0)/f(E0,0) (default=1.0,range=[0,1])0
Material_3_yield_stress_E0=0.5 ## strain weakening E0 (default=1.e32)
Material_3_yield_stress_En=2.0 ## exponent En in f(e), e<E0 (default=0.0)
Material_3_yield_stress_Edota=1.0 ## ratio Edota = f(0,0)/f(0,Edot0) (default=1.0,range=[0,1])
Material_3_yield_stress_Edot0=0.0 ## strain rate weakening Edot0 (default=0.0)
Material_3_yield_stress_Edotn=0.0 ## exponent Edotn in f(e), edot<Edot0 (default=0.0)
Material_3_yield_stress_ET=1.e32 ## T above which strain weakening is reset (default=1.e32)
Material_3_yield_stress_E0dt=0.0 ## time rate of strain reduction (healing)
## de/dt = E0dt*e (default=0.0)

Asthenosphere

#: Asthenosphere

## Novice
Material_4_density=3200 ## density (default=1.0)
Material_4_Bulk_visc=-1.0 ## bulk visc ratio at initial porosity ( >1.0(2D), >2/3(3D) )
## bulk visc = ratio*visc (default=-1.0=infinite)
## div(v) + p/(bulk_visc-2/3*visc) = 0
Material_4_Bulk_modulus=0.0 ## B in dp = B*div(v)*dt (slightly compressible formulation)
## (default=0.0) where dp is on tracers (isotropic stress)
Material_4_porosity=0.0 ## initial porosity (default=0.0)
## NB: initial porosity = 0 ensures that Bulk_visc is constant

## Colouring
Material_4_Red=0.0,1.0,0.52 ## RGB values for "cold" material (list one per PPM file) ## EACH COLUMN IS FOR DIFFERENT FILES
Material_4_Green=0.0,0.0,0.9 ## ("hot" and "cold" are determined from T extremes)
Material_4_Blue=2.0,0.0,1.5
Material_4_Opacity=1.4,1.4,1.4 ## opacity for "cold" material (negative=off)
Material_4_Red_hot=2.0,1.0,.52 ## values for "hot" material
Material_4_Green_hot=0.0,1.0,.9
Material_4_Blue_hot=0.0,0.0,1.5
Material_4_Opacity_hot=1.4,1.4,1.4
Material_4_Red_strained=0.52,.52,.52 ## values for strained material
Material_4_Green_strained=0.90,.9,.9
Material_4_Blue_strained=1.5,1.5,1.5
Material_4_Opacity_strained=1.4,1.4,1.4


## Advanced
Material_4_reproduction=on ## allow tracer reproduction (default=on)
Material_4_phases=1 ## number of unique phases (first phase is phase 0) (default=1)
## then visc = { sum(1/visc_n) }^(-1)
Material_4_T_block=-1.e32 ## (blocking) T above which phase change can occur (default=-1.e32)
Material_4_rheol_cpts=1 ## number of rheological components (at least one per phase) (default=1)
## then visc = { sum(1/visc_n) }^(-1)
Material_4_Trange_min=-1.e8 ## temperature range to which rheology applies
Material_4_Trange_max=1.e8 ## (default=-1.e8,1.e8)
Material_4_rheol_phase=0 ## phase to which each rheology applies (start from 0) (default=0)

## Rheological model
Material_4_rheol_T_type=1 ## rheological temperature-dependence model (default=2)
## (1) visc=N0*exp(-T1*T) (Frank-Kamenetski)
## (2) visc=N0*exp{ (E+Z*z)/(T1*(T+T0)) } (Arrhenius)
## where z=depth
Material_4_viscN0=1000 ## N0 in viscosity models (default=1.0)
Material_4_viscT1=0.0 ## T1 in viscosity models (default=1.0)

## Thermal parameters
Material_4_therm_exp=1.0 ## thermal expansion coefficient (default=0.0)
Material_4_therm_diff=1 ## thermal diffusivity (default=0.0)
Material_4_Cp=1 ## isobaric heat capacity (default=1.0)
Material_4_Qt=1.0 ## internal heating rate by mass (default=0.0)

Material_4_depl_T_type=1 ##Depletion model, 1=pressure, 2=depth
Material_4_depl_exp=0.0 ##Density change of depleted material

Material_4_sp0=0.6 ## Solidus of material, based on third order
Material_4_sp1=2e-5 ## polynomial fit of data:
Material_4_sp2=0.0 ## s=sp0+sp1*p+sp2*p^2+sp3*p^3
Material_4_sp3=0.0

Material_4_lp0=0.75 ##Liquidus, defined same way
Material_4_lp1=2e-5
Material_4_lp2=0.0
Material_4_lp3=0.0

## Stress-strain relationship
## stress = visc * (strain rate)
## post-yield visc = (yield stress)/(strain rate)
## yield stress = max{ (B0 + Bz*z + Bp*p) * f(e,edot) , minimum yield stress }
## yield stress = min{ (B0 + Bz*z + Bp*p) * f(e,edot) , maximum yield stress }
## yield stress = yield stress * 0.001, if (-p) > Bc
## e=strain, z=depth, p=pressure
## f(e,edot) = decreasing power law for 0 < e < E0 and 0 < edot < Edot0
## = constant for e > E0 and edot > Edot0
## f(e,edot) = 1 - (1-Ea)*(e/E0)^En - (1-Edota)*(edot/Edot0)^Edotn

Material_4_yield_stress_minimum=1.e-32 ## minimum yield stress for plastic deformation (default=1.e-32)
Material_4_yield_stress_maximum=1.e32 ## maximum yield stress for semi-brittle effect (default=1.e32)
Material_4_yield_stress_B0=1.e32 ## "cohesion" B0 in above eqn (default=1.e32)