[cig-commits] r20400 - in short/3D/PyLith/branches/v1.7-stable/doc/userguide: boundaryconditions extending tutorials/3dhex8/friction tutorials/3dhex8/surfload

sue at geodynamics.org sue at geodynamics.org
Fri Jun 22 21:42:42 PDT 2012


Author: sue
Date: 2012-06-22 21:42:41 -0700 (Fri, 22 Jun 2012)
New Revision: 20400

Modified:
   short/3D/PyLith/branches/v1.7-stable/doc/userguide/boundaryconditions/boundaryconditions.lyx
   short/3D/PyLith/branches/v1.7-stable/doc/userguide/extending/extending.lyx
   short/3D/PyLith/branches/v1.7-stable/doc/userguide/tutorials/3dhex8/friction/friction.lyx
   short/3D/PyLith/branches/v1.7-stable/doc/userguide/tutorials/3dhex8/surfload/surfload.lyx
Log:


Modified: short/3D/PyLith/branches/v1.7-stable/doc/userguide/boundaryconditions/boundaryconditions.lyx
===================================================================
--- short/3D/PyLith/branches/v1.7-stable/doc/userguide/boundaryconditions/boundaryconditions.lyx	2012-06-22 20:32:34 UTC (rev 20399)
+++ short/3D/PyLith/branches/v1.7-stable/doc/userguide/boundaryconditions/boundaryconditions.lyx	2012-06-23 04:42:41 UTC (rev 20400)
@@ -1,7860 +1,7860 @@
-#LyX 2.0 created this file. For more info see http://www.lyx.org/
-\lyxformat 413
-\begin_document
-\begin_header
-\textclass book
-\use_default_options false
-\maintain_unincluded_children false
-\language english
-\language_package default
-\inputencoding auto
-\fontencoding global
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_default_family default
-\use_non_tex_fonts false
-\font_sc false
-\font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
-
-\graphics default
-\default_output_format default
-\output_sync 0
-\bibtex_command default
-\index_command default
-\paperfontsize default
-\spacing single
-\use_hyperref false
-\papersize default
-\use_geometry true
-\use_amsmath 1
-\use_esint 0
-\use_mhchem 1
-\use_mathdots 1
-\cite_engine basic
-\use_bibtopic false
-\use_indices false
-\paperorientation portrait
-\suppress_date false
-\use_refstyle 0
-\index Index
-\shortcut idx
-\color #008000
-\end_index
-\leftmargin 1in
-\topmargin 1in
-\rightmargin 1in
-\bottommargin 1in
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\paragraph_indentation default
-\quotes_language english
-\papercolumns 1
-\papersides 1
-\paperpagestyle default
-\tracking_changes false
-\output_changes false
-\html_math_output 0
-\html_css_as_file 0
-\html_be_strict false
-\end_header
-
-\begin_body
-
-\begin_layout Chapter
-\begin_inset CommandInset label
-LatexCommand label
-name "cha:boundary:interface:conditions"
-
-\end_inset
-
-Boundary and Interface Conditions
-\end_layout
-
-\begin_layout Section
-Assigning Boundary Conditions
-\end_layout
-
-\begin_layout Standard
-There are four basic steps in assigning a specific boundary condition to
- a portion of the domain.
-\end_layout
-
-\begin_layout Enumerate
-Create sets of vertices in the mesh generation process for each boundary
- condition.
-\end_layout
-
-\begin_layout Enumerate
-Define boundary condition groups corresponding to the vertex sets.
-\end_layout
-
-\begin_layout Enumerate
-Set the parameters for each boundary condition group using 
-\family typewriter
-.cfg
-\family default
- or 
-\family typewriter
-.pml
-\family default
- files and/or command line arguments.
-\end_layout
-
-\begin_layout Enumerate
-Specify the spatial variation in parameters for the boundary condition using
- a spatial database file.
-\end_layout
-
-\begin_layout Subsection
-Creating Sets of Vertices
-\end_layout
-
-\begin_layout Standard
-The procedure for creating sets of vertices differs depending on the mesh
- generator.
- For meshes specified using the PyLith mesh ASCII format, the sets of vertices
- are specified using groups (see Appendix 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:MeshIOAscii"
-
-\end_inset
-
-).
- In CUBIT the groups of vertices are created using nodesets.
- Similarly, in LaGriT, psets are used.
- Note that we chose to associated boundary conditions with groups of vertices
- because nearly every mesh generation package supports associating a string
- or integer with groups of vertices.
- Note also that we currently associate boundary conditions with string identifie
-rs, so even if the mesh generator uses integers, the name is specified as
- the digits of the integer value.
- Finally, note that every vertex set that ultimately is associated with
- a boundary condition on a cell face (e.g., Neumann boundary conditions and
- fault interface conditions) must correspond to a simply-connected surface.
-\end_layout
-
-\begin_layout Subsection
-Arrays of Boundary Condition Components
-\end_layout
-
-\begin_layout Standard
-A dynamic array of boundary condition components associates a name (string)
- with each boundary condition.
- This dynamic array of boundary conditions replaces the boundary condition
- container in PyLith 1.0.
- User-defined containers are no longer necessary, and the predefined containers
- are no longer available (or necessary).
- The default boundary condition for each component in the array is the Dirichlet
-Points object.
- Other boundary conditions can be bound to the named items in the array
- via a 
-\family typewriter
-.cfg
-\family default
- file, 
-\family typewriter
-.pml
-\family default
- file, or the command line.
- The parameters for the boundary condition are set using the name of the
- boundary condition.
- An example of setting the array of boundary condition components and changing
- the types of boundary conditions in a 
-\family typewriter
-.cfg
-\family default
- file:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem]
-\end_layout
-
-\begin_layout LyX-Code
-bc = [x_neg,x_pos,y_pos,z_neg] ; Array of boundary conditions
-\end_layout
-
-\begin_layout LyX-Code
-# Default boundary condition is DirichletPoints
-\end_layout
-
-\begin_layout LyX-Code
-# Keep default value for bc.x_neg
-\end_layout
-
-\begin_layout LyX-Code
-bc.x_pos = pylith.bc.DirichletBoundary ; change BC type to DirichletBoundary
-\end_layout
-
-\begin_layout LyX-Code
-bc.y_pos = pylith.bc.AbsorbingDampers ; change BC type to AbsorbingDampers
-\end_layout
-
-\begin_layout LyX-Code
-bc.z_neg = pylith.bc.Neumann ; change BC type to Neumann (traction)
-\end_layout
-
-\begin_layout Section
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:Time:Dependent:BC"
-
-\end_inset
-
-Time-Dependent Boundary Conditions
-\end_layout
-
-\begin_layout Standard
-Several boundary conditions use a common formulation for the spatial and
- temporal variation of the boundary condition parameters,
-\begin_inset Formula 
-\begin{equation}
-f(\vec{x})=f_{0}(\vec{x})+\dot{f}_{0}(\vec{x})(t-t_{0}(\vec{x}))+f_{1}(\vec{x})a(t-t_{1}(\vec{x})),
-\end{equation}
-
-\end_inset
-
-where 
-\begin_inset Formula $f(\vec{x})$
-\end_inset
-
- may be a scalar or vector parameter, 
-\begin_inset Formula $f_{0}(\vec{x})$
-\end_inset
-
- is a constant value, 
-\begin_inset Formula $\dot{f}_{0}(\vec{x})$
-\end_inset
-
- is a constant rate of change in the value, 
-\begin_inset Formula $t_{0}(\vec{x})$
-\end_inset
-
- is the onset time for the constant rate of change, 
-\begin_inset Formula $f_{1}(\vec{x})$
-\end_inset
-
- is the amplitude for the temporal modulation, 
-\begin_inset Formula $a(t)$
-\end_inset
-
- is the variation in amplitude with time, 
-\begin_inset Formula $t_{1}(\vec{x})$
-\end_inset
-
- is the onset time for the temporal modulation, and 
-\begin_inset Formula $\vec{x}$
-\end_inset
-
- is the position of a location in space.
- This common formulation permits easy specification of a scalar or vector
- with a constant value, constant rate of change of a value, and/or modulation
- of a value in time.
- One can specify just the initial value, just the rate of change of the
- value (along with the corresponding onset time), or just the modulation
- in amplitude (along with the corresponding temporal variation and onset
- time), or any combination of the three.
- The facilities associated with this formulation are:
-\end_layout
-
-\begin_layout Description
-db_initial Spatial database specifying the spatial variation in the initial
- value (default is none).
-\end_layout
-
-\begin_layout Description
-db_rate Spatial database specifying rate of change in the value (default
- is none).
-\end_layout
-
-\begin_layout Description
-db_change Spatial database specifying the amplitude of the temporal modulation
- (default is none).
-\end_layout
-
-\begin_layout Description
-th_change Time history database specifying the temporal change in amplitude
- (default is none).
-\end_layout
-
-\begin_layout Subsection
-Dirichlet Boundary Conditions
-\end_layout
-
-\begin_layout Standard
-Dirichlet boundary conditions in PyLith prescribe the displacement of a
- subset of the vertices of the finite-element mesh.
- While Dirichlet boundary conditions can be applied to any vertex, usually
- they are applied to vertices on the lateral and bottom boundaries of the
- domain.
- There are two types of Dirichlet boundary conditions, DirichletBC and Dirichlet
-Boundary.
- Both provide identical constraints on the solution, but DirichletBoundary
- is limited to vertices of a simply-connected surface, which allows diagnostic
- output of the prescribed displacements.
- DirichletBC can be applied to a set of unconnected vertices.
-\end_layout
-
-\begin_layout Subsubsection
-Dirichlet Boundary Condition Parameters
-\end_layout
-
-\begin_layout Standard
-The properties and components common to both the DirichletPoints and DirichletBo
-undary boundary conditions are:
-\end_layout
-
-\begin_layout Description
-label Label of the group of vertices associated with the boundary condition.
-\end_layout
-
-\begin_layout Description
-bc_dof Array of degrees of freedom to be fixed (first degree of freedom
- is 0).
-\end_layout
-
-\begin_layout Standard
-DirichletBoundary contains an additional component:
-\end_layout
-
-\begin_layout Description
-output Manager for output of displacements on boundary with specified displaceme
-nts.
-\end_layout
-
-\begin_layout Standard
-By default the output manager does not output any information.
- The specified displacements and velocities can be output by including ``displac
-ements'' and ``velocities'' in the output manager's 
-\family typewriter
-vertex_info_fields
-\family default
- array parameter.
- An example of setting the Dirichlet boundary condition parameters in a
- 
-\family typewriter
-.cfg
-\family default
- file is:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem]
-\end_layout
-
-\begin_layout LyX-Code
-bc = [mybc]
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.bc.mybc]
-\end_layout
-
-\begin_layout LyX-Code
-label = group A 
-\end_layout
-
-\begin_layout LyX-Code
-bc_dof = [2] ; fixed displacement in z direction
-\end_layout
-
-\begin_layout LyX-Code
-db_initial = spatialdata.spatialdb.SimpleDB
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.iohandler.filename = disp_A.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.query_type = nearest ; change query type to nearest point algorithm
-\end_layout
-
-\begin_layout LyX-Code
-db_rate = spatialdata.spatialdb.UniformDB
-\end_layout
-
-\begin_layout LyX-Code
-db_rate.values = [displacement-rate-z]
-\end_layout
-
-\begin_layout LyX-Code
-db_rate.data = [1.0e-06*m/s] ; velocity is 1.0e-06 m/s
-\end_layout
-
-\begin_layout Standard
-We have created an array with one boundary condition, mybc.
- The group of vertices associated with the boundary condition is group A.
- For the database associated with the constant displacement, we use a SimpleDB.
- We set the filename and query type for the database.
- For the rate of change of values, we use a UniformDB and specify the velocity
- in the z-direction to be 1.0e-06 m/s.
- See Section 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:spatial:databases"
-
-\end_inset
-
- for a discussion of the different types of spatial databases available.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:dirichlet:output"
-
-\end_inset
-
-Fields available in output of DirichletBoundary boundary condition information.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="6" columns="3">
-<features tabularvalignment="middle">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="3in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Field Type
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Field
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-vertex_info_fields
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-displacement_initial
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Initial displacement field in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-velocity
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Rate of change of displacement field in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-velocity_start_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Onset time in seconds for rate of change in displacement field
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-displacement_change
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Amplitude of change in displacement field in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-change_start_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Onset time in seconds for the amplitude change in the displacement field
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsubsection
-Dirichlet Boundary Condition Spatial Database Files
-\end_layout
-
-\begin_layout Standard
-The spatial database files for the Dirichlet boundary condition specify
- the fixed displacements.
- The spatial database file may contain displacements at more degrees of
- freedom than those specified in the Dirichlet boundary condition settings
- using the 
-\family typewriter
-bc_dof
-\family default
- setting.
- Only those listed in 
-\family typewriter
-bc_dof
-\family default
- will be used.
- This permits using the same spatial database file for multiple Dirichlet
- boundary conditions with the same displacement field.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-Values in the spatial databases used for Dirichlet boundary conditions.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="4" columns="2">
-<features tabularvalignment="middle">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="4in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Spatial database
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Name in Spatial Database
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_initial
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-displacement-x, displacement-y, displacement-z
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_rate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-displacement-rate-x, displacement-rate-y, displacement-rate-z, rate-start-time
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_change
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-displacement-x, displacement-y, displacement-z, change-start-time
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsection
-Neumann Boundary Conditions
-\end_layout
-
-\begin_layout Standard
-Neumann boundary conditions are surface tractions applied over a subset
- of the mesh.
- As with the DirichletBoundary condition, each Neumann boundary condition
- can only be applied to a simply-connected surface.
- The surface over which the tractions are applied always has a spatial dimension
- that is one less than the dimension of the finite-element mesh.
- Traction values are computed at the integration points of each cell on
- the surface, using values from a spatial database.
- The tractions are integrated over each cell and assembled to obtain the
- forces applied at the vertices.
- See Section 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sub:Tutorial-twoquad4-traction"
-
-\end_inset
-
- for a tutorial that uses Neumann boundary conditions.
-\end_layout
-
-\begin_layout Subsubsection
-Neumann Boundary Condition Parameters
-\end_layout
-
-\begin_layout Standard
-The Neumann boundary condition properties and components are:
-\end_layout
-
-\begin_layout Description
-label Name of the group of vertices defining the mesh boundary for the Neumann
- boundary condition.
-\end_layout
-
-\begin_layout Description
-up_dir This is a 3-vector that provides a hint for the direction perpendicular
- to the horizontal tangent direction that is not collinear with the direction
- normal to the surface.
- The default value is (0,0,1), which assumes that the z-axis is positive
- upward.
- This vector is only needed for three-dimensional problems where the positive
- upward direction differs from the default.
-\end_layout
-
-\begin_layout Description
-output The output manager associated with diagnostic output (traction vector).
-\end_layout
-
-\begin_layout Description
-quadrature The quadrature object to be used for numerical integration.
- Since we are integrating over a surface that is one dimension lower than
- the problem domain, this would typically be set to something like 
-\family typewriter
-Quadrature2Din3D
-\family default
- (for a three-dimensional problem).
-\end_layout
-
-\begin_layout Standard
-By default the output manager does not output any information.
- The specified tractions can be output in global coordinates by including
- ``tractions'' in the output manager's 
-\family typewriter
-cell_info_fields
-\family default
- array parameter.
- An example of setting these parameters in a 
-\family typewriter
-.cfg
-\family default
- file is:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent]
-\end_layout
-
-\begin_layout LyX-Code
-bc = [x_neg,x_pos,y_neg]
-\end_layout
-
-\begin_layout LyX-Code
-bc.x_pos = pylith.bc.Neumann ; Change BC type to Neumann
-\end_layout
-
-\begin_layout LyX-Code
- 
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.bc.x_pos]
-\end_layout
-
-\begin_layout LyX-Code
-label = x_pos ; Name of group of vertices for +x boundary
-\end_layout
-
-\begin_layout LyX-Code
-db_initial = spatialdata.spatialdb.SimpleDB
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.label = Neumann BC +x edge
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.iohandler.filename = axialtract.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.query_type = nearest
-\end_layout
-
-\begin_layout LyX-Code
-quadrature.cell = pylith.feassemble.FIATLagrange
-\end_layout
-
-\begin_layout LyX-Code
-quadrature.cell.dimension = 1
-\end_layout
-
-\begin_layout LyX-Code
-quadrature.cell.quad_order = 2
-\end_layout
-
-\begin_layout Standard
-These settings correspond to the example problem described in Section 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sub:Tutorial-twoquad4-traction"
-
-\end_inset
-
-.
- It is necessary to set the boundary condition type to 
-\family typewriter
-pylith.bc.Neumann
-\family default
-, since the default value is 
-\family typewriter
-Dirichlet
-\family default
-BC.
- Constant tractions are used for this particular problem, so a quadrature
- order of one would have been sufficient; however, for problems involving
- more complex variations (e.g., a linear variation), a quadrature order of
- two will provide more accurate results.
- Note that there is no advantage to specifying an integration order higher
- than two, since linear elements are being used for this problem.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:neumann:output"
-
-\end_inset
-
-Fields available in output of Neumann boundary condition information.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="6" columns="3">
-<features tabularvalignment="middle">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="3in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Field Type
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Field
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-cell_info_fields
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-tracton_initial
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Initial traction field in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction_rate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Rate of change of traction field in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-rate_start_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Onset time in seconds for rate of change in traction field
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction_change
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Amplitude of change in traction field in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-change_start_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Onset time in seconds for the amplitude change in the traction field
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsubsection
-Neumann Boundary Condition Spatial Database Files
-\end_layout
-
-\begin_layout Standard
-The spatial database files for the Neumann boundary condition specify the
- applied tractions.
- The number of traction components is equal to the spatial dimension for
- the problem.
- The tractions are specified in a local coordinate system for the boundary.
- The names of the components of the traction vector are:
-\end_layout
-
-\begin_layout Description
-one-dimensional 
-\family typewriter
-normal
-\end_layout
-
-\begin_layout Description
-two-dimensional 
-\family typewriter
-shear
-\family default
-, 
-\family typewriter
-normal
-\end_layout
-
-\begin_layout Description
-three-dimensional 
-\family typewriter
-horiz-shear
-\family default
-, 
-\family typewriter
-vert-shear
-\family default
-, 
-\family typewriter
-normal
-\end_layout
-
-\begin_layout Standard
-Ambiguities in specifying the shear tractions in 3D problems are resolved
- using the 
-\family typewriter
-up_dir
-\family default
- parameter.
- In the case of a horizontal surface, users will need to pick an alternative
- vector, as the default 
-\family typewriter
-up_dir
-\family default
- would coincide with the normal direction.
- In this case, the orientation for the 
-\family typewriter
-vert-shear-traction
-\family default
- component will correspond to whatever the user specifies for 
-\family typewriter
-up_dir
-\family default
-, rather than the actual vertical direction.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-Values in the spatial databases used for Dirichlet boundary conditions in
- three dimensions.
- In one- and two-dimensional problems, the names of the components are slightly
- different as described earlier in this section.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="4" columns="2">
-<features tabularvalignment="middle">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="4in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Spatial database
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Name in Spatial Database
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_initial
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-shear-horiz, traction-shear-vert, traction-normal
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_rate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-rate-horiz-shear, traction-rate-vert-shear, traction-rate-normal,
- rate-start-time
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_change
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-horiz-shear, traction-vert-shear, traction-normal, change-start-time
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsection
-Point Force Boundary Conditions
-\end_layout
-
-\begin_layout Standard
-Point force boundary conditions in PyLith prescribe the application of point
- forces to a subset of the vertices of the finite-element mesh.
- While point force boundary conditions can be applied to any vertex, usually
- they are applied to vertices on the lateral, top, and bottom boundaries
- of the domain.
-\end_layout
-
-\begin_layout Subsubsection
-Point Force Parameters
-\end_layout
-
-\begin_layout Standard
-The properties and components common to both the DirichletBC and DirichletBounda
-ry boundary conditions are:
-\end_layout
-
-\begin_layout Description
-label Label of the group of vertices associated with the boundary condition.
-\end_layout
-
-\begin_layout Description
-bc_dof Array of degrees of freedom to which forces are applied (first degree
- of freedom is 0).
-\end_layout
-
-\begin_layout Standard
-An example of setting the point force boundary condition parameters in a
- 
-\family typewriter
-.cfg
-\family default
- file is:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem]
-\end_layout
-
-\begin_layout LyX-Code
-bc = [mybc]
-\end_layout
-
-\begin_layout LyX-Code
-bc.mybc = pylith.bc.PointForce
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.bc.mybc]
-\end_layout
-
-\begin_layout LyX-Code
-label = group A 
-\end_layout
-
-\begin_layout LyX-Code
-bc_dof = [2] ; fixed displacement in z direction
-\end_layout
-
-\begin_layout LyX-Code
-db_initial = spatialdata.spatialdb.SimpleDB
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.iohandler.filename = force_A.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.query_type = nearest ; change query type to nearest point algorithm
-\end_layout
-
-\begin_layout LyX-Code
-db_rate = spatialdata.spatialdb.UniformDB
-\end_layout
-
-\begin_layout LyX-Code
-db_rate.values = [force-rate-z]
-\end_layout
-
-\begin_layout LyX-Code
-db_rate.data = [1.0e+5*newton/s]
-\end_layout
-
-\begin_layout Standard
-We have created an array with one boundary condition, mybc.
- The group of vertices associated with the boundary condition is group A.
- For the database associated with the constant force, we use a SimpleDB.
- We set the filename and query type for the database.
- For the rate of change of values, we use a UniformDB and specify the rate
- of change in the force to be 1.0e+5 Newton/s.
- See Section 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:spatial:databases"
-
-\end_inset
-
- for a discussion of the different types of spatial databases available.
-\end_layout
-
-\begin_layout Subsubsection
-Point Force Spatial Database Files
-\end_layout
-
-\begin_layout Standard
-The spatial database files for the Dirichlet boundary condition specify
- the fixed displacements.
- The spatial database file may contain displacements at more degrees of
- freedom than those specified in the Dirichlet boundary condition settings
- using the 
-\family typewriter
-bc_dof
-\family default
- setting.
- Only those listed in 
-\family typewriter
-bc_dof
-\family default
- will be used.
- This permits using the same spatial database file for multiple Dirichlet
- boundary conditions with the same displacement field.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-Values in the spatial databases used for point force boundary conditions.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="4" columns="2">
-<features tabularvalignment="middle">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="4in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Spatial database
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Name in Spatial Database
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_initial
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-force-x, force-y, force-z
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_rate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-force-rate-x, force-rate-y, force-rate-z, rate-start-time
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_change
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-force-x, force-y, force-z, change-start-time
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:absorbing:boundaries"
-
-\end_inset
-
-Absorbing Boundary Conditions
-\end_layout
-
-\begin_layout Standard
-This boundary condition attempts to prevent seismic waves reflecting off
- of a boundary by placing simple dashpots on the boundary.
- Normally incident dilatational and shear waves are perfectly absorbed.
- Waves incident at other angles are only partially absorbed.
- This boundary condition is simpler than a perfectly matched layer (PML)
- boundary condition but does not perform quite as well, especially for surface
- waves.
- If the waves arriving at the absorbing boundary are relatively small in
- amplitude compared to the amplitudes of primary interest, this boundary
- condition gives reasonable results.
-\end_layout
-
-\begin_layout Standard
-The Absorbing boundary condition properties and components are:
-\end_layout
-
-\begin_layout Description
-label Name of the group of vertices defining the mesh boundary for the absorbing
- boundary condition.
-\end_layout
-
-\begin_layout Description
-up_dir This is a 3-vector that provides a hint for the direction perpendicular
- to the horizontal tangent direction that is not collinear with the direction
- normal to the surface.
- The default value is (0,0,1), which assumes that the z-axis is positive
- upward.
- This vector is only needed for three-dimensional problems where the positive
- upward direction differs from the default.
-\end_layout
-
-\begin_layout Description
-db The spatial database specifying the material properties for the seismic
- velocities.
-\end_layout
-
-\begin_layout Description
-quadrature The quadrature object to be used for numerical integration.
- Since we are integrating over a surface that is one dimension lower than
- the problem domain, this would typically be set to something like 
-\family typewriter
-Quadrature2Din3D
-\family default
- (for a three-dimensional problem).
-\end_layout
-
-\begin_layout Subsection
-Finite-Element Implementation of Absorbing Boundary
-\end_layout
-
-\begin_layout Standard
-Consider a plane wave propagating at a velocity 
-\begin_inset Formula $c$
-\end_inset
-
-.
- We can write the displacement field as
-\begin_inset Formula 
-\begin{equation}
-\vec{u}(\vec{x},t)=\vec{u^{t}}(t-\frac{\vec{x}}{c}),
-\end{equation}
-
-\end_inset
-
-where 
-\begin_inset Formula $\vec{x}$
-\end_inset
-
- is position, 
-\begin_inset Formula $t$
-\end_inset
-
- is time, and 
-\begin_inset Formula $\vec{u^{t}}$
-\end_inset
-
- is the shape of the propagating wave.
- For an absorbing boundary we want the traction on the boundary to be equal
- to the traction associated with wave propagating out of the domain.
- Starting with the expression for the traction on a boundary, 
-\begin_inset Formula $T_{i}=\sigma_{ij}n_{j},$
-\end_inset
-
- and using the local coordinate system for the boundary 
-\begin_inset Formula $s_{h}s_{v}n,$
-\end_inset
-
- where 
-\begin_inset Formula $\vec{n}$
-\end_inset
-
- is the direction normal to the boundary, 
-\begin_inset Formula $\overrightarrow{s}_{h}$
-\end_inset
-
- is the horizontal direction tangent to the boundary, and 
-\begin_inset Formula $\overrightarrow{s}_{v}$
-\end_inset
-
- is the vertical direction tangent to the boundary, the tractions on the
- boundary are
-\begin_inset Formula 
-\begin{gather}
-T_{s_{h}}=\sigma_{s_{h}n}\\
-T_{s_{v}}=\sigma_{s_{v}n}\\
-T_{n}=\sigma_{nn}.
-\end{gather}
-
-\end_inset
-
-In the case of a horizontal boundary, we can define an auxiliary direction
- in order to assign unique tangential directions.
- For a linear elastic isotropic material, 
-\begin_inset Formula $\sigma_{ij}=\lambda\epsilon_{kk}\delta_{ij}+2\mu\epsilon_{ij},$
-\end_inset
-
- and we can write the tractions as 
-\begin_inset Formula 
-\begin{gather}
-T_{s_{h}}=2\mu\epsilon_{s_{h}n}\\
-T_{s_{v}}=2\epsilon_{s_{v}n}\\
-T_{n}=(\lambda+2\mu)\epsilon_{nn}+\lambda(\epsilon_{s_{h}s_{h}}+\epsilon_{s_{v}s_{v}}).
-\end{gather}
-
-\end_inset
-
-For infinitesimal strains, 
-\begin_inset Formula $\epsilon_{ij}=\frac{1}{2}(u_{i,j}+u_{j,i})$
-\end_inset
-
- and we have
-\begin_inset Formula 
-\begin{gather}
-\epsilon_{s_{h}n}=\frac{1}{2}(u_{s_{h},n}+u_{n,s_{h}})\\
-\epsilon_{s_{v}n}=\frac{1}{2}(u_{s_{v},n}+u_{n,s_{v}})\\
-\epsilon_{nn}=u_{n,n}.
-\end{gather}
-
-\end_inset
-
-For our propagating plane wave, we recognize that
-\begin_inset Formula 
-\begin{equation}
-\frac{\partial\vec{u^{t}}(t-\frac{\vec{x}}{c})}{\partial x_{i}}=-\frac{1}{c}\frac{\partial\vec{u^{t}}(t-\frac{\vec{x}}{c})}{\partial t},
-\end{equation}
-
-\end_inset
-
-so that our expressions for the tractions become
-\begin_inset Formula 
-\begin{gather}
-T_{s_{h}}=-\frac{\mu}{c}\left(\frac{\partial u_{s_{h}}^{t}(t-\frac{\vec{x}}{c})}{\partial t}+\frac{\partial u_{n}^{t}(t-\frac{\vec{x}}{c})}{\partial t}\right),\\
-T_{s_{v}}=-\frac{\mu}{c}\left(\frac{\partial u_{s_{v}}^{t}(t-\frac{\vec{x}}{c})}{\partial t}+\frac{\partial u_{n}^{t}(t-\frac{\vec{x}}{c})}{\partial t}\right).
-\end{gather}
-
-\end_inset
-
-For the normal traction, consider a dilatational wave propagating normal
- to the boundary at speed 
-\begin_inset Formula $v_{p}$
-\end_inset
-
-; in this case 
-\begin_inset Formula $u_{s_{h}}=u_{s_{v}}=0$
-\end_inset
-
- and 
-\begin_inset Formula $c=v_{p}$
-\end_inset
-
-.
- For the shear tractions, consider a shear wave propagating normal to the
- boundary at speed 
-\begin_inset Formula $v_{s}$
-\end_inset
-
-; we can decompose this into one case where 
-\begin_inset Formula $u_{n}=u_{s_{v}}=0$
-\end_inset
-
- and another case where 
-\begin_inset Formula $u_{n}=u_{s_{h}}=0$
-\end_inset
-
-, with 
-\begin_inset Formula $c=v_{s}$
-\end_inset
-
- in both cases.
- We also recognize that 
-\begin_inset Formula $\mu=\rho v_{s}^{2}$
-\end_inset
-
- and 
-\begin_inset Formula $\lambda+2\mu=\rho v_{p}^{2}$
-\end_inset
-
-.
- This leads to the following expressions for the tractions:
-\begin_inset Formula 
-\begin{gather}
-T_{s_{h}}=-\rho v_{s}\frac{\partial u_{s_{h}}^{t}(t-\frac{\vec{x}}{c})}{\partial t}\\
-T_{s_{v}}=-\rho v_{s}\frac{\partial u_{v}^{t}(t-\frac{\vec{x}}{c})}{\partial t}\\
-T_{n}=-\rho v_{p}\frac{\partial u_{n}^{t}(t-\frac{\vec{x}}{c})}{\partial t}
-\end{gather}
-
-\end_inset
-
-We write the weak form of the boundary condition as
-\begin_inset Formula 
-\[
-\int_{S_{T}}T_{i}\phi_{i}\, dS=\int_{S_{T}}-\rho c_{i}\frac{\partial u_{i}}{\partial t}\phi_{i}\, dS,
-\]
-
-\end_inset
-
-where 
-\begin_inset Formula $c_{i}$
-\end_inset
-
- equals 
-\begin_inset Formula $v_{p}$
-\end_inset
-
- for the normal traction and 
-\begin_inset Formula $v_{s}$
-\end_inset
-
- for the shear tractions, and 
-\begin_inset Formula $\phi_{i}$
-\end_inset
-
- is our weighting function.
- We express the trial solution and weighting function as linear combinations
- of basis functions,
-\begin_inset Formula 
-\begin{gather}
-u_{i}=\sum_{m}a_{i}^{m}N^{m},\\
-\phi_{i}=\sum_{n}c_{i}^{n}N^{n}.
-\end{gather}
-
-\end_inset
-
-Substituting into our integral over the absorbing boundaries yields
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula 
-\begin{equation}
-\int_{S_{T}}T_{i}\phi_{i}\, dS=\int_{S_{T}}-\rho c_{i}\sum_{m}\dot{a}_{i}^{m}N^{m}\sum_{n}c_{i}^{n}N^{n}\, dS.
-\end{equation}
-
-\end_inset
-
-In the derivation of the governing equations, we recognized that the weighting
- function is arbitrary, so we form the residual by setting the terms associated
- with the coefficients 
-\begin_inset Formula $c_{i}^{n}$
-\end_inset
-
- to zero,
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula 
-\begin{equation}
-r_{i}^{n}=\sum_{\text{tract cells}}\sum_{\text{quad pts}}-\rho(x_{q})c_{i}(x_{q})\sum_{m}\dot{a}_{i}^{m}N^{m}(x_{q})N^{n}(x_{q})w_{q}|J_{cell}(x_{q})|,
-\end{equation}
-
-\end_inset
-
- where 
-\begin_inset Formula $x_{q}$
-\end_inset
-
- are the coordinates of the quadrature points, 
-\begin_inset Formula $w_{q}$
-\end_inset
-
- are the weights of the quadrature points, and 
-\begin_inset Formula $|J_{cell}(x_{q})|$
-\end_inset
-
- is the determinant of the Jacobian matrix evaluated at the quadrature points
- associated with mapping the reference cell to the actual cell.
-\end_layout
-
-\begin_layout Standard
-The appearance of velocity in the expression for the residual means that
- the absorbing dampers also contribute to the system Jacobian matrix.
- Use the central difference method, the velocity is written in terms of
- the displacements,
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula 
-\begin{equation}
-\dot{u}_{i}(t)=\frac{1}{2\Delta t}(u_{i}(t+\Delta t)-u_{i}(t-\Delta t)).
-\end{equation}
-
-\end_inset
-
-Expressing the displacement at time 
-\begin_inset Formula $t+\Delta t$
-\end_inset
-
- in terms of the displacement at time 
-\begin_inset Formula $t$
-\end_inset
-
- (
-\begin_inset Formula $u_{i}(t)$
-\end_inset
-
-) and the increment in the displacement at time 
-\begin_inset Formula $t$
-\end_inset
-
- (
-\begin_inset Formula $du_{i}(t)$
-\end_inset
-
-) leads to
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula 
-\begin{equation}
-\dot{u}_{i}(t)=\frac{1}{2\Delta t}(du_{i}(t)+u_{i}(t)-u_{i}(t-\Delta t))
-\end{equation}
-
-\end_inset
-
-The terms contributing to the system Jacobian are associated with the increment
- in the displacement at time time.
- Substituting into the governing equations and isolating the term associated
- with the increment in the displacement at time t yields
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula 
-\begin{equation}
-A_{ij}^{nm}=\sum_{\text{tract cells}}\sum_{\text{quad pts}}\delta_{ij}\frac{1}{2\Delta t}\rho(x_{q})v_{i}(x_{q})N^{m}(x_{q})N^{n}(x_{q})w_{q}|J_{cells}(x_{q})|,
-\end{equation}
-
-\end_inset
-
-where 
-\begin_inset Formula $A_{ij}^{mn}$
-\end_inset
-
- is a 
-\begin_inset Formula $nd$
-\end_inset
-
- by 
-\begin_inset Formula $md$
-\end_inset
-
- matrix (
-\begin_inset Formula $d$
-\end_inset
-
- is the dimension of the vector space), 
-\begin_inset Formula $m$
-\end_inset
-
- and 
-\begin_inset Formula $n$
-\end_inset
-
- refer to the basis functions and 
-\begin_inset Formula $i$
-\end_inset
-
- and 
-\begin_inset Formula $j$
-\end_inset
-
- are vector space components.
-\end_layout
-
-\begin_layout Section
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:fault"
-
-\end_inset
-
-Fault Interface Conditions
-\end_layout
-
-\begin_layout Standard
-Fault interfaces are used to create dislocations (jumps in the displacement
- field) in the model.
- The dislocations arise from slip across a fault surface.
- Both shear and tensile dislocations are supported.
- For fault interfaces, dislocations in 1D correspond to fault-opening (and
- closing), in 2D lateral-slip and fault opening, and in 3D lateral-slip,
- reverse-slip, and fault opening.
- PyLith supports kinematic (prescribed) slip and dynamic (spontaneous) rupture
- simulations.
-\end_layout
-
-\begin_layout Subsection
-Conventions
-\end_layout
-
-\begin_layout Standard
-Slip corresponds to relative motion across a fault surface.
- Figure 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "fig:fault:orientation"
-
-\end_inset
-
- shows the orientation of the slip vector in 3D with respect to the fault
- surface and coordinate axes.
- PyLith automatically determines the orientation of the fault surface.
- This alleviates the user from having to compute the strike, dip, and rake
- angles over potentially complex, nonplanar fault surfaces.
- Instead, the user specifies fault parameters in terms of lateral motion,
- reverse motion, and fault opening as shown in Figure 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "fig:fault:slip:motions"
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float figure
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\align center
-\begin_inset Graphics
-	filename figs/faultOrientation.eps
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-\begin_inset Caption
-
-\begin_layout Plain Layout
-Orientation of a fault surface in 3D, where 
-\begin_inset Formula $\phi$
-\end_inset
-
- denotes the angle of the fault strike, 
-\begin_inset Formula $\delta$
-\end_inset
-
- denotes the angle of the fault dip, and 
-\begin_inset Formula $\lambda$
-\end_inset
-
- the rake angle.
- 
-\begin_inset CommandInset label
-LatexCommand label
-name "fig:fault:orientation"
-
-\end_inset
-
- 
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float figure
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\align center
-\begin_inset Graphics
-	filename figs/slipmotions.eps
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-\begin_inset Caption
-
-\begin_layout Plain Layout
-Sign conventions associated with fault slip.
- Positive values are associated with left-lateral, reverse, and fault opening
- motions.
-\begin_inset CommandInset label
-LatexCommand label
-name "fig:fault:slip:motions"
-
-\end_inset
-
- 
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsection
-Fault Implementation
-\end_layout
-
-\begin_layout Standard
-In order to create relative motion across the fault surface in the finite-elemen
-t mesh, additional degrees of freedom are added along with adjustment of
- the topology of the mesh.
- These additional degrees of freedom are associated with cohesive cells.
- These zero-volume cells allow control of the relative motion between vertices
- on the two sides of the fault.
- PyLith automatically adds cohesive cells for each fault surface.
- Figure 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "fig:fault:cohesive:quad4"
-
-\end_inset
-
- illustrates the results of inserting a cohesive cell in a mesh consisting
- of two quadrilateral cells.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float figure
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\align center
-\begin_inset Graphics
-	filename figs/quad4cohesivekin.eps
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-\begin_inset Caption
-
-\begin_layout Plain Layout
-Example of cohesive cell inserted into a mesh of two quadrilateral cells.
- The zero thickness cohesive cell (shown with dashed lines) controls slip
- on the fault via the relative motion between vertices 3 and 7 and 2 and
- 6.
-\begin_inset CommandInset label
-LatexCommand label
-name "fig:fault:cohesive:quad4"
-
-\end_inset
-
- 
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsection
-Fault Parameters
-\end_layout
-
-\begin_layout Standard
-The principal parameters for fault interface conditions are:
-\end_layout
-
-\begin_layout Description
-id This is an integer identifier for the fault surface.
- It is used to specify the 
-\family typewriter
-material-id
-\family default
- of the cohesive cells in the mesh.
- Material identifiers must be unique so this value cannot be the same as
- any of the material models or any other fault.
-\end_layout
-
-\begin_layout Description
-name Name or label for the fault.
- This associates sets of vertices with the fault surface in addition to
- being used in error and diagnostic reports.
-\end_layout
-
-\begin_layout Description
-up_dir Up-dir or up direction (used in 2D and 3D simulations).
- In 2D the default in-plane slip is left-lateral, so we use the up-direction
- to resolve the ambiguity in specifying reverse slip.
- In 3D the up-direction is used to resolve the ambiguity in the along-strike
- and dip-dir directions.
- If the fault plane is horizontal, then the up-dir corresponds to the reverse-mo
-tion on the +z side of the fault.
- The only requirement for this direction is that it not be collinear with
- the fault normal direction.
- The default value of [0, 0, 1] is appropriate for most 3D problems.
-\end_layout
-
-\begin_layout Description
-quadrature Quadrature object used in integrating fault quantities.
-\end_layout
-
-\begin_layout Description
-output Manager for output of diagnostic and data fields for the fault.
-\end_layout
-
-\begin_layout Standard
-By default the output manager outputs both diagnostic information (e.g., fault
- normal direction) and the slip at each time step.
- Tables 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:fault:kin:output"
-
-\end_inset
-
- and 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:fault:dyn:output"
-
-\end_inset
-
- list the fields available for output for a fault with kinematic (prescribed)
- earthquake rupture and a fault with dynamic rupture, respectively.
- The fault coordinate system is shown in Figure 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "fig:fault:slip:motions"
-
-\end_inset
-
-.
- The vectors in the fault coordinate system can be transformed to the global
- coordinate system using the direction vectors in the diagnostic output.
- An example of setting these parameters in a 
-\family typewriter
-.cfg
-\family default
- file is:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem]
-\end_layout
-
-\begin_layout LyX-Code
-interfaces = [fault]
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces]
-\end_layout
-
-\begin_layout LyX-Code
-fault = pylith.faults.FaultCohesiveKin ; default
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-label = fault A ; Group of vertices defining the fault surface
-\end_layout
-
-\begin_layout LyX-Code
-id = 100 ; Value for material identifier associated with fault's cohesive
- cells
-\end_layout
-
-\begin_layout LyX-Code
-up_dir = [0, 0, 1] ; default
-\end_layout
-
-\begin_layout LyX-Code
-quadrature.cell = pylith.feassemble.FIATLagrange
-\end_layout
-
-\begin_layout LyX-Code
-quadrature.cell.dimension = 2
-\end_layout
-
-\begin_layout Standard
-The group of vertices has the label ``fault A.'' We replicate the default
- values for the fault ``up'' direction.
- These settings apply to a 2D fault surface embedded within a 3D mesh, so
- we use 2D Lagrange reference cells.
- The spatial database for elastic properties is used to determine the approximat
-e shear modulus and condition the equations for faster convergence rates.
-\end_layout
-
-\begin_layout Subsection
-Kinematic Earthquake Rupture
-\end_layout
-
-\begin_layout Standard
-Kinematic earthquake ruptures use the FaultCohesiveKin object to specify
- the slip as a function of time on the fault surface.
- Slip may evolve simultaneously over the fault surface instantaneously in
- a single time step (as is usually done in quasi-static simulations) or
- propagate over the fault surface over hundreds and up to thousands of time
- steps (as is usually done in a dynamic simulation).
-\end_layout
-
-\begin_layout Subsubsection
-Governing Equations
-\end_layout
-
-\begin_layout Standard
-The insertion of cohesive cells into the finite-element mesh has the effect
- of decoupling the motion of the two sides of the fault surface.
- In order to impose the desired relative motion, we must adjust the governing
- equations.
- PyLith employs Lagrange multiplier constraints to enforce the constraint
- of the relative motion in the strong sense.
- That is, we enforce the slip across the fault at each degree of freedom.
-\end_layout
-
-\begin_layout Standard
-In conventional implementations the additional degrees of freedom associated
- with the Lagrange multipliers results in a complex implementation.
- However, the use of Lagrange multiplier constraints with cohesive cells
- provides for a simple formulation; we simply add the additional degrees
- of freedom associated with the Lagrange multipliers to the cohesive cells
- as shown in Figure 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "fig:fault:cohesive:quad4"
-
-\end_inset
-
-.
- As a result, the fault implementation is completely confined to the cohesive
- cell.
- Furthermore, the Lagrange multiplier constraints correspond to forces required
- to impose the relative motions, so they are related to the change in stress
- on the fault surface associated with fault slip.
- If we write the algebraic system of equations we are solving in the form
-\begin_inset Formula 
-\begin{equation}
-\underline{A}\overrightarrow{u}=\overrightarrow{b}\,,
-\end{equation}
-
-\end_inset
-
-then including the Lagrange multiplier constraints results in
-\begin_inset Formula 
-\begin{equation}
-\left[\begin{array}{cc}
-\underline{A} & \underline{C}^{T}\\
-\underline{C} & 0
-\end{array}\right]\left[\begin{array}{c}
-\overrightarrow{u}\\
-\overrightarrow{l}
-\end{array}\right]=\left[\begin{array}{c}
-\overrightarrow{b}\\
-\overrightarrow{d}
-\end{array}\right]\,,\label{eq:fault:cohesive:lagrange}
-\end{equation}
-
-\end_inset
-
-where 
-\begin_inset Formula $\overrightarrow{l}$
-\end_inset
-
- is the vector of Lagrange multipliers and 
-\begin_inset Formula $\underline{C}$
-\end_inset
-
- is composed of rotation submatrices, 
-\begin_inset Formula $\underline{R}$
-\end_inset
-
-, associated with the direction cosines relating the relative displacements
- across the fault to the vector of fault slip, 
-\begin_inset Formula $\overrightarrow{d}$
-\end_inset
-
-.
- Note that by using the direction cosines to relate the relative motion
- across the fault, the slip vector and Lagrange multipliers (forces required
- to impose the slip) are in the local fault coordinate system (lateral motion,
- reverse motion, and fault opening).
- 
-\end_layout
-
-\begin_layout Paragraph
-Non-diagonal A
-\end_layout
-
-\begin_layout Standard
-The Lagrange multipliers contribute to both the system Jacobian matrix and
- the residual.
- Because we enforce the constraints in a strong sense, the terms do not
- involve integrals over the fault surface.
- The additional terms in the residual are
-\begin_inset Formula 
-\begin{gather}
-r_{i}^{n}=-C_{ji}^{pn}l_{j}^{p},\\
-r_{i}^{p}=d_{i}^{p}-C_{ij}^{pn}u_{j}^{n},
-\end{gather}
-
-\end_inset
-
-where 
-\begin_inset Formula $n$
-\end_inset
-
- denotes a conventional degree of freedom and 
-\begin_inset Formula $p$
-\end_inset
-
- denotes a degree of freedom associated with a Lagrange multiplier.
- The additional terms in the system Jacobian matrix are simply the direction
- cosines,
-\begin_inset Formula 
-\begin{gather}
-J_{ij}^{np}=C_{ji}^{pn},\\
-J_{ij}^{pn}=C_{ij}^{pn}.
-\end{gather}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Paragraph
-Diagonal A
-\end_layout
-
-\begin_layout Standard
-When we use a lumped system Jacobian matrix, we cannot lump the terms associated
- with the Lagrange multipliers.
- Instead, we formulate the Jacobian ignoring the contributions from the
- Lagrange multipliers, and then adjust the solution after the solve to account
- for their presence.
- Including the Lagrange multipliers in the general expression for the residual
- at time 
-\begin_inset Formula $t+\Delta t$
-\end_inset
-
-, we have
-\begin_inset Formula 
-\begin{equation}
-r_{i}^{n}(t+\Delta t)=A_{ij}^{nm}(u_{j}^{m}(t)+du_{j}^{m}(t))+C_{ki}^{pn}(l_{k}^{p}(t)+dl_{k}^{p}(t)),
-\end{equation}
-
-\end_inset
-
-where we have written the displacements and Lagrange multipliers at time
- 
-\begin_inset Formula $t+\Delta t$
-\end_inset
-
- in terms of the values at time 
-\begin_inset Formula $t$
-\end_inset
-
- and the increment from time 
-\begin_inset Formula $t$
-\end_inset
-
- to 
-\begin_inset Formula $t+\Delta t$
-\end_inset
-
-.
- When we solve the lumped system ignoring the Lagrange multipliers contributions
- to the Jacobian, we formulate the residual assuming the values 
-\begin_inset Formula $du_{i}^{n}$
-\end_inset
-
-(t) and 
-\begin_inset Formula $dl_{k}^{p}(t)$
-\end_inset
-
- are zero.
- So our task is to determine the increment in the Lagrange multiplier, 
-\begin_inset Formula $dl_{k}^{p}$
-\end_inset
-
-, and the correction to the displacement increment, 
-\begin_inset Formula $du_{i}^{n}$
-\end_inset
-
-, and by setting the residual with all terms included to zero; thus, we
- have
-\begin_inset Formula 
-\begin{gather}
-A_{ij}^{nm}(u_{j}^{m}(t)+du_{j}^{m}(t))+C_{ki}^{pn}(l_{k}^{p}(t)+dl_{k}^{p}(t))=0\text{ subject to}\\
-C_{ij}^{pn}(u_{j}^{n}(t)+du_{j}^{n}(t))=d_{i}^{p}.
-\end{gather}
-
-\end_inset
-
-Making use of the residual computed with 
-\begin_inset Formula $du_{i}^{n}(t)=0$
-\end_inset
-
- and 
-\begin_inset Formula $dl_{k}^{p}(t)=0$
-\end_inset
-
-,
-\begin_inset Formula 
-\begin{gather}
-r_{i}^{n}+A_{ij}^{nm}du_{j}^{m}+C_{ki}^{pn}dl_{k}^{p}=0\text{ subject to}\\
-C_{ij}^{pn}(u_{j}^{n}(t)+du_{j}^{n}(t))=d_{i}^{p}.
-\end{gather}
-
-\end_inset
-
-Explicitly writing the equations for the vertices on the negative and positive
- sides of the fault yields
-\begin_inset Formula 
-\begin{gather}
-r_{i}^{n-}+A_{ij}^{nm-}du_{j}^{m-}+R_{ki}^{pn}dl_{k}^{p}=0,\\
-r_{i}^{n+}+A_{ij}^{nm+}du_{j}^{m+}+R_{ki}^{pn}dl_{k}^{p}=0,\\
-R_{ij}^{pn}(u_{j}^{n+}+du_{j}^{n+}-u_{j}^{n-}-du_{j}^{n-})=d_{i}^{p}.
-\end{gather}
-
-\end_inset
-
-Solving the first two equations for 
-\begin_inset Formula $du_{j}^{m-}$
-\end_inset
-
- and 
-\begin_inset Formula $du_{j}^{m+}$
-\end_inset
-
- and combining them using the third equation leads to
-\begin_inset Formula 
-\begin{multline}
-R_{ij}^{pn}\left((A_{ij}^{nm+})^{-1}+(A_{ij}^{nm+})^{-1}\right)R_{ki}^{pn}dl_{k}^{p}=d_{i}^{p}-R_{ij}^{pn}(u_{j}^{n+}-u_{j}^{n-})\\
-+R_{ij}^{pn}\left((A_{ij}^{nm+})^{-1}r_{i}^{n+}-(A_{ij}^{nm-})^{-1}r_{i}^{n-}\right).
-\end{multline}
-
-\end_inset
-
-We do not allow overlap between the fault interface and the absorbing boundary,
- so 
-\begin_inset Formula $A_{ij}^{nm}$
-\end_inset
-
- is the same for all components at a vertex.
- As a result the matrix on the left hand side simplifies to
-\begin_inset Formula 
-\begin{equation}
-S_{ik}^{pn}=\delta_{ik}\left(\frac{1}{A^{nm+}}+\frac{1}{A^{nm-}}\right),
-\end{equation}
-
-\end_inset
-
-and
-\begin_inset Formula 
-\begin{equation}
-dl_{k}^{p}=(S_{ik}^{pn})^{-1}\left(d_{i}^{p}-R_{ij}^{pn}(u_{j}^{n+}-u_{j}^{n-})+R_{ij}^{pn}\left((A_{ij}^{nm+})^{-1}r_{i}^{n+}-(A_{ij}^{nm-})^{-1}r_{i}^{n-}\right)\right).
-\end{equation}
-
-\end_inset
-
-Now that we know the value of the increment in the Lagrange multiplier from
- time 
-\begin_inset Formula $t$
-\end_inset
-
- to time 
-\begin_inset Formula $t+\Delta t$
-\end_inset
-
-, we can correct the value for the displacement increment from time 
-\begin_inset Formula $t$
-\end_inset
-
- to 
-\begin_inset Formula $t+\Delta t$
-\end_inset
-
- using
-\begin_inset Formula 
-\begin{gather}
-\Delta du_{j}^{n-}=(A_{ij}^{nm-})^{-1}C_{ki}^{pn}dl_{k}^{p}\text{ and}\\
-\Delta du_{j}^{n+}=-(A_{ij}^{nm+})^{-1}C_{ki}^{pn}dl_{k}^{p}.
-\end{gather}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsubsection
-Arrays of Kinematic Rupture Components
-\end_layout
-
-\begin_layout Standard
-Multiple earthquake ruptures can be specified on a single fault surface.
- This permits repeatedly rupturing the same portion of a fault or combining
- earthquake rupture on one subset of the fault surface with steady aseismic
- slip on another subset (the two subsets may overlap in both time and space).
- A dynamic array of kinematic earthquake rupture components associates a
- name (string) with each kinematic rupture.
- The default dynamic array contains a single earthquake rupture, ``rupture''.
- The 
-\family typewriter
-eq_srcs
-\family default
- is the 
-\family typewriter
-FaultCohesiveKin
-\family default
- facility for this dynamic array.
- An example of setting the array of kinematic rupture components in a 
-\family typewriter
-.cfg
-\family default
- file:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault]
-\end_layout
-
-\begin_layout LyX-Code
-eq_srcs = [earthquake,creep]
-\end_layout
-
-\begin_layout Standard
-The output manager includes generic fault information (orientation) as well
- as the final slip or slip rate (as in the case of the constant slip rate
- slip time function) and slip initiation time for each kinematic rupture.
- The name of the slip and slip initiation time vertex fields are of the
- form 
-\family typewriter
-final_slip_NAME
-\family default
- and 
-\family typewriter
-slip_time_NAME
-\family default
-, respectively, where 
-\family typewriter
-NAME
-\family default
- refers to the name used in the dynamic array of kinematic ruptures, 
-\family typewriter
-eq_srcs
-\family default
-.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:fault:kin:output"
-
-\end_inset
-
-Fields available in output of fault information.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="8" columns="3">
-<features tabularvalignment="middle">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="3.5in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Field Type
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Field
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-vertex_info_fields
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-normal_dir
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Direction of fault normal in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-strike_dir
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Direction of fault strike in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-dip_dir
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Up-dip direction on hanging wall in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-final_slip_NAME
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Vector of final slip (in fault coordinate system) in meters
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip_time
-\family default
-_
-\family typewriter
-\noun on
-NAME
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Time at which slip begins in seconds
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-vertex_data_fields
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip vector at time step (in fault coordinate system) in meters
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction_change
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Change in fault tractions (in fault coordinate system) in Pa
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsubsection
-Kinematic Rupture Parameters
-\end_layout
-
-\begin_layout Standard
-The kinematic rupture parameters include the origin time and slip time function.
- The slip initiation time in the slip time function is relative to the origin
- time (default is 0).
- This means that slip initiates at a point at a time corresponding to the
- sum of the kinematic rupture's origin time and the slip initiation time
- for that point.
- An example of specifying the kinematic earthquake rupture properties and
- components in a 
-\family typewriter
-.cfg
-\family default
- file:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault]
-\end_layout
-
-\begin_layout LyX-Code
-eq_srcs = [earthquake,creep]
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault.eq_srcs.earthquake]
-\end_layout
-
-\begin_layout LyX-Code
-origin_time = 0.0*s ; default origin time
-\end_layout
-
-\begin_layout LyX-Code
-slip_function = pylith.faults.StepSlipFn ; default slip time function
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault.eq_srcs.creep]
-\end_layout
-
-\begin_layout LyX-Code
-origin_time = 10.0*year ; start creep at 10.0 years
-\end_layout
-
-\begin_layout LyX-Code
-slip_function = pylith.faults.ConstRateSlipFn ; switch to constant slip rate
- slip function
-\end_layout
-
-\begin_layout Subsubsection
-Slip Time Function
-\end_layout
-
-\begin_layout Standard
-The current release of PyLith supports specification of the evolution of
- fault slip using analytical expressions for the slip time history at each
- point, where the parameters for the slip time function may vary over the
- fault surface.
- Currently, three slip time functions are available: (1) a step-function
- for quasi-static modeling of earthquake rupture, (2) a constant slip rate
- time function for modeling steady aseismic slip, and (3) the integral of
- Brune's far-field time function 
-\begin_inset CommandInset citation
-LatexCommand cite
-key "Brune:1970"
-
-\end_inset
-
- for modeling the dynamics of earthquake rupture.
- Additional slip time functions will likely be available in future releases.
- The default slip time function is the step-function slip function.
-\end_layout
-
-\begin_layout Paragraph
-Step-Function Slip Time Function
-\end_layout
-
-\begin_layout Standard
-This slip function prescribes a step in slip at a given time at a point:
- 
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula 
-\begin{gather}
-D(t)=\left\{ \begin{array}{cc}
-0 & 0\leq t<t_{r}\\
-D_{final} & t\ge t_{r}
-\end{array}\right.\,,
-\end{gather}
-
-\end_inset
-
-where 
-\begin_inset Formula $D(t)$
-\end_inset
-
- is slip at time 
-\begin_inset Formula $t$
-\end_inset
-
-, 
-\begin_inset Formula $D_{final}$
-\end_inset
-
- is the final slip, and 
-\begin_inset Formula $t_{r}$
-\end_inset
-
- is the slip initiation time (time when rupture reaches the location).
- The slip is specified independently for each of the components of slip,
- and the slip and slip starting time may vary over the fault surface.
-\end_layout
-
-\begin_layout Description
-final_slip Spatial database of slip (
-\begin_inset Formula $D_{final})$
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Description
-slip_time Spatial database of slip initiation times (
-\begin_inset Formula $t_{r}$
-\end_inset
-
-).
-\end_layout
-
-\begin_layout Standard
-An example of setting these parameters in a 
-\family typewriter
-.cfg
-\family default
- file is:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault.eq_srcs.rupture]
-\end_layout
-
-\begin_layout LyX-Code
-slip_function = pylith.faults.StepSlipFn
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault.eq_srcs.rupture.slip_function]
-\end_layout
-
-\begin_layout LyX-Code
-final_slip.iohandler.filename = final_slip.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-slip_time.iohandler.filename = sliptime.spatialdb
-\end_layout
-
-\begin_layout Standard
-The spatial database files for the slip time function specify the spatial
- variation in the parameters for the slip time function, as shown in Table
- 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:step-function-db-params"
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:step-function-db-params"
-
-\end_inset
-
-Values in spatial database used as parameters in the step function slip
- time function.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="5" columns="3">
-<features tabularvalignment="middle">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="2.5in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Spatial database
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Value
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-final_slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-left-lateral-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Amount of left-lateral final slip in meters.
- Use negative values for right-lateral slip.
- Applies to faults in 2D and 3D only.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-reverse-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Amount of reverse slip in meters.
- Use negative values for normal slip.
- Applies to faults in 3D only.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-fault-opening
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Amount of fault opening in meters.
- Negative values imply penetration.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip-time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip initiation time (
-\begin_inset Formula $t_{t})$
-\end_inset
-
- in seconds.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Paragraph
-Constant Slip Rate Slip Time Function
-\end_layout
-
-\begin_layout Standard
-This slip function prescribes a constant slip rate for the evolution of
- slip at a point: 
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula 
-\begin{gather}
-D(t)=\left\{ \begin{array}{cc}
-0 & 0\leq t<t_{r}\\
-V(t-t_{r}) & t\ge t_{r}
-\end{array}\right.\,,
-\end{gather}
-
-\end_inset
-
-where 
-\begin_inset Formula $D(t)$
-\end_inset
-
- is slip at time 
-\begin_inset Formula $t$
-\end_inset
-
-, 
-\begin_inset Formula $V$
-\end_inset
-
- is the slip rate, and 
-\begin_inset Formula $t_{r}$
-\end_inset
-
- is the slip initiation time (time when rupture reaches the location).
- The slip rate is specified independently for each of the components of
- slip, and the slip rate and slip starting time may vary over the fault
- surface.
-\end_layout
-
-\begin_layout Description
-slip_rate Spatial database of slip rate (
-\begin_inset Formula $V)$
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Description
-slip_time Spatial database of slip initiation times (
-\begin_inset Formula $t_{r}$
-\end_inset
-
-).
-\end_layout
-
-\begin_layout Standard
-An example of setting these parameters in a 
-\family typewriter
-.cfg
-\family default
- file is:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault.eq_srcs.ruptures]
-\end_layout
-
-\begin_layout LyX-Code
-slip_function = pylith.faults.ConstRateSlipFn
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault.eq_srcs.ruptures.slip_function]
-\end_layout
-
-\begin_layout LyX-Code
-slip_rate.iohandler.filename = slip_rate.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-slip_time.iohandler.filename = sliptime.spatialdb
-\end_layout
-
-\begin_layout Standard
-The spatial database files for the slip time function specify the spatial
- variation in the parameters for the slip time function, as shown in Table
- 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:const-slip-rate-db-params"
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:const-slip-rate-db-params"
-
-\end_inset
-
-Values in spatial database used as parameters in the constant slip rate
- slip time function.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="5" columns="3">
-<features tabularvalignment="middle">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="2.5in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Spatial database
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Value
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip_rate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-left-lateral-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip rate for left-lateral final slip in meters per second.
- Use negative values for right-lateral slip.
- Applies to faults in 2D and 3D only.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-reverse-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip rate for reverse slip in meters per second.
- Use negative values for normal slip.
- Applies to faults in 3D only.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-fault-opening
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip rate for fault opening in meters per second.
- Negative values imply penetration.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip-time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip initiation time (
-\begin_inset Formula $t_{t})$
-\end_inset
-
- in seconds.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Paragraph
-Brune Slip Time Function
-\end_layout
-
-\begin_layout Standard
-We use an integral of Brune's far-field time function 
-\begin_inset CommandInset citation
-LatexCommand cite
-key "Brune:1970"
-
-\end_inset
-
- to describe the evolution in time of slip at a point: 
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula 
-\begin{gather}
-D(t)=\left\{ \begin{array}{cc}
-0 & 0\leq t<t_{r}\\
-D_{final}\left(1-exp\left(-\frac{t-t_{r}}{t_{0}}\right)\left(1+\frac{t-t_{r}}{t_{0}}\right)\right) & t\ge t_{r}
-\end{array}\right.\,,\\
-t_{0}=0.6195t_{\mathit{rise}}\,,
-\end{gather}
-
-\end_inset
-
-where 
-\begin_inset Formula $D(t)$
-\end_inset
-
- is slip at time 
-\begin_inset Formula $t$
-\end_inset
-
-, 
-\begin_inset Formula $D_{final}$
-\end_inset
-
- is the final slip at the location, 
-\begin_inset Formula $t_{r}$
-\end_inset
-
- is the slip initiation time (time when rupture reaches the location), and
- 
-\begin_inset Formula $t_{\mathit{rise}}$
-\end_inset
-
- is the rise time.
-\end_layout
-
-\begin_layout Description
-slip Spatial database of final slip distribution (
-\begin_inset Formula $D_{final})$
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Description
-slip_time Spatial database of slip initiation times (
-\begin_inset Formula $t_{r}$
-\end_inset
-
-).
-\end_layout
-
-\begin_layout Description
-rise_time Spatial database for rise time (
-\begin_inset Formula $t_{\mathit{rise}}$
-\end_inset
-
-).
-\end_layout
-
-\begin_layout Standard
-An example of setting these parameters in a 
-\family typewriter
-.cfg
-\family default
- file is:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault.eq_srcs.ruptures]
-\end_layout
-
-\begin_layout LyX-Code
-slip_function = pylith.faults.BruneSlipFn
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault.eq_srcs.rupture.slip_function]
-\end_layout
-
-\begin_layout LyX-Code
-slip.iohandler.filename = finalslip.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-rise_time.iohandler.filename = risetime.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-slip_time.iohandler.filename = sliptime.spatialdb
-\end_layout
-
-\begin_layout Standard
-The spatial database files for the slip time function specify the spatial
- variation in the parameters for the slip time function, as shown in Table
- 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:Brune-slip-db-params"
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:Brune-slip-db-params"
-
-\end_inset
-
-Values in spatial database used as parameters in the Brune slip time function.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="6" columns="3">
-<features tabularvalignment="middle">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="2.5in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Spatial database
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Value
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-left-lateral-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Amount of left-lateral final slip in meters.
- Use negative values for right-lateral slip.
- Applies to faults in 2D and 3D only.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-reverse-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Amount of reverse slip in meters.
- Use negative values for normal slip.
- Applies to faults in 3D only.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-fault-opening
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Amount of fault opening in meters.
- Negative values imply penetration.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-rise_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-rise-time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Rise time (
-\begin_inset Formula $t_{r})$
-\end_inset
-
- in seconds.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip-time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip initiation time (
-\begin_inset Formula $t_{t})$
-\end_inset
-
- in meters.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Paragraph
-Liu-Cosine Slip Time Function
-\end_layout
-
-\begin_layout Standard
-This slip time function, proposed by Liu, Archuleta, and Hartzell for use
- in ground-motion modeling
-\begin_inset CommandInset citation
-LatexCommand cite
-key "Liu:etal:2006"
-
-\end_inset
-
-, combines several cosine and sine functions together to create a slip time
- history with a sharp rise and gradual termination with a finite duration
- of slip.
- The evolution of slip at a point follows: 
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula 
-\begin{gather}
-D(t)=\left\{ \begin{array}{cc}
-D_{\mathit{final}}C_{n}\left(0.7t-0.7\frac{t_{1}}{\pi}\sin\frac{\pi t}{t_{1}}-1.2\frac{t_{1}}{\pi}\left(\cos\frac{\pi t}{2t_{1}}-1\right)\right) & 0\leq t<t_{1}\\
-D_{\mathit{final}}C_{n}\left(1.0t-0.7\frac{t1}{\pi}\sin\frac{\pi t}{t_{1}}+0.3\frac{t2}{\pi}\sin\frac{\pi(t-t1)}{t_{2}}+\frac{1.2}{\pi}t_{1}-0.3t_{1}\right) & t_{1}\leq t<2t_{1}\\
-D_{\mathit{final}}C_{n}\left(0.7-0.7\cos\frac{\pi t}{t_{1}}+0.6\sin\frac{\pi t}{2t_{1}}\right) & 2t_{1}\leq t\leq t_{0}
-\end{array}\right.\,,\\
-C_{n}=\frac{\pi}{1.4\pi t_{1}+1.2t_{1}+0.3\pi t_{2}},\\
-t_{0}=1.525t_{\mathit{rise}},\\
-t_{1}=0.13t_{0},\\
-t_{2}=t_{0}-t_{1},
-\end{gather}
-
-\end_inset
-
-where 
-\begin_inset Formula $D(t)$
-\end_inset
-
- is slip at time 
-\begin_inset Formula $t$
-\end_inset
-
-, 
-\begin_inset Formula $D_{final}$
-\end_inset
-
- is the final slip at the location, 
-\begin_inset Formula $t_{r}$
-\end_inset
-
- is the slip initiation time (time when rupture reaches the location), and
- 
-\begin_inset Formula $t_{\mathit{rise}}$
-\end_inset
-
- is the rise time.
-\end_layout
-
-\begin_layout Description
-slip Spatial database of final slip distribution (
-\begin_inset Formula $D_{final})$
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Description
-slip_time Spatial database of slip initiation times (
-\begin_inset Formula $t_{r}$
-\end_inset
-
-).
-\end_layout
-
-\begin_layout Description
-rise_time Spatial database for rise time (
-\begin_inset Formula $t_{\mathit{rise}}$
-\end_inset
-
-).
-\end_layout
-
-\begin_layout Standard
-The spatial database files for the slip time function use the same parameters
- for the slip time function as the Brune slip time function shown in Table
- 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:Brune-slip-db-params"
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Paragraph
-Time-History Slip Time Function
-\end_layout
-
-\begin_layout Standard
-This slip time function reads the slip time function from a data file, so
- it can have an arbitrary shape.
- The slip and slip initiation times are specified using spatial databases,
- so the slip time function, in general, will use a normalized amplitude.
-\end_layout
-
-\begin_layout Description
-slip Spatial database of final slip distribution (
-\begin_inset Formula $D_{final})$
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Description
-slip_time Spatial database of slip initiation times (
-\begin_inset Formula $t_{r}$
-\end_inset
-
-).
-\end_layout
-
-\begin_layout Description
-time_history Temporal database for slip evolution.
-\end_layout
-
-\begin_layout Standard
-An example of setting these parameters in a 
-\family typewriter
-.cfg
-\family default
- file is:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault.eq_srcs.ruptures]
-\end_layout
-
-\begin_layout LyX-Code
-slip_function = pylith.faults.TimeHistorySlipFn
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault.eq_srcs.rupture.slip_function]
-\end_layout
-
-\begin_layout LyX-Code
-slip.iohandler.filename = finalslip.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-slip_time.iohandler.filename = sliptime.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-time_history.iohandler.filename = myfunction.timedb
-\end_layout
-
-\begin_layout Standard
-The spatial database files for the slip time function specify the spatial
- variation in the parameters for the slip time function, as shown in Table
- 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:Brune-slip-db-params-2"
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:Brune-slip-db-params-2"
-
-\end_inset
-
-Values in spatial database used as parameters in the time history slip time
- function.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="6" columns="3">
-<features tabularvalignment="middle">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="2.5in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Spatial database
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Value
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-left-lateral-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Amount of left-lateral final slip in meters.
- Use negative values for right-lateral slip.
- Applies to faults in 2D and 3D only.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-reverse-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Amount of reverse slip in meters.
- Use negative values for normal slip.
- Applies to faults in 3D only.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-fault-opening
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Amount of fault opening in meters.
- Negative values imply penetration.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-rise_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-rise-time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Rise time (
-\begin_inset Formula $t_{r})$
-\end_inset
-
- in seconds.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip-time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip initiation time (
-\begin_inset Formula $t_{t})$
-\end_inset
-
- in meters.
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsection
-Dynamic Earthquake Rupture
-\end_layout
-
-\begin_layout Standard
-Dynamic fault interfaces use the FaultCohesiveDyn object to specify a fault
- constitutive model to govern the fault tractions (friction) and the resulting
- slip.
- When friction is large enough such that there is no sliding on the fault,
- the fault is locked (slip is zero) and the Lagrange multipliers assume
- their values just as they do in kinematic ruptures.
- In this case, the Lagrange multipliers correspond to the forces necessary
- to keep the slip zero.
- When the driving forces exceed those allowed by friction, we reduce the
- values of the Lagrange multipliers to those consistent with friction from
- the fault constitutive model.
- When we reduce the Lagrange multipliers, we must increment the slip accordingly
- to maintain consistency in the algebraic system of equations.
-\end_layout
-
-\begin_layout Subsubsection
-Governing Equations
-\end_layout
-
-\begin_layout Standard
-The algebraic systems of equations for dynamic earthquake rupture are the
- same as those for kinematic rupture
-\begin_inset Formula 
-\begin{equation}
-\left[\begin{array}{cc}
-\underline{A} & \underline{C}^{T}\\
-\underline{C} & 0
-\end{array}\right]\left[\begin{array}{c}
-\overrightarrow{u}\\
-\overrightarrow{l}
-\end{array}\right]=\left[\begin{array}{c}
-\overrightarrow{b}\\
-\overrightarrow{d}
-\end{array}\right].
-\end{equation}
-
-\end_inset
-
-Enforcing the limits imposed on the Lagrange multipliers by the fault constituti
-ve model requires determining the increment in slip for an increment in
- the Lagrange multipliers.
- The increment in the Lagrange multipliers is the difference between the
- value computed for the current slip (either zero or the slip at the previous
- time step) and the value computed from the fault constitutive model.
- Starting from our system of algebraic equations,
-\begin_inset Formula 
-\begin{equation}
-A_{ij}^{nm}u_{j}^{m}+C_{ji}^{pn}l_{j}^{p}=b_{i}^{n},
-\end{equation}
-
-\end_inset
-
-we compute the sensitivity for the given loading and boundary conditions,
-\begin_inset Formula 
-\begin{equation}
-A_{ij}^{nm}\partial u_{j}^{m}=-C_{ji}^{pn}\partial l_{j}^{p}.
-\end{equation}
-
-\end_inset
-
-Computing the increment in the slip requires computing the increment in
- the displacements.
- Solving this equation rigorously would require inverting the system Jacobian,
- which we do not want to do unless it is diagonal (as it is in the case
- of the lumped formulations).
- 
-\end_layout
-
-\begin_layout Paragraph
-Non-diagonal A
-\end_layout
-
-\begin_layout Standard
-In general A is a sparse matrix with off-diagonal terms of the form
-\begin_inset Formula 
-\begin{equation}
-A=\left(\begin{array}{ccc}
-A_{0} & A_{1} & A_{2}\\
-A_{3} & A_{n-} & 0\\
-A_{4} & 0 & A_{n+}
-\end{array}\right),
-\end{equation}
-
-\end_inset
-
-where the degrees of freedom on either side of the fault are uncoupled.
- We formulate two small linear systems involving just the degrees of freedom
- associated with vertices on either the positive or negative sides of the
- fault,
-\begin_inset Formula 
-\begin{gather}
-A_{ij}^{nm-}\partial u_{j}^{m-}=-R_{ij}^{pn}\partial l_{j}^{p},\\
-A_{ij}^{nm+}\partial u_{j}^{m+}=R_{ij}^{pn}\partial l_{j}^{p},
-\end{gather}
-
-\end_inset
-
-where we have replaced 
-\begin_inset Formula $\underline{C}$
-\end_inset
-
- with 
-\begin_inset Formula $\underline{R}$
-\end_inset
-
- to denote the explicit inclusion of the signs for the terms in 
-\begin_inset Formula $\underline{C}$
-\end_inset
-
- associated with the positive (
-\begin_inset Formula $n^{+}$
-\end_inset
-
-) and negative (
-\begin_inset Formula $n^{-}$
-\end_inset
-
-) sides of the fault.
- After solving these two linear systems of equations, we compute the increment
- in slip using
-\begin_inset Formula 
-\begin{equation}
-\partial d_{i}^{p}=R_{ij}^{pn}(\partial u_{j}^{n+}-\partial u_{j}^{n-}).
-\end{equation}
-
-\end_inset
-
-The solution of these two linear systems gives the increment in slip assuming
- all the degrees of freedom except those immediately adjacent to the fault
- remain fixed.
- In real applications where the deformation associated with fault slip is
- localized around the fault, this provides good enough approximations so
- that the nonlinear solver converges quickly.
- In problems where deformation associated with slip on the fault is not
- localized (as in the case in some of the example problems), the increment
- in slip computed by solving these two linear systems is not a good approximatio
-n and the nonlinear solve requires a large number of iterations.
-\end_layout
-
-\begin_layout Standard
-We use the PETSc Krylov subspace solver (KSP) to solve these two linear
- systems.
- The PETSc settings for the KSP object are set in the same manner as the
- main solver, except we use the prefix friction_ in all of the settings
- related to the KSP solver for these two linear systems.
- For example, to use the recommended additive Schwarz preconditioner in
- the friction sensitivity solves, the settings in a .cfg file are:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.petsc]
-\end_layout
-
-\begin_layout LyX-Code
-friction_pc_type = asm
-\end_layout
-
-\begin_layout Standard
-See the examples in Sections 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:Tutorial-3d-hex8-friction"
-
-\end_inset
-
- and 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:tutorial:shearwave:quad4"
-
-\end_inset
-
- for details.
-\end_layout
-
-\begin_layout Paragraph
-Diagonal A
-\end_layout
-
-\begin_layout Standard
-With a lumped Jacobian matrix, we can solve for the increment in slip directly,
-\begin_inset Formula 
-\begin{equation}
-\partial d_{i}^{p}=-C_{ij}^{pn}(A_{jk}^{nm})^{-1}C_{lk}^{pm}\partial l_{l}^{p}.
-\end{equation}
-
-\end_inset
-
-By not allowing the fault interface to overlap with the absorbing boundary,
- the terms in 
-\begin_inset Formula $A$
-\end_inset
-
- for a given vertex are identical and the expression on the right-hand side
- reduces to
-\begin_inset Formula 
-\begin{equation}
-\partial d_{i}^{p}=-\left(\frac{1}{A^{n+}}+\frac{1}{A^{n-}}\right)\partial l_{i}^{p}.
-\end{equation}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsubsection
-Dynamic Rupture Parameters
-\end_layout
-
-\begin_layout Standard
-The components of the FaultCohesiveDyn object include
-\end_layout
-
-\begin_layout Description
-open_free_surface If true, enforce traction free surface when the fault
- opens, otherwise apply prescribed tractions even when the fault opens (default
- is true); to mimic a dike opening use false.
-\end_layout
-
-\begin_layout Description
-zero_tolerance Tolerance for detecting zero values (default is 1.0e-10);
- should be larger than absolute tolerance in KSP solves.
-\end_layout
-
-\begin_layout Description
-traction_perturbation Prescribed tractions on fault surface (generally used
- for nucleating earthquake ruptures, default is none).
-\end_layout
-
-\begin_layout Description
-friction Fault constitutive model.
-\end_layout
-
-\begin_layout Standard
-An example of specifying the dynamic earthquake rupture properties and component
-s in a 
-\family typewriter
-.cfg
-\family default
- file:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault]
-\end_layout
-
-\begin_layout LyX-Code
-open_free_surface = True ; default
-\end_layout
-
-\begin_layout LyX-Code
-traction_perturbation = pylith.faults.TractPerturbation ; not default
-\end_layout
-
-\begin_layout LyX-Code
-traction_perturbation.db_initial = spatialdata.spatialdb.SimpleDB
-\end_layout
-
-\begin_layout LyX-Code
-traction_perturbation.db_initial.iohandler.filename = tractions.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-friction = pylith.friction.StaticFriction
-\end_layout
-
-\begin_layout LyX-Code
-friction.db_properties = spatialdata.spatialdb.SimpleDB
-\end_layout
-
-\begin_layout LyX-Code
-friction.db_properties.iohandler.filename = friction.spatialdb
-\end_layout
-
-\begin_layout Standard
-The prescribed traction perturbation is specified using the same fault coordinat
-e system as the slip directions in the kinematic ruptures.
- The perurbation has the same functional form as the time-dependent boundary
- conditions (and same spatial databases).
- Table 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:fault:cohesive:dyn:prescribed:tractions"
-
-\end_inset
-
- gives the values in the spatial database for the prescribed tractions.
- Table 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:fault:dyn:output"
-
-\end_inset
-
- shows the fields available for output.
- Additional fields are available depending on the fault constitutive model.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:fault:cohesive:dyn:prescribed:tractions"
-
-\end_inset
-
-Values in spatial databases for prescribed tractions.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="22" columns="4">
-<features tabularvalignment="middle">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="2.5in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Spatial database
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Dimension
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Value
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_initial
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-1-D
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-normal
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Normal traction (tension is positive)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-2-D
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-shear
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Left-lateral shear traction (reverse shear for dipping faults)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-normal
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Normal traction (tension is positive)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-3-D
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-shear-leftlateral
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Left-lateral shear traction
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-shear-updip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Reverse shear traction
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-normal
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Normal traction (tension is positive)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_rate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-1-D
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-rate-normal
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Rate of change of normal traction (tension is positive)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-2-D
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-rate-shear
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Rate of change of left-lateral shear traction (reverse shear for dipping
- faults)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-rate-normal
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Rate of change of normal traction (tension is positive)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-3-D
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-rate-leftlateral
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Rate of change of eft-lateral shear traction
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-rate-shear-updip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Rate of change of reverse shear traction
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-rate-normal
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Rate of change of normal traction (tension is positive)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-all
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-rate-start-time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Time at which rate of change begins
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_change
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-1-D
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-normal
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Change in normal traction (tension is positive)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-2-D
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-shear
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Change in left-lateral shear traction (reverse shear for dipping faults)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-normal
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Change in normal traction (tension is positive)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-3-D
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-leftlateral
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Change in left-lateral shear traction
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-shear-updip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Change in reverse shear traction
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction-normal
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Change in normal traction (tension is positive)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-all
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-change-start-time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Time at which change begins
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-th_change
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-all
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-None
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Time history for change
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:fault:dyn:output"
-
-\end_inset
-
-Fields available in output of fault information.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="11" columns="3">
-<features tabularvalignment="middle">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="3.5in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Field Type
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Field
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-vertex_info_fields
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-normal_dir
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Direction of fault normal in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-strike_dir
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Direction of fault strike in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-dip_dir
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Up-dip direction on hanging wall in global coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction_initial
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Initial tractions (if specified) in fault coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction_rate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Rate of change in tractions (if specified) in fault coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-rate_start_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Time at which rate of change begins (if specified)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction_change
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Change in tractions (if specified) in fault coordinate system
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-change_start_time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Time at which change occurs (if specified)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-vertex_data_fields
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip vector at time step (in fault coordinate system) in meters
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-traction
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" bottomline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Fault tractions (in fault coordinate system) in Pa
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsubsection
-Fault Constitutive Models
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:fault:constitutive:models"
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-PyLith provides four fault constitutive models.
- Future releases may contain additional models and a template is provided
- for you to construct your own (see Section 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:Extending:FaultConstitutiveModels"
-
-\end_inset
-
-).
- The fault constitutive model implementations are independent of dimension
- and work in both 2-D and 3-D.
- In solving the governing equations, PyLith will use a scalar representation
- of the shear traction in 2-D and a vector representation of the shear traction
- in 3-D, with the shear traction resolved in the direction of current slip.
- The fault constitutive models contain a common set of properties and components
-:
-\end_layout
-
-\begin_layout Description
-label Name of the friction model.
-\end_layout
-
-\begin_layout Description
-db_properties Spatial database of the friction model parameters (default
- is SimpleDB).
-\end_layout
-
-\begin_layout Description
-db_initial_state Spatial database for initial state variables (default is
- none).
-\end_layout
-
-\begin_layout Paragraph
-Static Friction
-\end_layout
-
-\begin_layout Standard
-The static friction model produces shear tractions proportional to the fault
- normal traction plus a cohesive stress,
-\begin_inset Formula 
-\begin{equation}
-T_{f}=\begin{cases}
-T_{c}-\mu_{f}T_{n} & T_{n}\leq0\\
-0 & T_{n}>0
-\end{cases}.
-\end{equation}
-
-\end_inset
-
-The spatial database file for the static friction model properties specifies
- the spatial variation of the parameters given in Table 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:static:friction:properties"
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:static:friction:properties"
-
-\end_inset
-
-Values in the spatial database for constant friction parameters.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="3" columns="2">
-<features tabularvalignment="middle">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="2.5in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Value
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-friction-coefficient
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Coefficient of friction, 
-\begin_inset Formula $\mu_{f}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-cohesion
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Cohesive stress, 
-\begin_inset Formula $T_{c}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Paragraph
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:friction:slip:weakening"
-
-\end_inset
-
-Slip-Weakening Friction
-\end_layout
-
-\begin_layout Standard
-The linear slip-weakening friction model produces shear tractions equal
- to the cohesive stress plus a contribution proportional to the fault normal
- traction that decreases from a static value to a dynamic value as slip
- progresses,
-\begin_inset Formula 
-\begin{equation}
-T_{f}=\begin{cases}
-T_{c}-(\mu_{s}-(\mu_{s}-\mu_{d})\frac{d}{d_{0}})T_{n} & d\leq d_{0}\text{ and }T_{n}\leq0\\
-T_{c}-\mu_{d}T_{n} & d>d_{0}\text{ and }T_{n}\leq0\\
-0 & T_{n}>0
-\end{cases}
-\end{equation}
-
-\end_inset
-
-The spatial database files for the slip-weakening friction model properties
- and state variables specify the spatial variation of the fault constitutive
- model parameters given in Table 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:slip:weakening:properties:statevars"
-
-\end_inset
-
-.
- As long as the fault is locked, the initial state variables are zero, so
- specifying the initial state variables for slip-weakening friction is rare.
- The slip-weakening friction also includes a parameter, 
-\family typewriter
-force_healing
-\family default
-, to control healing.
- In quasi-static simulations, one usually wants slip confined to a single
- time step (
-\family typewriter
-force_healing
-\family default
- = True), whereas in a dynamic simulation slip occurs over many time steps
- (
-\family typewriter
-force_healing
-\family default
- = False; default behavior) and fault healing is often neglected.
- The properties include:
-\end_layout
-
-\begin_layout Description
-force_healing Flag indicating whether healing (cumalative slip state variable
- reset to zero) is forced after every time step.
-\end_layout
-
-\begin_layout Standard
-An example of setting the properties for the rate and state friction component
- in a 
-\family typewriter
-.cfg
-\family default
- file is:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault]
-\end_layout
-
-\begin_layout LyX-Code
-friction = pylith.friction.SlipWeakening ; Change friction model from the
- default
-\end_layout
-
-\begin_layout LyX-Code
-friction.force_healing = False ; default value
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:slip:weakening:properties:statevars"
-
-\end_inset
-
-Values in spatial databases for slip-weakening friction.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="7" columns="3">
-<features tabularvalignment="middle">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="2.5in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Spatial database
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Value
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_properties
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-static-coefficient
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Static coefficient of friction, 
-\begin_inset Formula $\mu_{s}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-dynamic-coefficient
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Dynamic coefficient of friction, 
-\begin_inset Formula $\mu_{d}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-slip-weakening-parameter
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip-weakening parameter, 
-\begin_inset Formula $d_{0}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-cohesion
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Cohesive stress, 
-\begin_inset Formula $T_{c}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-db_initial_state
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-cumulative-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Cumulative slip, 
-\begin_inset Formula $d$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-previous-slip
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip at previous time step, 
-\begin_inset Formula $d(t-\Delta t)$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Paragraph
-Time-Weakening Friction
-\end_layout
-
-\begin_layout Standard
-The linear time-weakening friction model is analogous to the linear slip-weakeni
-ng friction model with time replacing slip.
- It produces shear tractions equal to the cohesive stress plus a contribution
- proportional to the fault normal traction that decreases from a static
- value to a dynamic value as time progresses,
-\begin_inset Formula 
-\begin{equation}
-T_{f}=\begin{cases}
-T_{c}-(\mu_{s}-(\mu_{s}-\mu_{d})\frac{t}{t_{0}})T_{n} & t\leq t_{0}\text{ and }T_{n}\leq0\\
-T_{c}-\mu_{d}T_{n} & t>t_{0}\text{ and }T_{n}\leq0\\
-0 & T_{n}>0
-\end{cases}
-\end{equation}
-
-\end_inset
-
-The spatial database files for the time-weakening friction model properties
- and state variables specify the spatial variation of the fault constitutive
- model parameters given in Table 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:time:weakening:properties:statevars"
-
-\end_inset
-
-.
- As long as the fault is locked, the initial state variable is zero, so
- specifying the initial state variable for time-weakening friction is rare.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:time:weakening:properties:statevars"
-
-\end_inset
-
-Values in spatial databases for time-weakening friction.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="6" columns="3">
-<features tabularvalignment="middle">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="2.5in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Database
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Value
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-db_properties
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-static-coefficient
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Static coefficient of friction, 
-\begin_inset Formula $\mu_{s}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-dynamic-coefficient
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Dynamic coefficient of friction, 
-\begin_inset Formula $\mu_{d}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-time-weakening-parameter
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Time-weakening parameter, 
-\begin_inset Formula $t_{0}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-cohesion
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Cohesive stress, 
-\begin_inset Formula $T_{c}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-db_initial_state
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-elapsed-time
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Elasped time of slip, 
-\begin_inset Formula $t$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Paragraph
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:friction:rate:state:ageing"
-
-\end_inset
-
-Rate- and State-Friction with Ageing Law
-\end_layout
-
-\begin_layout Standard
-The Dieterich-Ruina rate and state friction model produces shear tractions
- equal to the cohesive stress plus a contribution proportional to the fault
- normal traction that depends on a state variable,
-\begin_inset Formula 
-\begin{gather}
-T_{f}=\begin{cases}
-T_{c}-\mu_{f}T_{n} & T_{n}\leq0\\
-0 & T_{n}>0
-\end{cases}\\
-\mu_{f}=\begin{cases}
-\mu_{0}+a\ln\left(\frac{V}{V_{0}}\right)+b\ln\left(\frac{V_{0}\theta}{L}\right) & V\ge V_{\mathit{min}}\\
-\mu_{0}+a\ln\left(\frac{V_{min}}{V}\right)+b\ln\left(\frac{V_{0}\theta}{L}\right)-a\left(1-\frac{V}{V_{min}}\right) & V<V_{min}
-\end{cases}\\
-\frac{d\theta}{dt}=1-\frac{V\theta}{L}
-\end{gather}
-
-\end_inset
-
-where 
-\begin_inset Formula $V$
-\end_inset
-
- is slip rate, 
-\begin_inset Formula $V_{min}$
-\end_inset
-
- is a minimum slip rate, 
-\begin_inset Formula $a$
-\end_inset
-
- and 
-\begin_inset Formula $b$
-\end_inset
-
- are coefficients, 
-\begin_inset Formula $L$
-\end_inset
-
- is the characteristic slip distance, 
-\begin_inset Formula $\theta$
-\end_inset
-
- is a state variable.
- With an interative solver in quasi-static simulations with a small, but
- nonzero residual tolerance we never encounter zero slip rates in quasi-static
- simulations.
- Instead we want to avoid significant variations in the coefficient of friction
- for slip rates on the same order as our residual tolerance.
- We regularize the rate and state friction model by iposing a linearization
- of the variation of the coefficient of friction with slip rate when the
- slip rate drops below a minimum slip rate, 
-\begin_inset Formula $V_{min}$
-\end_inset
-
- (
-\family typewriter
-min_slip_rate
-\family default
- property with a default value of 1.0e-12).
- Note that this is different than the popular inverse hypoerbolic sine regulariz
-ation proposed by Ben-Zion and Rice 
-\begin_inset CommandInset citation
-LatexCommand cite
-key "BenZion:Rice:1997"
-
-\end_inset
-
- to permit zero slip rates.
- Following Kaneko 
-\shape italic
-et al.
-
-\shape default
- 
-\begin_inset CommandInset citation
-LatexCommand cite
-key "Kaneko:etal:2008"
-
-\end_inset
-
-, we integrate the evolution equation for the state variable keeping slip
- rate constant to get
-\begin_inset Formula 
-\begin{equation}
-\theta(t+\Delta t)=\theta(t)\exp\left(\frac{-V(t)\Delta t}{L}\right)+\frac{L}{V(t)}\left(1-\exp\left(-\frac{V(t)\Delta t}{L}\right)\right).
-\end{equation}
-
-\end_inset
-
-As the slip rate approaches zero, the first exponential term approaches
- 1.
- Using the first three terms of the Taylor series expansion of the second
- exponential yields
-\begin_inset Formula 
-\begin{equation}
-\theta(t+\Delta t)=\begin{cases}
-\theta(t)\exp\left(-\frac{V(t)\Delta t}{L}\right)+\Delta t-\frac{1}{2}\frac{V(t)\Delta t^{2}}{L} & \frac{V(t)\Delta t}{L}<0.00001\\
-\theta(t)\exp\left(-\frac{V(t)\Delta t}{L}\right)+\frac{L}{V(t)}\left(1-\exp\left(-\frac{V(t)\Delta t}{L}\right)\right) & \frac{V(t)\Delta t}{L}\ge0.00001
-\end{cases}.
-\end{equation}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The properties include:
-\end_layout
-
-\begin_layout Description
-min_slip_rate Slip rate at which linearization occurs, 
-\begin_inset Formula $V_{min}$
-\end_inset
-
-.
- Should be about one order of magnitude larger than absolute tolerance in
- solve.
-\end_layout
-
-\begin_layout Standard
-An example of setting the properties for the rate and state friction component
- in a 
-\family typewriter
-.cfg
-\family default
- file is:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault]
-\end_layout
-
-\begin_layout LyX-Code
-friction = pylith.friction.RateStateAgeing ; Change friction model from the
- default
-\end_layout
-
-\begin_layout LyX-Code
-friction.min_slip_rate = 1.0e-12 ; default value
-\end_layout
-
-\begin_layout Standard
-The spatial database files for the rate and state friction model properties
- and state variables specify the spatial variation of the fault constitutive
- model parameters given in Table 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "tab:rate:state:ageing:properties:statevars"
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-\noindent
-\align center
-\begin_inset Float table
-placement H
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\noindent
-\align center
-\begin_inset Caption
-
-\begin_layout Plain Layout
-\begin_inset CommandInset label
-LatexCommand label
-name "tab:rate:state:ageing:properties:statevars"
-
-\end_inset
-
-Values in spatial databases for Dieterich-Ruina rate-state friction.
-\end_layout
-
-\end_inset
-
-
-\begin_inset VSpace defskip
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="8" columns="3">
-<features tabularvalignment="middle">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="0">
-<column alignment="left" valignment="top" width="2.5in">
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Database
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Value
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\series bold
-Description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-db_properties
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-reference-friction-coefficient
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Steady-state coefficient of friction at slip rate 
-\begin_inset Formula $V_{0}$
-\end_inset
-
-, 
-\begin_inset Formula $\mu_{s}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-reference-slip-rate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Reference slip rate, 
-\begin_inset Formula $V_{0}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-characteristic-slip-distance
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Slip-weakening parameter, 
-\begin_inset Formula $L$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-constitutive-parameter-a
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Coefficient for the 
-\begin_inset Formula $\ln$
-\end_inset
-
- slip rate term, 
-\begin_inset Formula $a$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-constitutive-parameter-b
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Coefficient for the 
-\begin_inset Formula $\ln$
-\end_inset
-
- state variable term, 
-\begin_inset Formula $b$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-cohesion
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-Cohesive stress, 
-\begin_inset Formula $T_{c}$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-db_initial_state
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-
-\family typewriter
-state-variable
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Plain Layout
-State variable, 
-\begin_inset Formula $\theta$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsection
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:fault:cohesive:impulses"
-
-\end_inset
-
-Slip Impulses for Green's Functions
-\end_layout
-
-\begin_layout Standard
-Computing static Green's functions using the GreensFns problem requires
- a specialized fault implementation, FaultCohesiveImpulses, to setup the
- slip impulses.
- The parameters controlling the slip impulses include the components involved
- (lateral, reverse, and/or fault opening) and the amplitude of the pulses
- (e.g., selecting a subset of a fault or including a spatial variation).
- The GreensFns properties and facilities include:
-\end_layout
-
-\begin_layout Description
-threshold Threshold for non-zero amplitude; impulses will only be generated
- at locations on the fault where the amplitude excees this threshold.
-\end_layout
-
-\begin_layout Description
-impulse_dof Array of components associated with impulses, e.g., [0, 1] for
- slip involving the lateral and up-dip components.
-\end_layout
-
-\begin_layout Description
-db_impulse_amplitude Spatial database for amplitude of slip impulse (scalar
- field).
- Default is SimpleDB.
-\end_layout
-
-\begin_layout Standard
-An example of setting the properties and facilities for FaultCohesiveImpulses
- in a 
-\family typewriter
-.cfg
-\family default
- file is:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces]
-\end_layout
-
-\begin_layout LyX-Code
-fault = pylith.faults.FaultCohesiveImpulses ; Change from the default
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.interfaces.fault]
-\end_layout
-
-\begin_layout LyX-Code
-threshold = 1.0e-6*m ; default
-\end_layout
-
-\begin_layout LyX-Code
-impulse_dof = [0] ; lateral slip-only
-\end_layout
-
-\begin_layout LyX-Code
-db_impulse_amplitude.iohandler.filename = myimpulse.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-db_impulse_amplitude.label = Impulse amplitude
-\end_layout
-
-\begin_layout Section
-Gravitational Body Forces
-\end_layout
-
-\begin_layout Standard
-Many problems in geophysics require the consideration of gravitational body
- forces.
- For example, it is often important to include the effects of the lithostatic
- (overburden) pressure.
- In future releases of PyLith that permit nonlinear bulk rheologies, body
- forces will affect plastic yield criteria and the deformation field for
- large deformation/finite strain problems.
- As described in Chapter 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "cha:Governing-Equations"
-
-\end_inset
-
-, the body forces contribute to the residual,
-\begin_inset Formula 
-\begin{equation}
-r_{i}^{n}=\int_{V}f_{i}N^{n}\: dV.
-\end{equation}
-
-\end_inset
-
-For gravitational body forces the body force per unit volume, 
-\begin_inset Formula $f_{i}$
-\end_inset
-
-, is given as the product of the mass density, 
-\begin_inset Formula $\rho$
-\end_inset
-
-, the scalar gravitational acceleration value, 
-\begin_inset Formula $g$
-\end_inset
-
-, and the gravitational acceleration orientation vector, 
-\begin_inset Formula $a_{i}$
-\end_inset
-
-:
-\begin_inset Formula 
-\begin{equation}
-f_{i}=\rho ga_{i}.
-\end{equation}
-
-\end_inset
-
-The mass density is a property of every material model, and is thus included
- in the spatial database with the physical properties for each material.
- The gravitational acceleration is assumed to be uniform and constant for
- a given problem, with a default value of 9.80665 m/s
-\begin_inset Formula $^{\text{2}}$
-\end_inset
-
-.
- The orientation vector will depend on the dimension of the problem as well
- as the coordinate system being used.
- The default orientation vector has components (0, 0, -1).
- This is appropriate for three-dimensional problems where the gravity vector
- is aligned with the negative z-axis, as would be the case in a geographic-proje
-cted coordinate system or a generic Cartesian coordinate system.
- For cases in which the curvature of the earth should be considered, the
- spatialdata package provides an earth-centered, earth-fixed (ECEF) coordinate
- system and a local georeferenced Cartesian system; in each of these cases
- the orientation vector is computed automatically, although this feature
- has not been tested.
- For problems in one or two dimensions where the orientation vector is constant,
- the vector will need to be explicitly specified.
- For example, in a two-dimensional problem, the vector might be specified
- as (0, -1, 0).
- The vector still has three components, although the extra component is
- not used.
-\end_layout
-
-\begin_layout Standard
-Gravity is turned off by default.
- To include gravitational effects in a simulation, you can turn it on as
- follows:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent]
-\end_layout
-
-\begin_layout LyX-Code
-use_gravity = true
-\end_layout
-
-\begin_layout Standard
-By simply adding this flag, the default gravity field values will be used
- and a 
-\family typewriter
-gravity_field
-\family default
- component will be assigned for the problem.
- The default values may be changed by altering the properties of 
-\family typewriter
-gravity_field
-\family default
-:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.gravity_field]
-\end_layout
-
-\begin_layout LyX-Code
-acceleration = 100.0*m*s**-2
-\end_layout
-
-\begin_layout LyX-Code
-gravity_dir = [0, -1, 0]
-\end_layout
-
-\begin_layout Standard
-An example problem using gravity is described in Section 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:Tutorial-3d-hex8-gravity"
-
-\end_inset
-
-.
-\end_layout
-
-\end_body
-\end_document
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
+\begin_document
+\begin_header
+\textclass book
+\use_default_options false
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman default
+\font_sans default
+\font_typewriter default
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry true
+\use_amsmath 1
+\use_esint 0
+\use_mhchem 1
+\use_mathdots 1
+\cite_engine basic
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\use_refstyle 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\leftmargin 1in
+\topmargin 1in
+\rightmargin 1in
+\bottommargin 1in
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\quotes_language english
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Chapter
+\begin_inset CommandInset label
+LatexCommand label
+name "cha:boundary:interface:conditions"
+
+\end_inset
+
+Boundary and Interface Conditions
+\end_layout
+
+\begin_layout Section
+Assigning Boundary Conditions
+\end_layout
+
+\begin_layout Standard
+There are four basic steps in assigning a specific boundary condition to
+ a portion of the domain.
+\end_layout
+
+\begin_layout Enumerate
+Create sets of vertices in the mesh generation process for each boundary
+ condition.
+\end_layout
+
+\begin_layout Enumerate
+Define boundary condition groups corresponding to the vertex sets.
+\end_layout
+
+\begin_layout Enumerate
+Set the parameters for each boundary condition group using 
+\family typewriter
+.cfg
+\family default
+ or 
+\family typewriter
+.pml
+\family default
+ files and/or command line arguments.
+\end_layout
+
+\begin_layout Enumerate
+Specify the spatial variation in parameters for the boundary condition using
+ a spatial database file.
+\end_layout
+
+\begin_layout Subsection
+Creating Sets of Vertices
+\end_layout
+
+\begin_layout Standard
+The procedure for creating sets of vertices differs depending on the mesh
+ generator.
+ For meshes specified using the PyLith mesh ASCII format, the sets of vertices
+ are specified using groups (see Appendix 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:MeshIOAscii"
+
+\end_inset
+
+).
+ In CUBIT the groups of vertices are created using nodesets.
+ Similarly, in LaGriT, psets are used.
+ Note that we chose to associated boundary conditions with groups of vertices
+ because nearly every mesh generation package supports associating a string
+ or integer with groups of vertices.
+ Note also that we currently associate boundary conditions with string identifie
+rs, so even if the mesh generator uses integers, the name is specified as
+ the digits of the integer value.
+ Finally, note that every vertex set that ultimately is associated with
+ a boundary condition on a cell face (e.g., Neumann boundary conditions and
+ fault interface conditions) must correspond to a simply-connected surface.
+\end_layout
+
+\begin_layout Subsection
+Arrays of Boundary Condition Components
+\end_layout
+
+\begin_layout Standard
+A dynamic array of boundary condition components associates a name (string)
+ with each boundary condition.
+ This dynamic array of boundary conditions replaces the boundary condition
+ container in PyLith 1.0.
+ User-defined containers are no longer necessary, and the predefined containers
+ are no longer available (or necessary).
+ The default boundary condition for each component in the array is the Dirichlet
+Points object.
+ Other boundary conditions can be bound to the named items in the array
+ via a 
+\family typewriter
+.cfg
+\family default
+ file, 
+\family typewriter
+.pml
+\family default
+ file, or the command line.
+ The parameters for the boundary condition are set using the name of the
+ boundary condition.
+ An example of setting the array of boundary condition components and changing
+ the types of boundary conditions in a 
+\family typewriter
+.cfg
+\family default
+ file:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem]
+\end_layout
+
+\begin_layout LyX-Code
+bc = [x_neg,x_pos,y_pos,z_neg] ; Array of boundary conditions
+\end_layout
+
+\begin_layout LyX-Code
+# Default boundary condition is DirichletPoints
+\end_layout
+
+\begin_layout LyX-Code
+# Keep default value for bc.x_neg
+\end_layout
+
+\begin_layout LyX-Code
+bc.x_pos = pylith.bc.DirichletBoundary ; change BC type to DirichletBoundary
+\end_layout
+
+\begin_layout LyX-Code
+bc.y_pos = pylith.bc.AbsorbingDampers ; change BC type to AbsorbingDampers
+\end_layout
+
+\begin_layout LyX-Code
+bc.z_neg = pylith.bc.Neumann ; change BC type to Neumann (traction)
+\end_layout
+
+\begin_layout Section
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:Time:Dependent:BC"
+
+\end_inset
+
+Time-Dependent Boundary Conditions
+\end_layout
+
+\begin_layout Standard
+Several boundary conditions use a common formulation for the spatial and
+ temporal variation of the boundary condition parameters,
+\begin_inset Formula 
+\begin{equation}
+f(\vec{x})=f_{0}(\vec{x})+\dot{f}_{0}(\vec{x})(t-t_{0}(\vec{x}))+f_{1}(\vec{x})a(t-t_{1}(\vec{x})),
+\end{equation}
+
+\end_inset
+
+where 
+\begin_inset Formula $f(\vec{x})$
+\end_inset
+
+ may be a scalar or vector parameter, 
+\begin_inset Formula $f_{0}(\vec{x})$
+\end_inset
+
+ is a constant value, 
+\begin_inset Formula $\dot{f}_{0}(\vec{x})$
+\end_inset
+
+ is a constant rate of change in the value, 
+\begin_inset Formula $t_{0}(\vec{x})$
+\end_inset
+
+ is the onset time for the constant rate of change, 
+\begin_inset Formula $f_{1}(\vec{x})$
+\end_inset
+
+ is the amplitude for the temporal modulation, 
+\begin_inset Formula $a(t)$
+\end_inset
+
+ is the variation in amplitude with time, 
+\begin_inset Formula $t_{1}(\vec{x})$
+\end_inset
+
+ is the onset time for the temporal modulation, and 
+\begin_inset Formula $\vec{x}$
+\end_inset
+
+ is the position of a location in space.
+ This common formulation permits easy specification of a scalar or vector
+ with a constant value, constant rate of change of a value, and/or modulation
+ of a value in time.
+ One can specify just the initial value, just the rate of change of the
+ value (along with the corresponding onset time), or just the modulation
+ in amplitude (along with the corresponding temporal variation and onset
+ time), or any combination of the three.
+ The facilities associated with this formulation are:
+\end_layout
+
+\begin_layout Description
+db_initial Spatial database specifying the spatial variation in the initial
+ value (default is none).
+\end_layout
+
+\begin_layout Description
+db_rate Spatial database specifying rate of change in the value (default
+ is none).
+\end_layout
+
+\begin_layout Description
+db_change Spatial database specifying the amplitude of the temporal modulation
+ (default is none).
+\end_layout
+
+\begin_layout Description
+th_change Time history database specifying the temporal change in amplitude
+ (default is none).
+\end_layout
+
+\begin_layout Subsection
+Dirichlet Boundary Conditions
+\end_layout
+
+\begin_layout Standard
+Dirichlet boundary conditions in PyLith prescribe the displacement of a
+ subset of the vertices of the finite-element mesh.
+ While Dirichlet boundary conditions can be applied to any vertex, usually
+ they are applied to vertices on the lateral and bottom boundaries of the
+ domain.
+ There are two types of Dirichlet boundary conditions, DirichletBC and Dirichlet
+Boundary.
+ Both provide identical constraints on the solution, but DirichletBoundary
+ is limited to vertices of a simply-connected surface, which allows diagnostic
+ output of the prescribed displacements.
+ DirichletBC can be applied to a set of unconnected vertices.
+\end_layout
+
+\begin_layout Subsubsection
+Dirichlet Boundary Condition Parameters
+\end_layout
+
+\begin_layout Standard
+The properties and components common to both the DirichletPoints and DirichletBo
+undary boundary conditions are:
+\end_layout
+
+\begin_layout Description
+label Label of the group of vertices associated with the boundary condition.
+\end_layout
+
+\begin_layout Description
+bc_dof Array of degrees of freedom to be fixed (first degree of freedom
+ is 0).
+\end_layout
+
+\begin_layout Standard
+DirichletBoundary contains an additional component:
+\end_layout
+
+\begin_layout Description
+output Manager for output of displacements on boundary with specified displaceme
+nts.
+\end_layout
+
+\begin_layout Standard
+By default the output manager does not output any information.
+ The specified displacements and velocities can be output by including ``displac
+ements'' and ``velocities'' in the output manager's 
+\family typewriter
+vertex_info_fields
+\family default
+ array parameter.
+ An example of setting the Dirichlet boundary condition parameters in a
+ 
+\family typewriter
+.cfg
+\family default
+ file is:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem]
+\end_layout
+
+\begin_layout LyX-Code
+bc = [mybc]
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.bc.mybc]
+\end_layout
+
+\begin_layout LyX-Code
+label = group A 
+\end_layout
+
+\begin_layout LyX-Code
+bc_dof = [2] ; fixed displacement in z direction
+\end_layout
+
+\begin_layout LyX-Code
+db_initial = spatialdata.spatialdb.SimpleDB
+\end_layout
+
+\begin_layout LyX-Code
+db_initial.iohandler.filename = disp_A.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+db_initial.query_type = nearest ; change query type to nearest point algorithm
+\end_layout
+
+\begin_layout LyX-Code
+db_rate = spatialdata.spatialdb.UniformDB
+\end_layout
+
+\begin_layout LyX-Code
+db_rate.values = [displacement-rate-z]
+\end_layout
+
+\begin_layout LyX-Code
+db_rate.data = [1.0e-06*m/s] ; velocity is 1.0e-06 m/s
+\end_layout
+
+\begin_layout Standard
+We have created an array with one boundary condition, mybc.
+ The group of vertices associated with the boundary condition is group A.
+ For the database associated with the constant displacement, we use a SimpleDB.
+ We set the filename and query type for the database.
+ For the rate of change of values, we use a UniformDB and specify the velocity
+ in the z-direction to be 1.0e-06 m/s.
+ See Section 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:spatial:databases"
+
+\end_inset
+
+ for a discussion of the different types of spatial databases available.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:dirichlet:output"
+
+\end_inset
+
+Fields available in output of DirichletBoundary boundary condition information.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="6" columns="3">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="3in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Field Type
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Field
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+vertex_info_fields
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+displacement_initial
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Initial displacement field in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+velocity
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Rate of change of displacement field in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+velocity_start_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Onset time in seconds for rate of change in displacement field
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+displacement_change
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Amplitude of change in displacement field in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+change_start_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Onset time in seconds for the amplitude change in the displacement field
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsubsection
+Dirichlet Boundary Condition Spatial Database Files
+\end_layout
+
+\begin_layout Standard
+The spatial database files for the Dirichlet boundary condition specify
+ the fixed displacements.
+ The spatial database file may contain displacements at more degrees of
+ freedom than those specified in the Dirichlet boundary condition settings
+ using the 
+\family typewriter
+bc_dof
+\family default
+ setting.
+ Only those listed in 
+\family typewriter
+bc_dof
+\family default
+ will be used.
+ This permits using the same spatial database file for multiple Dirichlet
+ boundary conditions with the same displacement field.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+Values in the spatial databases used for Dirichlet boundary conditions.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="4" columns="2">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="4in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Spatial database
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Name in Spatial Database
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_initial
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+displacement-x, displacement-y, displacement-z
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_rate
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+displacement-rate-x, displacement-rate-y, displacement-rate-z, rate-start-time
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_change
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+displacement-x, displacement-y, displacement-z, change-start-time
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Neumann Boundary Conditions
+\end_layout
+
+\begin_layout Standard
+Neumann boundary conditions are surface tractions applied over a subset
+ of the mesh.
+ As with the DirichletBoundary condition, each Neumann boundary condition
+ can only be applied to a simply-connected surface.
+ The surface over which the tractions are applied always has a spatial dimension
+ that is one less than the dimension of the finite-element mesh.
+ Traction values are computed at the integration points of each cell on
+ the surface, using values from a spatial database.
+ The tractions are integrated over each cell and assembled to obtain the
+ forces applied at the vertices.
+ See Section 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sub:Tutorial-twoquad4-traction"
+
+\end_inset
+
+ for a tutorial that uses Neumann boundary conditions.
+\end_layout
+
+\begin_layout Subsubsection
+Neumann Boundary Condition Parameters
+\end_layout
+
+\begin_layout Standard
+The Neumann boundary condition properties and components are:
+\end_layout
+
+\begin_layout Description
+label Name of the group of vertices defining the mesh boundary for the Neumann
+ boundary condition.
+\end_layout
+
+\begin_layout Description
+up_dir This is a 3-vector that provides a hint for the direction perpendicular
+ to the horizontal tangent direction that is not collinear with the direction
+ normal to the surface.
+ The default value is (0,0,1), which assumes that the z-axis is positive
+ upward.
+ This vector is only needed for three-dimensional problems where the positive
+ upward direction differs from the default.
+\end_layout
+
+\begin_layout Description
+output The output manager associated with diagnostic output (traction vector).
+\end_layout
+
+\begin_layout Description
+quadrature The quadrature object to be used for numerical integration.
+ Since we are integrating over a surface that is one dimension lower than
+ the problem domain, this would typically be set to something like 
+\family typewriter
+Quadrature2Din3D
+\family default
+ (for a three-dimensional problem).
+\end_layout
+
+\begin_layout Standard
+By default the output manager does not output any information.
+ The specified tractions can be output in global coordinates by including
+ ``tractions'' in the output manager's 
+\family typewriter
+cell_info_fields
+\family default
+ array parameter.
+ An example of setting these parameters in a 
+\family typewriter
+.cfg
+\family default
+ file is:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.timedependent]
+\end_layout
+
+\begin_layout LyX-Code
+bc = [x_neg,x_pos,y_neg]
+\end_layout
+
+\begin_layout LyX-Code
+bc.x_pos = pylith.bc.Neumann ; Change BC type to Neumann
+\end_layout
+
+\begin_layout LyX-Code
+ 
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.timedependent.bc.x_pos]
+\end_layout
+
+\begin_layout LyX-Code
+label = x_pos ; Name of group of vertices for +x boundary
+\end_layout
+
+\begin_layout LyX-Code
+db_initial = spatialdata.spatialdb.SimpleDB
+\end_layout
+
+\begin_layout LyX-Code
+db_initial.label = Neumann BC +x edge
+\end_layout
+
+\begin_layout LyX-Code
+db_initial.iohandler.filename = axialtract.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+db_initial.query_type = nearest
+\end_layout
+
+\begin_layout LyX-Code
+quadrature.cell = pylith.feassemble.FIATLagrange
+\end_layout
+
+\begin_layout LyX-Code
+quadrature.cell.dimension = 1
+\end_layout
+
+\begin_layout LyX-Code
+quadrature.cell.quad_order = 2
+\end_layout
+
+\begin_layout Standard
+These settings correspond to the example problem described in Section 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sub:Tutorial-twoquad4-traction"
+
+\end_inset
+
+.
+ It is necessary to set the boundary condition type to 
+\family typewriter
+pylith.bc.Neumann
+\family default
+, since the default value is 
+\family typewriter
+Dirichlet
+\family default
+BC.
+ Constant tractions are used for this particular problem, so a quadrature
+ order of one would have been sufficient; however, for problems involving
+ more complex variations (e.g., a linear variation), a quadrature order of
+ two will provide more accurate results.
+ Note that there is no advantage to specifying an integration order higher
+ than two, since linear elements are being used for this problem.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:neumann:output"
+
+\end_inset
+
+Fields available in output of Neumann boundary condition information.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="6" columns="3">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="3in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Field Type
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Field
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+cell_info_fields
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+tracton_initial
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Initial traction field in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction_rate
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Rate of change of traction field in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+rate_start_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Onset time in seconds for rate of change in traction field
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction_change
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Amplitude of change in traction field in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+change_start_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Onset time in seconds for the amplitude change in the traction field
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsubsection
+Neumann Boundary Condition Spatial Database Files
+\end_layout
+
+\begin_layout Standard
+The spatial database files for the Neumann boundary condition specify the
+ applied tractions.
+ The number of traction components is equal to the spatial dimension for
+ the problem.
+ The tractions are specified in a local coordinate system for the boundary.
+ The names of the components of the traction vector are:
+\end_layout
+
+\begin_layout Description
+one-dimensional 
+\family typewriter
+normal
+\end_layout
+
+\begin_layout Description
+two-dimensional 
+\family typewriter
+shear
+\family default
+, 
+\family typewriter
+normal
+\end_layout
+
+\begin_layout Description
+three-dimensional 
+\family typewriter
+horiz-shear
+\family default
+, 
+\family typewriter
+vert-shear
+\family default
+, 
+\family typewriter
+normal
+\end_layout
+
+\begin_layout Standard
+Ambiguities in specifying the shear tractions in 3D problems are resolved
+ using the 
+\family typewriter
+up_dir
+\family default
+ parameter.
+ In the case of a horizontal surface, users will need to pick an alternative
+ vector, as the default 
+\family typewriter
+up_dir
+\family default
+ would coincide with the normal direction.
+ In this case, the orientation for the 
+\family typewriter
+vert-shear-traction
+\family default
+ component will correspond to whatever the user specifies for 
+\family typewriter
+up_dir
+\family default
+, rather than the actual vertical direction.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+Values in the spatial databases used for Dirichlet boundary conditions in
+ three dimensions.
+ In one- and two-dimensional problems, the names of the components are slightly
+ different as described earlier in this section.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="4" columns="2">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="4in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Spatial database
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Name in Spatial Database
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_initial
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-shear-horiz, traction-shear-vert, traction-normal
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_rate
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-rate-horiz-shear, traction-rate-vert-shear, traction-rate-normal,
+ rate-start-time
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_change
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-horiz-shear, traction-vert-shear, traction-normal, change-start-time
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Point Force Boundary Conditions
+\end_layout
+
+\begin_layout Standard
+Point force boundary conditions in PyLith prescribe the application of point
+ forces to a subset of the vertices of the finite-element mesh.
+ While point force boundary conditions can be applied to any vertex, usually
+ they are applied to vertices on the lateral, top, and bottom boundaries
+ of the domain.
+\end_layout
+
+\begin_layout Subsubsection
+Point Force Parameters
+\end_layout
+
+\begin_layout Standard
+The properties and components common to both the DirichletBC and DirichletBounda
+ry boundary conditions are:
+\end_layout
+
+\begin_layout Description
+label Label of the group of vertices associated with the boundary condition.
+\end_layout
+
+\begin_layout Description
+bc_dof Array of degrees of freedom to which forces are applied (first degree
+ of freedom is 0).
+\end_layout
+
+\begin_layout Standard
+An example of setting the point force boundary condition parameters in a
+ 
+\family typewriter
+.cfg
+\family default
+ file is:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem]
+\end_layout
+
+\begin_layout LyX-Code
+bc = [mybc]
+\end_layout
+
+\begin_layout LyX-Code
+bc.mybc = pylith.bc.PointForce
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.bc.mybc]
+\end_layout
+
+\begin_layout LyX-Code
+label = group A 
+\end_layout
+
+\begin_layout LyX-Code
+bc_dof = [2] ; fixed displacement in z direction
+\end_layout
+
+\begin_layout LyX-Code
+db_initial = spatialdata.spatialdb.SimpleDB
+\end_layout
+
+\begin_layout LyX-Code
+db_initial.iohandler.filename = force_A.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+db_initial.query_type = nearest ; change query type to nearest point algorithm
+\end_layout
+
+\begin_layout LyX-Code
+db_rate = spatialdata.spatialdb.UniformDB
+\end_layout
+
+\begin_layout LyX-Code
+db_rate.values = [force-rate-z]
+\end_layout
+
+\begin_layout LyX-Code
+db_rate.data = [1.0e+5*newton/s]
+\end_layout
+
+\begin_layout Standard
+We have created an array with one boundary condition, mybc.
+ The group of vertices associated with the boundary condition is group A.
+ For the database associated with the constant force, we use a SimpleDB.
+ We set the filename and query type for the database.
+ For the rate of change of values, we use a UniformDB and specify the rate
+ of change in the force to be 1.0e+5 Newton/s.
+ See Section 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:spatial:databases"
+
+\end_inset
+
+ for a discussion of the different types of spatial databases available.
+\end_layout
+
+\begin_layout Subsubsection
+Point Force Spatial Database Files
+\end_layout
+
+\begin_layout Standard
+The spatial database files for the Dirichlet boundary condition specify
+ the fixed displacements.
+ The spatial database file may contain displacements at more degrees of
+ freedom than those specified in the Dirichlet boundary condition settings
+ using the 
+\family typewriter
+bc_dof
+\family default
+ setting.
+ Only those listed in 
+\family typewriter
+bc_dof
+\family default
+ will be used.
+ This permits using the same spatial database file for multiple Dirichlet
+ boundary conditions with the same displacement field.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+Values in the spatial databases used for point force boundary conditions.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="4" columns="2">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="4in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Spatial database
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Name in Spatial Database
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_initial
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+force-x, force-y, force-z
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_rate
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+force-rate-x, force-rate-y, force-rate-z, rate-start-time
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_change
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+force-x, force-y, force-z, change-start-time
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:absorbing:boundaries"
+
+\end_inset
+
+Absorbing Boundary Conditions
+\end_layout
+
+\begin_layout Standard
+This boundary condition attempts to prevent seismic waves reflecting off
+ of a boundary by placing simple dashpots on the boundary.
+ Normally incident dilatational and shear waves are perfectly absorbed.
+ Waves incident at other angles are only partially absorbed.
+ This boundary condition is simpler than a perfectly matched layer (PML)
+ boundary condition but does not perform quite as well, especially for surface
+ waves.
+ If the waves arriving at the absorbing boundary are relatively small in
+ amplitude compared to the amplitudes of primary interest, this boundary
+ condition gives reasonable results.
+\end_layout
+
+\begin_layout Standard
+The Absorbing boundary condition properties and components are:
+\end_layout
+
+\begin_layout Description
+label Name of the group of vertices defining the mesh boundary for the absorbing
+ boundary condition.
+\end_layout
+
+\begin_layout Description
+up_dir This is a 3-vector that provides a hint for the direction perpendicular
+ to the horizontal tangent direction that is not collinear with the direction
+ normal to the surface.
+ The default value is (0,0,1), which assumes that the z-axis is positive
+ upward.
+ This vector is only needed for three-dimensional problems where the positive
+ upward direction differs from the default.
+\end_layout
+
+\begin_layout Description
+db The spatial database specifying the material properties for the seismic
+ velocities.
+\end_layout
+
+\begin_layout Description
+quadrature The quadrature object to be used for numerical integration.
+ Since we are integrating over a surface that is one dimension lower than
+ the problem domain, this would typically be set to something like 
+\family typewriter
+Quadrature2Din3D
+\family default
+ (for a three-dimensional problem).
+\end_layout
+
+\begin_layout Subsection
+Finite-Element Implementation of Absorbing Boundary
+\end_layout
+
+\begin_layout Standard
+Consider a plane wave propagating at a velocity 
+\begin_inset Formula $c$
+\end_inset
+
+.
+ We can write the displacement field as
+\begin_inset Formula 
+\begin{equation}
+\vec{u}(\vec{x},t)=\vec{u^{t}}(t-\frac{\vec{x}}{c}),
+\end{equation}
+
+\end_inset
+
+where 
+\begin_inset Formula $\vec{x}$
+\end_inset
+
+ is position, 
+\begin_inset Formula $t$
+\end_inset
+
+ is time, and 
+\begin_inset Formula $\vec{u^{t}}$
+\end_inset
+
+ is the shape of the propagating wave.
+ For an absorbing boundary we want the traction on the boundary to be equal
+ to the traction associated with wave propagating out of the domain.
+ Starting with the expression for the traction on a boundary, 
+\begin_inset Formula $T_{i}=\sigma_{ij}n_{j},$
+\end_inset
+
+ and using the local coordinate system for the boundary 
+\begin_inset Formula $s_{h}s_{v}n,$
+\end_inset
+
+ where 
+\begin_inset Formula $\vec{n}$
+\end_inset
+
+ is the direction normal to the boundary, 
+\begin_inset Formula $\overrightarrow{s}_{h}$
+\end_inset
+
+ is the horizontal direction tangent to the boundary, and 
+\begin_inset Formula $\overrightarrow{s}_{v}$
+\end_inset
+
+ is the vertical direction tangent to the boundary, the tractions on the
+ boundary are
+\begin_inset Formula 
+\begin{gather}
+T_{s_{h}}=\sigma_{s_{h}n}\\
+T_{s_{v}}=\sigma_{s_{v}n}\\
+T_{n}=\sigma_{nn}.
+\end{gather}
+
+\end_inset
+
+In the case of a horizontal boundary, we can define an auxiliary direction
+ in order to assign unique tangential directions.
+ For a linear elastic isotropic material, 
+\begin_inset Formula $\sigma_{ij}=\lambda\epsilon_{kk}\delta_{ij}+2\mu\epsilon_{ij},$
+\end_inset
+
+ and we can write the tractions as 
+\begin_inset Formula 
+\begin{gather}
+T_{s_{h}}=2\mu\epsilon_{s_{h}n}\\
+T_{s_{v}}=2\epsilon_{s_{v}n}\\
+T_{n}=(\lambda+2\mu)\epsilon_{nn}+\lambda(\epsilon_{s_{h}s_{h}}+\epsilon_{s_{v}s_{v}}).
+\end{gather}
+
+\end_inset
+
+For infinitesimal strains, 
+\begin_inset Formula $\epsilon_{ij}=\frac{1}{2}(u_{i,j}+u_{j,i})$
+\end_inset
+
+ and we have
+\begin_inset Formula 
+\begin{gather}
+\epsilon_{s_{h}n}=\frac{1}{2}(u_{s_{h},n}+u_{n,s_{h}})\\
+\epsilon_{s_{v}n}=\frac{1}{2}(u_{s_{v},n}+u_{n,s_{v}})\\
+\epsilon_{nn}=u_{n,n}.
+\end{gather}
+
+\end_inset
+
+For our propagating plane wave, we recognize that
+\begin_inset Formula 
+\begin{equation}
+\frac{\partial\vec{u^{t}}(t-\frac{\vec{x}}{c})}{\partial x_{i}}=-\frac{1}{c}\frac{\partial\vec{u^{t}}(t-\frac{\vec{x}}{c})}{\partial t},
+\end{equation}
+
+\end_inset
+
+so that our expressions for the tractions become
+\begin_inset Formula 
+\begin{gather}
+T_{s_{h}}=-\frac{\mu}{c}\left(\frac{\partial u_{s_{h}}^{t}(t-\frac{\vec{x}}{c})}{\partial t}+\frac{\partial u_{n}^{t}(t-\frac{\vec{x}}{c})}{\partial t}\right),\\
+T_{s_{v}}=-\frac{\mu}{c}\left(\frac{\partial u_{s_{v}}^{t}(t-\frac{\vec{x}}{c})}{\partial t}+\frac{\partial u_{n}^{t}(t-\frac{\vec{x}}{c})}{\partial t}\right).
+\end{gather}
+
+\end_inset
+
+For the normal traction, consider a dilatational wave propagating normal
+ to the boundary at speed 
+\begin_inset Formula $v_{p}$
+\end_inset
+
+; in this case 
+\begin_inset Formula $u_{s_{h}}=u_{s_{v}}=0$
+\end_inset
+
+ and 
+\begin_inset Formula $c=v_{p}$
+\end_inset
+
+.
+ For the shear tractions, consider a shear wave propagating normal to the
+ boundary at speed 
+\begin_inset Formula $v_{s}$
+\end_inset
+
+; we can decompose this into one case where 
+\begin_inset Formula $u_{n}=u_{s_{v}}=0$
+\end_inset
+
+ and another case where 
+\begin_inset Formula $u_{n}=u_{s_{h}}=0$
+\end_inset
+
+, with 
+\begin_inset Formula $c=v_{s}$
+\end_inset
+
+ in both cases.
+ We also recognize that 
+\begin_inset Formula $\mu=\rho v_{s}^{2}$
+\end_inset
+
+ and 
+\begin_inset Formula $\lambda+2\mu=\rho v_{p}^{2}$
+\end_inset
+
+.
+ This leads to the following expressions for the tractions:
+\begin_inset Formula 
+\begin{gather}
+T_{s_{h}}=-\rho v_{s}\frac{\partial u_{s_{h}}^{t}(t-\frac{\vec{x}}{c})}{\partial t}\\
+T_{s_{v}}=-\rho v_{s}\frac{\partial u_{v}^{t}(t-\frac{\vec{x}}{c})}{\partial t}\\
+T_{n}=-\rho v_{p}\frac{\partial u_{n}^{t}(t-\frac{\vec{x}}{c})}{\partial t}
+\end{gather}
+
+\end_inset
+
+We write the weak form of the boundary condition as
+\begin_inset Formula 
+\[
+\int_{S_{T}}T_{i}\phi_{i}\, dS=\int_{S_{T}}-\rho c_{i}\frac{\partial u_{i}}{\partial t}\phi_{i}\, dS,
+\]
+
+\end_inset
+
+where 
+\begin_inset Formula $c_{i}$
+\end_inset
+
+ equals 
+\begin_inset Formula $v_{p}$
+\end_inset
+
+ for the normal traction and 
+\begin_inset Formula $v_{s}$
+\end_inset
+
+ for the shear tractions, and 
+\begin_inset Formula $\phi_{i}$
+\end_inset
+
+ is our weighting function.
+ We express the trial solution and weighting function as linear combinations
+ of basis functions,
+\begin_inset Formula 
+\begin{gather}
+u_{i}=\sum_{m}a_{i}^{m}N^{m},\\
+\phi_{i}=\sum_{n}c_{i}^{n}N^{n}.
+\end{gather}
+
+\end_inset
+
+Substituting into our integral over the absorbing boundaries yields
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula 
+\begin{equation}
+\int_{S_{T}}T_{i}\phi_{i}\, dS=\int_{S_{T}}-\rho c_{i}\sum_{m}\dot{a}_{i}^{m}N^{m}\sum_{n}c_{i}^{n}N^{n}\, dS.
+\end{equation}
+
+\end_inset
+
+In the derivation of the governing equations, we recognized that the weighting
+ function is arbitrary, so we form the residual by setting the terms associated
+ with the coefficients 
+\begin_inset Formula $c_{i}^{n}$
+\end_inset
+
+ to zero,
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula 
+\begin{equation}
+r_{i}^{n}=\sum_{\text{tract cells}}\sum_{\text{quad pts}}-\rho(x_{q})c_{i}(x_{q})\sum_{m}\dot{a}_{i}^{m}N^{m}(x_{q})N^{n}(x_{q})w_{q}|J_{cell}(x_{q})|,
+\end{equation}
+
+\end_inset
+
+ where 
+\begin_inset Formula $x_{q}$
+\end_inset
+
+ are the coordinates of the quadrature points, 
+\begin_inset Formula $w_{q}$
+\end_inset
+
+ are the weights of the quadrature points, and 
+\begin_inset Formula $|J_{cell}(x_{q})|$
+\end_inset
+
+ is the determinant of the Jacobian matrix evaluated at the quadrature points
+ associated with mapping the reference cell to the actual cell.
+\end_layout
+
+\begin_layout Standard
+The appearance of velocity in the expression for the residual means that
+ the absorbing dampers also contribute to the system Jacobian matrix.
+ Use the central difference method, the velocity is written in terms of
+ the displacements,
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula 
+\begin{equation}
+\dot{u}_{i}(t)=\frac{1}{2\Delta t}(u_{i}(t+\Delta t)-u_{i}(t-\Delta t)).
+\end{equation}
+
+\end_inset
+
+Expressing the displacement at time 
+\begin_inset Formula $t+\Delta t$
+\end_inset
+
+ in terms of the displacement at time 
+\begin_inset Formula $t$
+\end_inset
+
+ (
+\begin_inset Formula $u_{i}(t)$
+\end_inset
+
+) and the increment in the displacement at time 
+\begin_inset Formula $t$
+\end_inset
+
+ (
+\begin_inset Formula $du_{i}(t)$
+\end_inset
+
+) leads to
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula 
+\begin{equation}
+\dot{u}_{i}(t)=\frac{1}{2\Delta t}(du_{i}(t)+u_{i}(t)-u_{i}(t-\Delta t))
+\end{equation}
+
+\end_inset
+
+The terms contributing to the system Jacobian are associated with the increment
+ in the displacement at time time.
+ Substituting into the governing equations and isolating the term associated
+ with the increment in the displacement at time t yields
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula 
+\begin{equation}
+A_{ij}^{nm}=\sum_{\text{tract cells}}\sum_{\text{quad pts}}\delta_{ij}\frac{1}{2\Delta t}\rho(x_{q})v_{i}(x_{q})N^{m}(x_{q})N^{n}(x_{q})w_{q}|J_{cells}(x_{q})|,
+\end{equation}
+
+\end_inset
+
+where 
+\begin_inset Formula $A_{ij}^{mn}$
+\end_inset
+
+ is a 
+\begin_inset Formula $nd$
+\end_inset
+
+ by 
+\begin_inset Formula $md$
+\end_inset
+
+ matrix (
+\begin_inset Formula $d$
+\end_inset
+
+ is the dimension of the vector space), 
+\begin_inset Formula $m$
+\end_inset
+
+ and 
+\begin_inset Formula $n$
+\end_inset
+
+ refer to the basis functions and 
+\begin_inset Formula $i$
+\end_inset
+
+ and 
+\begin_inset Formula $j$
+\end_inset
+
+ are vector space components.
+\end_layout
+
+\begin_layout Section
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:fault"
+
+\end_inset
+
+Fault Interface Conditions
+\end_layout
+
+\begin_layout Standard
+Fault interfaces are used to create dislocations (jumps in the displacement
+ field) in the model.
+ The dislocations arise from slip across a fault surface.
+ Both shear and tensile dislocations are supported.
+ For fault interfaces, dislocations in 1D correspond to fault-opening (and
+ closing), in 2D lateral-slip and fault opening, and in 3D lateral-slip,
+ reverse-slip, and fault opening.
+ PyLith supports kinematic (prescribed) slip and dynamic (spontaneous) rupture
+ simulations.
+\end_layout
+
+\begin_layout Subsection
+Conventions
+\end_layout
+
+\begin_layout Standard
+Slip corresponds to relative motion across a fault surface.
+ Figure 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "fig:fault:orientation"
+
+\end_inset
+
+ shows the orientation of the slip vector in 3D with respect to the fault
+ surface and coordinate axes.
+ PyLith automatically determines the orientation of the fault surface.
+ This alleviates the user from having to compute the strike, dip, and rake
+ angles over potentially complex, nonplanar fault surfaces.
+ Instead, the user specifies fault parameters in terms of lateral motion,
+ reverse motion, and fault opening as shown in Figure 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "fig:fault:slip:motions"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\align center
+\begin_inset Graphics
+	filename figs/faultOrientation.eps
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Caption
+
+\begin_layout Plain Layout
+Orientation of a fault surface in 3D, where 
+\begin_inset Formula $\phi$
+\end_inset
+
+ denotes the angle of the fault strike, 
+\begin_inset Formula $\delta$
+\end_inset
+
+ denotes the angle of the fault dip, and 
+\begin_inset Formula $\lambda$
+\end_inset
+
+ the rake angle.
+ 
+\begin_inset CommandInset label
+LatexCommand label
+name "fig:fault:orientation"
+
+\end_inset
+
+ 
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\align center
+\begin_inset Graphics
+	filename figs/slipmotions.eps
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Caption
+
+\begin_layout Plain Layout
+Sign conventions associated with fault slip.
+ Positive values are associated with left-lateral, reverse, and fault opening
+ motions.
+\begin_inset CommandInset label
+LatexCommand label
+name "fig:fault:slip:motions"
+
+\end_inset
+
+ 
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Fault Implementation
+\end_layout
+
+\begin_layout Standard
+In order to create relative motion across the fault surface in the finite-elemen
+t mesh, additional degrees of freedom are added along with adjustment of
+ the topology of the mesh.
+ These additional degrees of freedom are associated with cohesive cells.
+ These zero-volume cells allow control of the relative motion between vertices
+ on the two sides of the fault.
+ PyLith automatically adds cohesive cells for each fault surface.
+ Figure 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "fig:fault:cohesive:quad4"
+
+\end_inset
+
+ illustrates the results of inserting a cohesive cell in a mesh consisting
+ of two quadrilateral cells.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float figure
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\align center
+\begin_inset Graphics
+	filename figs/quad4cohesivekin.eps
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Caption
+
+\begin_layout Plain Layout
+Example of cohesive cell inserted into a mesh of two quadrilateral cells.
+ The zero thickness cohesive cell (shown with dashed lines) controls slip
+ on the fault via the relative motion between vertices 3 and 7 and 2 and
+ 6.
+\begin_inset CommandInset label
+LatexCommand label
+name "fig:fault:cohesive:quad4"
+
+\end_inset
+
+ 
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Fault Parameters
+\end_layout
+
+\begin_layout Standard
+The principal parameters for fault interface conditions are:
+\end_layout
+
+\begin_layout Description
+id This is an integer identifier for the fault surface.
+ It is used to specify the 
+\family typewriter
+material-id
+\family default
+ of the cohesive cells in the mesh.
+ Material identifiers must be unique so this value cannot be the same as
+ any of the material models or any other fault.
+\end_layout
+
+\begin_layout Description
+name Name or label for the fault.
+ This associates sets of vertices with the fault surface in addition to
+ being used in error and diagnostic reports.
+\end_layout
+
+\begin_layout Description
+up_dir Up-dir or up direction (used in 2D and 3D simulations).
+ In 2D the default in-plane slip is left-lateral, so we use the up-direction
+ to resolve the ambiguity in specifying reverse slip.
+ In 3D the up-direction is used to resolve the ambiguity in the along-strike
+ and dip-dir directions.
+ If the fault plane is horizontal, then the up-dir corresponds to the reverse-mo
+tion on the +z side of the fault.
+ The only requirement for this direction is that it not be collinear with
+ the fault normal direction.
+ The default value of [0, 0, 1] is appropriate for most 3D problems.
+\end_layout
+
+\begin_layout Description
+quadrature Quadrature object used in integrating fault quantities.
+\end_layout
+
+\begin_layout Description
+output Manager for output of diagnostic and data fields for the fault.
+\end_layout
+
+\begin_layout Standard
+By default the output manager outputs both diagnostic information (e.g., fault
+ normal direction) and the slip at each time step.
+ Tables 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:fault:kin:output"
+
+\end_inset
+
+ and 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:fault:dyn:output"
+
+\end_inset
+
+ list the fields available for output for a fault with kinematic (prescribed)
+ earthquake rupture and a fault with dynamic rupture, respectively.
+ The fault coordinate system is shown in Figure 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "fig:fault:slip:motions"
+
+\end_inset
+
+.
+ The vectors in the fault coordinate system can be transformed to the global
+ coordinate system using the direction vectors in the diagnostic output.
+ An example of setting these parameters in a 
+\family typewriter
+.cfg
+\family default
+ file is:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem]
+\end_layout
+
+\begin_layout LyX-Code
+interfaces = [fault]
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces]
+\end_layout
+
+\begin_layout LyX-Code
+fault = pylith.faults.FaultCohesiveKin ; default
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout LyX-Code
+label = fault A ; Group of vertices defining the fault surface
+\end_layout
+
+\begin_layout LyX-Code
+id = 100 ; Value for material identifier associated with fault's cohesive
+ cells
+\end_layout
+
+\begin_layout LyX-Code
+up_dir = [0, 0, 1] ; default
+\end_layout
+
+\begin_layout LyX-Code
+quadrature.cell = pylith.feassemble.FIATLagrange
+\end_layout
+
+\begin_layout LyX-Code
+quadrature.cell.dimension = 2
+\end_layout
+
+\begin_layout Standard
+The group of vertices has the label ``fault A.'' We replicate the default
+ values for the fault ``up'' direction.
+ These settings apply to a 2D fault surface embedded within a 3D mesh, so
+ we use 2D Lagrange reference cells.
+ The spatial database for elastic properties is used to determine the approximat
+e shear modulus and condition the equations for faster convergence rates.
+\end_layout
+
+\begin_layout Subsection
+Kinematic Earthquake Rupture
+\end_layout
+
+\begin_layout Standard
+Kinematic earthquake ruptures use the FaultCohesiveKin object to specify
+ the slip as a function of time on the fault surface.
+ Slip may evolve simultaneously over the fault surface instantaneously in
+ a single time step (as is usually done in quasi-static simulations) or
+ propagate over the fault surface over hundreds and up to thousands of time
+ steps (as is usually done in a dynamic simulation).
+\end_layout
+
+\begin_layout Subsubsection
+Governing Equations
+\end_layout
+
+\begin_layout Standard
+The insertion of cohesive cells into the finite-element mesh has the effect
+ of decoupling the motion of the two sides of the fault surface.
+ In order to impose the desired relative motion, we must adjust the governing
+ equations.
+ PyLith employs Lagrange multiplier constraints to enforce the constraint
+ of the relative motion in the strong sense.
+ That is, we enforce the slip across the fault at each degree of freedom.
+\end_layout
+
+\begin_layout Standard
+In conventional implementations the additional degrees of freedom associated
+ with the Lagrange multipliers results in a complex implementation.
+ However, the use of Lagrange multiplier constraints with cohesive cells
+ provides for a simple formulation; we simply add the additional degrees
+ of freedom associated with the Lagrange multipliers to the cohesive cells
+ as shown in Figure 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "fig:fault:cohesive:quad4"
+
+\end_inset
+
+.
+ As a result, the fault implementation is completely confined to the cohesive
+ cell.
+ Furthermore, the Lagrange multiplier constraints correspond to forces required
+ to impose the relative motions, so they are related to the change in stress
+ on the fault surface associated with fault slip.
+ If we write the algebraic system of equations we are solving in the form
+\begin_inset Formula 
+\begin{equation}
+\underline{A}\overrightarrow{u}=\overrightarrow{b}\,,
+\end{equation}
+
+\end_inset
+
+then including the Lagrange multiplier constraints results in
+\begin_inset Formula 
+\begin{equation}
+\left[\begin{array}{cc}
+\underline{A} & \underline{C}^{T}\\
+\underline{C} & 0
+\end{array}\right]\left[\begin{array}{c}
+\overrightarrow{u}\\
+\overrightarrow{l}
+\end{array}\right]=\left[\begin{array}{c}
+\overrightarrow{b}\\
+\overrightarrow{d}
+\end{array}\right]\,,\label{eq:fault:cohesive:lagrange}
+\end{equation}
+
+\end_inset
+
+where 
+\begin_inset Formula $\overrightarrow{l}$
+\end_inset
+
+ is the vector of Lagrange multipliers and 
+\begin_inset Formula $\underline{C}$
+\end_inset
+
+ is composed of rotation submatrices, 
+\begin_inset Formula $\underline{R}$
+\end_inset
+
+, associated with the direction cosines relating the relative displacements
+ across the fault to the vector of fault slip, 
+\begin_inset Formula $\overrightarrow{d}$
+\end_inset
+
+.
+ Note that by using the direction cosines to relate the relative motion
+ across the fault, the slip vector and Lagrange multipliers (forces required
+ to impose the slip) are in the local fault coordinate system (lateral motion,
+ reverse motion, and fault opening).
+ 
+\end_layout
+
+\begin_layout Paragraph
+Non-diagonal A
+\end_layout
+
+\begin_layout Standard
+The Lagrange multipliers contribute to both the system Jacobian matrix and
+ the residual.
+ Because we enforce the constraints in a strong sense, the terms do not
+ involve integrals over the fault surface.
+ The additional terms in the residual are
+\begin_inset Formula 
+\begin{gather}
+r_{i}^{n}=-C_{ji}^{pn}l_{j}^{p},\\
+r_{i}^{p}=d_{i}^{p}-C_{ij}^{pn}u_{j}^{n},
+\end{gather}
+
+\end_inset
+
+where 
+\begin_inset Formula $n$
+\end_inset
+
+ denotes a conventional degree of freedom and 
+\begin_inset Formula $p$
+\end_inset
+
+ denotes a degree of freedom associated with a Lagrange multiplier.
+ The additional terms in the system Jacobian matrix are simply the direction
+ cosines,
+\begin_inset Formula 
+\begin{gather}
+J_{ij}^{np}=C_{ji}^{pn},\\
+J_{ij}^{pn}=C_{ij}^{pn}.
+\end{gather}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph
+Diagonal A
+\end_layout
+
+\begin_layout Standard
+When we use a lumped system Jacobian matrix, we cannot lump the terms associated
+ with the Lagrange multipliers.
+ Instead, we formulate the Jacobian ignoring the contributions from the
+ Lagrange multipliers, and then adjust the solution after the solve to account
+ for their presence.
+ Including the Lagrange multipliers in the general expression for the residual
+ at time 
+\begin_inset Formula $t+\Delta t$
+\end_inset
+
+, we have
+\begin_inset Formula 
+\begin{equation}
+r_{i}^{n}(t+\Delta t)=A_{ij}^{nm}(u_{j}^{m}(t)+du_{j}^{m}(t))+C_{ki}^{pn}(l_{k}^{p}(t)+dl_{k}^{p}(t)),
+\end{equation}
+
+\end_inset
+
+where we have written the displacements and Lagrange multipliers at time
+ 
+\begin_inset Formula $t+\Delta t$
+\end_inset
+
+ in terms of the values at time 
+\begin_inset Formula $t$
+\end_inset
+
+ and the increment from time 
+\begin_inset Formula $t$
+\end_inset
+
+ to 
+\begin_inset Formula $t+\Delta t$
+\end_inset
+
+.
+ When we solve the lumped system ignoring the Lagrange multipliers contributions
+ to the Jacobian, we formulate the residual assuming the values 
+\begin_inset Formula $du_{i}^{n}$
+\end_inset
+
+(t) and 
+\begin_inset Formula $dl_{k}^{p}(t)$
+\end_inset
+
+ are zero.
+ So our task is to determine the increment in the Lagrange multiplier, 
+\begin_inset Formula $dl_{k}^{p}$
+\end_inset
+
+, and the correction to the displacement increment, 
+\begin_inset Formula $du_{i}^{n}$
+\end_inset
+
+, and by setting the residual with all terms included to zero; thus, we
+ have
+\begin_inset Formula 
+\begin{gather}
+A_{ij}^{nm}(u_{j}^{m}(t)+du_{j}^{m}(t))+C_{ki}^{pn}(l_{k}^{p}(t)+dl_{k}^{p}(t))=0\text{ subject to}\\
+C_{ij}^{pn}(u_{j}^{n}(t)+du_{j}^{n}(t))=d_{i}^{p}.
+\end{gather}
+
+\end_inset
+
+Making use of the residual computed with 
+\begin_inset Formula $du_{i}^{n}(t)=0$
+\end_inset
+
+ and 
+\begin_inset Formula $dl_{k}^{p}(t)=0$
+\end_inset
+
+,
+\begin_inset Formula 
+\begin{gather}
+r_{i}^{n}+A_{ij}^{nm}du_{j}^{m}+C_{ki}^{pn}dl_{k}^{p}=0\text{ subject to}\\
+C_{ij}^{pn}(u_{j}^{n}(t)+du_{j}^{n}(t))=d_{i}^{p}.
+\end{gather}
+
+\end_inset
+
+Explicitly writing the equations for the vertices on the negative and positive
+ sides of the fault yields
+\begin_inset Formula 
+\begin{gather}
+r_{i}^{n-}+A_{ij}^{nm-}du_{j}^{m-}+R_{ki}^{pn}dl_{k}^{p}=0,\\
+r_{i}^{n+}+A_{ij}^{nm+}du_{j}^{m+}+R_{ki}^{pn}dl_{k}^{p}=0,\\
+R_{ij}^{pn}(u_{j}^{n+}+du_{j}^{n+}-u_{j}^{n-}-du_{j}^{n-})=d_{i}^{p}.
+\end{gather}
+
+\end_inset
+
+Solving the first two equations for 
+\begin_inset Formula $du_{j}^{m-}$
+\end_inset
+
+ and 
+\begin_inset Formula $du_{j}^{m+}$
+\end_inset
+
+ and combining them using the third equation leads to
+\begin_inset Formula 
+\begin{multline}
+R_{ij}^{pn}\left((A_{ij}^{nm+})^{-1}+(A_{ij}^{nm+})^{-1}\right)R_{ki}^{pn}dl_{k}^{p}=d_{i}^{p}-R_{ij}^{pn}(u_{j}^{n+}-u_{j}^{n-})\\
++R_{ij}^{pn}\left((A_{ij}^{nm+})^{-1}r_{i}^{n+}-(A_{ij}^{nm-})^{-1}r_{i}^{n-}\right).
+\end{multline}
+
+\end_inset
+
+We do not allow overlap between the fault interface and the absorbing boundary,
+ so 
+\begin_inset Formula $A_{ij}^{nm}$
+\end_inset
+
+ is the same for all components at a vertex.
+ As a result the matrix on the left hand side simplifies to
+\begin_inset Formula 
+\begin{equation}
+S_{ik}^{pn}=\delta_{ik}\left(\frac{1}{A^{nm+}}+\frac{1}{A^{nm-}}\right),
+\end{equation}
+
+\end_inset
+
+and
+\begin_inset Formula 
+\begin{equation}
+dl_{k}^{p}=(S_{ik}^{pn})^{-1}\left(d_{i}^{p}-R_{ij}^{pn}(u_{j}^{n+}-u_{j}^{n-})+R_{ij}^{pn}\left((A_{ij}^{nm+})^{-1}r_{i}^{n+}-(A_{ij}^{nm-})^{-1}r_{i}^{n-}\right)\right).
+\end{equation}
+
+\end_inset
+
+Now that we know the value of the increment in the Lagrange multiplier from
+ time 
+\begin_inset Formula $t$
+\end_inset
+
+ to time 
+\begin_inset Formula $t+\Delta t$
+\end_inset
+
+, we can correct the value for the displacement increment from time 
+\begin_inset Formula $t$
+\end_inset
+
+ to 
+\begin_inset Formula $t+\Delta t$
+\end_inset
+
+ using
+\begin_inset Formula 
+\begin{gather}
+\Delta du_{j}^{n-}=(A_{ij}^{nm-})^{-1}C_{ki}^{pn}dl_{k}^{p}\text{ and}\\
+\Delta du_{j}^{n+}=-(A_{ij}^{nm+})^{-1}C_{ki}^{pn}dl_{k}^{p}.
+\end{gather}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsubsection
+Arrays of Kinematic Rupture Components
+\end_layout
+
+\begin_layout Standard
+Multiple earthquake ruptures can be specified on a single fault surface.
+ This permits repeatedly rupturing the same portion of a fault or combining
+ earthquake rupture on one subset of the fault surface with steady aseismic
+ slip on another subset (the two subsets may overlap in both time and space).
+ A dynamic array of kinematic earthquake rupture components associates a
+ name (string) with each kinematic rupture.
+ The default dynamic array contains a single earthquake rupture, ``rupture''.
+ The 
+\family typewriter
+eq_srcs
+\family default
+ is the 
+\family typewriter
+FaultCohesiveKin
+\family default
+ facility for this dynamic array.
+ An example of setting the array of kinematic rupture components in a 
+\family typewriter
+.cfg
+\family default
+ file:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault]
+\end_layout
+
+\begin_layout LyX-Code
+eq_srcs = [earthquake,creep]
+\end_layout
+
+\begin_layout Standard
+The output manager includes generic fault information (orientation) as well
+ as the final slip or slip rate (as in the case of the constant slip rate
+ slip time function) and slip initiation time for each kinematic rupture.
+ The name of the slip and slip initiation time vertex fields are of the
+ form 
+\family typewriter
+final_slip_NAME
+\family default
+ and 
+\family typewriter
+slip_time_NAME
+\family default
+, respectively, where 
+\family typewriter
+NAME
+\family default
+ refers to the name used in the dynamic array of kinematic ruptures, 
+\family typewriter
+eq_srcs
+\family default
+.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:fault:kin:output"
+
+\end_inset
+
+Fields available in output of fault information.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="8" columns="3">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="3.5in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Field Type
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Field
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+vertex_info_fields
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+normal_dir
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Direction of fault normal in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+strike_dir
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Direction of fault strike in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+dip_dir
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Up-dip direction on hanging wall in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+final_slip_NAME
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Vector of final slip (in fault coordinate system) in meters
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip_time
+\family default
+_
+\family typewriter
+\noun on
+NAME
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Time at which slip begins in seconds
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+vertex_data_fields
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip vector at time step (in fault coordinate system) in meters
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction_change
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Change in fault tractions (in fault coordinate system) in Pa
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsubsection
+Kinematic Rupture Parameters
+\end_layout
+
+\begin_layout Standard
+The kinematic rupture parameters include the origin time and slip time function.
+ The slip initiation time in the slip time function is relative to the origin
+ time (default is 0).
+ This means that slip initiates at a point at a time corresponding to the
+ sum of the kinematic rupture's origin time and the slip initiation time
+ for that point.
+ An example of specifying the kinematic earthquake rupture properties and
+ components in a 
+\family typewriter
+.cfg
+\family default
+ file:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault]
+\end_layout
+
+\begin_layout LyX-Code
+eq_srcs = [earthquake,creep]
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault.eq_srcs.earthquake]
+\end_layout
+
+\begin_layout LyX-Code
+origin_time = 0.0*s ; default origin time
+\end_layout
+
+\begin_layout LyX-Code
+slip_function = pylith.faults.StepSlipFn ; default slip time function
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault.eq_srcs.creep]
+\end_layout
+
+\begin_layout LyX-Code
+origin_time = 10.0*year ; start creep at 10.0 years
+\end_layout
+
+\begin_layout LyX-Code
+slip_function = pylith.faults.ConstRateSlipFn ; switch to constant slip rate
+ slip function
+\end_layout
+
+\begin_layout Subsubsection
+Slip Time Function
+\end_layout
+
+\begin_layout Standard
+The current release of PyLith supports specification of the evolution of
+ fault slip using analytical expressions for the slip time history at each
+ point, where the parameters for the slip time function may vary over the
+ fault surface.
+ Currently, three slip time functions are available: (1) a step-function
+ for quasi-static modeling of earthquake rupture, (2) a constant slip rate
+ time function for modeling steady aseismic slip, and (3) the integral of
+ Brune's far-field time function 
+\begin_inset CommandInset citation
+LatexCommand cite
+key "Brune:1970"
+
+\end_inset
+
+ for modeling the dynamics of earthquake rupture.
+ Additional slip time functions will likely be available in future releases.
+ The default slip time function is the step-function slip function.
+\end_layout
+
+\begin_layout Paragraph
+Step-Function Slip Time Function
+\end_layout
+
+\begin_layout Standard
+This slip function prescribes a step in slip at a given time at a point:
+ 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula 
+\begin{gather}
+D(t)=\left\{ \begin{array}{cc}
+0 & 0\leq t<t_{r}\\
+D_{final} & t\ge t_{r}
+\end{array}\right.\,,
+\end{gather}
+
+\end_inset
+
+where 
+\begin_inset Formula $D(t)$
+\end_inset
+
+ is slip at time 
+\begin_inset Formula $t$
+\end_inset
+
+, 
+\begin_inset Formula $D_{final}$
+\end_inset
+
+ is the final slip, and 
+\begin_inset Formula $t_{r}$
+\end_inset
+
+ is the slip initiation time (time when rupture reaches the location).
+ The slip is specified independently for each of the components of slip,
+ and the slip and slip starting time may vary over the fault surface.
+\end_layout
+
+\begin_layout Description
+final_slip Spatial database of slip (
+\begin_inset Formula $D_{final})$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+slip_time Spatial database of slip initiation times (
+\begin_inset Formula $t_{r}$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Standard
+An example of setting these parameters in a 
+\family typewriter
+.cfg
+\family default
+ file is:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault.eq_srcs.rupture]
+\end_layout
+
+\begin_layout LyX-Code
+slip_function = pylith.faults.StepSlipFn
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault.eq_srcs.rupture.slip_function]
+\end_layout
+
+\begin_layout LyX-Code
+final_slip.iohandler.filename = final_slip.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+slip_time.iohandler.filename = sliptime.spatialdb
+\end_layout
+
+\begin_layout Standard
+The spatial database files for the slip time function specify the spatial
+ variation in the parameters for the slip time function, as shown in Table
+ 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:step-function-db-params"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:step-function-db-params"
+
+\end_inset
+
+Values in spatial database used as parameters in the step function slip
+ time function.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="5" columns="3">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="2.5in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Spatial database
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Value
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+final_slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+left-lateral-slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Amount of left-lateral final slip in meters.
+ Use negative values for right-lateral slip.
+ Applies to faults in 2D and 3D only.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+reverse-slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Amount of reverse slip in meters.
+ Use negative values for normal slip.
+ Applies to faults in 3D only.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+fault-opening
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Amount of fault opening in meters.
+ Negative values imply penetration.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip-time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip initiation time (
+\begin_inset Formula $t_{t})$
+\end_inset
+
+ in seconds.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph
+Constant Slip Rate Slip Time Function
+\end_layout
+
+\begin_layout Standard
+This slip function prescribes a constant slip rate for the evolution of
+ slip at a point: 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula 
+\begin{gather}
+D(t)=\left\{ \begin{array}{cc}
+0 & 0\leq t<t_{r}\\
+V(t-t_{r}) & t\ge t_{r}
+\end{array}\right.\,,
+\end{gather}
+
+\end_inset
+
+where 
+\begin_inset Formula $D(t)$
+\end_inset
+
+ is slip at time 
+\begin_inset Formula $t$
+\end_inset
+
+, 
+\begin_inset Formula $V$
+\end_inset
+
+ is the slip rate, and 
+\begin_inset Formula $t_{r}$
+\end_inset
+
+ is the slip initiation time (time when rupture reaches the location).
+ The slip rate is specified independently for each of the components of
+ slip, and the slip rate and slip starting time may vary over the fault
+ surface.
+\end_layout
+
+\begin_layout Description
+slip_rate Spatial database of slip rate (
+\begin_inset Formula $V)$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+slip_time Spatial database of slip initiation times (
+\begin_inset Formula $t_{r}$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Standard
+An example of setting these parameters in a 
+\family typewriter
+.cfg
+\family default
+ file is:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault.eq_srcs.ruptures]
+\end_layout
+
+\begin_layout LyX-Code
+slip_function = pylith.faults.ConstRateSlipFn
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault.eq_srcs.ruptures.slip_function]
+\end_layout
+
+\begin_layout LyX-Code
+slip_rate.iohandler.filename = slip_rate.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+slip_time.iohandler.filename = sliptime.spatialdb
+\end_layout
+
+\begin_layout Standard
+The spatial database files for the slip time function specify the spatial
+ variation in the parameters for the slip time function, as shown in Table
+ 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:const-slip-rate-db-params"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:const-slip-rate-db-params"
+
+\end_inset
+
+Values in spatial database used as parameters in the constant slip rate
+ slip time function.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="5" columns="3">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="2.5in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Spatial database
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Value
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip_rate
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+left-lateral-slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip rate for left-lateral final slip in meters per second.
+ Use negative values for right-lateral slip.
+ Applies to faults in 2D and 3D only.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+reverse-slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip rate for reverse slip in meters per second.
+ Use negative values for normal slip.
+ Applies to faults in 3D only.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+fault-opening
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip rate for fault opening in meters per second.
+ Negative values imply penetration.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip-time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip initiation time (
+\begin_inset Formula $t_{t})$
+\end_inset
+
+ in seconds.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph
+Brune Slip Time Function
+\end_layout
+
+\begin_layout Standard
+We use an integral of Brune's far-field time function 
+\begin_inset CommandInset citation
+LatexCommand cite
+key "Brune:1970"
+
+\end_inset
+
+ to describe the evolution in time of slip at a point: 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula 
+\begin{gather}
+D(t)=\left\{ \begin{array}{cc}
+0 & 0\leq t<t_{r}\\
+D_{final}\left(1-exp\left(-\frac{t-t_{r}}{t_{0}}\right)\left(1+\frac{t-t_{r}}{t_{0}}\right)\right) & t\ge t_{r}
+\end{array}\right.\,,\\
+t_{0}=0.6195t_{\mathit{rise}}\,,
+\end{gather}
+
+\end_inset
+
+where 
+\begin_inset Formula $D(t)$
+\end_inset
+
+ is slip at time 
+\begin_inset Formula $t$
+\end_inset
+
+, 
+\begin_inset Formula $D_{final}$
+\end_inset
+
+ is the final slip at the location, 
+\begin_inset Formula $t_{r}$
+\end_inset
+
+ is the slip initiation time (time when rupture reaches the location), and
+ 
+\begin_inset Formula $t_{\mathit{rise}}$
+\end_inset
+
+ is the rise time.
+\end_layout
+
+\begin_layout Description
+slip Spatial database of final slip distribution (
+\begin_inset Formula $D_{final})$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+slip_time Spatial database of slip initiation times (
+\begin_inset Formula $t_{r}$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Description
+rise_time Spatial database for rise time (
+\begin_inset Formula $t_{\mathit{rise}}$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Standard
+An example of setting these parameters in a 
+\family typewriter
+.cfg
+\family default
+ file is:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault.eq_srcs.ruptures]
+\end_layout
+
+\begin_layout LyX-Code
+slip_function = pylith.faults.BruneSlipFn
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault.eq_srcs.rupture.slip_function]
+\end_layout
+
+\begin_layout LyX-Code
+slip.iohandler.filename = finalslip.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+rise_time.iohandler.filename = risetime.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+slip_time.iohandler.filename = sliptime.spatialdb
+\end_layout
+
+\begin_layout Standard
+The spatial database files for the slip time function specify the spatial
+ variation in the parameters for the slip time function, as shown in Table
+ 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:Brune-slip-db-params"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:Brune-slip-db-params"
+
+\end_inset
+
+Values in spatial database used as parameters in the Brune slip time function.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="6" columns="3">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="2.5in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Spatial database
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Value
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+left-lateral-slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Amount of left-lateral final slip in meters.
+ Use negative values for right-lateral slip.
+ Applies to faults in 2D and 3D only.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+reverse-slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Amount of reverse slip in meters.
+ Use negative values for normal slip.
+ Applies to faults in 3D only.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+fault-opening
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Amount of fault opening in meters.
+ Negative values imply penetration.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+rise_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+rise-time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Rise time (
+\begin_inset Formula $t_{r})$
+\end_inset
+
+ in seconds.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip-time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip initiation time (
+\begin_inset Formula $t_{t})$
+\end_inset
+
+ in meters.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph
+Liu-Cosine Slip Time Function
+\end_layout
+
+\begin_layout Standard
+This slip time function, proposed by Liu, Archuleta, and Hartzell for use
+ in ground-motion modeling
+\begin_inset CommandInset citation
+LatexCommand cite
+key "Liu:etal:2006"
+
+\end_inset
+
+, combines several cosine and sine functions together to create a slip time
+ history with a sharp rise and gradual termination with a finite duration
+ of slip.
+ The evolution of slip at a point follows: 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula 
+\begin{gather}
+D(t)=\left\{ \begin{array}{cc}
+D_{\mathit{final}}C_{n}\left(0.7t-0.7\frac{t_{1}}{\pi}\sin\frac{\pi t}{t_{1}}-1.2\frac{t_{1}}{\pi}\left(\cos\frac{\pi t}{2t_{1}}-1\right)\right) & 0\leq t<t_{1}\\
+D_{\mathit{final}}C_{n}\left(1.0t-0.7\frac{t1}{\pi}\sin\frac{\pi t}{t_{1}}+0.3\frac{t2}{\pi}\sin\frac{\pi(t-t1)}{t_{2}}+\frac{1.2}{\pi}t_{1}-0.3t_{1}\right) & t_{1}\leq t<2t_{1}\\
+D_{\mathit{final}}C_{n}\left(0.7-0.7\cos\frac{\pi t}{t_{1}}+0.6\sin\frac{\pi t}{2t_{1}}\right) & 2t_{1}\leq t\leq t_{0}
+\end{array}\right.\,,\\
+C_{n}=\frac{\pi}{1.4\pi t_{1}+1.2t_{1}+0.3\pi t_{2}},\\
+t_{0}=1.525t_{\mathit{rise}},\\
+t_{1}=0.13t_{0},\\
+t_{2}=t_{0}-t_{1},
+\end{gather}
+
+\end_inset
+
+where 
+\begin_inset Formula $D(t)$
+\end_inset
+
+ is slip at time 
+\begin_inset Formula $t$
+\end_inset
+
+, 
+\begin_inset Formula $D_{final}$
+\end_inset
+
+ is the final slip at the location, 
+\begin_inset Formula $t_{r}$
+\end_inset
+
+ is the slip initiation time (time when rupture reaches the location), and
+ 
+\begin_inset Formula $t_{\mathit{rise}}$
+\end_inset
+
+ is the rise time.
+\end_layout
+
+\begin_layout Description
+slip Spatial database of final slip distribution (
+\begin_inset Formula $D_{final})$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+slip_time Spatial database of slip initiation times (
+\begin_inset Formula $t_{r}$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Description
+rise_time Spatial database for rise time (
+\begin_inset Formula $t_{\mathit{rise}}$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Standard
+The spatial database files for the slip time function use the same parameters
+ for the slip time function as the Brune slip time function shown in Table
+ 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:Brune-slip-db-params"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Paragraph
+Time-History Slip Time Function
+\end_layout
+
+\begin_layout Standard
+This slip time function reads the slip time function from a data file, so
+ it can have an arbitrary shape.
+ The slip and slip initiation times are specified using spatial databases,
+ so the slip time function, in general, will use a normalized amplitude.
+\end_layout
+
+\begin_layout Description
+slip Spatial database of final slip distribution (
+\begin_inset Formula $D_{final})$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+slip_time Spatial database of slip initiation times (
+\begin_inset Formula $t_{r}$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Description
+time_history Temporal database for slip evolution.
+\end_layout
+
+\begin_layout Standard
+An example of setting these parameters in a 
+\family typewriter
+.cfg
+\family default
+ file is:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault.eq_srcs.ruptures]
+\end_layout
+
+\begin_layout LyX-Code
+slip_function = pylith.faults.TimeHistorySlipFn
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault.eq_srcs.rupture.slip_function]
+\end_layout
+
+\begin_layout LyX-Code
+slip.iohandler.filename = finalslip.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+slip_time.iohandler.filename = sliptime.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+time_history.iohandler.filename = myfunction.timedb
+\end_layout
+
+\begin_layout Standard
+The spatial database files for the slip time function specify the spatial
+ variation in the parameters for the slip time function, as shown in Table
+ 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:Brune-slip-db-params-2"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:Brune-slip-db-params-2"
+
+\end_inset
+
+Values in spatial database used as parameters in the time history slip time
+ function.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="6" columns="3">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="2.5in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Spatial database
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Value
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+left-lateral-slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Amount of left-lateral final slip in meters.
+ Use negative values for right-lateral slip.
+ Applies to faults in 2D and 3D only.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+reverse-slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Amount of reverse slip in meters.
+ Use negative values for normal slip.
+ Applies to faults in 3D only.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+fault-opening
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Amount of fault opening in meters.
+ Negative values imply penetration.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+rise_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+rise-time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Rise time (
+\begin_inset Formula $t_{r})$
+\end_inset
+
+ in seconds.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip-time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip initiation time (
+\begin_inset Formula $t_{t})$
+\end_inset
+
+ in meters.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Dynamic Earthquake Rupture
+\end_layout
+
+\begin_layout Standard
+Dynamic fault interfaces use the FaultCohesiveDyn object to specify a fault
+ constitutive model to govern the fault tractions (friction) and the resulting
+ slip.
+ When friction is large enough such that there is no sliding on the fault,
+ the fault is locked (slip is zero) and the Lagrange multipliers assume
+ their values just as they do in kinematic ruptures.
+ In this case, the Lagrange multipliers correspond to the forces necessary
+ to keep the slip zero.
+ When the driving forces exceed those allowed by friction, we reduce the
+ values of the Lagrange multipliers to those consistent with friction from
+ the fault constitutive model.
+ When we reduce the Lagrange multipliers, we must increment the slip accordingly
+ to maintain consistency in the algebraic system of equations.
+\end_layout
+
+\begin_layout Subsubsection
+Governing Equations
+\end_layout
+
+\begin_layout Standard
+The algebraic systems of equations for dynamic earthquake rupture are the
+ same as those for kinematic rupture
+\begin_inset Formula 
+\begin{equation}
+\left[\begin{array}{cc}
+\underline{A} & \underline{C}^{T}\\
+\underline{C} & 0
+\end{array}\right]\left[\begin{array}{c}
+\overrightarrow{u}\\
+\overrightarrow{l}
+\end{array}\right]=\left[\begin{array}{c}
+\overrightarrow{b}\\
+\overrightarrow{d}
+\end{array}\right].
+\end{equation}
+
+\end_inset
+
+Enforcing the limits imposed on the Lagrange multipliers by the fault constituti
+ve model requires determining the increment in slip for an increment in
+ the Lagrange multipliers.
+ The increment in the Lagrange multipliers is the difference between the
+ value computed for the current slip (either zero or the slip at the previous
+ time step) and the value computed from the fault constitutive model.
+ Starting from our system of algebraic equations,
+\begin_inset Formula 
+\begin{equation}
+A_{ij}^{nm}u_{j}^{m}+C_{ji}^{pn}l_{j}^{p}=b_{i}^{n},
+\end{equation}
+
+\end_inset
+
+we compute the sensitivity for the given loading and boundary conditions,
+\begin_inset Formula 
+\begin{equation}
+A_{ij}^{nm}\partial u_{j}^{m}=-C_{ji}^{pn}\partial l_{j}^{p}.
+\end{equation}
+
+\end_inset
+
+Computing the increment in the slip requires computing the increment in
+ the displacements.
+ Solving this equation rigorously would require inverting the system Jacobian,
+ which we do not want to do unless it is diagonal (as it is in the case
+ of the lumped formulations).
+ 
+\end_layout
+
+\begin_layout Paragraph
+Non-diagonal A
+\end_layout
+
+\begin_layout Standard
+In general A is a sparse matrix with off-diagonal terms of the form
+\begin_inset Formula 
+\begin{equation}
+A=\left(\begin{array}{ccc}
+A_{0} & A_{1} & A_{2}\\
+A_{3} & A_{n-} & 0\\
+A_{4} & 0 & A_{n+}
+\end{array}\right),
+\end{equation}
+
+\end_inset
+
+where the degrees of freedom on either side of the fault are uncoupled.
+ We formulate two small linear systems involving just the degrees of freedom
+ associated with vertices on either the positive or negative sides of the
+ fault,
+\begin_inset Formula 
+\begin{gather}
+A_{ij}^{nm-}\partial u_{j}^{m-}=-R_{ij}^{pn}\partial l_{j}^{p},\\
+A_{ij}^{nm+}\partial u_{j}^{m+}=R_{ij}^{pn}\partial l_{j}^{p},
+\end{gather}
+
+\end_inset
+
+where we have replaced 
+\begin_inset Formula $\underline{C}$
+\end_inset
+
+ with 
+\begin_inset Formula $\underline{R}$
+\end_inset
+
+ to denote the explicit inclusion of the signs for the terms in 
+\begin_inset Formula $\underline{C}$
+\end_inset
+
+ associated with the positive (
+\begin_inset Formula $n^{+}$
+\end_inset
+
+) and negative (
+\begin_inset Formula $n^{-}$
+\end_inset
+
+) sides of the fault.
+ After solving these two linear systems of equations, we compute the increment
+ in slip using
+\begin_inset Formula 
+\begin{equation}
+\partial d_{i}^{p}=R_{ij}^{pn}(\partial u_{j}^{n+}-\partial u_{j}^{n-}).
+\end{equation}
+
+\end_inset
+
+The solution of these two linear systems gives the increment in slip assuming
+ all the degrees of freedom except those immediately adjacent to the fault
+ remain fixed.
+ In real applications where the deformation associated with fault slip is
+ localized around the fault, this provides good enough approximations so
+ that the nonlinear solver converges quickly.
+ In problems where deformation associated with slip on the fault is not
+ localized (as in the case in some of the example problems), the increment
+ in slip computed by solving these two linear systems is not a good approximatio
+n and the nonlinear solve requires a large number of iterations.
+\end_layout
+
+\begin_layout Standard
+We use the PETSc Krylov subspace solver (KSP) to solve these two linear
+ systems.
+ The PETSc settings for the KSP object are set in the same manner as the
+ main solver, except we use the prefix friction_ in all of the settings
+ related to the KSP solver for these two linear systems.
+ For example, to use the recommended additive Schwarz preconditioner in
+ the friction sensitivity solves, the settings in a .cfg file are:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.petsc]
+\end_layout
+
+\begin_layout LyX-Code
+friction_pc_type = asm
+\end_layout
+
+\begin_layout Standard
+See the examples in Sections 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:Tutorial-3d-hex8-friction"
+
+\end_inset
+
+ and 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:tutorial:shearwave:quad4"
+
+\end_inset
+
+ for details.
+\end_layout
+
+\begin_layout Paragraph
+Diagonal A
+\end_layout
+
+\begin_layout Standard
+With a lumped Jacobian matrix, we can solve for the increment in slip directly,
+\begin_inset Formula 
+\begin{equation}
+\partial d_{i}^{p}=-C_{ij}^{pn}(A_{jk}^{nm})^{-1}C_{lk}^{pm}\partial l_{l}^{p}.
+\end{equation}
+
+\end_inset
+
+By not allowing the fault interface to overlap with the absorbing boundary,
+ the terms in 
+\begin_inset Formula $A$
+\end_inset
+
+ for a given vertex are identical and the expression on the right-hand side
+ reduces to
+\begin_inset Formula 
+\begin{equation}
+\partial d_{i}^{p}=-\left(\frac{1}{A^{n+}}+\frac{1}{A^{n-}}\right)\partial l_{i}^{p}.
+\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsubsection
+Dynamic Rupture Parameters
+\end_layout
+
+\begin_layout Standard
+The components of the FaultCohesiveDyn object include
+\end_layout
+
+\begin_layout Description
+open_free_surface If true, enforce traction free surface when the fault
+ opens, otherwise apply prescribed tractions even when the fault opens (default
+ is true); to mimic a dike opening use false.
+\end_layout
+
+\begin_layout Description
+zero_tolerance Tolerance for detecting zero values (default is 1.0e-10);
+ should be larger than absolute tolerance in KSP solves.
+\end_layout
+
+\begin_layout Description
+traction_perturbation Prescribed tractions on fault surface (generally used
+ for nucleating earthquake ruptures, default is none).
+\end_layout
+
+\begin_layout Description
+friction Fault constitutive model.
+\end_layout
+
+\begin_layout Standard
+An example of specifying the dynamic earthquake rupture properties and component
+s in a 
+\family typewriter
+.cfg
+\family default
+ file:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault]
+\end_layout
+
+\begin_layout LyX-Code
+open_free_surface = True ; default
+\end_layout
+
+\begin_layout LyX-Code
+traction_perturbation = pylith.faults.TractPerturbation ; not default
+\end_layout
+
+\begin_layout LyX-Code
+traction_perturbation.db_initial = spatialdata.spatialdb.SimpleDB
+\end_layout
+
+\begin_layout LyX-Code
+traction_perturbation.db_initial.iohandler.filename = tractions.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+friction = pylith.friction.StaticFriction
+\end_layout
+
+\begin_layout LyX-Code
+friction.db_properties = spatialdata.spatialdb.SimpleDB
+\end_layout
+
+\begin_layout LyX-Code
+friction.db_properties.iohandler.filename = friction.spatialdb
+\end_layout
+
+\begin_layout Standard
+The prescribed traction perturbation is specified using the same fault coordinat
+e system as the slip directions in the kinematic ruptures.
+ The perurbation has the same functional form as the time-dependent boundary
+ conditions (and same spatial databases).
+ Table 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:fault:cohesive:dyn:prescribed:tractions"
+
+\end_inset
+
+ gives the values in the spatial database for the prescribed tractions.
+ Table 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:fault:dyn:output"
+
+\end_inset
+
+ shows the fields available for output.
+ Additional fields are available depending on the fault constitutive model.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:fault:cohesive:dyn:prescribed:tractions"
+
+\end_inset
+
+Values in spatial databases for prescribed tractions.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="22" columns="4">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="2.5in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Spatial database
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Dimension
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Value
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_initial
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1-D
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-normal
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Normal traction (tension is positive)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+2-D
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-shear
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Left-lateral shear traction (reverse shear for dipping faults)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-normal
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Normal traction (tension is positive)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+3-D
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-shear-leftlateral
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Left-lateral shear traction
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-shear-updip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Reverse shear traction
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-normal
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Normal traction (tension is positive)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_rate
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1-D
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-rate-normal
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Rate of change of normal traction (tension is positive)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+2-D
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-rate-shear
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Rate of change of left-lateral shear traction (reverse shear for dipping
+ faults)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-rate-normal
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Rate of change of normal traction (tension is positive)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+3-D
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-rate-leftlateral
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Rate of change of eft-lateral shear traction
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-rate-shear-updip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Rate of change of reverse shear traction
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-rate-normal
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Rate of change of normal traction (tension is positive)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+all
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+rate-start-time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Time at which rate of change begins
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_change
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1-D
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-normal
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Change in normal traction (tension is positive)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+2-D
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-shear
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Change in left-lateral shear traction (reverse shear for dipping faults)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-normal
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Change in normal traction (tension is positive)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+3-D
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-leftlateral
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Change in left-lateral shear traction
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-shear-updip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Change in reverse shear traction
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction-normal
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Change in normal traction (tension is positive)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+all
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+change-start-time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Time at which change begins
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+th_change
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+all
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+None
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Time history for change
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:fault:dyn:output"
+
+\end_inset
+
+Fields available in output of fault information.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="11" columns="3">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top" width="3.5in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Field Type
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Field
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+vertex_info_fields
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+normal_dir
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Direction of fault normal in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+strike_dir
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Direction of fault strike in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+dip_dir
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Up-dip direction on hanging wall in global coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction_initial
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Initial tractions (if specified) in fault coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction_rate
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Rate of change in tractions (if specified) in fault coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+rate_start_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Time at which rate of change begins (if specified)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction_change
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Change in tractions (if specified) in fault coordinate system
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+change_start_time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Time at which change occurs (if specified)
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+vertex_data_fields
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip vector at time step (in fault coordinate system) in meters
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+traction
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Fault tractions (in fault coordinate system) in Pa
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsubsection
+Fault Constitutive Models
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:fault:constitutive:models"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+PyLith provides four fault constitutive models.
+ Future releases may contain additional models, and a template is provided
+ for you to construct your own (see Section 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:Extending:FaultConstitutiveModels"
+
+\end_inset
+
+).
+ The fault constitutive model implementations are independent of dimension
+ and work in both 2-D and 3-D.
+ In solving the governing equations, PyLith will use a scalar representation
+ of the shear traction in 2-D and a vector representation of the shear traction
+ in 3-D, with the shear traction resolved in the direction of current slip.
+ The fault constitutive models contain a common set of properties and components
+:
+\end_layout
+
+\begin_layout Description
+label Name of the friction model.
+\end_layout
+
+\begin_layout Description
+db_properties Spatial database of the friction model parameters (default
+ is SimpleDB).
+\end_layout
+
+\begin_layout Description
+db_initial_state Spatial database for initial state variables (default is
+ none).
+\end_layout
+
+\begin_layout Paragraph
+Static Friction
+\end_layout
+
+\begin_layout Standard
+The static friction model produces shear tractions proportional to the fault
+ normal traction plus a cohesive stress,
+\begin_inset Formula 
+\begin{equation}
+T_{f}=\begin{cases}
+T_{c}-\mu_{f}T_{n} & T_{n}\leq0\\
+0 & T_{n}>0
+\end{cases}.
+\end{equation}
+
+\end_inset
+
+The spatial database file for the static friction model properties specifies
+ the spatial variation of the parameters given in Table 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:static:friction:properties"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:static:friction:properties"
+
+\end_inset
+
+Values in the spatial database for constant friction parameters.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="3" columns="2">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="2.5in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Value
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+friction-coefficient
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Coefficient of friction, 
+\begin_inset Formula $\mu_{f}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+cohesion
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Cohesive stress, 
+\begin_inset Formula $T_{c}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:friction:slip:weakening"
+
+\end_inset
+
+Slip-Weakening Friction
+\end_layout
+
+\begin_layout Standard
+The linear slip-weakening friction model produces shear tractions equal
+ to the cohesive stress plus a contribution proportional to the fault normal
+ traction that decreases from a static value to a dynamic value as slip
+ progresses,
+\begin_inset Formula 
+\begin{equation}
+T_{f}=\begin{cases}
+T_{c}-(\mu_{s}-(\mu_{s}-\mu_{d})\frac{d}{d_{0}})T_{n} & d\leq d_{0}\text{ and }T_{n}\leq0\\
+T_{c}-\mu_{d}T_{n} & d>d_{0}\text{ and }T_{n}\leq0\\
+0 & T_{n}>0
+\end{cases}
+\end{equation}
+
+\end_inset
+
+The spatial database files for the slip-weakening friction model properties
+ and state variables specify the spatial variation of the fault constitutive
+ model parameters given in Table 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:slip:weakening:properties:statevars"
+
+\end_inset
+
+.
+ As long as the fault is locked, the initial state variables are zero, so
+ specifying the initial state variables for slip-weakening friction is rare.
+ The slip-weakening friction also includes a parameter, 
+\family typewriter
+force_healing
+\family default
+, to control healing.
+ In quasi-static simulations, one usually wants slip confined to a single
+ time step (
+\family typewriter
+force_healing
+\family default
+ = True), whereas in a dynamic simulation slip occurs over many time steps
+ (
+\family typewriter
+force_healing
+\family default
+ = False; default behavior) and fault healing is often neglected.
+ The properties include:
+\end_layout
+
+\begin_layout Description
+force_healing Flag indicating whether healing (cumalative slip state variable
+ reset to zero) is forced after every time step.
+\end_layout
+
+\begin_layout Standard
+An example of setting the properties for the rate and state friction component
+ in a 
+\family typewriter
+.cfg
+\family default
+ file is:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault]
+\end_layout
+
+\begin_layout LyX-Code
+friction = pylith.friction.SlipWeakening ; Change friction model from the
+ default
+\end_layout
+
+\begin_layout LyX-Code
+friction.force_healing = False ; default value
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:slip:weakening:properties:statevars"
+
+\end_inset
+
+Values in spatial databases for slip-weakening friction.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="7" columns="3">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="2.5in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Spatial database
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Value
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_properties
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+static-coefficient
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Static coefficient of friction, 
+\begin_inset Formula $\mu_{s}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+dynamic-coefficient
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Dynamic coefficient of friction, 
+\begin_inset Formula $\mu_{d}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+slip-weakening-parameter
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip-weakening parameter, 
+\begin_inset Formula $d_{0}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+cohesion
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Cohesive stress, 
+\begin_inset Formula $T_{c}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+db_initial_state
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+cumulative-slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Cumulative slip, 
+\begin_inset Formula $d$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+previous-slip
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip at previous time step, 
+\begin_inset Formula $d(t-\Delta t)$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph
+Time-Weakening Friction
+\end_layout
+
+\begin_layout Standard
+The linear time-weakening friction model is analogous to the linear slip-weakeni
+ng friction model with time replacing slip.
+ It produces shear tractions equal to the cohesive stress plus a contribution
+ proportional to the fault normal traction that decreases from a static
+ value to a dynamic value as time progresses,
+\begin_inset Formula 
+\begin{equation}
+T_{f}=\begin{cases}
+T_{c}-(\mu_{s}-(\mu_{s}-\mu_{d})\frac{t}{t_{0}})T_{n} & t\leq t_{0}\text{ and }T_{n}\leq0\\
+T_{c}-\mu_{d}T_{n} & t>t_{0}\text{ and }T_{n}\leq0\\
+0 & T_{n}>0
+\end{cases}
+\end{equation}
+
+\end_inset
+
+The spatial database files for the time-weakening friction model properties
+ and state variables specify the spatial variation of the fault constitutive
+ model parameters given in Table 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:time:weakening:properties:statevars"
+
+\end_inset
+
+.
+ As long as the fault is locked, the initial state variable is zero, so
+ specifying the initial state variable for time-weakening friction is rare.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:time:weakening:properties:statevars"
+
+\end_inset
+
+Values in spatial databases for time-weakening friction.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="6" columns="3">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="2.5in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Database
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Value
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+db_properties
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+static-coefficient
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Static coefficient of friction, 
+\begin_inset Formula $\mu_{s}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+dynamic-coefficient
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Dynamic coefficient of friction, 
+\begin_inset Formula $\mu_{d}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+time-weakening-parameter
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Time-weakening parameter, 
+\begin_inset Formula $t_{0}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+cohesion
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Cohesive stress, 
+\begin_inset Formula $T_{c}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+db_initial_state
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+elapsed-time
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Elasped time of slip, 
+\begin_inset Formula $t$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:friction:rate:state:ageing"
+
+\end_inset
+
+Rate- and State-Friction with Ageing Law
+\end_layout
+
+\begin_layout Standard
+The Dieterich-Ruina rate and state friction model produces shear tractions
+ equal to the cohesive stress plus a contribution proportional to the fault
+ normal traction that depends on a state variable,
+\begin_inset Formula 
+\begin{gather}
+T_{f}=\begin{cases}
+T_{c}-\mu_{f}T_{n} & T_{n}\leq0\\
+0 & T_{n}>0
+\end{cases}\\
+\mu_{f}=\begin{cases}
+\mu_{0}+a\ln\left(\frac{V}{V_{0}}\right)+b\ln\left(\frac{V_{0}\theta}{L}\right) & V\ge V_{\mathit{min}}\\
+\mu_{0}+a\ln\left(\frac{V_{min}}{V}\right)+b\ln\left(\frac{V_{0}\theta}{L}\right)-a\left(1-\frac{V}{V_{min}}\right) & V<V_{min}
+\end{cases}\\
+\frac{d\theta}{dt}=1-\frac{V\theta}{L}
+\end{gather}
+
+\end_inset
+
+where 
+\begin_inset Formula $V$
+\end_inset
+
+ is slip rate, 
+\begin_inset Formula $V_{min}$
+\end_inset
+
+ is a minimum slip rate, 
+\begin_inset Formula $a$
+\end_inset
+
+ and 
+\begin_inset Formula $b$
+\end_inset
+
+ are coefficients, 
+\begin_inset Formula $L$
+\end_inset
+
+ is the characteristic slip distance, 
+\begin_inset Formula $\theta$
+\end_inset
+
+ is a state variable.
+ With an interative solver in quasi-static simulations with a small, but
+ nonzero residual tolerance we never encounter zero slip rates in quasi-static
+ simulations.
+ Instead we want to avoid significant variations in the coefficient of friction
+ for slip rates on the same order as our residual tolerance.
+ We regularize the rate and state friction model by iposing a linearization
+ of the variation of the coefficient of friction with slip rate when the
+ slip rate drops below a minimum slip rate, 
+\begin_inset Formula $V_{min}$
+\end_inset
+
+ (
+\family typewriter
+min_slip_rate
+\family default
+ property with a default value of 1.0e-12).
+ Note that this is different than the popular inverse hypoerbolic sine regulariz
+ation proposed by Ben-Zion and Rice 
+\begin_inset CommandInset citation
+LatexCommand cite
+key "BenZion:Rice:1997"
+
+\end_inset
+
+ to permit zero slip rates.
+ Following Kaneko 
+\shape italic
+et al.
+
+\shape default
+ 
+\begin_inset CommandInset citation
+LatexCommand cite
+key "Kaneko:etal:2008"
+
+\end_inset
+
+, we integrate the evolution equation for the state variable keeping slip
+ rate constant to get
+\begin_inset Formula 
+\begin{equation}
+\theta(t+\Delta t)=\theta(t)\exp\left(\frac{-V(t)\Delta t}{L}\right)+\frac{L}{V(t)}\left(1-\exp\left(-\frac{V(t)\Delta t}{L}\right)\right).
+\end{equation}
+
+\end_inset
+
+As the slip rate approaches zero, the first exponential term approaches
+ 1.
+ Using the first three terms of the Taylor series expansion of the second
+ exponential yields
+\begin_inset Formula 
+\begin{equation}
+\theta(t+\Delta t)=\begin{cases}
+\theta(t)\exp\left(-\frac{V(t)\Delta t}{L}\right)+\Delta t-\frac{1}{2}\frac{V(t)\Delta t^{2}}{L} & \frac{V(t)\Delta t}{L}<0.00001\\
+\theta(t)\exp\left(-\frac{V(t)\Delta t}{L}\right)+\frac{L}{V(t)}\left(1-\exp\left(-\frac{V(t)\Delta t}{L}\right)\right) & \frac{V(t)\Delta t}{L}\ge0.00001
+\end{cases}.
+\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The properties include:
+\end_layout
+
+\begin_layout Description
+min_slip_rate Slip rate at which linearization occurs, 
+\begin_inset Formula $V_{min}$
+\end_inset
+
+.
+ Should be about one order of magnitude larger than absolute tolerance in
+ solve.
+\end_layout
+
+\begin_layout Standard
+An example of setting the properties for the rate and state friction component
+ in a 
+\family typewriter
+.cfg
+\family default
+ file is:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault]
+\end_layout
+
+\begin_layout LyX-Code
+friction = pylith.friction.RateStateAgeing ; Change friction model from the
+ default
+\end_layout
+
+\begin_layout LyX-Code
+friction.min_slip_rate = 1.0e-12 ; default value
+\end_layout
+
+\begin_layout Standard
+The spatial database files for the rate and state friction model properties
+ and state variables specify the spatial variation of the fault constitutive
+ model parameters given in Table 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:rate:state:ageing:properties:statevars"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\noindent
+\align center
+\begin_inset Float table
+placement H
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\noindent
+\align center
+\begin_inset Caption
+
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:rate:state:ageing:properties:statevars"
+
+\end_inset
+
+Values in spatial databases for Dieterich-Ruina rate-state friction.
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="8" columns="3">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="0">
+<column alignment="left" valignment="top" width="2.5in">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Database
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Value
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Description
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+db_properties
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+reference-friction-coefficient
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Steady-state coefficient of friction at slip rate 
+\begin_inset Formula $V_{0}$
+\end_inset
+
+, 
+\begin_inset Formula $\mu_{s}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+reference-slip-rate
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Reference slip rate, 
+\begin_inset Formula $V_{0}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+characteristic-slip-distance
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Slip-weakening parameter, 
+\begin_inset Formula $L$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+constitutive-parameter-a
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Coefficient for the 
+\begin_inset Formula $\ln$
+\end_inset
+
+ slip rate term, 
+\begin_inset Formula $a$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+constitutive-parameter-b
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Coefficient for the 
+\begin_inset Formula $\ln$
+\end_inset
+
+ state variable term, 
+\begin_inset Formula $b$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+cohesion
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Cohesive stress, 
+\begin_inset Formula $T_{c}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+db_initial_state
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+state-variable
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+State variable, 
+\begin_inset Formula $\theta$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:fault:cohesive:impulses"
+
+\end_inset
+
+Slip Impulses for Green's Functions
+\end_layout
+
+\begin_layout Standard
+Computing static Green's functions using the GreensFns problem requires
+ a specialized fault implementation, FaultCohesiveImpulses, to setup the
+ slip impulses.
+ The parameters controlling the slip impulses include the components involved
+ (lateral, reverse, and/or fault opening) and the amplitude of the pulses
+ (e.g., selecting a subset of a fault or including a spatial variation).
+ The GreensFns properties and facilities include:
+\end_layout
+
+\begin_layout Description
+threshold Threshold for non-zero amplitude; impulses will only be generated
+ at locations on the fault where the amplitude excees this threshold.
+\end_layout
+
+\begin_layout Description
+impulse_dof Array of components associated with impulses, e.g., [0, 1] for
+ slip involving the lateral and up-dip components.
+\end_layout
+
+\begin_layout Description
+db_impulse_amplitude Spatial database for amplitude of slip impulse (scalar
+ field).
+ Default is SimpleDB.
+\end_layout
+
+\begin_layout Standard
+An example of setting the properties and facilities for FaultCohesiveImpulses
+ in a 
+\family typewriter
+.cfg
+\family default
+ file is:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces]
+\end_layout
+
+\begin_layout LyX-Code
+fault = pylith.faults.FaultCohesiveImpulses ; Change from the default
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.problem.interfaces.fault]
+\end_layout
+
+\begin_layout LyX-Code
+threshold = 1.0e-6*m ; default
+\end_layout
+
+\begin_layout LyX-Code
+impulse_dof = [0] ; lateral slip-only
+\end_layout
+
+\begin_layout LyX-Code
+db_impulse_amplitude.iohandler.filename = myimpulse.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+db_impulse_amplitude.label = Impulse amplitude
+\end_layout
+
+\begin_layout Section
+Gravitational Body Forces
+\end_layout
+
+\begin_layout Standard
+Many problems in geophysics require the consideration of gravitational body
+ forces.
+ For example, it is often important to include the effects of the lithostatic
+ (overburden) pressure.
+ In future releases of PyLith that permit nonlinear bulk rheologies, body
+ forces will affect plastic yield criteria and the deformation field for
+ large deformation/finite strain problems.
+ As described in Chapter 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "cha:Governing-Equations"
+
+\end_inset
+
+, the body forces contribute to the residual,
+\begin_inset Formula 
+\begin{equation}
+r_{i}^{n}=\int_{V}f_{i}N^{n}\: dV.
+\end{equation}
+
+\end_inset
+
+For gravitational body forces the body force per unit volume, 
+\begin_inset Formula $f_{i}$
+\end_inset
+
+, is given as the product of the mass density, 
+\begin_inset Formula $\rho$
+\end_inset
+
+, the scalar gravitational acceleration value, 
+\begin_inset Formula $g$
+\end_inset
+
+, and the gravitational acceleration orientation vector, 
+\begin_inset Formula $a_{i}$
+\end_inset
+
+:
+\begin_inset Formula 
+\begin{equation}
+f_{i}=\rho ga_{i}.
+\end{equation}
+
+\end_inset
+
+The mass density is a property of every material model, and is thus included
+ in the spatial database with the physical properties for each material.
+ The gravitational acceleration is assumed to be uniform and constant for
+ a given problem, with a default value of 9.80665 m/s
+\begin_inset Formula $^{\text{2}}$
+\end_inset
+
+.
+ The orientation vector will depend on the dimension of the problem as well
+ as the coordinate system being used.
+ The default orientation vector has components (0, 0, -1).
+ This is appropriate for three-dimensional problems where the gravity vector
+ is aligned with the negative z-axis, as would be the case in a geographic-proje
+cted coordinate system or a generic Cartesian coordinate system.
+ For cases in which the curvature of the earth should be considered, the
+ spatialdata package provides an earth-centered, earth-fixed (ECEF) coordinate
+ system and a local georeferenced Cartesian system; in each of these cases
+ the orientation vector is computed automatically, although this feature
+ has not been tested.
+ For problems in one or two dimensions where the orientation vector is constant,
+ the vector will need to be explicitly specified.
+ For example, in a two-dimensional problem, the vector might be specified
+ as (0, -1, 0).
+ The vector still has three components, although the extra component is
+ not used.
+\end_layout
+
+\begin_layout Standard
+Gravity is turned off by default.
+ To include gravitational effects in a simulation, you can turn it on as
+ follows:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.timedependent]
+\end_layout
+
+\begin_layout LyX-Code
+use_gravity = true
+\end_layout
+
+\begin_layout Standard
+By simply adding this flag, the default gravity field values will be used
+ and a 
+\family typewriter
+gravity_field
+\family default
+ component will be assigned for the problem.
+ The default values may be changed by altering the properties of 
+\family typewriter
+gravity_field
+\family default
+:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.timedependent.gravity_field]
+\end_layout
+
+\begin_layout LyX-Code
+acceleration = 100.0*m*s**-2
+\end_layout
+
+\begin_layout LyX-Code
+gravity_dir = [0, -1, 0]
+\end_layout
+
+\begin_layout Standard
+An example problem using gravity is described in Section 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:Tutorial-3d-hex8-gravity"
+
+\end_inset
+
+.
+\end_layout
+
+\end_body
+\end_document

