[cig-commits] r16953 - in short/3D/PyLith/trunk/doc/userguide: boundaryconditions tutorials/3dhex8/friction tutorials/3dhex8/friction/figs

willic3 at geodynamics.org willic3 at geodynamics.org
Wed Jun 9 02:40:51 PDT 2010


Author: willic3
Date: 2010-06-09 02:40:50 -0700 (Wed, 09 Jun 2010)
New Revision: 16953

Added:
   short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step10-fault-traction-slip.jpg
   short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step11-fault-traction-slip.jpg
   short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step12-displ-t200.jpg
   short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step13-displ-t200.jpg
   short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step14-displ-t200.jpg
Modified:
   short/3D/PyLith/trunk/doc/userguide/boundaryconditions/boundaryconditions.lyx
   short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/friction.lyx
Log:
Completed a pretty short tutorial for fault friction models.
Added cross-reference to friction models in boundaryconditions.lyx.



Modified: short/3D/PyLith/trunk/doc/userguide/boundaryconditions/boundaryconditions.lyx
===================================================================
--- short/3D/PyLith/trunk/doc/userguide/boundaryconditions/boundaryconditions.lyx	2010-06-09 06:09:56 UTC (rev 16952)
+++ short/3D/PyLith/trunk/doc/userguide/boundaryconditions/boundaryconditions.lyx	2010-06-09 09:40:50 UTC (rev 16953)
@@ -1,4 +1,4 @@
-#LyX 1.6.5 created this file. For more info see http://www.lyx.org/
+#LyX 1.6.6 created this file. For more info see http://www.lyx.org/
 \lyxformat 345
 \begin_document
 \begin_header
@@ -4948,6 +4948,13 @@
 
 \begin_layout Subsubsection
 Fault Constitutive Models
+\begin_inset CommandInset label
+LatexCommand label
+name "sub:Fault-Constitutive-Models"
+
+\end_inset
+
+
 \end_layout
 
 \begin_layout Standard

Added: short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step10-fault-traction-slip.jpg
===================================================================
(Binary files differ)


Property changes on: short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step10-fault-traction-slip.jpg
___________________________________________________________________
Name: svn:mime-type
   + image/jpeg

Added: short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step11-fault-traction-slip.jpg
===================================================================
(Binary files differ)


Property changes on: short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step11-fault-traction-slip.jpg
___________________________________________________________________
Name: svn:mime-type
   + image/jpeg

Added: short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step12-displ-t200.jpg
===================================================================
(Binary files differ)


Property changes on: short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step12-displ-t200.jpg
___________________________________________________________________
Name: svn:mime-type
   + image/jpeg

Added: short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step13-displ-t200.jpg
===================================================================
(Binary files differ)


Property changes on: short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step13-displ-t200.jpg
___________________________________________________________________
Name: svn:mime-type
   + image/jpeg

Added: short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step14-displ-t200.jpg
===================================================================
(Binary files differ)


Property changes on: short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/figs/step14-displ-t200.jpg
___________________________________________________________________
Name: svn:mime-type
   + image/jpeg

Modified: short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/friction.lyx
===================================================================
--- short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/friction.lyx	2010-06-09 06:09:56 UTC (rev 16952)
+++ short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/friction/friction.lyx	2010-06-09 09:40:50 UTC (rev 16953)
@@ -90,6 +90,10 @@
  conditions, and only elastic materials are used.
  Thus, the only aspects that were not covered in previous examples involve
  the use of fault friction.
+ Note that in all the fault friction examples we apply axial (x) displacements
+ on both the positive and negative x-faces to maintain a compressive normal
+ stress on the fault.
+ Otherwise, there would be no frictional resistance.
  All of the fault friction models are nonlinear, and they therefore require
  the usage of the nonlinear solver.
  All of the examples are contained in the directory 
@@ -238,337 +242,131 @@
 friction = pylith.friction.StaticFriction
 \end_layout
 
-\begin_layout LyX-Code
-
-\end_layout
-
 \begin_layout Standard
-We then change the material type of the lower crust, provide a spatial database
- from which to obtain the material properties (using the default 
+The 
 \family typewriter
-SimpleDB
+StaticFriction
 \family default
-), and request additional output information for the material:
-\end_layout
+ model requires values for the coefficient of friction and the cohesion
+ (see 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sub:Fault-Constitutive-Models"
 
-\begin_layout LyX-Code
-# Change material type of lower crust to Maxwell viscoelastic.
-\end_layout
+\end_inset
 
-\begin_layout LyX-Code
-[pylithapp.timedependent]
-\end_layout
-
-\begin_layout LyX-Code
-materials.lower_crust = pylith.materials.MaxwellIsotropic3D
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-# Provide a spatial database from which to obtain property values.
-\end_layout
-
-\begin_layout LyX-Code
-# Since there are additional properties and state variables for the Maxwell
-\end_layout
-
-\begin_layout LyX-Code
-# model, we explicitly request that they be output.
- Properties are named in
-\end_layout
-
-\begin_layout LyX-Code
-# cell_info_fields and state variables are named in cell_data_fields.
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.materials.lower_crust]
-\end_layout
-
-\begin_layout LyX-Code
-db_properties.iohandler.filename = spatialdb/mat_maxwell.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-output.cell_info_fields = [density,mu,lambda,maxwell_time]
-\end_layout
-
-\begin_layout LyX-Code
-output.cell_data_fields = [total_strain,stress,viscous_strain]
-\end_layout
-
-\begin_layout Standard
-Note that the default 
+).
+ We provide both of these using a 
 \family typewriter
-output.cell_info_fields
-\family default
- are those corresponding to an elastic material (
-\family typewriter
-density
-\family default
-, 
-\family typewriter
-mu
-\family default
-, 
-\family typewriter
-lambda
-\family default
-), and the default 
-\family typewriter
-output.cell_data_fields
-\family default
- are 
-\family typewriter
-total_strain
-\family default
- and 
-\family typewriter
-stress
-\family default
-.
- For materials other than elastic, there are generally additional material
- properties and state variables, and the appropriate additional fields must
- be specifically requested for each material type.
-\end_layout
-
-\begin_layout Standard
-This example has no displacements in the elastic solution (t = 0), so we
- retain the default 
-\family typewriter
-ZeroDispDB
-\family default
- for all instances of 
-\family typewriter
-db_initial
-\family default
-.
- To apply the velocity boundary conditions, we must specify 
-\family typewriter
-db_rate
-\family default
-, which is zero by default.
- We use a 
-\family typewriter
 UniformDB
 \family default
- to assign the velocities:
+:
 \end_layout
 
 \begin_layout LyX-Code
-# +x face
+[pylithapp.timedependent.interfaces.fault]
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.timedependent.bc.x_pos]
+# Set static friction model parameters using a uniform DB.
+ Set the
 \end_layout
 
 \begin_layout LyX-Code
-bc_dof = [0, 1]
+# static coefficient of friction to 0.6 and cohesion to 0.0 Pa.
 \end_layout
 
 \begin_layout LyX-Code
-label = face_xpos
+friction.db_properties = spatialdata.spatialdb.UniformDB
 \end_layout
 
 \begin_layout LyX-Code
-db_initial.label = Dirichlet BC on +x
+friction.db_properties.label = Static friction
 \end_layout
 
 \begin_layout LyX-Code
