[cig-commits] r16825 - in short/3D/PyLith/trunk/examples/3d/hex8: . spatialdb

willic3 at geodynamics.org willic3 at geodynamics.org
Fri May 28 18:10:33 PDT 2010


Author: willic3
Date: 2010-05-28 18:10:33 -0700 (Fri, 28 May 2010)
New Revision: 16825

Added:
   short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg
Modified:
   short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/finalslip.spatialdb
   short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/finalslip_rupture.spatialdb
   short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/fixeddisp_axial.spatialdb
   short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/fixeddisp_shear.spatialdb
   short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/sliprate_creep.spatialdb
   short/3D/PyLith/trunk/examples/3d/hex8/step03.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step04.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step05.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step08.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step09.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step10.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step11.cfg
Log:
Updated some of the internal documentation, plus changed things so we are
always applying left-lateral fault slip and BC (makes it easier to keep
track of things).
Added quasi-static static friction example. Unfortunately, the nonlinear
solution does not generally converge, although the solution makes sense.



Modified: short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/finalslip.spatialdb
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/finalslip.spatialdb	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/finalslip.spatialdb	2010-05-29 01:10:33 UTC (rev 16825)
@@ -2,7 +2,7 @@
 //
 // This spatial database specifies the distribution of slip on the
 // fault surface. In this case we prescribe a piecewise linear, depth
-// dependent distribution of slip. The slip is 2.0 m right-lateral
+// dependent distribution of slip. The slip is 2.0 m left-lateral
 // with 0.25 m of reverse slip at the surface with a linear taper from
 // 2.0 m to 0.0 m from -2 km to -4 km.
 //
@@ -26,6 +26,6 @@
 // (4) left-lateral-slip (m) (right-lateral is negative)
 // (5) reverse-slip (m)
 // (6) fault-opening (m)
-0.0  0.0  0.0    -2.00  0.25  0.00
-0.0  0.0 -2.0    -2.00  0.00  0.00
+0.0  0.0  0.0     2.00  0.25  0.00
+0.0  0.0 -2.0     2.00  0.00  0.00
 0.0  0.0 -4.0     0.00  0.00  0.00

Modified: short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/finalslip_rupture.spatialdb
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/finalslip_rupture.spatialdb	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/finalslip_rupture.spatialdb	2010-05-29 01:10:33 UTC (rev 16825)
@@ -1,7 +1,7 @@
 // -*- C++ -*- (tell Emacs to use C++ mode for syntax highlighting)
 //
 // This spatial database specifies the distribution of slip on the
-// fault surface. In this case we impose 4.0 m of right-lateral slip
+// fault surface. In this case we impose 4.0 m of left-lateral slip
 // for z >= -2.0 km with zero slip for z < -2.0 km. There is no reverse
 // slip or fault opening.
 //
@@ -25,7 +25,7 @@
 // (4) left-lateral-slip (m) (right-lateral is negative)
 // (5) reverse-slip (m)
 // (6) fault-opening (m)
-0.0  0.0   0.00    -4.0  0.0  0.0
-0.0  0.0  -2.00    -4.0  0.0  0.0
+0.0  0.0   0.00     4.0  0.0  0.0
+0.0  0.0  -2.00     4.0  0.0  0.0
 0.0  0.0  -2.01     0.0  0.0  0.0
 0.0  0.0  -4.00     0.0  0.0  0.0

Modified: short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/fixeddisp_axial.spatialdb
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/fixeddisp_axial.spatialdb	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/fixeddisp_axial.spatialdb	2010-05-29 01:10:33 UTC (rev 16825)
@@ -4,9 +4,6 @@
 // displacement field for Dirichlet boundary conditions associated
 // with axial displacements on -x and +x
 //