Modified: short/3D/PyLith/branches/v1.7-stable/doc/userguide/extending/extending.lyx
===================================================================
--- short/3D/PyLith/branches/v1.7-stable/doc/userguide/extending/extending.lyx	2012-06-22 20:32:34 UTC (rev 20399)
+++ short/3D/PyLith/branches/v1.7-stable/doc/userguide/extending/extending.lyx	2012-06-23 04:42:41 UTC (rev 20400)
@@ -1,1035 +1,1053 @@
-#LyX 1.6.5 created this file. For more info see http://www.lyx.org/
-\lyxformat 345
-\begin_document
-\begin_header
-\textclass book
-\begin_preamble
-
-\end_preamble
-\use_default_options false
-\language english
-\inputencoding latin1
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_default_family default
-\font_sc false
-\font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
-
-\graphics default
-\paperfontsize default
-\spacing single
-\use_hyperref false
-\papersize default
-\use_geometry true
-\use_amsmath 1
-\use_esint 0
-\cite_engine basic
-\use_bibtopic false
-\paperorientation portrait
-\leftmargin 1in
-\topmargin 1in
-\rightmargin 1in
-\bottommargin 2in
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\defskip medskip
-\quotes_language english
-\papercolumns 1
-\papersides 2
-\paperpagestyle default
-\tracking_changes false
-\output_changes false
-\author "" 
-\author "" 
-\end_header
-
-\begin_body
-
-\begin_layout Chapter
-\begin_inset CommandInset label
-LatexCommand label
-name "cha:Extending"
-
-\end_inset
-
-Extending PyLith
-\end_layout
-
-\begin_layout Standard
-One of the powerful features of using the Pyre framework in PyLith is the
- ability to extend the functionality of the software without altering any
- of the PyLith code.
- Any of the components can be replaced with other compatible components.
- You are already familiar with this feature from running the examples; when
- you set the spatial database to UniformDB, SimpleDB, or SCECCVMH you are
- switching between different compatible components for a spatial database
- facility.
- Modifying the governing equations to include other physical processes requires
- changing the data structures associated with the solution and altering
- the PyLith code.
-\end_layout
-
-\begin_layout Standard
-In this section we provide examples of how to extend PyLith for components
- that users will most likely want to replace with their own custom versions.
- You will need a familiarity with Python, Makefiles, and C++ to write your
- own components.
- The primary steps in constructing a component to extend PyLith's functionality
- include:
-\end_layout
-
-\begin_layout Enumerate
-Setting up the source files for the component or set of components based
- on the templates.
-\end_layout
-
-\begin_layout Enumerate
-Edit the Python source file (
-\family typewriter
-.py
-\family default
-) for the component.
-\end_layout
-
-\begin_deeper
-\begin_layout Enumerate
-Define the user-specified properties and facilities.
-\end_layout
-
-\begin_layout Enumerate
-Transfer the user-specified data from the Python object to the corresponding
- C++ object via calls to the SWIG interface object.
-\end_layout
-
-\end_deeper
-\begin_layout Enumerate
-Edit the C++ header (
-\family typewriter
-.hh
-\family default
-) and implementation files (
-\family typewriter
-.cc
-\family default
-) for the component.
-\end_layout
-
-\begin_deeper
-\begin_layout Enumerate
-Implement the methods required to satisfy the interface definition of the
- component.
-\end_layout
-
-\begin_layout Enumerate
-Implement the desired functionality of the component in C++.
-\end_layout
-
-\end_deeper
-\begin_layout Enumerate
-Edit the SWIG interface files (
-\family typewriter
-.i
-\family default
-) that provide the glue between Python and C++.
-\end_layout
-
-\begin_layout Enumerate
-Edit the Python source file that tests the functionality of the component.
-\end_layout
-
-\begin_layout Enumerate
-Run configure, build, install, and run the tests of the component.
-\end_layout
-
-\begin_layout Section
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:Extending:SpatialDatabases"
-
-\end_inset
-
-Spatial Databases
-\end_layout
-
-\begin_layout Standard
-PyLith provides several types of spatial databases that can be used for
- specification of parameters associated with boundary conditions, earthquake
- ruptures, and physical properties.
- In this example we demonstrate how to provide a spatial database, UniformVelMod
-el, for specifying elastic properties.
- The source files are included in the source for the spatialdata package
- in the 
-\family typewriter
-templates/spatialdb
-\family default
- directory.
- The 
-\family typewriter
-README
-\family default
- file in 
-\family typewriter
-templates/spatialdb
-\family default
- provides detailed instructions for the various steps involved, and the
- source files contain numerous comments to help guide you through the customizat
-ion process.
- 
-\end_layout
-
-\begin_layout Standard
-The UniformVelModel component provides uniform physical properties: P wave
- speed, S wave speed, and density.
- Although this is a rather trivial specification of physical properties
- that could be easily done using a UniformDB, this example demonstrates
- how to create a user-defined component that matches the requirements of
- a spatial database for elastic physical properties.
- Adding additional physical properties is simply a matter of including some
- additional values in the spatial database.
- Furthermore, in cases where we are constructing a spatial database for
- a seismic velocity model, the data points are georeferenced.
- With our uniform physical properties we do not need to worry about any
- differences in coordinate systems between our seismic velocity model and
- points at which the model is queried.
- However, in many cases we do, so we illustrate this functionality by using
- a geographic projection as the coordinate system in our example.
-\end_layout
-
-\begin_layout Standard
-Using a top-down approach, the first step is to determine what information
- the user will need to supply to the component.
- Is the data for the spatial database in a file or a series of files? If
- so, file names and possible paths to a directory containing files with
- known names might be necessary.
- Are there other parameters that control the behavior of the component,
- such as a minimum shear wave speed? In our example the user supplies values
- for the P wave speed, S wave speed, and density.
- The user-supplied parameters become Pyre properties and facilities in the
- Python source file.
- Because our user supplied parameters are floating point values with dimensions,
- we create dimensional properties 
-\family typewriter
-vs
-\family default
-, 
-\family typewriter
-vp
-\family default
-, and 
-\family typewriter
-density
-\family default
-.
- In addition to defining the properties of the component, we also need to
- transfer these properties to the C++ object that does the real work.
- This is done by calling the C++ 
-\family typewriter
-vs()
-\family default
-, 
-\family typewriter
-vp()
-\family default
-, and 
-\family typewriter
-density()
-\family default
- accessor functions that are accessible via the Python module created by
- SWIG.
-\end_layout
-
-\begin_layout Standard
-In the C++ object we must implement the functions that are required by the
- spatial database interface.
- These functions are listed near the beginning of the UniformVelModel class
- definition at the top of the C++ header file, 
-\family typewriter
-UniformVelModel.hh
-\family default
-.
- The C++ object also includes the accessor functions that allow us to set
- the P wave speed, S wave speed, and density values to the user-specified
- values in the Python object.
- Additional information, such as a file name, parameters defined as data
- structures, etc., would be set via similar accessor functions.
- You can also add additional functions and data structures to the C++ class
- to provide the necessary operations and functionality of the spatial database.
- 
-\end_layout
-
-\begin_layout Standard
-In SimpleDB we use a separate class to read in the spatial database and
- yet another class to perform the actual query.
- In our example, the C++ object also creates and stores the UTM zone 10
- geographic projection for the seismic velocity model.
- When the spatial database gets a query for physical properties, we transform
- the coordinates of the query point from its coordinate system to the coordinate
- system of our seismic velocity model.
-\end_layout
-
-\begin_layout Standard
-In order to use SWIG to create the Python module that allows us to call
- C++ from Python, we use a ``main'' SWIG interface file (
-\family typewriter
-\size small
-spatialdbcontrib.i
-\family default
-\size default
- in this case) and then one for each object (
-\family typewriter
-\size small
-UniformVelModel.i
-\family default
-\size default
- in this case).
- This greatly simplifies keeping the Python module synchronized with the
- C++ and Python code.
- The 
-\family typewriter
-\size small
-UniformVelModel.i
-\family default
-\size default
- SWIG file is nearly identical to the corresponding C++ header file.
- There are a few differences, as noted in the comments within the file.
- Copying and pasting the C++ header file and then doing a little cleanup
- is a very quick and easy way to construct a SWIG interface file for a C++
- object.
- Because very little changes from SWIG module to SWIG module, it is usually
- easiest to construct the ``main'' SWIG interface by copying and customizing
- an existing one.
-\end_layout
-
-\begin_layout Standard
-Once the Python, C++, and SWIG interface files are complete, we are ready
- to build the module.
- The 
-\family typewriter
-Makefile.am
-\family default
- file defines how to compile and link the C++ library and generate the Python
- module via SWIG.
- The 
-\family typewriter
-configure.ac
-\family default
- file contains the information used to build a configure script.
- The configure script checks to make sure it can find all of the tools needed
- to build the component (C++ compiler, Python, installed spatial database
- package, etc.).
- See the README file for detailed instructions on how to generate the configure
- script, and build and install the component.
-\end_layout
-
-\begin_layout Standard
-We recommend constructing tests of the component to insure that it is functionin
-g properly before attempting to use it in an application.
- The 
-\family typewriter
-\size small
-tests
-\family default
-\size default
- directory within 
-\family typewriter
-\size small
-templates/spatialdb
-\family default
-\size default
- contains a Python script, 
-\family typewriter
-\size small
-testcontrib.py
-\family default
-\size default
-, that runs the tests of the UniformVelModel component defined in 
-\family typewriter
-\size small
-TestUniformVelModel.py
-\family default
-\size default
-.
- Normally, one would want to test each function individually to isolate
- errors and create C++ tests as well as the Python tests included here.
- In our rather simple example, we simply test the overall functionality
- of the component.
- For examples of thorough testing, see the spatialdata and PyLith source
- code.
-\end_layout
-
-\begin_layout Standard
-Once you have built, installed, and tested the UniformVelModel, it is time
- to use it in a simple example.
- Because the seismic velocity model uses georeferenced coordinates, our
- example must also use georeferenced coordinates.
- The dislocation example in the PyLith 
-\family typewriter
-examples/twocells/twotet4-geopro
-\family default
-j directory uses UTM zone 11 coordinates.
- The spatial database package will transform the coordinates between the
- two projections as defined in the UniformVelModel 
-\family typewriter
-query()
-\family default
- function.
- The dislocation example uses the SCEC CVM-H seismic velocity model.
- In order to replace the SCEC CVM-H seismic velocity with our uniform velocity
- model, in 
-\family typewriter
-pylithapp.cfg
-\family default
- we replace the lines
-\end_layout
-
-\begin_layout LyX-Code
-db_properties = spatialdata.spatialdb.SCECCVMH
-\end_layout
-
-\begin_layout LyX-Code
-db_properties.data_dir = /home/brad/data/sceccvm-h/vx53/bin
-\end_layout
-
-\begin_layout Standard
-with the lines
-\end_layout
-
-\begin_layout LyX-Code
-db_properties = spatialdata.spatialdb.contrib.UniformVelModel
-\end_layout
-
-\begin_layout Standard
-When you run the dislocation example, the 
-\family typewriter
-dislocation-statevars_info.vtk
-\family default
- file should reflect the use of physical properties from the uniform seismic
- velocity with 
-\begin_inset Formula $\mu=1.69\times10^{10}\mathrm{Pa}$
-\end_inset
-
-, 
-\begin_inset Formula $\lambda=1.6825\times10^{10}\mathrm{Pa}$
-\end_inset
-
-, and 
-\begin_inset Formula $\rho=2500\mathrm{kg/m^{3}}$
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Section
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:Extending:BulkConstitutiveModels"
-
-\end_inset
-
-Bulk Constitutive Models
-\end_layout
-
-\begin_layout Standard
-PyLith includes several linearly elastic and inelastic bulk constitutive
- models for 2D and 3D problems.
- In this example, we demonstrate how to extend PyLith by adding your own
- bulk constitutive model.
- We reimplement the 2D plane strain constitutive model while adding the
- current strain and stress tensors as state variables.
- This constitutive model, 
-\family typewriter
-PlaneStrainState
-\family default
-, is not particularly useful, but it illustrates the basic steps involved
- in creating a bulk constitutive model with state variables.
- The sources files are included with the main PyLith source code in the
- 
-\family typewriter
-templates/materials
-\family default
- directory.
- The 
-\family typewriter
-README
-\family default
- file in 
-\family typewriter
-templates/materials
-\family default
- provides detailed instructions for the various steps, and the source files
- contain numerous comments to guide you through the customization process.
-\end_layout
-
-\begin_layout Standard
-In contrast to our previous example of creating a customized spatial database,
- which involved gathering user-specified parameters via the Pyre framework,
- there are no user-defined parameters for bulk constitutive models.
- The specification of the physical properties and state variables associated
- with the constitutive model is handled directly in the C++ code.
- As a result, the Python object for the constitutive model component is
- very simple and customization is limited to simply changing the names of
- objects and labels.
-\end_layout
-
-\begin_layout Standard
-The properties and state variables used in the bulk constitutive model are
- set using arguments to the constructor of the C++ 
-\family typewriter
-ElasticMaterial
-\family default
- object.
- We define a number of constants at the top of the C++ file and use the
- 
-\family typewriter
-Metadata
-\family default
- object to define the properties and state variables.
- The C++ object for the bulk constitutive component includes a number of
- functions that implement elasticity behavior of a bulk material as well
- as several utility routines:
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_dbToProperties()
-\family default
- Computes the physical properties used in the constitutive model equations
- from the physical properties supplied in spatial databases.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_nondimProperties()
-\family default
- Nondimensionalizes the physical properties used in the constitutive model
- equations.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_dimProperties()
-\family default
- Dimensionalizes the physical properties used in the constitutive model
- equations.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_stableTimeStepImplicit()
-\family default
- Computes the stable time step for implicit time stepping in quasi-static
- simulations given the current state (strain, stress, and state variables).
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_calcDensity()
-\family default
- Computes the density given the physical properties and state variables.
- In most cases density is a physical property used in the constitutive equations
-, so this is a trivial function in those cases.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_calcStress()
-\family default
- Computes the stress tensor given the physical properties, state variables,
- total strain, initial stress, and initial strain.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_calcElasticConsts()
-\family default
- Computes the elastic constants given the physical properties, state variables,
- total strain, initial stress, and initial strain.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_updateStateVars()
-\family default
- Updates the state variables given the physical properties, total strain,
- initial stress, and initial strain.
- If a constitutive model does not use state variables, then this routine
- is omitted.
-\end_layout
-
-\begin_layout Standard
-Because it is sometimes convenient to supply physical properties for a bulk
- constitutive model that are equivalent but different from the ones that
- appear in the constitutive equations (e.g., P wave speed, S wave speed, and
- density rather then Lame's constants 
-\begin_inset Formula $\mu,$
-\end_inset
-
-
-\begin_inset Formula $\lambda,$
-\end_inset
-
- and density), each bulk constitutive model component has routines to convert
- the physical property parameters and state variables a user specifies via
- spatial databases to the physical property properties and state variables
- used in the constitutive model equations.
- In quasi-static problems, PyLith computes an elastic solution for the first
- time step (
-\begin_inset Formula $-\Delta t$
-\end_inset
-
- to 
-\begin_inset Formula $t$
-\end_inset
-
-).
- This means that for inelastic materials, we supply two sets of functions
- for the constitutive behavior: one set for the initial elastic step and
- one set for the remainder of the simulation.
- See the source code for the inelastic materials in PyLith for an illustration
- of an efficient mechanism for doing this.
-\end_layout
-
-\begin_layout Standard
-The SWIG interface files for a bulk constitutive component are setup in
- the same manner as in the previous example of creating a customized spatial
- database component.
- The ``main'' SWIG interface file (
-\family typewriter
-materialscontrib.i
-\family default
- in this case) sets up the Python module, and the SWIG interface file for
- the component (
-\family typewriter
-PlaneStrainState.i
-\family default
- in this case) defines the functions that should be included in the Python
- module.
- Note that because the C++ 
-\family typewriter
-ElasticMaterial
-\family default
- object defines a number of pure virtual methods (which merely specify the
- interface for the functions and do not implement default behavior), we
- must include many protected functions in the SWIG interface file.
- If these are omitted, SWIG will give a warning indicating that some of
- the functions remain abstract (i.e., some pure virtual functions defined
- in the parent class 
-\family typewriter
-ElasticMaterial
-\family default
- were not implemented in the child class 
-\family typewriter
-PlaneStrainState
-\family default
-), and no constructor is created.
- When this happens, you cannot create a 
-\family typewriter
-PlaneStrainState
-\family default
- Python object.
-\end_layout
-
-\begin_layout Standard
-Once the Python, C++, and SWIG interface files are complete, you are ready
- to configure and build the C++ library and Python module for the component.
- Edit the 
-\family typewriter
-Makefile.am
-\family default
- file as necessary, then generate the configure script, run configure, and
- then build and install the library and module (see the 
-\family typewriter
-README
-\family default
- file for detailed instructions).
-\end_layout
-
-\begin_layout Standard
-Because most functionality of the bulk constitutive model component is at
- the C++ level, properly constructed unit tests for the 
-\family typewriter
-component
-\family default
- should include tests for both the C++ code and Python code.
- The C++ unit tests can be quite complex, and it is best to examine those
- used for the bulk constitutive models included with PyLith.
- In this example we create the Python unit tests to verify that we can create
- a 
-\family typewriter
-PlaneStrainState
-\family default
- Python object and call some of the simple underlying C++ functions.
- The source files are in the 
-\family typewriter
-templates/materials/tests
-\family default
- directory.
- The 
-\family typewriter
-testcontrib.py
-\family default
- Python script runs the tests defined in 
-\family typewriter
-TestPlaneStrainState.py
-\family default
-.
-\end_layout
-
-\begin_layout Standard
-Once you have built, installed, and tested the 
-\family typewriter
-PlaneStrainState
-\family default
- component, it is time to use it in a simple example.
- You can try using it in any of the 2D examples.
- For the examples in 
-\family typewriter
-examples/twocells/twoquad4
-\family default
-, in 
-\family typewriter
-pylithapp.cfg
-\family default
- replace the line
-\end_layout
-
-\begin_layout LyX-Code
-material = pylith.materials.ElasticPlaneStrain
-\end_layout
-
-\begin_layout Standard
-with the line
-\end_layout
-
-\begin_layout LyX-Code
-material = pylith.materials.contrib.PlaneStrainState
-\end_layout
-
-\begin_layout Standard
-or simply add the command line argument
-\end_layout
-
-\begin_layout LyX-Code
-
-\family typewriter
---timedependent.homogeneous.material=pylith.materials.contrib.PlaneStrainState
-\end_layout
-
-\begin_layout Standard
-when running any of the 2D examples.
- The output should remain identical, but you should see the 
-\family typewriter
-PlaneStrainState
-\family default
- object listed in the information written to 
-\family typewriter
-stdout
-\family default
-.
-\end_layout
-
-\begin_layout Section
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:Extending:FaultConstitutiveModels"
-
-\end_inset
-
-Fault Constitutive Models
-\end_layout
-
-\begin_layout Standard
-PyLith includes a two of the most widely used fault constitutive models,
- but there are a wide range of models that have been proposed to explain
- earthquake source processes.
- In this example, we demonstrate how to extend PyLith by adding your own
- fault constitutive model.
- We implement a linear viscous fault constitutive model wherein the perturbation
- in the coefficient of friction is linearly proportional to the slip rate.
- This constitutive model, 
-\family typewriter
-ViscousFriction
-\family default
-, is not particularly useful, but it illustrates the basic steps involved
- in creating a fault constitutive model.
- The sources files are included with the main PyLith source code in the
- 
-\family typewriter
-templates/friction
-\family default
- directory.
- The 
-\family typewriter
-README
-\family default
- file in 
-\family typewriter
-templates/friction
-\family default
- provides detailed instructions for the various steps, and the source files
- contain numerous comments to guide you through the customization process.
-\end_layout
-
-\begin_layout Standard
-Similar to our previous example of creating a customized bulk constitutive
- model, the parameters are defined in the C++ code, not in the Pyre framework.
- As a result, the Python object for the fault constitutive model component
- is very simple and customization is limited to simply changing the names
- of objects and labels.
-\end_layout
-
-\begin_layout Standard
-The properties and state variables used in the fault constitutive model
- are set using arguments to the constructor of the C++ 
-\family typewriter
-FrictionModel
-\family default
- object, analogous to the 
-\family typewriter
-ElasticMaterial
-\family default
- object for bulk constitutive models.
- In fact, both types of constitutive models used the same underlying C++
- object (
-\family typewriter
-Metadata::ParamDescription
-\family default
-) to store the description of the parameters and state variables.
- We define a number of constants at the top of the C++ file and use the
- 
-\family typewriter
-Metadata
-\family default
- object to define the properties and state variables.
- The C++ object for the fault constitutive component includes a number of
- functions that implement friction as well as several utility routines:
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_dbToProperties()
-\family default
- Computes the physical properties used in the constitutive model equations
- from the physical properties supplied in spatial databases.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_nondimProperties()
-\family default
- Nondimensionalizes the physical properties used in the constitutive model
- equations.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_dimProperties()
-\family default
- Dimensionalizes the physical properties used in the constitutive model
- equations.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_dbToStateVars()
-\family default
- Computes the initial state variables used in the constitutive model equations
- from the initial values supplied in spatial databases.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_nondimStateVars()
-\family default
- Nondimensionalizes the state variables used in the constitutive model equations.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_dimStateVars()
-\family default
- Dimensionalizes the state variables used in the constitutive model equations.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_calcFriction()
-\family default
- Computes the friction stress given the physical properties, state variables,
- slip, slip rate, and normal traction.
-\end_layout
-
-\begin_layout Description
-
-\family typewriter
-_updateStateVars()
-\family default
- Updates the state variables given the physical properties, slip, slip rate,
- and normal traction.
-\end_layout
-
-\begin_layout Standard
-If a constitutive model does not use state variables, then the state variable
- routines are omitted.
- 
-\end_layout
-
-\begin_layout Standard
-Because it is sometimes convenient to supply physical properties for a fault
- constitutive model that are equivalent but different from the ones that
- appear in the constitutive equations, each fault constitutive model component
- has routines to convert the physical property parameters and state variables
- a user specifies via spatial databases to the physical property properties
- and state variables used in the constitutive model equations.
- 
-\end_layout
-
-\begin_layout Standard
-The SWIG interface files for a fault constitutive component are setup in
- the same manner as in the previous examples of creating a bulk constitutive
- model or a customized spatial database component.
- The ``main'' SWIG interface file (
-\family typewriter
-frictioncontrib.i
-\family default
- in this case) sets up the Python module, and the SWIG interface file for
- the component (
-\family typewriter
-ViscousFriction.i
-\family default
- in this case) defines the functions that should be included in the Python
- module.
- Note that because the C++ 
-\family typewriter
-FrictionModel
-\family default
- object defines a number of pure virtual methods (which merely specify the
- interface for the functions and do not implement default behavior), we
- must include many protected functions in the SWIG interface file.
- If these are omitted, SWIG will give a warning indicating that some of
- the functions remain abstract (i.e., some pure virtual functions defined
- in the parent class 
-\family typewriter
-FrictionModel
-\family default
- were not implemented in the child class 
-\family typewriter
-ViscousFriction
-\family default
-), and no constructor is created.
- When this happens, you cannot create a 
-\family typewriter
-ViscousFriction
-\family default
- Python object.
-\end_layout
-
-\begin_layout Standard
-Once the Python, C++, and SWIG interface files are complete, you are ready
- to configure and build the C++ library and Python module for the component.
- Edit the 
-\family typewriter
-Makefile.am
-\family default
- file as necessary, then generate the configure script, run configure, and
- then build and install the library and module (see the 
-\family typewriter
-README
-\family default
- file for detailed instructions).
-\end_layout
-
-\begin_layout Standard
-Because most functionality of the fault constitutive model component is
- at the C++ level, properly constructed unit tests for the 
-\family typewriter
-component
-\family default
- should include tests for both the C++ code and Python code.
- The C++ unit tests can be quite complex, and it is best to examine those
- used for the fault constitutive models included with PyLith.
- In this example we create the Python unit tests to verify that we can create
- a 
-\family typewriter
-ViscousFriction
-\family default
- Python object and call some of the simple underlying C++ functions.
- The source files are in the 
-\family typewriter
-templates/friction/tests
-\family default
- directory.
- The 
-\family typewriter
-testcontrib.py
-\family default
- Python script runs the tests defined in 
-\family typewriter
-TestViscousFriction.py
-\family default
-.
-\end_layout
-
-\begin_layout Standard
-Once you have built, installed, and tested the 
-\family typewriter
-ViscousFriction
-\family default
- component, it is time to use it in a simple example.
- You can try using it in any of the 2D or 3D examples.
- For the examples in 
-\family typewriter
-examples/bar_shearwave/quad4, in shearwave_staticfriction.cfg
-\family default
- replace the line
-\end_layout
-
-\begin_layout LyX-Code
-friction = pylith.friction.StaticFriction
-\end_layout
-
-\begin_layout Standard
-with the line
-\end_layout
-
-\begin_layout LyX-Code
-friction = pylith.friction.contrib.ViscousFriction
-\end_layout
-
-\begin_layout Standard
-or simply add the command line argument
-\end_layout
-
-\begin_layout LyX-Code
-
-\family typewriter
---timedependent.interfaces.fault.friction=pylith.friction.contrib.ViscousFriction
-\end_layout
-
-\begin_layout Standard
-when running any of the friction examples.
- You will also need to supply a corresponding spatial database with the
- physical properties for the viscous friction constitutive model.
-\end_layout
-
-\end_body
-\end_document
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
+\begin_document
+\begin_header
+\textclass book
+\begin_preamble
+
+\end_preamble
+\use_default_options false
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding latin1
+\fontencoding global
+\font_roman default
+\font_sans default
+\font_typewriter default
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry true
+\use_amsmath 1
+\use_esint 0
+\use_mhchem 1
+\use_mathdots 1
+\cite_engine basic
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\use_refstyle 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\leftmargin 1in
+\topmargin 1in
+\rightmargin 1in
+\bottommargin 2in
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\quotes_language english
+\papercolumns 1
+\papersides 2
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Chapter
+\begin_inset CommandInset label
+LatexCommand label
+name "cha:Extending"
+
+\end_inset
+
+Extending PyLith
+\end_layout
+
+\begin_layout Standard
+One of the powerful features of using the Pyre framework in PyLith is the
+ ability to extend the functionality of the software without altering any
+ of the PyLith code.
+ Any of the components can be replaced with other compatible components.
+ You are already familiar with this feature from running the examples; when
+ you set the spatial database to UniformDB, SimpleDB, or SCECCVMH you are
+ switching between different compatible components for a spatial database
+ facility.
+ Modifying the governing equations to include other physical processes requires
+ changing the data structures associated with the solution and altering
+ the PyLith code.
+\end_layout
+
+\begin_layout Standard
+In this section we provide examples of how to extend PyLith for components
+ that users will most likely want to replace with their own custom versions.
+ You will need a familiarity with Python, Makefiles, and C++ to write your
+ own components.
+ The primary steps in constructing a component to extend PyLith's functionality
+ include:
+\end_layout
+
+\begin_layout Enumerate
+Setting up the source files for the component or set of components based
+ on the templates.
+\end_layout
+
+\begin_layout Enumerate
+Edit the Python source file (
+\family typewriter
+.py
+\family default
+) for the component.
+\end_layout
+
+\begin_deeper
+\begin_layout Enumerate
+Define the user-specified properties and facilities.
+\end_layout
+
+\begin_layout Enumerate
+Transfer the user-specified data from the Python object to the corresponding
+ C++ object via calls to the SWIG interface object.
+\end_layout
+
+\end_deeper
+\begin_layout Enumerate
+Edit the C++ header (
+\family typewriter
+.hh
+\family default
+) and implementation files (
+\family typewriter
+.cc
+\family default
+) for the component.
+\end_layout
+
+\begin_deeper
+\begin_layout Enumerate
+Implement the methods required to satisfy the interface definition of the
+ component.
+\end_layout
+
+\begin_layout Enumerate
+Implement the desired functionality of the component in C++.
+\end_layout
+
+\end_deeper
+\begin_layout Enumerate
+Edit the SWIG interface files (
+\family typewriter
+.i
+\family default
+) that provide the glue between Python and C++.
+\end_layout
+
+\begin_layout Enumerate
+Edit the Python source file that tests the functionality of the component.
+\end_layout
+
+\begin_layout Enumerate
+Run configure, build, install, and run the tests of the component.
+\end_layout
+
+\begin_layout Section
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:Extending:SpatialDatabases"
+
+\end_inset
+
+Spatial Databases
+\end_layout
+
+\begin_layout Standard
+PyLith provides several types of spatial databases that can be used for
+ specification of parameters associated with boundary conditions, earthquake
+ ruptures, and physical properties.
+ In this example we demonstrate how to provide a spatial database, UniformVelMod
+el, for specifying elastic properties.
+ The source files are included in the source for the spatialdata package
+ in the 
+\family typewriter
+templates/spatialdb
+\family default
+ directory.
+ The 
+\family typewriter
+README
+\family default
+ file in 
+\family typewriter
+templates/spatialdb
+\family default
+ provides detailed instructions for the various steps involved, and the
+ source files contain numerous comments to help guide you through the customizat
+ion process.
+ 
+\end_layout
+
+\begin_layout Standard
+The UniformVelModel component provides uniform physical properties: P wave
+ speed, S wave speed, and density.
+ Although this is a rather trivial specification of physical properties
+ that could be easily done using a UniformDB, this example demonstrates
+ how to create a user-defined component that matches the requirements of
+ a spatial database for elastic physical properties.
+ Adding additional physical properties is simply a matter of including some
+ additional values in the spatial database.
+ Furthermore, in cases where we are constructing a spatial database for
+ a seismic velocity model, the data points are georeferenced.
+ With our uniform physical properties we do not need to worry about any
+ differences in coordinate systems between our seismic velocity model and
+ points at which the model is queried.
+ However, in many cases we do, so we illustrate this functionality by using
+ a geographic projection as the coordinate system in our example.
+\end_layout
+
+\begin_layout Standard
+Using a top-down approach, the first step is to determine what information
+ the user will need to supply to the component.
+ Is the data for the spatial database in a file or a series of files? If
+ so, file names and possible paths to a directory containing files with
+ known names might be necessary.
+ Are there other parameters that control the behavior of the component,
+ such as a minimum shear wave speed? In our example the user supplies values
+ for the P wave speed, S wave speed, and density.
+ The user-supplied parameters become Pyre properties and facilities in the
+ Python source file.
+ Because our user supplied parameters are floating point values with dimensions,
+ we create dimensional properties 
+\family typewriter
+vs
+\family default
+, 
+\family typewriter
+vp
+\family default
+, and 
+\family typewriter
+density
+\family default
+.
+ In addition to defining the properties of the component, we also need to
+ transfer these properties to the C++ object that does the real work.
+ This is done by calling the C++ 
+\family typewriter
+vs()
+\family default
+, 
+\family typewriter
+vp()
+\family default
+, and 
+\family typewriter
+density()
+\family default
+ accessor functions that are accessible via the Python module created by
+ SWIG.
+\end_layout
+
+\begin_layout Standard
+In the C++ object we must implement the functions that are required by the
+ spatial database interface.
+ These functions are listed near the beginning of the UniformVelModel class
+ definition at the top of the C++ header file, 
+\family typewriter
+UniformVelModel.hh
+\family default
+.
+ The C++ object also includes the accessor functions that allow us to set
+ the P wave speed, S wave speed, and density values to the user-specified
+ values in the Python object.
+ Additional information, such as a file name, parameters defined as data
+ structures, etc., would be set via similar accessor functions.
+ You can also add additional functions and data structures to the C++ class
+ to provide the necessary operations and functionality of the spatial database.
+ 
+\end_layout
+
+\begin_layout Standard
+In SimpleDB we use a separate class to read in the spatial database and
+ yet another class to perform the actual query.
+ In our example, the C++ object also creates and stores the UTM zone 10
+ geographic projection for the seismic velocity model.
+ When the spatial database gets a query for physical properties, we transform
+ the coordinates of the query point from its coordinate system to the coordinate
+ system of our seismic velocity model.
+\end_layout
+
+\begin_layout Standard
+In order to use SWIG to create the Python module that allows us to call
+ C++ from Python, we use a ``main'' SWIG interface file (
+\family typewriter
+\size small
+spatialdbcontrib.i
+\family default
+\size default
+ in this case) and then one for each object (
+\family typewriter
+\size small
+UniformVelModel.i
+\family default
+\size default
+ in this case).
+ This greatly simplifies keeping the Python module synchronized with the
+ C++ and Python code.
+ The 
+\family typewriter
+\size small
+UniformVelModel.i
+\family default
+\size default
+ SWIG file is nearly identical to the corresponding C++ header file.
+ There are a few differences, as noted in the comments within the file.
+ Copying and pasting the C++ header file and then doing a little cleanup
+ is a very quick and easy way to construct a SWIG interface file for a C++
+ object.
+ Because very little changes from SWIG module to SWIG module, it is usually
+ easiest to construct the ``main'' SWIG interface by copying and customizing
+ an existing one.
+\end_layout
+
+\begin_layout Standard
+Once the Python, C++, and SWIG interface files are complete, we are ready
+ to build the module.
+ The 
+\family typewriter
+Makefile.am
+\family default
+ file defines how to compile and link the C++ library and generate the Python
+ module via SWIG.
+ The 
+\family typewriter
+configure.ac
+\family default
+ file contains the information used to build a configure script.
+ The configure script checks to make sure it can find all of the tools needed
+ to build the component (C++ compiler, Python, installed spatial database
+ package, etc.).
+ See the README file for detailed instructions on how to generate the configure
+ script, and build and install the component.
+\end_layout
+
+\begin_layout Standard
+We recommend constructing tests of the component to insure that it is functionin
+g properly before attempting to use it in an application.
+ The 
+\family typewriter
+\size small
+tests
+\family default
+\size default
+ directory within 
+\family typewriter
+\size small
+templates/spatialdb
+\family default
+\size default
+ contains a Python script, 
+\family typewriter
+\size small
+testcontrib.py
+\family default
+\size default
+, that runs the tests of the UniformVelModel component defined in 
+\family typewriter
+\size small
+TestUniformVelModel.py
+\family default
+\size default
+.
+ Normally, one would want to test each function individually to isolate
+ errors and create C++ tests as well as the Python tests included here.
+ In our rather simple example, we simply test the overall functionality
+ of the component.
+ For examples of thorough testing, see the spatialdata and PyLith source
+ code.
+\end_layout
+
+\begin_layout Standard
+Once you have built, installed, and tested the UniformVelModel, it is time
+ to use it in a simple example.
+ Because the seismic velocity model uses georeferenced coordinates, our
+ example must also use georeferenced coordinates.
+ The dislocation example in the PyLith 
+\family typewriter
+examples/twocells/twotet4-geopro
+\family default
+j directory uses UTM zone 11 coordinates.
+ The spatial database package will transform the coordinates between the
+ two projections as defined in the UniformVelModel 
+\family typewriter
+query()
+\family default
+ function.
+ The dislocation example uses the SCEC CVM-H seismic velocity model.
+ In order to replace the SCEC CVM-H seismic velocity with our uniform velocity
+ model, in 
+\family typewriter
+pylithapp.cfg
+\family default
+ we replace the lines
+\end_layout
+
+\begin_layout LyX-Code
+db_properties = spatialdata.spatialdb.SCECCVMH
+\end_layout
+
+\begin_layout LyX-Code
+db_properties.data_dir = /home/brad/data/sceccvm-h/vx53/bin
+\end_layout
+
+\begin_layout Standard
+with the lines
+\end_layout
+
+\begin_layout LyX-Code
+db_properties = spatialdata.spatialdb.contrib.UniformVelModel
+\end_layout
+
+\begin_layout Standard
+When you run the dislocation example, the 
+\family typewriter
+dislocation-statevars_info.vtk
+\family default
+ file should reflect the use of physical properties from the uniform seismic
+ velocity with 
+\begin_inset Formula $\mu=1.69\times10^{10}\mathrm{Pa}$
+\end_inset
+
+, 
+\begin_inset Formula $\lambda=1.6825\times10^{10}\mathrm{Pa}$
+\end_inset
+
+, and 
+\begin_inset Formula $\rho=2500\mathrm{kg/m^{3}}$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Section
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:Extending:BulkConstitutiveModels"
+
+\end_inset
+
+Bulk Constitutive Models
+\end_layout
+
+\begin_layout Standard
+PyLith includes several linearly elastic and inelastic bulk constitutive
+ models for 2D and 3D problems.
+ In this example, we demonstrate how to extend PyLith by adding your own
+ bulk constitutive model.
+ We reimplement the 2D plane strain constitutive model while adding the
+ current strain and stress tensors as state variables.
+ This constitutive model, 
+\family typewriter
+PlaneStrainState
+\family default
+, is not particularly useful, but it illustrates the basic steps involved
+ in creating a bulk constitutive model with state variables.
+ The sources files are included with the main PyLith source code in the
+ 
+\family typewriter
+templates/materials
+\family default
+ directory.
+ The 
+\family typewriter
+README
+\family default
+ file in 
+\family typewriter
+templates/materials
+\family default
+ provides detailed instructions for the various steps, and the source files
+ contain numerous comments to guide you through the customization process.
+\end_layout
+
+\begin_layout Standard
+In contrast to our previous example of creating a customized spatial database,
+ which involved gathering user-specified parameters via the Pyre framework,
+ there are no user-defined parameters for bulk constitutive models.
+ The specification of the physical properties and state variables associated
+ with the constitutive model is handled directly in the C++ code.
+ As a result, the Python object for the constitutive model component is
+ very simple and customization is limited to simply changing the names of
+ objects and labels.
+\end_layout
+
+\begin_layout Standard
+The properties and state variables used in the bulk constitutive model are
+ set using arguments to the constructor of the C++ 
+\family typewriter
+ElasticMaterial
+\family default
+ object.
+ We define a number of constants at the top of the C++ file and use the
+ 
+\family typewriter
+Metadata
+\family default
+ object to define the properties and state variables.
+ The C++ object for the bulk constitutive component includes a number of
+ functions that implement elasticity behavior of a bulk material as well
+ as several utility routines:
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_dbToProperties()
+\family default
+ Computes the physical properties used in the constitutive model equations
+ from the physical properties supplied in spatial databases.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_nondimProperties()
+\family default
+ Nondimensionalizes the physical properties used in the constitutive model
+ equations.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_dimProperties()
+\family default
+ Dimensionalizes the physical properties used in the constitutive model
+ equations.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_stableTimeStepImplicit()
+\family default
+ Computes the stable time step for implicit time stepping in quasi-static
+ simulations given the current state (strain, stress, and state variables).
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_calcDensity()
+\family default
+ Computes the density given the physical properties and state variables.
+ In most cases density is a physical property used in the constitutive equations
+, so this is a trivial function in those cases.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_calcStress()
+\family default
+ Computes the stress tensor given the physical properties, state variables,
+ total strain, initial stress, and initial strain.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_calcElasticConsts()
+\family default
+ Computes the elastic constants given the physical properties, state variables,
+ total strain, initial stress, and initial strain.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_updateStateVars()
+\family default
+ Updates the state variables given the physical properties, total strain,
+ initial stress, and initial strain.
+ If a constitutive model does not use state variables, then this routine
+ is omitted.
+\end_layout
+
+\begin_layout Standard
+Because it is sometimes convenient to supply physical properties for a bulk
+ constitutive model that are equivalent but different from the ones that
+ appear in the constitutive equations (e.g., P wave speed, S wave speed, and
+ density rather then Lame's constants 
+\begin_inset Formula $\mu,$
+\end_inset
+
+
+\begin_inset Formula $\lambda,$
+\end_inset
+
+ and density), each bulk constitutive model component has routines to convert
+ the physical property parameters and state variables a user specifies via
+ spatial databases to the physical property properties and state variables
+ used in the constitutive model equations.
+ In quasi-static problems, PyLith computes an elastic solution for the first
+ time step (
+\begin_inset Formula $-\Delta t$
+\end_inset
+
+ to 
+\begin_inset Formula $t$
+\end_inset
+
+).
+ This means that for inelastic materials, we supply two sets of functions
+ for the constitutive behavior: one set for the initial elastic step and
+ one set for the remainder of the simulation.
+ See the source code for the inelastic materials in PyLith for an illustration
+ of an efficient mechanism for doing this.
+\end_layout
+
+\begin_layout Standard
+The SWIG interface files for a bulk constitutive component are setup in
+ the same manner as in the previous example of creating a customized spatial
+ database component.
+ The ``main'' SWIG interface file (
+\family typewriter
+materialscontrib.i
+\family default
+ in this case) sets up the Python module, and the SWIG interface file for
+ the component (
+\family typewriter
+PlaneStrainState.i
+\family default
+ in this case) defines the functions that should be included in the Python
+ module.
+ Note that because the C++ 
+\family typewriter
+ElasticMaterial
+\family default
+ object defines a number of pure virtual methods (which merely specify the
+ interface for the functions and do not implement default behavior), we
+ must include many protected functions in the SWIG interface file.
+ If these are omitted, SWIG will give a warning indicating that some of
+ the functions remain abstract (i.e., some pure virtual functions defined
+ in the parent class 
+\family typewriter
+ElasticMaterial
+\family default
+ were not implemented in the child class 
+\family typewriter
+PlaneStrainState
+\family default
+), and no constructor is created.
+ When this happens, you cannot create a 
+\family typewriter
+PlaneStrainState
+\family default
+ Python object.
+\end_layout
+
+\begin_layout Standard
+Once the Python, C++, and SWIG interface files are complete, you are ready
+ to configure and build the C++ library and Python module for the component.
+ Edit the 
+\family typewriter
+Makefile.am
+\family default
+ file as necessary, then generate the configure script, run configure, and
+ then build and install the library and module (see the 
+\family typewriter
+README
+\family default
+ file for detailed instructions).
+\end_layout
+
+\begin_layout Standard
+Because most functionality of the bulk constitutive model component is at
+ the C++ level, properly constructed unit tests for the 
+\family typewriter
+component
+\family default
+ should include tests for both the C++ code and Python code.
+ The C++ unit tests can be quite complex, and it is best to examine those
+ used for the bulk constitutive models included with PyLith.
+ In this example we create the Python unit tests to verify that we can create
+ a 
+\family typewriter
+PlaneStrainState
+\family default
+ Python object and call some of the simple underlying C++ functions.
+ The source files are in the 
+\family typewriter
+templates/materials/tests
+\family default
+ directory.
+ The 
+\family typewriter
+testcontrib.py
+\family default
+ Python script runs the tests defined in 
+\family typewriter
+TestPlaneStrainState.py
+\family default
+.
+\end_layout
+
+\begin_layout Standard
+Once you have built, installed, and tested the 
+\family typewriter
+PlaneStrainState
+\family default
+ component, it is time to use it in a simple example.
+ You can try using it in any of the 2D examples.
+ For the examples in 
+\family typewriter
+examples/twocells/twoquad4
+\family default
+, in 
+\family typewriter
+pylithapp.cfg
+\family default
+ replace the line
+\end_layout
+
+\begin_layout LyX-Code
+material = pylith.materials.ElasticPlaneStrain
+\end_layout
+
+\begin_layout Standard
+with the line
+\end_layout
+
+\begin_layout LyX-Code
+material = pylith.materials.contrib.PlaneStrainState
+\end_layout
+
+\begin_layout Standard
+or simply add the command line argument
+\end_layout
+
+\begin_layout LyX-Code
+
+\family typewriter
+--timedependent.homogeneous.material=pylith.materials.contrib.PlaneStrainState
+\end_layout
+
+\begin_layout Standard
+when running any of the 2D examples.
+ The output should remain identical, but you should see the 
+\family typewriter
+PlaneStrainState
+\family default
+ object listed in the information written to 
+\family typewriter
+stdout
+\family default
+.
+\end_layout
+
+\begin_layout Section
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:Extending:FaultConstitutiveModels"
+
+\end_inset
+
+Fault Constitutive Models
+\end_layout
+
+\begin_layout Standard
+PyLith includes two of the most widely used fault constitutive models, but
+ there are a wide range of models that have been proposed to explain earthquake
+ source processes.
+ In this example, we demonstrate how to extend PyLith by adding your own
+ fault constitutive model.
+ We implement a linear viscous fault constitutive model wherein the perturbation
+ in the coefficient of friction is linearly proportional to the slip rate.
+ This constitutive model, 
+\family typewriter
+ViscousFriction
+\family default
+, is not particularly useful, but it illustrates the basic steps involved
+ in creating a fault constitutive model.
+ The sources files are included with the main PyLith source code in the
+ 
+\family typewriter
+templates/friction
+\family default
+ directory.
+ The 
+\family typewriter
+README
+\family default
+ file in 
+\family typewriter
+templates/friction
+\family default
+ provides detailed instructions for the various steps, and the source files
+ contain numerous comments to guide you through the customization process.
+\end_layout
+
+\begin_layout Standard
+Similar to our previous example of creating a customized bulk constitutive
+ model, the parameters are defined in the C++ code, not in the Pyre framework.
+ As a result, the Python object for the fault constitutive model component
+ is very simple and customization is limited to simply changing the names
+ of objects and labels.
+\end_layout
+
+\begin_layout Standard
+The properties and state variables used in the fault constitutive model
+ are set using arguments to the constructor of the C++ 
+\family typewriter
+FrictionModel
+\family default
+ object, analogous to the 
+\family typewriter
+ElasticMaterial
+\family default
+ object for bulk constitutive models.
+ In fact, both types of constitutive models used the same underlying C++
+ object (
+\family typewriter
+Metadata::ParamDescription
+\family default
+) to store the description of the parameters and state variables.
+ We define a number of constants at the top of the C++ file and use the
+ 
+\family typewriter
+Metadata
+\family default
+ object to define the properties and state variables.
+ The C++ object for the fault constitutive component includes a number of
+ functions that implement friction as well as several utility routines:
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_dbToProperties()
+\family default
+ Computes the physical properties used in the constitutive model equations
+ from the physical properties supplied in spatial databases.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_nondimProperties()
+\family default
+ Nondimensionalizes the physical properties used in the constitutive model
+ equations.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_dimProperties()
+\family default
+ Dimensionalizes the physical properties used in the constitutive model
+ equations.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_dbToStateVars()
+\family default
+ Computes the initial state variables used in the constitutive model equations
+ from the initial values supplied in spatial databases.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_nondimStateVars()
+\family default
+ Nondimensionalizes the state variables used in the constitutive model equations.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_dimStateVars()
+\family default
+ Dimensionalizes the state variables used in the constitutive model equations.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_calcFriction()
+\family default
+ Computes the friction stress given the physical properties, state variables,
+ slip, slip rate, and normal traction.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+_updateStateVars()
+\family default
+ Updates the state variables given the physical properties, slip, slip rate,
+ and normal traction.
+\end_layout
+
+\begin_layout Standard
+If a constitutive model does not use state variables, then the state variable
+ routines are omitted.
+ 
+\end_layout
+
+\begin_layout Standard
+Because it is sometimes convenient to supply physical properties for a fault
+ constitutive model that are equivalent but different from the ones that
+ appear in the constitutive equations, each fault constitutive model component
+ has routines to convert the physical property parameters and state variables
+ a user specifies via spatial databases to the physical property properties
+ and state variables used in the constitutive model equations.
+ 
+\end_layout
+
+\begin_layout Standard
+The SWIG interface files for a fault constitutive component are setup in
+ the same manner as in the previous examples of creating a bulk constitutive
+ model or a customized spatial database component.
+ The ``main'' SWIG interface file (
+\family typewriter
+frictioncontrib.i
+\family default
+ in this case) sets up the Python module, and the SWIG interface file for
+ the component (
+\family typewriter
+ViscousFriction.i
+\family default
+ in this case) defines the functions that should be included in the Python
+ module.
+ Note that because the C++ 
+\family typewriter
+FrictionModel
+\family default
+ object defines a number of pure virtual methods (which merely specify the
+ interface for the functions and do not implement default behavior), we
+ must include many protected functions in the SWIG interface file.
+ If these are omitted, SWIG will give a warning indicating that some of
+ the functions remain abstract (i.e., some pure virtual functions defined
+ in the parent class 
+\family typewriter
+FrictionModel
+\family default
+ were not implemented in the child class 
+\family typewriter
+ViscousFriction
+\family default
+), and no constructor is created.
+ When this happens, you cannot create a 
+\family typewriter
+ViscousFriction
+\family default
+ Python object.
+\end_layout
+
+\begin_layout Standard
+Once the Python, C++, and SWIG interface files are complete, you are ready
+ to configure and build the C++ library and Python module for the component.
+ Edit the 
+\family typewriter
+Makefile.am
+\family default
+ file as necessary, then generate the configure script, run configure, and
+ then build and install the library and module (see the 
+\family typewriter
+README
+\family default
+ file for detailed instructions).
+\end_layout
+
+\begin_layout Standard
+Because most functionality of the fault constitutive model component is
+ at the C++ level, properly constructed unit tests for the 
+\family typewriter
+component
+\family default
+ should include tests for both the C++ code and Python code.
+ The C++ unit tests can be quite complex, and it is best to examine those
+ used for the fault constitutive models included with PyLith.
+ In this example we create the Python unit tests to verify that we can create
+ a 
+\family typewriter
+ViscousFriction
+\family default
+ Python object and call some of the simple underlying C++ functions.
+ The source files are in the 
+\family typewriter
+templates/friction/tests
+\family default
+ directory.
+ The 
+\family typewriter
+testcontrib.py
+\family default
+ Python script runs the tests defined in 
+\family typewriter
+TestViscousFriction.py
+\family default
+.
+\end_layout
+
+\begin_layout Standard
+Once you have built, installed, and tested the 
+\family typewriter
+ViscousFriction
+\family default
+ component, it is time to use it in a simple example.
+ You can try using it in any of the 2D or 3D examples.
+ For the examples in 
+\family typewriter
+examples/bar_shearwave/quad4, in shearwave_staticfriction.cfg
+\family default
+ replace the line
+\end_layout
+
+\begin_layout LyX-Code
+friction = pylith.friction.StaticFriction
+\end_layout
+
+\begin_layout Standard
+with the line
+\end_layout
+
+\begin_layout LyX-Code
+friction = pylith.friction.contrib.ViscousFriction
+\end_layout
+
+\begin_layout Standard
+or simply add the command line argument
+\end_layout
+
+\begin_layout LyX-Code
+
+\family typewriter
+--timedependent.interfaces.fault.friction=pylith.friction.contrib.ViscousFriction
+\end_layout
+
+\begin_layout Standard
+when running any of the friction examples.
+ You will also need to supply a corresponding spatial database with the
+ physical properties for the viscous friction constitutive model.
+\end_layout
+
+\end_body
+\end_document