-db_rate = spatialdata.spatialdb.UniformDB
+friction.db_properties.values = [friction-coefficient,cohesion]
 \end_layout
 
 \begin_layout LyX-Code
-db_rate.label = Dirichlet rate BC on +x
+friction.db_properties.data = [0.6,0.0*Pa]
 \end_layout
 
-\begin_layout LyX-Code
-db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-\end_layout
-
-\begin_layout LyX-Code
-db_rate.data = [0.0*cm/year,1.0*cm/year,0.0*year]
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-# -x face
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.bc.x_neg]
-\end_layout
-
-\begin_layout LyX-Code
-bc_dof = [0, 1]
-\end_layout
-
-\begin_layout LyX-Code
-label = face_xneg
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.label = Dirichlet BC on -x
-\end_layout
-
-\begin_layout LyX-Code
-db_rate = spatialdata.spatialdb.UniformDB
-\end_layout
-
-\begin_layout LyX-Code
-db_rate.label = Dirichlet rate BC on +x
-\end_layout
-
-\begin_layout LyX-Code
-db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-\end_layout
-
-\begin_layout LyX-Code
-db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
-\end_layout
-
 \begin_layout Standard
-Note that 
-\family typewriter
-db_rate
-\family default
- requires a start time, which allows the condition to be applied at any
- time during the simulation.
- For this example, we start the velocity boundary conditions at t = 0.
+Fault friction models require additional PETSc settings:
 \end_layout
 
-\begin_layout Standard
-Finally, we must provide information on VTK output.
- This is slightly more complicated than the static case, because we must
- decide the frequency with which output occurs for each output type.
- We also assign a more user-friendly format to the output file time stamp,
- and we request that the time stamp is in units of 1 year (rather than the
- default value of seconds):
-\end_layout
-
 \begin_layout LyX-Code
-# Give basename for VTK domain output of solution over domain.
+# NOTE: There are additional settings specific to fault friction.
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.problem.formulation.output.domain]
+[pylithapp.petsc]
 \end_layout
 
 \begin_layout LyX-Code
-# We specify that output occurs in terms of a given time frequency, and
+# Friction sensitivity solve used to compute the increment in slip
 \end_layout
 
 \begin_layout LyX-Code
-# ask for output every 40 years.
- The time stamps of the output files are
+# associated with changes in the Lagrange multiplier imposed by the
 \end_layout
 
 \begin_layout LyX-Code
-# in years (rather than the default of seconds), and we give a format for
+# fault constitutive model.
 \end_layout
 
 \begin_layout LyX-Code
-# the time stamp.
+friction_pc_type = asm
 \end_layout
 
 \begin_layout LyX-Code
-output_freq = time_step
+friction_sub_pc_factor_shift_type = nonzero
 \end_layout
 
 \begin_layout LyX-Code
-time_step = 40.0*year
+friction_ksp_max_it = 25
 \end_layout
 
 \begin_layout LyX-Code
-writer.filename = output/step04.vtk
+friction_ksp_gmres_restart = 30
 \end_layout
 
 \begin_layout LyX-Code
-writer.time_format = %04.0f
+# Uncomment to view details of friction sensitivity solve.
 \end_layout
 
 \begin_layout LyX-Code
-writer.time_constant = 1.0*year
+#friction_ksp_monitor = true
 \end_layout
 
 \begin_layout LyX-Code
-
+#friction_ksp_view = true
 \end_layout
 
 \begin_layout LyX-Code
-# Give basename for VTK domain output of solution over ground surface.
+friction_ksp_converged_reason = true
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.problem.formulation.output.subdomain]
-\end_layout
 
-\begin_layout LyX-Code
-# Name of nodeset for ground surface.
 \end_layout
 
-\begin_layout LyX-Code
-label = face_zpos
-\end_layout
-
-\begin_layout LyX-Code
-# We keep the default output frequency behavior (skip every n steps), and
-\end_layout
-
-\begin_layout LyX-Code
-# ask to skip 0 steps between output, so that we get output every time step.
-\end_layout
-
-\begin_layout LyX-Code
-skip = 0
-\end_layout
-
-\begin_layout LyX-Code
-writer.filename = output/step04-groundsurf.vtk
-\end_layout
-
-\begin_layout LyX-Code
-writer.time_format = %04.0f
-\end_layout
-
-\begin_layout LyX-Code
-writer.time_constant = 1.0*year
-\end_layout
-
 \begin_layout Standard
-We provide similar output information for the two materials (
-\family typewriter
-upper_crust
-\family default
- and 
-\family typewriter
-lower_crust
-\family default
-).
- Note that for the domain output, we requested output in terms of a given
- time frequency, while for the subdomain we requested output in terms of
- number of time steps.
- When we have run the simulation, the output VTK files will be contained
+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
-step04
+step10
 \family default
 ), and the results may be visualized using a tool such as ParaView or mayavi2.
  Results using ParaView are shown in 
 \begin_inset CommandInset ref
 LatexCommand ref
-reference "fig:step04-displ-t200"
+reference "fig:step10-fault-traction-slip"
 
 \end_inset
 
@@ -583,7 +381,7 @@
 
 \begin_layout Plain Layout
 \begin_inset Graphics
-	filename figs/step04-displ-t200.jpg
+	filename figs/step10-fault-traction-slip.jpg
 	width 10cm
 
 \end_inset
@@ -595,13 +393,13 @@
 \begin_inset Caption
 
 \begin_layout Plain Layout
-Displacement field for example step04 at t = 200 years visualized using
+Magnitude of tractions on the fault for example step10 visualized using
  ParaView.
- The mesh has been distorted by the computed displacements (magnified by
- 500), and the vectors show the computed displacements.
+ Vectors of fault slip are also plotted; however, since slip does not occur
+ for this example they do not appear.
 \begin_inset CommandInset label
 LatexCommand label
-name "fig:step04-displ-t200"
+name "fig:step10-fault-traction-slip"
 
 \end_inset
 
@@ -613,127 +411,73 @@
 
 \end_layout
 
-\begin_layout Plain Layout
-
-\end_layout
-
 \end_inset
 
 
 \end_layout
 
 \begin_layout Subsubsection
-Step05 - Time-varying Dirichlet and Neumann Boundary Conditions
+Step11 - Static Friction (Slip) with Static Dirichlet Boundary Conditions
 \end_layout
 
 \begin_layout Standard
 The 
 \family typewriter
-step05.cfg
+step11.cfg
 \family default