-// dof-0: Ux(x) = 0
-// dof-1: Uy(x) = 1.0 m * x / 3 km
-// dof-2: Uz(x) = 0
 //
 #SPATIAL.ascii 1
 SimpleDB {
@@ -28,5 +25,5 @@
 // (4) Ux (m)
 // (5) Uy (m)
 // (6) Uz (m)
--3.0  0.0  0.0   -1.0   0.0  0.0
-+3.0  0.0  0.0    1.0   0.0  0.0
+-3.0  0.0  0.0   +1.0   0.0  0.0
++3.0  0.0  0.0   -1.0   0.0  0.0

Modified: short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/fixeddisp_shear.spatialdb
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/fixeddisp_shear.spatialdb	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/fixeddisp_shear.spatialdb	2010-05-29 01:10:33 UTC (rev 16825)
@@ -4,10 +4,6 @@
 // displacement field for Dirichlet boundary conditions associated
 // with shear in the xy plane.
 //
-// dof-0: Ux(x) = 0
-// dof-1: Uy(x) = 1.0 m * x / 3 km
-// dof-2: Uz(x) = 0
-//
 #SPATIAL.ascii 1
 SimpleDB {
   num-values = 3

Modified: short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/sliprate_creep.spatialdb
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/sliprate_creep.spatialdb	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/spatialdb/sliprate_creep.spatialdb	2010-05-29 01:10:33 UTC (rev 16825)
@@ -2,7 +2,7 @@
 //
 // This spatial database specifies the distribution of slip rate on
 // the fault surface for a constant slip rate time function. In this
-// case we specify a uniform slip rate of -2.0 cm/yr
+// case we specify a uniform slip rate of 2.0 cm/yr
 // (6.3376175628057904e-10 m/s) for z < -2.0 km and zero slip for z >=
 // -2.0 km. There is no reverse-slip or fault opening.
 //
@@ -28,5 +28,5 @@
 // (6) fault-opening rate (m/s)
 0.0   0.0   0.00     0.00  0.0  0.0
 0.0   0.0  -2.00     0.00  0.0  0.0
-0.0   0.0  -2.01    -2.00  0.0  0.0
-0.0   0.0  -4.00    -2.00  0.0  0.0
+0.0   0.0  -2.01     2.00  0.0  0.0
+0.0   0.0  -4.00     2.00  0.0  0.0

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step03.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step03.cfg	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step03.cfg	2010-05-29 01:10:33 UTC (rev 16825)
@@ -11,7 +11,7 @@
 # slip increases with depth. On the +x and -x boundaries, the x and
 # y-displacements are held fixed, while on the -z boundary, the
 # z-displacements are held fixed. The fault slip is predominantly
-# right-lateral, with 2 m of slip applied between 0 and 2 km depth,
+# left-lateral, with 2 m of slip applied between 0 and 2 km depth,
 # tapering linearly to 0 m at the base of the model (4 km depth).
 # A small amount of reverse slip (0.25 m) is applied at the surface,
 # tapering to 0 m at 2 km depth.

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step04.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step04.cfg	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step04.cfg	2010-05-29 01:10:33 UTC (rev 16825)
@@ -7,7 +7,7 @@
 
 #
 # This is a time-dependent problem with velocity boundary conditions.
-# Velocities in the + and - y-directions are applied on the - and +
+# Velocities in the + and - y-directions are applied on the + and -
 # x-faces, and the x-displacements are held fixed on those boundaries.
 # The z-displacements are held fixed on the -z face.
 # Two materials are used:
@@ -73,7 +73,7 @@
 #
 # We fix the x degree of freedom on the +x and -x faces, and
 # fix the z degree of freedom on the bottom (-z) face. Constant velocities
-# in the +y and -y directions are applied on -x and +x.
+# in the +y and -y directions are applied on +x and -x.
 #
 # For x_pos and x_neg, we retain the default ZeroDispDB for displacements
 # (db_initial), since we do not want initial displacements. We change the
@@ -95,7 +95,7 @@
 db_rate = spatialdata.spatialdb.UniformDB
 db_rate.label = Dirichlet rate BC on +x
 db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
+db_rate.data = [0.0*cm/year,1.0*cm/year,0.0*year]
 
 # -x face
 [pylithapp.timedependent.bc.x_neg]
@@ -105,7 +105,7 @@
 db_rate = spatialdata.spatialdb.UniformDB
 db_rate.label = Dirichlet rate BC on +x
 db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-db_rate.data = [0.0*cm/year,1.0*cm/year,0.0*year]
+db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
 
 # -z face
 [pylithapp.timedependent.bc.z_neg]

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step05.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step05.cfg	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step05.cfg	2010-05-29 01:10:33 UTC (rev 16825)
@@ -82,7 +82,7 @@
 #
 # We fix the x degree of freedom on the -x face, and
 # fix the z degree of freedom on the bottom (-z) face. Constant velocities
-# in the +y direction are applied on -x, along with an initial displacement.
+# in the -y direction are applied on -x, along with an initial displacement.
 # On the +x face, we apply compressional traction (Neumann) BC initially,
 # and then at t=100 years we begin reducing the magnitudes until they are
 # reduced to zero at t=200 years (the end of the simulation).
@@ -126,12 +126,12 @@
 db_initial = spatialdata.spatialdb.UniformDB
 db_initial.label = Dirichlet BC on -x
 db_initial.values = [displacement-x,displacement-y]
-db_initial.data = [0.0*cm,0.5*cm]
+db_initial.data = [0.0*cm,-0.5*cm]
 # Velocities.
 db_rate = spatialdata.spatialdb.UniformDB
 db_rate.label = Dirichlet rate BC on +x
 db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-db_rate.data = [0.0*cm/year,1.0*cm/year,0.0*year]
+db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
 
 # -z face
 [pylithapp.timedependent.bc.z_neg]

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg	2010-05-29 01:10:33 UTC (rev 16825)
@@ -16,7 +16,8 @@
 # The problem bears some similarity to the analytical Savage and Prescott
 # (1978) strike-slip analytical solution for an elastic layer over a
 # viscoelastic half-space. The difference is that the creeping portion of
-# the fault extends through the entire domain.
+# the fault extends through the entire domain, and the far-field boundaries
+# are held fixed.
 # Two materials are used:
 # 1. Elastic upper crust.
 # 2. Viscoelastic (Maxwell) lower crust.

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg	2010-05-29 01:10:33 UTC (rev 16825)
@@ -9,7 +9,7 @@
 # This is a time-dependent problem with velocity boundary conditions
 # and multiple earthquake ruptures as well as fault creep at constant
 # velocity.
-# Velocities in the + and - y-directions are applied on the - and +
+# Velocities in the + and - y-directions are applied on the + and -
 # x-faces, and the x-displacements are held fixed on those boundaries.
 # The z-displacements are held fixed on the -z face.
 # The upper (locked) portion of the fault ruptures at regular intervals,
@@ -89,7 +89,7 @@
 #
 # We fix the x degree of freedom on the +x and -x faces, and
 # fix the z degree of freedom on the bottom (-z) face. Constant velocities
-# in the +y and -y directions are applied on -x and +x.
+# in the +y and -y directions are applied on +x and -x.
 #
 # For x_pos and x_neg, we retain the default ZeroDispDB for displacements
 # (db_initial), since we do not want initial displacements. We change the
@@ -115,7 +115,7 @@
 db_rate = spatialdata.spatialdb.UniformDB
 db_rate.label = Dirichlet rate BC on +x
 db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
+db_rate.data = [0.0*cm/year,1.0*cm/year,0.0*year]
 
 # -x face
 [pylithapp.timedependent.bc.x_neg]
@@ -125,7 +125,7 @@
 db_rate = spatialdata.spatialdb.UniformDB
 db_rate.label = Dirichlet rate BC on +x
 db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-db_rate.data = [0.0*cm/year,1.0*cm/year,0.0*year]
+db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
 
 # -z face
 [pylithapp.timedependent.bc.z_neg]

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step08.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step08.cfg	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step08.cfg	2010-05-29 01:10:33 UTC (rev 16825)
@@ -104,7 +104,7 @@
 #
 # We fix the x degree of freedom on the +x and -x faces, and
 # fix the z degree of freedom on the bottom (-z) face. Constant velocities
-# in the +y and -y directions are applied on -x and +x.
+# in the +y and -y directions are applied on +x and -x.
 #
 # For x_pos and x_neg, we retain the default ZeroDispDB for displacements
 # (db_initial), since we do not want initial displacements. We change the
@@ -130,7 +130,7 @@
 db_rate = spatialdata.spatialdb.UniformDB
 db_rate.label = Dirichlet rate BC on +x
 db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
+db_rate.data = [0.0*cm/year,1.0*cm/year,0.0*year]
 
 # -x face
 [pylithapp.timedependent.bc.x_neg]
@@ -140,7 +140,7 @@
 db_rate = spatialdata.spatialdb.UniformDB
 db_rate.label = Dirichlet rate BC on +x
 db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-db_rate.data = [0.0*cm/year,1.0*cm/year,0.0*year]
+db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
 
 # -z face
 [pylithapp.timedependent.bc.z_neg]

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step09.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step09.cfg	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step09.cfg	2010-05-29 01:10:33 UTC (rev 16825)
@@ -105,7 +105,7 @@
 #
 # We fix the x degree of freedom on the +x and -x faces, and
 # fix the z degree of freedom on the bottom (-z) face. Constant velocities
-# in the +y and -y directions are applied on -x and +x.
+# in the +y and -y directions are applied on +x and -x.
 #
 # For x_pos and x_neg, we retain the default ZeroDispDB for displacements
 # (db_initial), since we do not want initial displacements. We change the
@@ -131,7 +131,7 @@
 db_rate = spatialdata.spatialdb.UniformDB
 db_rate.label = Dirichlet rate BC on +x
 db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
+db_rate.data = [0.0*cm/year,1.0*cm/year,0.0*year]
 
 # -x face
 [pylithapp.timedependent.bc.x_neg]
@@ -141,7 +141,7 @@
 db_rate = spatialdata.spatialdb.UniformDB
 db_rate.label = Dirichlet rate BC on +x
 db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
-db_rate.data = [0.0*cm/year,1.0*cm/year,0.0*year]
+db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
 
 # -z face
 [pylithapp.timedependent.bc.z_neg]

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step10.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step10.cfg	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step10.cfg	2010-05-29 01:10:33 UTC (rev 16825)
@@ -54,7 +54,7 @@
 # Set the parameters for Dirichlet boundary conditions applied on the
 # +x, -x, and -z faces of the box.
 #
-# We fix the x and y degrees of freedom on the +x and -x faces, and
+# We apply shear (y) and axial (x) displacements on the +x and -x faces, and
 # fix the z degree of freedom on the bottom (-z) face.
 #
 # For x_pos and x_neg, we change the database from ZeroDispDB (which

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step11.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step11.cfg	2010-05-28 17:09:43 UTC (rev 16824)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step11.cfg	2010-05-29 01:10:33 UTC (rev 16825)
@@ -7,7 +7,7 @@
 
 #
 # This problem demonstrates the use of static fault friction.
-# The problem is identical to example 11, except that in this case,
+# The problem is similar to example 10, except that in this case,
 # enough displacement is applied to induce slip on the fault.
 
 # ----------------------------------------------------------------------
@@ -52,12 +52,14 @@
 # Set the parameters for Dirichlet boundary conditions applied on the
 # +x, -x, and -z faces of the box.
 #
-# We fix the x and y degrees of freedom on the +x and -x faces, and
+# We apply shear (y) and axial (x) displacements on the +x and -x faces, and
 # fix the z degree of freedom on the bottom (-z) face.
 #
 # For x_pos and x_neg, we change the database from ZeroDispDB (which
 # specifies a zero value) to UniformDB, which allows us to provide
 # displacement values within the .cfg file.
+# Note that for this simulation, we apply twice as much shear displacement
+# as we did for example 10, which is sufficient to induce slip on the fault.
 #
 # For z_neg, we keep the default ZeroDispDB, since we just want zero
 # z-displacements on that boundary.
@@ -77,7 +79,7 @@
 db_initial = spatialdata.spatialdb.UniformDB
 db_initial.label = Dirichlet BC on +x
 db_initial.values = [displacement-x,displacement-y]
-db_initial.data = [-1.0*cm,2.0*cm]
+db_initial.data = [-1.0*m,2.0*m]
 
 # -x face
 [pylithapp.timedependent.bc.x_neg]
@@ -86,7 +88,7 @@
 db_initial = spatialdata.spatialdb.UniformDB
 db_initial.label = Dirichlet BC on -x
 db_initial.values = [displacement-x,displacement-y]
-db_initial.data = [1.0*cm,-2.0*cm]
+db_initial.data = [1.0*m,-2.0*m]
 
 # -z face
 [pylithapp.timedependent.bc.z_neg]

Added: short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg	                        (rev 0)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg	2010-05-29 01:10:33 UTC (rev 16825)
@@ -0,0 +1,230 @@
+# -*- Python -*-
+[pylithapp]
+
+# ----------------------------------------------------------------------
+# PROBLEM DESCRIPTION
+# ----------------------------------------------------------------------
+
+#
+# This problem demonstrates the use of static fault friction for a
+# quasi-static problem.
+# The problem is similar to example 11, except that velocity boundary
+# conditions are applied rather than displacement BC. Rather than applying
+# axial displacements, normal tractions (compressional) are applied on the
+# +x face, while the -x face is held fixed in the x-direction. This
+# maintains a normal stress on the fault.  The model is run for 200 years,
+# resulting in periodic fault slip as the friction threshold is reached on
+# the fault.
+
+# ----------------------------------------------------------------------
+# RUNNING THE SIMULATON
+# ----------------------------------------------------------------------
+
+# This is not a self-contained simulation configuration file. This
+# file only specifies parameters specific to tutorial step12.
+# The general parameters are specificed in the pylithapp.cfg
+# file which PyLith reads by default.
+#
+# To run the simulation:
+# pylith step12.cfg
+#
+# Output will be directed to the directory step12.
+
+# ----------------------------------------------------------------------
+# problem
+# ----------------------------------------------------------------------
+[pylithapp.timedependent]
+# Set bc to an array of 4 boundary conditions: 'x_pos_x', 'x_pos_y',
+# 'x_neg', and 'z_neg'. Note that 'x_pos_x' and 'x_pos_y' refer to the same
+# nodeset, because we want to apply both Neumann (x) and Dirichlet (y)
+# boundary conditions to the same set of nodes.
+bc = [x_pos_x,x_pos_y,x_neg,z_neg]
+
+# Set interfaces to an array of 1 fault: 'fault'.
+interfaces = [fault]
+
+[pylithapp.timedependent.implicit]
+# Set the output to an array of 2 output managers.
+# We will output the solution over the domain and the ground surface.
+output = [domain,subdomain]
+
+# Set subdomain component to OutputSolnSubset (boundary of the domain).
+output.subdomain = pylith.meshio.OutputSolnSubset
+
+# Fault friction is a nonlinear problem so we need to use the nonlinear
+# solver.
+solver = pylith.problems.SolverNonlinear
+
+# Change the total simulation time to 200 years, and use a constant time
+# step size of 5 years.
+[pylithapp.timedependent.implicit.time_step]
+total_time = 200.0*year
+dt = 5.0*year
+
+# ----------------------------------------------------------------------
+# boundary conditions
+# ----------------------------------------------------------------------
+# Set the parameters for boundary conditions applied on the
+# +x, -x, and -z faces of the box.
+#
+# We apply axial (x) tractions to the +x face, and fix the x degree of
+# freedom on the -x face. We apply velocities in the y-direction on the
+# +x and -x faces, and fix the z degree of freedom on the bottom (-z) face.
+#
+# We first need to set the BC type to Neumann for +x, which allows us to
+# apply normal tractions on the face. We then specify Dirichlet y-velocities
+# to the same set of nodes using a different name.
+
+# We use a UniformDB to apply the tractions and velocities, while retaining
+# the default ZeroDispDB for zero x-displacements on -x and for zero
+# z-displacements on -z.
+#
+# Note that since the fault cuts through the base of the model (z_neg),
+# we can only constrain the portion of the bottom boundary that does not
+# include the fault. A nodeset named 'face_zneg_nofault' has been defined
+# in Cubit for this purpose.
+#
+
+# The label corresponds to the name of the nodeset in CUBIT.
+
+# +x face -- Neumann
+[pylithapp.timedependent.bc]
+x_pos_x = pylith.bc.Neumann
+
+[pylithapp.timedependent.bc.x_pos_x]
+label = face_xpos
+
+# Give quadrature information for integration of tractions.
+quadrature.cell = pylith.feassemble.FIATLagrange
+quadrature.cell.dimension = 2
+quadrature.cell.quad_order = 2
+
+# Use a UniformDB to specify tractions on the face.
+db_initial = spatialdata.spatialdb.UniformDB
+db_initial.label = Neumann BC on +x
+db_initial.values = [traction-shear-horiz,traction-shear-vert,traction-normal]
+db_initial.data = [0.0*MPa,0.0*MPa,-1.0*MPa]
+
+# +x face -- Dirichlet
+[pylithapp.timedependent.bc.x_pos_y]
+bc_dof = [1]
+label = face_xpos
+db_rate = spatialdata.spatialdb.UniformDB
+db_rate.label = Dirichlet rate BC on +x
+db_rate.values = [displacement-rate-y,rate-start-time]
+db_rate.data = [1.0*cm/year,0.0*year]
+
+# -x face
+[pylithapp.timedependent.bc.x_neg]
+bc_dof = [0, 1]
+label = face_xneg
+db_initial.label = Dirichlet BC on -x
+db_rate = spatialdata.spatialdb.UniformDB
+db_rate.label = Dirichlet rate BC on -x
+db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time]
+db_rate.data = [0.0*cm/year,-1.0*cm/year,0.0*year]
+
+# -z face
+[pylithapp.timedependent.bc.z_neg]
+bc_dof = [2]
+label = face_zneg_nofault
+db_initial.label = Dirichlet BC on -z
+
+# ----------------------------------------------------------------------
+# faults
+# ----------------------------------------------------------------------
+[pylithapp.timedependent.interfaces]
+# Change fault to dynamic fault interface.
+fault = pylith.faults.FaultCohesiveDyn
+
+[pylithapp.timedependent.interfaces.fault]
+# The label corresponds to the name of the nodeset in CUBIT.
+label = fault
+
+# Use the static friction model.
+friction = pylith.friction.StaticFriction
+
+# We must define the quadrature information for fault cells.
+# The fault cells are 2D (surface).
+quadrature.cell = pylith.feassemble.FIATLagrange
+quadrature.cell.dimension = 2
+
+# Set static friction model parameters using a uniform DB. Set the
+# static coefficient of friction to 0.6 and cohesion to 0.0 Pa.
+friction.db_properties = spatialdata.spatialdb.UniformDB
+friction.db_properties.label = Static friction
+friction.db_properties.values = [friction-coefficient,cohesion]
+friction.db_properties.data = [0.6,0.0*Pa]
+
+# ----------------------------------------------------------------------
+# PETSc settings
+# ----------------------------------------------------------------------
+# NOTE: There are additional setting specific to fault friction.
+[pylithapp.petsc]
+
+# Friction sensitivity solve used to compute the increment in slip
+# associated with changes in the Lagrange multiplier imposed by the
+# fault constitutive model.
+friction_pc_type = asm
+friction_sub_pc_factor_shift_type = nonzero
+friction_ksp_max_it = 25
+friction_ksp_gmres_restart = 30
+# Uncomment to view details of friction sensitivity solve.
+#friction_ksp_monitor = true
+#friction_ksp_view = true
+friction_ksp_converged_reason = true
+
+# ----------------------------------------------------------------------
+# output
+# ----------------------------------------------------------------------
+# Give basename for VTK domain output of solution over domain.
+[pylithapp.problem.formulation.output.domain]
+# We specify that output occurs in terms of a given time frequency, and
+# ask for output every 20 years. The time stamps of the output files are
+# in years (rather than the default of seconds), and we give a format for
+# the time stamp.
+output_freq = time_step
+time_step = 20.0*year
+writer.filename = step12/step12.vtk
+writer.time_format = %04.0f
+writer.time_constant = 1.0*year
+
+# Give basename for VTK domain output of solution over ground surface.
+[pylithapp.problem.formulation.output.subdomain]
+# Name of nodeset for ground surface.
+label = face_zpos
+# We keep the default output frequency behavior (skip every n steps), and
+# ask to skip 0 steps between output, so that we get output every time step.
+skip = 0
+writer.filename = step12/step12-groundsurf.vtk
+writer.time_format = %04.0f
+writer.time_constant = 1.0*year
+
+# Give basename for VTK fault output.
+[pylithapp.problem.interfaces.fault.output]
+# We keep the default output frequency behavior (skip every n steps), and
+# ask to skip 0 steps between output, so that we get output every time step.
+skip = 0
+writer.filename = step12/step12-fault.vtk
+writer.time_format = %04.0f
+writer.time_constant = 1.0*year
+
+# Give basename for VTK output of upper_crust state variables.
+[pylithapp.timedependent.materials.upper_crust.output]
+# Average values over quadrature points.
+cell_filter = pylith.meshio.CellFilterAvgMesh
+output_freq = time_step
+time_step = 20.0*year
+writer.filename = step12/step12-upper_crust.vtk
+writer.time_format = %04.0f
+writer.time_constant = 1.0*year
+
+# Give basename for VTK output of lower_crust state variables.
+[pylithapp.timedependent.materials.lower_crust.output]
+# Average values over quadrature points.
+cell_filter = pylith.meshio.CellFilterAvgMesh
+output_freq = time_step
+time_step = 20.0*year
+writer.filename = step12/step12-lower_crust.vtk
+writer.time_format = %04.0f
+writer.time_constant = 1.0*year



More information about the CIG-COMMITS mailing list