Modified: short/3D/PyLith/branches/v1.7-stable/doc/userguide/tutorials/3dhex8/friction/friction.lyx
===================================================================
--- short/3D/PyLith/branches/v1.7-stable/doc/userguide/tutorials/3dhex8/friction/friction.lyx	2012-06-22 20:32:34 UTC (rev 20399)
+++ short/3D/PyLith/branches/v1.7-stable/doc/userguide/tutorials/3dhex8/friction/friction.lyx	2012-06-23 04:42:41 UTC (rev 20400)
@@ -878,7 +878,7 @@
  (see Section 
 \begin_inset CommandInset ref
 LatexCommand ref
-reference "sub:Fault-Constitutive-Models"
+reference "sec:fault:constitutive:models"
 
 \end_inset
 
@@ -1035,7 +1035,7 @@
  a b-value, and a cohesion (see 
 \begin_inset CommandInset ref
 LatexCommand ref
-reference "sub:Fault-Constitutive-Models"
+reference "sec:fault:constitutive:models"
 
 \end_inset
 

Modified: short/3D/PyLith/branches/v1.7-stable/doc/userguide/tutorials/3dhex8/surfload/surfload.lyx
===================================================================
--- short/3D/PyLith/branches/v1.7-stable/doc/userguide/tutorials/3dhex8/surfload/surfload.lyx	2012-06-22 20:32:34 UTC (rev 20399)
+++ short/3D/PyLith/branches/v1.7-stable/doc/userguide/tutorials/3dhex8/surfload/surfload.lyx	2012-06-23 04:42:41 UTC (rev 20400)
@@ -1,550 +1,552 @@
-#LyX 2.0 created this file. For more info see http://www.lyx.org/
-\lyxformat 413
-\begin_document
-\begin_header
-\textclass book
-\begin_preamble
-
-\end_preamble
-\use_default_options false
-\maintain_unincluded_children false
-\language english
-\language_package default
-\inputencoding latin1
-\fontencoding global
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_default_family default
-\use_non_tex_fonts false
-\font_sc false
-\font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
-
-\graphics default
-\default_output_format default
-\output_sync 0
-\bibtex_command default
-\index_command default
-\paperfontsize default
-\spacing single
-\use_hyperref false
-\papersize default
-\use_geometry true
-\use_amsmath 0
-\use_esint 0
-\use_mhchem 1
-\use_mathdots 1
-\cite_engine basic
-\use_bibtopic false
-\use_indices false
-\paperorientation portrait
-\suppress_date false
-\use_refstyle 0
-\index Index
-\shortcut idx
-\color #008000
-\end_index
-\leftmargin 1in
-\topmargin 1in
-\rightmargin 1in
-\bottommargin 2in
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\paragraph_indentation default
-\quotes_language english
-\papercolumns 1
-\papersides 1
-\paperpagestyle default
-\tracking_changes false
-\output_changes false
-\html_math_output 0
-\html_css_as_file 0
-\html_be_strict false
-\end_header
-
-\begin_body
-
-\begin_layout Subsection
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:Tutorial-3d-hex8-surfload"
-
-\end_inset
-
-Surface Load Traction Examples
-\end_layout
-
-\begin_layout Standard
-PyLith features discussed in this tutorial:
-\end_layout
-
-\begin_layout Itemize
-Time-dependent Neumann (traction) boundary conditions
-\end_layout
-
-\begin_layout Itemize
-Dirichlet boundary conditions
-\end_layout
-
-\begin_layout Itemize
-Elastic material
-\end_layout
-
-\begin_layout Itemize
-Output of solution at user-defined locations
-\end_layout
-
-\begin_layout Subsubsection
-Overview
-\end_layout
-
-\begin_layout Standard
-This set of examples describes a set of problems for PyLith involving surface
- loading with a Neumann (traction) applied to the ground surface.
- The first example demonstrates the use of a surface load in a static problem,
- and the second example demonstates how to apply a cyclic load in a quasi-static
- problem.
- The second problem also includes output of the solution at user-defined
- locations.
- All of the examples are contained in the directory 
-\family typewriter
-examples/3d/hex8
-\family default
-, and the corresponding 
-\family typewriter
-.cfg
-\family default
- files are 
-\family typewriter
-step18.cfg
-\family default
- and 
-\family typewriter
-step19.cfg
-\family default
-.
- Each example may be run as follows:
-\end_layout
-
-\begin_layout LyX-Code
-pylith stepXX.cfg
-\end_layout
-
-\begin_layout Standard
-This will cause PyLith to read the default parameters in 
-\family typewriter
-pylithapp.cfg
-\family default
-, and then override or augment them with the additional parameters in the
- 
-\family typewriter
-stepXX.cfg
-\family default
- file.
- Each 
-\family typewriter
-.cfg
-\family default
- file is extensively documented, to provide detailed information on the
- various parameters.
-\end_layout
-
-\begin_layout Subsubsection
-Step18 - Static surface load
-\end_layout
-
-\begin_layout Standard
-The 
-\family typewriter
-step18.cfg
-\family default
- file defines a problem with a spatially varying axial surface load applied
- to the top surface with Dirichlet (roller) boundary conditions on the lateral
- and bottom surfaces.
- We first set the array of boundary conditions with one for each surface
- of the domain.
- As in the other examples, we also setup output for the ground surface.
-\end_layout
-
-\begin_layout Standard
-For the Dirichlet boundary conditions we fix the degree of freedom associated
- with motion normal to the boundary while leaving the other degrees of freedom
- free.
- We do not explicitly specify the use of a Dirichlet boundary condition
- because it is the default.
- Similarly, the ZeroDispDB is the default spatial database for the displacements
- in a Dirichlet boundary condition, so all we need to specify is the degree
- of freedom that is constrained, the name of the nodeset from CUBIT, and
- a label used in diagnostic output.
- For the Dirichlet boundary condition on the +x surface we have:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.bc.x_pos]
-\end_layout
-
-\begin_layout LyX-Code
-label = face_xpos
-\end_layout
-
-\begin_layout LyX-Code
-bc_dof = [0]
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.label = Dirichlet BC on +x
-\end_layout
-
-\begin_layout Standard
-On the top surface we apply a Neumann boundary condition for the surface
- load, so we first set the boundary condition type and then specify the
- nodeset in CUBIT associated with this surface.
- For the static surface load, we use a spatial database for the initial
- value and linear interpolation.
- We integrate the surface tractions over the boundary, so we also specify
- the numerical integration scheme to use.
- Finally, we specify a vector for the up direction because the tractions
- are applied to a horizontal surface, resulting in ambiguous shear directions
- for our default orientation convention.
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.bc]
-\end_layout
-
-\begin_layout LyX-Code
-z_pos = pylith.bc.Neumann
-\begin_inset Newline newline
-\end_inset
-
-
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.bc.z_pos]
-\end_layout
-
-\begin_layout LyX-Code
-label = face_zpos
-\end_layout
-
-\begin_layout LyX-Code
-\begin_inset Newline newline
-\end_inset
-
-db_initial = spatialdata.spatialdb.SimpleDB
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.label = Neumann BC on +z
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.iohandler.filename = spatialdb/tractions_axial_pressure.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-# Use linear interpolation
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.query_type = linear
-\begin_inset Newline newline
-\end_inset
-
-
-\end_layout
-
-\begin_layout LyX-Code
-# Diagnostic output
-\end_layout
-
-\begin_layout LyX-Code
-output.cell_info_fields = [initial-value]
-\end_layout
-
-\begin_layout LyX-Code
-output.writer.filename = output/step18-traction.vtk
-\end_layout
-
-\begin_layout LyX-Code
-output.cell_filter = pylith.meshio.CellFilterAvgSubMesh
-\begin_inset Newline newline
-\end_inset
-
-
-\end_layout
-
-\begin_layout LyX-Code
-# We must specify quadrature information for the cell faces.
-\end_layout
-
-\begin_layout LyX-Code
-quadrature.cell = pylith.feassemble.FIATLagrange
-\end_layout
-
-\begin_layout LyX-Code
-quadrature.cell.dimension = 2
-\end_layout
-
-\begin_layout LyX-Code
-quadrature.cell.quad_order = 2
-\begin_inset Newline newline
-\end_inset
-
-
-\end_layout
-
-\begin_layout LyX-Code
-# Because normal for +z surface is [0,0,1], the horizontal and
-\end_layout
-
-\begin_layout LyX-Code
-# vertical shear directions are ambiguous.
- We provide a "fake" up
-\end_layout
-
-\begin_layout LyX-Code
-# direction of [0,1,0] so that the horizontal shear direction ("up" x
-\end_layout
-
-\begin_layout LyX-Code
-# normal) is [1,0,0] and the vertical shear direction (normal x horiz
-\end_layout
-
-\begin_layout LyX-Code
-# shear dir) is [0,1,0].
-\end_layout
-
-\begin_layout LyX-Code
-up_dir = [0,1,0]
-\end_layout
-
-\begin_layout Standard
-When we have run the simulation, the output VTK files will be contained
- in 
-\family typewriter
-examples/3d/hex8/output
-\family default
- (all with a prefix of 
-\family typewriter
-step1
-\family default
-8).
- Results using ParaView are shown in Figure 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "fig:step18-displ"
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float figure
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\align center
-\begin_inset Graphics
-	filename figs/step18-displ.jpg
-	lyxscale 50
-	width 10cm
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-\begin_inset Caption
-
-\begin_layout Plain Layout
-Displacement field for example step18 visualized using ParaView.
- The vectors show the displacement field while the colors in the wireframe
- correspond to the z-component of the displacement field.
-\begin_inset CommandInset label
-LatexCommand label
-name "fig:step18-displ"
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsubsection
-Step19 - Time-dependent surface load
-\end_layout
-
-\begin_layout Standard
-The 
-\family typewriter
-step19.cfg
-\family default
- file defines a problem that is identical to example step18, except that
- we vary the amplitude of the surface load as a function of time.
- We use a temporal database (analogous to our spatial databases for specifying
- spatial variations) to prescribe a piecewise linear variation of the amplitude
- with time as given in the file 
-\family typewriter
-spatialdb/loadcycle.timedb
-\family default
-.
- The amplitude begins at zero, progresses to 1.0, then 1.5, before decreasing
- in a symmetric fashion.
- The temporal database can use variable time steps to prescribe arbitrary
- time histories.
- 
-\end_layout
-
-\begin_layout Standard
-Rather than specify a spatial database for the initial value of the Neumann
- boundary condition corresponding to the surface load, we specify a spatial
- database for the change in value and the temporal database:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.bc.z_pos]
-\end_layout
-
-\begin_layout LyX-Code
-label = face_zpos
-\end_layout
-
-\begin_layout LyX-Code
-db_change = spatialdata.spatialdb.SimpleDB
-\end_layout
-
-\begin_layout LyX-Code
-db_change.label = Amplitude of Neumann BC on +z
-\end_layout
-
-\begin_layout LyX-Code
-db_change.iohandler.filename = spatialdb/tractions_axial_pressure.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-# Use linear interpolation
-\end_layout
-
-\begin_layout LyX-Code
-db_change.query_type = linear
-\begin_inset Newline newline
-\end_inset
-
-
-\end_layout
-
-\begin_layout LyX-Code
-th_change = spatialdata.spatialdb.TimeHistory
-\end_layout
-
-\begin_layout LyX-Code
-th_change.label = Time history for Neumann BC on +z
-\end_layout
-
-\begin_layout LyX-Code
-th_change.filename = spatialdb/loadcycle.timedb
-\end_layout
-
-\begin_layout Standard
-When we have run the simulation, the output VTK files will be contained
- in 
-\family typewriter
-examples/3d/hex8/output
-\family default
- (all with a prefix of 
-\family typewriter
-step1
-\family default
-9).
- Results using ParaView are shown in Figure 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "fig:step19-stress-t200"
-
-\end_inset
-
-.
- We also output the solution at user-defined locations, which are given
- in the file 
-\family typewriter
-output_points.txt.
- See Section 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:output:points"
-
-\end_inset
-
- for a discussion of the output parameters.
- This type of output is designed for comparison against observations and
- inversions and output via HDF5 files (see Section ??).
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float figure
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\align center
-\begin_inset Graphics
-	filename figs/step19-stress_t200.jpg
-	lyxscale 50
-	width 10cm
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-\begin_inset Caption
-
-\begin_layout Plain Layout
-Stress field (zz-component) for example step19 at t = 200 years visualized
- using ParaView.
- The stresses appear as 4 layers since we have used 
-\family typewriter
-CellFilterAvgMesh
-\family default
- for material output.
-\begin_inset CommandInset label
-LatexCommand label
-name "fig:step19-stress-t200"
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\end_body
-\end_document
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
+\begin_document
+\begin_header
+\textclass book
+\begin_preamble
+
+\end_preamble
+\use_default_options false
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding latin1
+\fontencoding global
+\font_roman default
+\font_sans default
+\font_typewriter default
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry true
+\use_amsmath 0
+\use_esint 0
+\use_mhchem 1
+\use_mathdots 1
+\cite_engine basic
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\use_refstyle 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\leftmargin 1in
+\topmargin 1in
+\rightmargin 1in
+\bottommargin 2in
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\quotes_language english
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Subsection
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:Tutorial-3d-hex8-surfload"
+
+\end_inset
+
+Surface Load Traction Examples
+\end_layout
+
+\begin_layout Standard
+PyLith features discussed in this tutorial:
+\end_layout
+
+\begin_layout Itemize
+Time-dependent Neumann (traction) boundary conditions
+\end_layout
+
+\begin_layout Itemize
+Dirichlet boundary conditions
+\end_layout
+
+\begin_layout Itemize
+Elastic material
+\end_layout
+
+\begin_layout Itemize
+Output of solution at user-defined locations
+\end_layout
+
+\begin_layout Subsubsection
+Overview
+\end_layout
+
+\begin_layout Standard
+This set of examples describes a set of problems for PyLith involving surface
+ loading with a Neumann (traction) applied to the ground surface.
+ The first example demonstrates the use of a surface load in a static problem,
+ and the second example demonstates how to apply a cyclic load in a quasi-static
+ problem.
+ The second problem also includes output of the solution at user-defined
+ locations.
+ All of the examples are contained in the directory 
+\family typewriter
+examples/3d/hex8
+\family default
+, and the corresponding 
+\family typewriter
+.cfg
+\family default
+ files are 
+\family typewriter
+step18.cfg
+\family default
+ and 
+\family typewriter
+step19.cfg
+\family default
+.
+ Each example may be run as follows:
+\end_layout
+
+\begin_layout LyX-Code
+pylith stepXX.cfg
+\end_layout
+
+\begin_layout Standard
+This will cause PyLith to read the default parameters in 
+\family typewriter
+pylithapp.cfg
+\family default
+, and then override or augment them with the additional parameters in the
+ 
+\family typewriter
+stepXX.cfg
+\family default
+ file.
+ Each 
+\family typewriter
+.cfg
+\family default
+ file is extensively documented, to provide detailed information on the
+ various parameters.
+\end_layout
+
+\begin_layout Subsubsection
+Step18 - Static surface load
+\end_layout
+
+\begin_layout Standard
+The 
+\family typewriter
+step18.cfg
+\family default
+ file defines a problem with a spatially varying axial surface load applied
+ to the top surface with Dirichlet (roller) boundary conditions on the lateral
+ and bottom surfaces.
+ We first set the array of boundary conditions with one for each surface
+ of the domain.
+ As in the other examples, we also setup output for the ground surface.
+\end_layout
+
+\begin_layout Standard
+For the Dirichlet boundary conditions we fix the degree of freedom associated
+ with motion normal to the boundary while leaving the other degrees of freedom
+ free.
+ We do not explicitly specify the use of a Dirichlet boundary condition
+ because it is the default.
+ Similarly, the ZeroDispDB is the default spatial database for the displacements
+ in a Dirichlet boundary condition, so all we need to specify is the degree
+ of freedom that is constrained, the name of the nodeset from CUBIT, and
+ a label used in diagnostic output.
+ For the Dirichlet boundary condition on the +x surface we have:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.timedependent.bc.x_pos]
+\end_layout
+
+\begin_layout LyX-Code
+label = face_xpos
+\end_layout
+
+\begin_layout LyX-Code
+bc_dof = [0]
+\end_layout
+
+\begin_layout LyX-Code
+db_initial.label = Dirichlet BC on +x
+\end_layout
+
+\begin_layout Standard
+On the top surface we apply a Neumann boundary condition for the surface
+ load, so we first set the boundary condition type and then specify the
+ nodeset in CUBIT associated with this surface.
+ For the static surface load, we use a spatial database for the initial
+ value and linear interpolation.
+ We integrate the surface tractions over the boundary, so we also specify
+ the numerical integration scheme to use.
+ Finally, we specify a vector for the up direction because the tractions
+ are applied to a horizontal surface, resulting in ambiguous shear directions
+ for our default orientation convention.
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.timedependent.bc]
+\end_layout
+
+\begin_layout LyX-Code
+z_pos = pylith.bc.Neumann
+\begin_inset Newline newline
+\end_inset
+
+
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.timedependent.bc.z_pos]
+\end_layout
+
+\begin_layout LyX-Code
+label = face_zpos
+\end_layout
+
+\begin_layout LyX-Code
+\begin_inset Newline newline
+\end_inset
+
+db_initial = spatialdata.spatialdb.SimpleDB
+\end_layout
+
+\begin_layout LyX-Code
+db_initial.label = Neumann BC on +z
+\end_layout
+
+\begin_layout LyX-Code
+db_initial.iohandler.filename = spatialdb/tractions_axial_pressure.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+# Use linear interpolation
+\end_layout
+
+\begin_layout LyX-Code
+db_initial.query_type = linear
+\begin_inset Newline newline
+\end_inset
+
+
+\end_layout
+
+\begin_layout LyX-Code
+# Diagnostic output
+\end_layout
+
+\begin_layout LyX-Code
+output.cell_info_fields = [initial-value]
+\end_layout
+
+\begin_layout LyX-Code
+output.writer.filename = output/step18-traction.vtk
+\end_layout
+
+\begin_layout LyX-Code
+output.cell_filter = pylith.meshio.CellFilterAvgSubMesh
+\begin_inset Newline newline
+\end_inset
+
+
+\end_layout
+
+\begin_layout LyX-Code
+# We must specify quadrature information for the cell faces.
+\end_layout
+
+\begin_layout LyX-Code
+quadrature.cell = pylith.feassemble.FIATLagrange
+\end_layout
+
+\begin_layout LyX-Code
+quadrature.cell.dimension = 2
+\end_layout
+
+\begin_layout LyX-Code
+quadrature.cell.quad_order = 2
+\begin_inset Newline newline
+\end_inset
+
+
+\end_layout
+
+\begin_layout LyX-Code
+# Because normal for +z surface is [0,0,1], the horizontal and
+\end_layout
+
+\begin_layout LyX-Code
+# vertical shear directions are ambiguous.
+ We provide a "fake" up
+\end_layout
+
+\begin_layout LyX-Code
+# direction of [0,1,0] so that the horizontal shear direction ("up" x
+\end_layout
+
+\begin_layout LyX-Code
+# normal) is [1,0,0] and the vertical shear direction (normal x horiz
+\end_layout
+
+\begin_layout LyX-Code
+# shear dir) is [0,1,0].
+\end_layout
+
+\begin_layout LyX-Code
+up_dir = [0,1,0]
+\end_layout
+
+\begin_layout Standard
+When we have run the simulation, the output VTK files will be contained
+ in 
+\family typewriter
+examples/3d/hex8/output
+\family default
+ (all with a prefix of 
+\family typewriter
+step1
+\family default
+8).
+ Results using ParaView are shown in Figure 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "fig:step18-displ"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Float figure
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\align center
+\begin_inset Graphics
+	filename figs/step18-displ.jpg
+	lyxscale 50
+	width 10cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Caption
+
+\begin_layout Plain Layout
+Displacement field for example step18 visualized using ParaView.
+ The vectors show the displacement field while the colors in the wireframe
+ correspond to the z-component of the displacement field.
+\begin_inset CommandInset label
+LatexCommand label
+name "fig:step18-displ"
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsubsection
+Step19 - Time-dependent surface load
+\end_layout
+
+\begin_layout Standard
+The 
+\family typewriter
+step19.cfg
+\family default
+ file defines a problem that is identical to example step18, except that
+ we vary the amplitude of the surface load as a function of time.
+ We use a temporal database (analogous to our spatial databases for specifying
+ spatial variations) to prescribe a piecewise linear variation of the amplitude
+ with time as given in the file 
+\family typewriter
+spatialdb/loadcycle.timedb
+\family default
+.
+ The amplitude begins at zero, progresses to 1.0, then 1.5, before decreasing
+ in a symmetric fashion.
+ The temporal database can use variable time steps to prescribe arbitrary
+ time histories.
+ 
+\end_layout
+
+\begin_layout Standard
+Rather than specify a spatial database for the initial value of the Neumann
+ boundary condition corresponding to the surface load, we specify a spatial
+ database for the change in value and the temporal database:
+\end_layout
+
+\begin_layout LyX-Code
+[pylithapp.timedependent.bc.z_pos]
+\end_layout
+
+\begin_layout LyX-Code
+label = face_zpos
+\end_layout
+
+\begin_layout LyX-Code
+db_change = spatialdata.spatialdb.SimpleDB
+\end_layout
+
+\begin_layout LyX-Code
+db_change.label = Amplitude of Neumann BC on +z
+\end_layout
+
+\begin_layout LyX-Code
+db_change.iohandler.filename = spatialdb/tractions_axial_pressure.spatialdb
+\end_layout
+
+\begin_layout LyX-Code
+# Use linear interpolation
+\end_layout
+
+\begin_layout LyX-Code
+db_change.query_type = linear
+\begin_inset Newline newline
+\end_inset
+
+
+\end_layout
+
+\begin_layout LyX-Code
+th_change = spatialdata.spatialdb.TimeHistory
+\end_layout
+
+\begin_layout LyX-Code
+th_change.label = Time history for Neumann BC on +z
+\end_layout
+
+\begin_layout LyX-Code
+th_change.filename = spatialdb/loadcycle.timedb
+\end_layout
+
+\begin_layout Standard
+When we have run the simulation, the output VTK files will be contained
+ in 
+\family typewriter
+examples/3d/hex8/output
+\family default
+ (all with a prefix of 
+\family typewriter
+step1
+\family default
+9).
+ Results using ParaView are shown in Figure 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "fig:step19-stress-t200"
+
+\end_inset
+
+.
+ We also output the solution at user-defined locations, which are given
+ in the file 
+\family typewriter
+output_points.txt.
+
+\family default
+ See Section 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:output:points"
+
+\end_inset
+
+ for a discussion of the output parameters.
+ This type of output is designed for comparison against observations and
+ inversions and output via HDF5 files (see Section ??).
+\end_layout
+
+\begin_layout Standard
+\begin_inset Float figure
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\align center
+\begin_inset Graphics
+	filename figs/step19-stress_t200.jpg
+	lyxscale 50
+	width 10cm
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Caption
+
+\begin_layout Plain Layout
+Stress field (zz-component) for example step19 at t = 200 years visualized
+ using ParaView.
+ The stresses appear as 4 layers since we have used 
+\family typewriter
+CellFilterAvgMesh
+\family default
+ for material output.
+\begin_inset CommandInset label
+LatexCommand label
+name "fig:step19-stress-t200"
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document



More information about the CIG-COMMITS mailing list