- file describes a problem with time-varying Dirichlet and Neumann boundary
- conditions.
- The example is similar to example step04, with a few important differences:
-\end_layout
-
-\begin_layout Itemize
-The Dirichlet boundary conditions on the negative x-face include an initial
- displacement (applied in the elastic solution), as well as a constant velocity.
-\end_layout
-
-\begin_layout Itemize
-Neumann (traction) boundary conditions are applied in the negative x-direction
- on the positive x-face, giving a compressive stress.
- An initial traction is applied in the elastic solution, and then at t =
- 100 years it begins decreasing linearly until it reaches zero at the end
- of the simulation (t = 200 years).
-\end_layout
-
-\begin_layout Standard
-We again use a Maxwell viscoelastic material for the lower crust.
-\end_layout
-
-\begin_layout Standard
-For the boundary conditions, we must first change the boundary condition
- type for the positive x-face from the default Dirichlet to Neumann:
-\end_layout
-
-\begin_layout LyX-Code
-# +x face -- first change bc type to Neumann
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.bc]
-\end_layout
-
-\begin_layout LyX-Code
-x_pos = pylith.bc.Neumann 
-\end_layout
-
-\begin_layout Standard
-We provide quadrature information for this face as we did for example step02.
- We then use a 
+ file describes a problem that is nearly identical to example step10, except
+ that for this example we apply twice as much shear displacement, which
+ is sufficient to induce slip on the fault.
+ All other settings are identical.
+ To change the amount of shear displacement, we change the spatial database
+ for the positive and negative x-faces to a 
 \family typewriter
 UniformDB
 \family default
- for both the initial tractions as well as the traction rates.
- We provide a start time of 100 years for the traction rates, and use a
- rate of 0.01 MPa/year, so that by the end of 200 years we have completely
- cancelled the initial traction of -1 MPa:
+, and apply the altered values within the 
+\family typewriter
+.cfg
+\family default
+ file:
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.timedependent.bc.x_pos]
+# +x face
 \end_layout
 
 \begin_layout LyX-Code
-# Fist specify a UniformDB for the initial tractions, along with the values.
+[pylithapp.timedependent.bc.x_pos]
 \end_layout
 
 \begin_layout LyX-Code
-db_initial = spatialdata.spatialdb.UniformDB
+bc_dof = [0, 1]
 \end_layout
 
 \begin_layout LyX-Code
-db_initial.label = Neumann BC on +x
+label = face_xpos
 \end_layout
 
 \begin_layout LyX-Code
-db_initial.values = [traction-shear-horiz,traction-shear-vert,traction-normal]
+db_initial = spatialdata.spatialdb.UniformDB
 \end_layout
 
 \begin_layout LyX-Code
-db_initial.data = [0.0*MPa,0.0*MPa,-1.0*MPa]
+db_initial.label = Dirichlet BC on +x
 \end_layout
 
 \begin_layout LyX-Code
-# Provide information on traction rates.
+db_initial.values = [displacement-x,displacement-y]
 \end_layout
 
 \begin_layout LyX-Code
-db_rate = spatialdata.spatialdb.UniformDB
+db_initial.data = [-1.0*m,2.0*m]
 \end_layout
 
 \begin_layout LyX-Code
-db_rate.label = Neumann rate BC on +x
-\end_layout
 
-\begin_layout LyX-Code
-db_rate.values = [traction-rate-shear-horiz,traction-rate-shear-vert,traction-rat
-e-normal,rate-start-time]
 \end_layout
 
 \begin_layout LyX-Code
-db_rate.data = [0.0*MPa/year,0.0*MPa/year,0.01*MPa/year,100.0*year]
-\end_layout
-
-\begin_layout Standard
-The boundary conditions on the negative x-face are analogous, but we are
- instead using Dirichlet boundary conditions, and the initial displacement
- is in the same direction as the applied velocities:
-\end_layout
-
-\begin_layout LyX-Code
 # -x face
 \end_layout
 
@@ -750,10 +494,6 @@
 \end_layout
 
 \begin_layout LyX-Code
-# Initial displacements.
-\end_layout
-
-\begin_layout LyX-Code
 db_initial = spatialdata.spatialdb.UniformDB
 \end_layout
 
@@ -766,50 +506,31 @@
 \end_layout
 
 \begin_layout LyX-Code
-db_initial.data = [0.0*cm,-0.5*cm]
+db_initial.data = [1.0*m,-2.0*m]
 \end_layout
 
-\begin_layout LyX-Code
-# Velocities.
-\end_layout
-
-\begin_layout LyX-Code
-db_rate = spatialdata.spatialdb.UniformDB
-\end_layout
-
-\begin_layout LyX-Code
-db_rate.label = Dirichlet rate BC on -x
-\end_layout
-
-\begin_layout LyX-Code
-db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-\end_layout
-
-\begin_layout LyX-Code
-db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
-\end_layout
-
 \begin_layout Standard
-The boundary conditions on the negative z-face are supplied in the same
- manner as for example step04.
- When we have run the simulation, the output VTK files will be contained
+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
-step05
+step11
 \family default
 ), and the results may be visualized using a tool such as ParaView or mayavi2.
  Results using ParaView are shown in 
 \begin_inset CommandInset ref
 LatexCommand ref
-reference "fig:step05-displ-t40"
+reference "fig:step11-fault-traction-slip"
 
 \end_inset
 
 .
+\end_layout
+
+\begin_layout Standard
 \begin_inset Float figure
 wide false
 sideways false
@@ -817,25 +538,30 @@
 
 \begin_layout Plain Layout
 \begin_inset Graphics
-	filename figs/step05-displ-t40.jpg
+	filename figs/step11-fault-traction-slip.jpg
 	width 10cm
 
 \end_inset
 
 
+\end_layout
+
+\begin_layout Plain Layout
 \begin_inset Caption
 
 \begin_layout Plain Layout
-Displacement field for example step05 at t = 40 years visualized using ParaView.
- The mesh has been distorted by the computed displacements (magnified by
- 500), and the vectors show the computed displacements.
+Magnitude of tractions on the fault for example step10 visualized using
+ ParaView.
+ Vectors of fault slip are also plotted.
+ Note that to get the proper slip orientation it is necessary to use the
+ Calculator in ParaView.
 \begin_inset CommandInset label
 LatexCommand label
-name "fig:step05-displ-t40"
+name "fig:step11-fault-traction-slip"
 
 \end_inset
 
-.
+
 \end_layout
 
 \end_inset
@@ -843,433 +569,87 @@
 
 \end_layout
 
-\begin_layout Plain Layout
-
-\end_layout
-
 \end_inset
 
 
 \end_layout
 
 \begin_layout Subsubsection
-Step06 - Dirichlet Boundary Conditions with Time-Dependent Kinematic Fault
- Slip
+Step12 - Static Friction with Quasi-static Dirichlet Boundary Conditions
 \end_layout
 
 \begin_layout Standard
 The 
 \family typewriter
-step06.cfg
+step12.cfg
 \family default
- file describes a problem with Dirichlet (displacement) boundary conditions
- corresponding to zero x and y-displacements applied on the negative and
- positive x-faces and a vertical fault that includes multiple earthquake
- ruptures as well as steady fault creep.
- The upper (locked) portion of the fault has 4 m of left-lateral slip every
- 200 years, while the lower (creeping) portion of the fault slips at a steady
- rate of 2 cm/year.
- The problem bears some similarity to the strike-slip fault model of 
-\begin_inset CommandInset citation
-LatexCommand cite
-key "Savage:Prescott:1978"
-
-\end_inset
-
-, except that the fault creep extends through the viscoelastic portion of
- the domain, and the far-field displacement boundary conditions are held
- fixed.
+ file describes a problem that is similar to examples step10 and step11,
+ except that we apply velocity boundary conditions and run the simulation
+ for 200 years.
+ Once fault friction is overcome, the fault slips at a steady rate.
+ To prevent convergence problems we set the time step size to a constant
+ value of 5 years:
 \end_layout
 
-\begin_layout Standard
-In this example and the remainder of the examples in this section, we change
- the time stepping behavior from the default 
-\family typewriter
-TimeStepUniform
-\family default
- to 
-\family typewriter
-TimeStepAdapt
-\family default
-.
- For adaptive time stepping, we provide the maximum permissible time step
- size, along with a stability factor.
- The stability factor controls how the time step size is allowed to deviate
- from the stable time step size provided by the different materials in the
- model.
- A 
-\family typewriter
-stability_factor
-\family default
- of 1.0 means we should use the stable time step size, while a 
-\family typewriter
-stability_factor
-\family default
- greater than 1.0 means we want to use a smaller time step size.
- A 
-\family typewriter
-stability_factor
-\family default
- less than 1.0 allows time step sizes greater than the stable time step size,
- which may provide inaccurate results.
- The adaptive time stepping information is provided as:
-\end_layout
-
 \begin_layout LyX-Code
-# Change time stepping algorithm from uniform time step, to adaptive
+# Change the total simulation time to 200 years, and use a constant time
 \end_layout
 
 \begin_layout LyX-Code
-# time stepping.
+# step size of 5 years.
 \end_layout
 
 \begin_layout LyX-Code
-time_step = pylith.problems.TimeStepAdapt
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-# Change the total simulation time to 700 years, and set the maximum time
-\end_layout
-
-\begin_layout LyX-Code
-# step size to 10 years.
-\end_layout
-
-\begin_layout LyX-Code
 [pylithapp.timedependent.implicit.time_step]
 \end_layout
 
 \begin_layout LyX-Code
-total_time = 700.0*year
+total_time = 200.0*year
 \end_layout
 
 \begin_layout LyX-Code
-max_dt = 10.0*year
+dt = 5.0*year
 \end_layout
 
-\begin_layout LyX-Code
-stability_factor = 1.0 ; use time step equal to stable value from materials
-\end_layout
-
 \begin_layout Standard
-Due to the simplicity of the boundary conditions, we are able to use the
- default 
-\family typewriter
-ZeroDispBC
-\family default
- for the positive and negative x-faces, as well as the negative z-face.
- As for example step03, we define a fault interface, we identify the nodeset
- corresponding to the fault, and we provide quadrature information for the
- fault.
- We then define an array of earthquake sources and provide an origin time
- for each:
+As in the other fault friction examples, we apply initial displacements
+ along the x-axis (to maintain a compressive stress on the fault), and we
+ apply velocity boundary conditions that yield a left-lateral sense of motion:
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.timedependent.interfaces.fault]
+# +x face -- Dirichlet
 \end_layout
 
 \begin_layout LyX-Code
-# Set earthquake sources to an array consisting of creep and 3 ruptures.
+[pylithapp.timedependent.bc.x_pos]
 \end_layout
 
 \begin_layout LyX-Code
-eq_srcs = [creep,one,two,three]
+bc_dof = [0,1]
 \end_layout
 
 \begin_layout LyX-Code
-eq_srcs.creep.origin_time = 00.0*year
+label = face_xpos
 \end_layout
 
 \begin_layout LyX-Code
-eq_srcs.one.origin_time = 200.0*year
+db_initial = spatialdata.spatialdb.UniformDB
 \end_layout
 
 \begin_layout LyX-Code
-eq_srcs.two.origin_time = 400.0*year
+db_initial.label = Dirichlet BC on +x
 \end_layout
 
 \begin_layout LyX-Code
-eq_srcs.three.origin_time = 600.0*year
+db_initial.values = [displacement-x,displacement-y]
 \end_layout
 
-\begin_layout Standard
-Note that the creep begins at t = 0 years, while the ruptures (
-\family typewriter
-one
-\family default
-, 
-\family typewriter
-two
-\family default
-, 
-\family typewriter
-three
-\family default
-) occur at regular intervals of 200 years.
- We retain the default 
-\family typewriter
-StepSlipFn
-\family default
- for the ruptures.
- Each of the ruptures has the same amount of slip, and slip occurs simultaneousl
-y for the entire rupture region, so we can use the same 
-\family typewriter
-SimpleDB
-\family default
- files providing slip and slip time for each rupture:
-\end_layout
-
 \begin_layout LyX-Code
-# Define slip and origin time for first rupture.
+db_initial.data = [-1.0*m,0.0*m]
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.timedependent.interfaces.fault.eq_srcs.one.slip_function]
-\end_layout
-
-\begin_layout LyX-Code
-slip.iohandler.filename = spatialdb/finalslip_rupture.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-# Define slip and origin time for second rupture.
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.interfaces.fault.eq_srcs.two.slip_function]
-\end_layout
-
-\begin_layout LyX-Code
-slip.iohandler.filename = spatialdb/finalslip_rupture.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-# Define slip and origin time for third rupture.
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.interfaces.fault.eq_srcs.three.slip_function]
-\end_layout
-
-\begin_layout LyX-Code
-slip.iohandler.filename = spatialdb/finalslip_rupture.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
-\end_layout
-
-\begin_layout Standard
-For the creep source, we change the slip function to 
-\family typewriter
-ConstRateSlipFn
-\family default
-, and we use a 
-\family typewriter
-SimpleDB
-\family default
- for both the slip time and the slip rate:
-\end_layout
-
-\begin_layout LyX-Code
-# Define slip rate and origin time for fault creep.
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.interfaces.fault.eq_srcs.creep]
-\end_layout
-
-\begin_layout LyX-Code
-slip_function = pylith.faults.ConstRateSlipFn
-\end_layout
-
-\begin_layout LyX-Code
-slip_function.slip_rate.iohandler.filename = spatialdb/sliprate_creep.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-slip_function.slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
-\end_layout
-
-\begin_layout Standard
-Note that for all earthquake sources we provide both an 
-\family typewriter
-origin_time
-\family default
- and a 
-\family typewriter
-slip_function.slip_time
-\family default
-.
- The first provides the starting time for the entire earthquake source,
- while the second provides any spatial variation in the slip time with respect
- to the 
-\family typewriter
-origin_time
-\family default
- (if any).
- Since there are multiple earthquake sources of different types, there are
- a number of additional fault information fields available for output.
- We therefore request that these additional fields be output to the fault
- information file:
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.interfaces.fault]
-\end_layout
-
-\begin_layout LyX-Code
-output.vertex_info_fields = [normal_dir,strike_dir,dip_dir,final_slip_creep,final
-_slip_one,final_slip_two,final_slip_three,slip_time_creep,slip_time_one,slip_tim
-e_two,slip_time_three]
-\end_layout
-
-\begin_layout Standard
-This additional information will be contained in file 
-\family typewriter
-step06-fault_info.vtk
-\family default
-.
- It will contain final slip information for each earthquake source along
- with slip time information.
- 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
-step06
-\family default
-), and the results may be visualized using a tool such as ParaView or mayavi2.
- Results using ParaView are shown in 
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "fig:step06-displ-t300"
-
-\end_inset
-
-.
-\begin_inset Float figure
-wide false
-sideways false
-status open
-
-\begin_layout Plain Layout
-\begin_inset Graphics
-	filename figs/step06-displ-t300.jpg
-	width 10cm
-
-\end_inset
-
-
-\begin_inset Caption
-
-\begin_layout Plain Layout
-Displacement field for example step06 at t = 300 years visualized using
- ParaView.
- The mesh has been distorted by the computed displacements (magnified by
- 500), and the vectors show the computed displacements.
-\begin_inset CommandInset label
-LatexCommand label
-name "fig:step06-displ-t300"
-
-\end_inset
-
-.
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsubsection
-Step07 - Dirichlet Velocity Boundary Conditions with Time-Dependent Kinematic
- Fault Slip
-\end_layout
-
-\begin_layout Standard
-The 
-\family typewriter
-step07.cfg
-\family default
- file describes a problem nearly identical to example step06.
- The only difference is that velocity boundary conditions in the positive
- and negative y-directions on the positive and negative x-faces, so that
- the external boundaries keep pace with the average fault slip.
- This problem is nearly identical to the strike-slip fault model of 
-\begin_inset CommandInset citation
-LatexCommand cite
-key "Savage:Prescott:1978"
-
-\end_inset
-
-, except that the fault creep extends through the viscoelastic portion of
- the domain.
-\end_layout
-
-\begin_layout Standard
-We use the default 
-\family typewriter
-ZeroDispBC
-\family default
- for the initial displacements on the positive and negative x-faces, as
- well as the negative z-face.
- For the velocities on the positive and negative x-faces, we use a 
-\family typewriter
-UniformDB
-\family default
-:
-\end_layout
-
-\begin_layout LyX-Code
-# +x face
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.bc.x_pos]
-\end_layout
-
-\begin_layout LyX-Code
-bc_dof = [0, 1]
-\end_layout
-
-\begin_layout LyX-Code
-label = face_xpos
-\end_layout
-
-\begin_layout LyX-Code
-db_initial.label = Dirichlet BC on +x
-\end_layout
-
-\begin_layout LyX-Code
 db_rate = spatialdata.spatialdb.UniformDB
 \end_layout
 
@@ -1314,7 +694,7 @@
 \end_layout
 
 \begin_layout LyX-Code
-db_rate.label = Dirichlet rate BC on +x
+db_rate.label = Dirichlet rate BC on -x
 \end_layout
 
 \begin_layout LyX-Code
@@ -1326,126 +706,39 @@
 \end_layout
 
 \begin_layout Standard
-The fault definition information is identical to example step06.
- In previous examples, we have just used the default output for the domain
- and subdomain (ground surface), which just provides the displacements.
- In many cases, it is also useful to provide the velocities.
- PyLith is able to provide this information, approximating the velocities
- for the current time step as the difference between the current displacements
- and the displacements from the previous time step, divided by the time
- step size.
- We can obtain this information by explicitly requesting it in 
-\family typewriter
-vertex_data_fields
-\family default
-:
+For this example, we keep the same coefficient of friction as examples step10
+ and step11, but we include a cohesion of 2 MPa:
 \end_layout
 
 \begin_layout LyX-Code
-# Give basename for VTK domain output of solution over domain.
+[pylithapp.timedependent.interfaces.fault]
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.problem.formulation.output.domain]
+# Set static friction model parameters using a uniform DB.
+ Set the
 \end_layout
 
 \begin_layout LyX-Code
-# We specify that output occurs in terms of a given time frequency, and
+# static coefficient of friction to 0.6 and cohesion to 2.0 MPa.
 \end_layout
 
 \begin_layout LyX-Code
-# ask for output every 50 years.
- The time stamps of the output files are
+friction.db_properties = spatialdata.spatialdb.UniformDB
 \end_layout
 
 \begin_layout LyX-Code
-# in years (rather than the default of seconds), and we give a format for
+friction.db_properties.label = Static friction
 \end_layout
 
 \begin_layout LyX-Code
-# the time stamp.
+friction.db_properties.values = [friction-coefficient,cohesion]
 \end_layout
 
 \begin_layout LyX-Code
-# We also request velocity output in addition to displacements.
+friction.db_properties.data = [0.6,2.0*MPa]
 \end_layout
 
-\begin_layout LyX-Code
-vertex_data_fields = [displacement,velocity]
-\end_layout
-
-\begin_layout LyX-Code
-output_freq = time_step
-\end_layout
-
-\begin_layout LyX-Code
-time_step = 50.0*year
-\end_layout
-
-\begin_layout LyX-Code
-writer.filename = output/step07.vtk
-\end_layout
-
-\begin_layout LyX-Code
-writer.time_format = %04.0f
-\end_layout
-
-\begin_layout LyX-Code
-writer.time_constant = 1.0*year
-\end_layout
-
-\begin_layout LyX-Code
-
-\end_layout
-
-\begin_layout LyX-Code
-# Give basename for VTK domain output of solution over ground surface.
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.problem.formulation.output.subdomain]
-\end_layout
-
-\begin_layout LyX-Code
-# Name of nodeset for ground surface.
-\end_layout
-
-\begin_layout LyX-Code
-label = face_zpos
-\end_layout
-
-\begin_layout LyX-Code
-# We also request velocity output in addition to displacements.
-\end_layout
-
-\begin_layout LyX-Code
-vertex_data_fields = [displacement,velocity]
-\end_layout
-
-\begin_layout LyX-Code
-# We keep the default output frequency behavior (skip every n steps), and
-\end_layout
-
-\begin_layout LyX-Code
-# ask to skip 0 steps between output, so that we get output every time step.
-\end_layout
-
-\begin_layout LyX-Code
-skip = 0
-\end_layout
-
-\begin_layout LyX-Code
-writer.filename = output/step07-groundsurf.vtk
-\end_layout
-
-\begin_layout LyX-Code
-writer.time_format = %04.0f
-\end_layout
-
-\begin_layout LyX-Code
-writer.time_constant = 1.0*year
-\end_layout
-
 \begin_layout Standard
 When we have run the simulation, the output VTK files will be contained
  in 
@@ -1454,17 +747,20 @@
 \family default
  (all with a prefix of 
 \family typewriter
-step07
+step12
 \family default
 ), and the results may be visualized using a tool such as ParaView or mayavi2.
  Results using ParaView are shown in 
 \begin_inset CommandInset ref
 LatexCommand ref
-reference "fig:step07-displ-vel-t300"
+reference "fig:step12-displ-t200"
 
 \end_inset
 
 .
+\end_layout
+
+\begin_layout Standard
 \begin_inset Float figure
 wide false
 sideways false
@@ -1472,26 +768,29 @@
 
 \begin_layout Plain Layout
 \begin_inset Graphics
-	filename figs/step07-displ-vel-t300.jpg
+	filename figs/step12-displ-t200.jpg
 	width 10cm
 
 \end_inset
 
 
+\end_layout
+
+\begin_layout Plain Layout
 \begin_inset Caption
 
 \begin_layout Plain Layout
-Displacement field (color contours) and velocity field (vectors) for example
- step07 at t = 300 years visualized using ParaView.
+Displacement field for example step12 at t = 200 years visualized using
+ ParaView.
  The mesh has been distorted by the computed displacements (magnified by
- 500), and the vectors show the computed velocities.
+ 500), and the vectors show the computed displacements.
 \begin_inset CommandInset label
 LatexCommand label
-name "fig:step07-displ-vel-t300"
+name "fig:step12-displ-t200"
 
 \end_inset
 
-.
+
 \end_layout
 
 \end_inset
@@ -1505,345 +804,98 @@
 \end_layout
 
 \begin_layout Subsubsection
-Step08 - Dirichlet Velocity Boundary Conditions with Time-Dependent Kinematic
- Fault Slip and Power-Law Rheology
-\begin_inset CommandInset label
-LatexCommand label
-name "sub:Tutorial-Step08-Power-law"
-
-\end_inset
-
-
+Step13 - Slip-weakening Friction with Quasi-static Dirichlet Boundary Conditions
 \end_layout
 
 \begin_layout Standard
 The 
 \family typewriter
-step08.cfg
+step13.cfg
 \family default
- file describes a problem that is identical to example step07, except the
- the lower crust is composed of power-law viscoelastic material.
- Since the material behavior is now nonlinear, we must use the nonlinear
- solver:
+ file describes a problem that is identical to example step12, except that
+ we use a slip-weakening friction model rather than a static friction model.
+ Fault friction is overcome at about t = 80 years, the fault slips in each
+ subsequent time step.
+ We again use a constant time step size of 5 years and apply the same intial
+ displacement and velocity boundary conditions.
 \end_layout
 
-\begin_layout LyX-Code
-[pylithapp.timedependent]
-\end_layout
-
-\begin_layout LyX-Code
-# For this problem we must switch to a nonlinear solver.
-\end_layout
-
-\begin_layout LyX-Code
-implicit.solver = pylith.problems.SolverNonlinear
-\end_layout
-
 \begin_layout Standard
-Although we have not discussed the PyLith PETSc settings previously, note
- that the use of the nonlinear solver may require additional options if
- we wish to override the defaults.
- These settings are contained in 
-\family typewriter
-pylithapp.cfg
-\family default
-:
+We first define the friction model for the simulation:
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.petsc]
+[pylithapp.timedependent.interfaces.fault]
 \end_layout
 
 \begin_layout LyX-Code
-# Nonlinear solver monitoring options.
+# Use the slip-weakening friction model.
 \end_layout
 
 \begin_layout LyX-Code
-snes_rtol = 1.0e-8
+friction = pylith.friction.SlipWeakening
 \end_layout
 
-\begin_layout LyX-Code
-snes_atol = 1.0e-12
-\end_layout
-
-\begin_layout LyX-Code
-snes_max_it = 100
-\end_layout
-
-\begin_layout LyX-Code
-snes_monitor = true
-\end_layout
-
-\begin_layout LyX-Code
-snes_view = true
-\end_layout
-
-\begin_layout LyX-Code
-snes_converged_reason = true
-\end_layout
-
 \begin_layout Standard
-These settings are unused unless we are using the nonlinear solver.
-\end_layout
-
-\begin_layout Standard
-When using laboratory results for power-law viscoelastic materials, the
- properties provided do not generally match those expected by PyLith (see
- 
+The slip-weakening constitutive model requires a static coefficient of friction,
+ a dynamic coefficient of friction, a slip weakening parameter, and a cohesion
+ (see 
 \begin_inset CommandInset ref
 LatexCommand ref
-reference "sub:Power-Law-Maxwell-Viscoelastic"
+reference "sub:Fault-Constitutive-Models"
 
 \end_inset
 
-).
- A utility code, 
-\family typewriter
-powerlaw_gendb.py
-\family default
-, has been provided to simplify the process of using laboratory results
- with PyLith.
- This utility code should be installed in the same location as PyLith.
- An example of how to use it is in 
-\family typewriter
-examples/3d/hex8/spatialdb/powerlaw
-\family default
-.
- The user must provide a spatial database defining the spatial distribution
- of laboratory-derived parameters (contained in 
-\family typewriter
-powerlaw_params.spatialdb
-\family default
-), another spatial database defining the temperature field in degrees K
- (contained in 
-\family typewriter
-temperature.spatialdb
-\family default
-), and a set of points for which values are desired (
-\family typewriter
-powerlaw_points.txt
-\family default
-).
- The parameters for the code are defined in 
-\family typewriter
-powerlaw_gendb.cfg
-\family default
-.
- The properties expected by PyLith are 
-\family typewriter
-reference_strain_rate
-\family default
-, 
-\family typewriter
-reference_stress
-\family default
-, and 
-\family typewriter
-power_law_exponent
-\family default
-.
- The user must specify either 
-\family typewriter
-reference_strain_rate
-\family default
- or 
-\family typewriter
-reference_stress
-\family default
- so that 
-\family typewriter
-powerlaw_gendb.py
-\family default
- can compute the other property.
- Default values of 1.0e-6 1/s and 1 MPa are provided.
- A spatial database must then be provided for each laboratory-derived parameter
- and for the temperature.
- In this example, the same database was used for all parameters, and a separate
- database was used to define the temperature distribution.
- In practice, the user can provide any desired thermal model to provide
- the spatial database for the temperature.
- In this example, a simple 1D (vertically-varying) distribution was used.
- The utility code can be used by simply executing it from the 
-\family typewriter
-examples/3d/hex8/spatialdb/powerlaw
-\family default
- directory:
+):
 \end_layout
 
 \begin_layout LyX-Code
-powerlaw_gendb.py
+[pylithapp.timedependent.interfaces.fault]
 \end_layout
 
-\begin_layout Standard
-This will cause the code to automatically read the parameters in powerlaw_gendb.c
-fg, and the file 
-\family typewriter
-examples/3d/hex8/spatialdb/mat_powerlaw.spatialdb
-\family default
- will be created.
-\end_layout
-
-\begin_layout Standard
-We first change the material type of the lower crust to 
-\family typewriter
-PowerLaw3D
-\family default
-:
-\end_layout
-
 \begin_layout LyX-Code
-# Change material type of lower crust to power-law viscoelastic.
+# Set slip-weakening friction model parameters using a uniform DB.
+ Set the
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.timedependent]
+# parameters as follows:
 \end_layout
 
 \begin_layout LyX-Code
-materials.lower_crust = pylith.materials.PowerLaw3D
+# static coefficient of friction: 0.6
 \end_layout
 
-\begin_layout Standard
-In many cases, it is useful to obtain the material properties from two different
- sources.
- For example, the elastic properties may come from a seismic velocity model
- while the viscous properties may be derived from a thermal model.
- In such a case we can use a 
-\family typewriter
-CompositeDB
-\family default
-, which allows a different spatial database to be used for a subset of the
- properties.
- We do this as follows:
-\end_layout
-
 \begin_layout LyX-Code
-# Provide a spatial database from which to obtain property values.
+# dynamic coefficient of friction: 0.5
 \end_layout
 
 \begin_layout LyX-Code
-# In this case, we prefer to obtain the power-law properties from one
+# slip-weakening parameter: 0.2 m
 \end_layout
 
 \begin_layout LyX-Code
-# database and the elastic properties from another database, so we use
+# cohesion: 0 Pa
 \end_layout
 
 \begin_layout LyX-Code
-# a CompositeDB.
- Each part of the CompositeDB is a SimpleDB.
+friction.db_properties = spatialdata.spatialdb.UniformDB
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.timedependent.materials.lower_crust]
+friction.db_properties.label = Slip weakening
 \end_layout
 
 \begin_layout LyX-Code
-db_properties = spatialdata.spatialdb.CompositeDB
+friction.db_properties.values = [static-coefficient,dynamic-coefficient,slip-weake
+ning-parameter,cohesion]
 \end_layout
 
 \begin_layout LyX-Code
-db_properties.db_A = spatialdata.spatialdb.SimpleDB
+friction.db_properties.data = [0.6,0.5,0.2*m,0.0*Pa]
 \end_layout
 
-\begin_layout LyX-Code
-db_properties.db_B = spatialdata.spatialdb.SimpleDB
-\end_layout
-
 \begin_layout Standard
-Each subset of properties comes from a 
-\family typewriter
-SimpleDB
-\family default
-, so we must first define the properties that come from each spatial database
- and then provide the database filename:
-\end_layout
-
-\begin_layout LyX-Code
-# Provide the values to be obtained from each database and the database
-\end_layout
-
-\begin_layout LyX-Code
-# name.
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.materials.lower_crust.db_properties]
-\end_layout
-
-\begin_layout LyX-Code
-values_A = [density,vs,vp]   ; Elastic properties.
-\end_layout
-
-\begin_layout LyX-Code
-db_A.label = Elastic properties
-\end_layout
-
-\begin_layout LyX-Code
-db_A.iohandler.filename = spatialdb/mat_elastic.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-values_B = [reference-stress,reference-strain-rate,power-law-exponent] 
-  ; Power-law properties.
-\end_layout
-
-\begin_layout LyX-Code
-db_B.label = Power-law properties
-\end_layout
-
-\begin_layout LyX-Code
-db_B.iohandler.filename = spatialdb/mat_powerlaw.spatialdb
-\end_layout
-
-\begin_layout Standard
-The 
-\family typewriter
-PowerLaw3D
-\family default
- material has additional properties and state variables with respect to
- the default 
-\family typewriter
-ElasticIsotropic3D
-\family default
- material, so we request that these properties be written to the 
-\family typewriter
-lower_crust
-\family default
- material files:
-\end_layout
-
-\begin_layout LyX-Code
-# Since there are additional properties and state variables for the
-\end_layout
-
-\begin_layout LyX-Code
-# power-law model, we explicitly request that they be output.
- Properties are
-\end_layout
-
-\begin_layout LyX-Code
-# named in cell_info_fields and state variables are named in
-\end_layout
-
-\begin_layout LyX-Code
-# cell_data_fields.
-\end_layout
-
-\begin_layout LyX-Code
-[pylithapp.timedependent.materials.lower_crust]
-\end_layout
-
-\begin_layout LyX-Code
-output.cell_info_fields = [density,mu,lambda,reference_strain_rate,reference_stre
-ss,power_law_exponent]
-\end_layout
-
-\begin_layout LyX-Code
-output.cell_data_fields = [total_strain,stress,viscous_strain]
-\end_layout
-
-\begin_layout Standard
 When we have run the simulation, the output VTK files will be contained
  in 
 \family typewriter
@@ -1851,17 +903,20 @@
 \family default
  (all with a prefix of 
 \family typewriter
-step08
+step1
 \family default
-), and the results may be visualized using a tool such as ParaView or mayavi2.
+3), and the results may be visualized using a tool such as ParaView or mayavi2.
  Results using ParaView are shown in 
 \begin_inset CommandInset ref
 LatexCommand ref
-reference "fig:step08-strain-displ-t150"
+reference "fig:step13-displ-t200"
 
 \end_inset
 
 .
+\end_layout
+
+\begin_layout Standard
 \begin_inset Float figure
 wide false
 sideways false
@@ -1869,38 +924,29 @@
 
 \begin_layout Plain Layout
 \begin_inset Graphics
-	filename figs/step08-strain-displ-t150.jpg
+	filename figs/step13-displ-t200.jpg
 	width 10cm
 
 \end_inset
 
 
+\end_layout
+
+\begin_layout Plain Layout
 \begin_inset Caption
 
 \begin_layout Plain Layout
-The XY-component of strain (color contours) and displacement field (vectors)
- for example step08 at t = 150 years visualized using ParaView.
- For this visualization, we loaded both the 
-\family typewriter
-step08-lower_crust_txxxx.vtk
-\family default
- and 
-\family typewriter
-step08-upper_crust_txxxx.vtk
-\family default
- files to contour the strain field, and superimposed on it the displacement
- field vectors from 
-\family typewriter
-step08_txxxx.vtk
-\family default
-.
+Displacement field for example step13 at t = 200 years visualized using
+ ParaView.
+ The mesh has been distorted by the computed displacements (magnified by
+ 500), and the vectors show the computed displacements.
 \begin_inset CommandInset label
 LatexCommand label
-name "fig:step08-strain-displ-t150"
+name "fig:step13-displ-t200"
 
 \end_inset
 
-.
+
 \end_layout
 
 \end_inset
@@ -1914,205 +960,135 @@
 \end_layout
 
 \begin_layout Subsubsection
-Step09 - Dirichlet Velocity Boundary Conditions with Time-Dependent Kinematic
- Fault Slip and Drucker-Prager Elastoplastic Rheology
+Step14 - Rate-and-state Friction with Quasi-static Dirichlet Boundary Conditions
 \end_layout
 
 \begin_layout Standard
 The 
 \family typewriter
-step09.cfg
+step14.cfg
 \family default
- file describes a problem that is nearly identical to example step08, except
- the the lower crust is composed of Drucker-Prager elastoplastic material.
- As for example step08, the material behavior is nonlinear so we again use
- the nonlinear solver.
- Since the material is elastoplastic, there is no inherent time-dependence,
- which means that there is no stable time step size for the material.
- Depending on the loading conditions, this may make it difficult to obtain
- convergence.
- To avoid this, we set the maximum time step size to 5 years rather than
- the value of 10 years used in example step08:
+ file describes a problem that is identical to example step13, except that
+ we use a rate-and-state friction model with an aging law instead of a slip-weak
+ening friction model.
+ Slip begins to occur at about t = 45 years, and continues in each subsequent
+ time step.
+ We again use a constant time step size of 5 years and apply the same intial
+ displacement and velocity boundary conditions.
 \end_layout
 
-\begin_layout LyX-Code
-# Change the total simulation time to 700 years, and set the maximum time
+\begin_layout Standard
+We first define the friction model for the simulation:
 \end_layout
 
 \begin_layout LyX-Code
-# step size to 5 years.
+[pylithapp.timedependent.interfaces.fault]
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.timedependent.implicit.time_step]
+# Use the rate-and-state aging friction model.
 \end_layout
 
 \begin_layout LyX-Code
-total_time = 700.0*year
+friction = pylith.friction.RateStateAgeing
 \end_layout
 
-\begin_layout LyX-Code
-max_dt = 5.0*year
-\end_layout
-
-\begin_layout LyX-Code
-stability_factor = 1.0 ; use time step equal to stable value from materials
-\end_layout
-
-\begin_layout LyX-Code
-# For this problem we set adapt_skip to zero so that the time step size
- is
-\end_layout
-
-\begin_layout LyX-Code
-# readjusted every time step.
-\end_layout
-
-\begin_layout LyX-Code
-adapt_skip = 0
-\end_layout
-
 \begin_layout Standard
-We change the material type of the lower crust to 
-\family typewriter
-DruckerPrager3D
-\family default
-, and we again use a 
-\family typewriter
-CompositeDB
-\family default
- to assign the material properties:
-\end_layout
+The rate-and-state constitutive model requires a reference coefficient of
+ friction, a reference slip rate, a slip weakening parameter, an a-value,
+ a b-value, and a cohesion (see 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sub:Fault-Constitutive-Models"
 
-\begin_layout LyX-Code
-# Change material type of lower crust to Drucker-Prager.
-\end_layout
+\end_inset
 
-\begin_layout LyX-Code
-[pylithapp.timedependent]
+):
 \end_layout
 
 \begin_layout LyX-Code
-materials.lower_crust = pylith.materials.DruckerPrager3D
+[pylithapp.timedependent.interfaces.fault]
 \end_layout
 
 \begin_layout LyX-Code
-
+# Set rate-and-state parameters using a UniformDB.
+ Set the parameters as
 \end_layout
 
 \begin_layout LyX-Code
-# Provide a spatial database from which to obtain property values.
+# follows:
 \end_layout
 
 \begin_layout LyX-Code
-# In this case, we prefer to obtain the Drucker-Prager properties from one
+# reference coefficient of friction: 0.6
 \end_layout
 
 \begin_layout LyX-Code
-# database and the elastic properties from another database, so we use
+# reference slip rate: 1.0e-06 m/s
 \end_layout
 
 \begin_layout LyX-Code
-# a CompositeDB.
- Each part of the CompositeDB is a SimpleDB.
+# slip-weakening parameter: 0.037 m
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.timedependent.materials.lower_crust]
+# a: 0.0125
 \end_layout
 
 \begin_layout LyX-Code
-db_properties = spatialdata.spatialdb.CompositeDB
+# b: 0.0172
 \end_layout
 
 \begin_layout LyX-Code
-db_properties.db_A = spatialdata.spatialdb.SimpleDB
+# cohesion: 0 Pa
 \end_layout
 
 \begin_layout LyX-Code
-db_properties.db_B = spatialdata.spatialdb.SimpleDB
+friction.db_properties = spatialdata.spatialdb.UniformDB
 \end_layout
 
-\begin_layout Standard
-As for the step08 example, we first define the properties that come from
- each spatial database and then provide the database filename:
-\end_layout
-
 \begin_layout LyX-Code
-# Provide the values to be obtained from each database and the database
+friction.db_properties.label = Rate Stete Ageing
 \end_layout
 
 \begin_layout LyX-Code
-# name.
+friction.db_properties.values = [reference-friction-coefficient,reference-slip-rat
+e,characteristic-slip-distance,constitutive-parameter-a,constitutive-parameter-b
+,cohesion]
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.timedependent.materials.lower_crust.db_properties]
+friction.db_properties.data = [0.6,1.0e-6*m/s,0.0370*m,0.0125,0.0172,0.0*Pa]
 \end_layout
 
-\begin_layout LyX-Code
-values_A = [density,vs,vp]   ; Elastic properties.
-\end_layout
-
-\begin_layout LyX-Code
-db_A.label = Elastic properties
-\end_layout
-
-\begin_layout LyX-Code
-db_A.iohandler.filename = spatialdb/mat_elastic.spatialdb
-\end_layout
-
-\begin_layout LyX-Code
-values_B = [friction-angle,cohesion,dilatation-angle]   ; Drucker-Prager
- properties.
-\end_layout
-
-\begin_layout LyX-Code
-db_B.label = Drucker-Prager properties
-\end_layout
-
-\begin_layout LyX-Code
-db_B.iohandler.filename = spatialdb/mat_druckerprager.spatialdb
-\end_layout
-
 \begin_layout Standard
-We also request output of the properties and state variables that are unique
- to the 
-\family typewriter
-DruckerPrager3D
-\family default
- material:
+For this model, we also want to set the initial value of the state variable:
 \end_layout
 
 \begin_layout LyX-Code
-# Since there are additional properties and state variables for the
+[pylithapp.timedependent.interfaces.fault]
 \end_layout
 
 \begin_layout LyX-Code
-# Drucker-Prager model, we explicitly request that they be output.
+# Set spatial database for the initial value of the state variable.
 \end_layout
 
 \begin_layout LyX-Code
-# Properties are named in cell_info_fields and state variables are named
- in
+friction.db_initial_state = spatialdata.spatialdb.UniformDB
 \end_layout
 
 \begin_layout LyX-Code
-# cell_data_fields.
+friction.db_initial_state.label = Rate State Ageing State
 \end_layout
 
 \begin_layout LyX-Code
-[pylithapp.timedependent.materials.lower_crust]
+friction.db_initial_state.values = [state-variable]
 \end_layout
 
 \begin_layout LyX-Code
-output.cell_info_fields = [density,mu,lambda,alpha_yield,beta,alpha_flow]
+friction.db_initial_state.data = [92.7*s]
 \end_layout
 
-\begin_layout LyX-Code
-output.cell_data_fields = [total_strain,stress,plastic_strain]
-\end_layout
-
 \begin_layout Standard
 When we have run the simulation, the output VTK files will be contained
  in 
@@ -2121,17 +1097,20 @@
 \family default
  (all with a prefix of 
 \family typewriter
-step09
+step1
 \family default
-), and the results may be visualized using a tool such as ParaView or mayavi2.
+4), and the results may be visualized using a tool such as ParaView or mayavi2.
  Results using ParaView are shown in 
 \begin_inset CommandInset ref
 LatexCommand ref
-reference "fig:step09-strain-displ-t150"
+reference "fig:step14-displ-t200"
 
 \end_inset
 
 .
+\end_layout
+
+\begin_layout Standard
 \begin_inset Float figure
 wide false
 sideways false
@@ -2139,38 +1118,29 @@
 
 \begin_layout Plain Layout
 \begin_inset Graphics
-	filename /Users/charlesw/geoframe/cig/short/3D/PyLith/trunk/doc/userguide/tutorials/3dhex8/quasistatic/figs/step08-strain-displ-t150.jpg
+	filename figs/step14-displ-t200.jpg
 	width 10cm
 
 \end_inset
 
 
+\end_layout
+
+\begin_layout Plain Layout
 \begin_inset Caption
 
 \begin_layout Plain Layout
-The XY-component of strain (color contours) and displacement field (vectors)
- for example step09 at t = 150 years visualized using ParaView.
- For this visualization, we loaded both the 
-\family typewriter
-step09-lower_crust_txxxx.vtk
-\family default
- and 
-\family typewriter
-step09-upper_crust_txxxx.vtk
-\family default
- files to contour the strain field, and superimposed on it the displacement
- field vectors from 
-\family typewriter
-step09_txxxx.vtk
-\family default
-.
+Displacement field for example step14 at t = 200 years visualized using
+ ParaView.
+ The mesh has been distorted by the computed displacements (magnified by
+ 500), and the vectors show the computed displacements.
 \begin_inset CommandInset label
 LatexCommand label
-name "fig:step09-strain-displ-t150"
+name "fig:step14-displ-t200"
 
 \end_inset
 
-.
+
 \end_layout
 
 \end_inset



More information about the CIG-COMMITS mailing list