[cig-commits] r16844 - short/3D/PyLith/trunk/examples/3d/hex8

willic3 at geodynamics.org willic3 at geodynamics.org
Sun May 30 18:55:18 PDT 2010


Author: willic3
Date: 2010-05-30 18:55:18 -0700 (Sun, 30 May 2010)
New Revision: 16844

Added:
   short/3D/PyLith/trunk/examples/3d/hex8/step13.cfg
Modified:
   short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg
Log:
Changed some documentation for step12.
Added example 13 (slip-weakening friction).
I played with the parameters a bit, but was unable to get stick-slip
behavior. This may require a smaller time step size.



Modified: short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg	2010-05-31 00:24:24 UTC (rev 16843)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg	2010-05-31 01:55:18 UTC (rev 16844)
@@ -9,12 +9,12 @@
 # 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.
+# conditions are applied rather than displacement BC. Axial (x)
+# displacements are applied on the -x and +x faces to maintain a normal
+# stress on the fault, and velocities in the -y and +y directions are
+# applied on the same faces to yield a left-lateral sense of shear.
+# The model is run for 200 years. Since there is no slip weakening, the
+# fault slips at a steady rate once the fault friction has been overcome.
 
 # ----------------------------------------------------------------------
 # RUNNING THE SIMULATON

Added: short/3D/PyLith/trunk/examples/3d/hex8/step13.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step13.cfg	                        (rev 0)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step13.cfg	2010-05-31 01:55:18 UTC (rev 16844)
@@ -0,0 +1,211 @@
+# -*- Python -*-
+[pylithapp]
+
+# ----------------------------------------------------------------------
+# PROBLEM DESCRIPTION
+# ----------------------------------------------------------------------
+
+#
+# This problem demonstrates the use of slip-weakening fault friction for a
+# quasi-static problem.
+# The problem is similar to example 12, except that a different friction
+# model is used. The model is run for 200 years. Slip begins to occur
+# at about 80 years, and continues in each step after that.
+
+# ----------------------------------------------------------------------
+# RUNNING THE SIMULATON
+# ----------------------------------------------------------------------
+
+# This is not a self-contained simulation configuration file. This
+# file only specifies parameters specific to tutorial step13.
+# The general parameters are specificed in the pylithapp.cfg
+# file which PyLith reads by default.
+#
+# To run the simulation:
+# pylith step13.cfg
+#
+# Output will be directed to the directory step13.
+
+# ----------------------------------------------------------------------
+# problem
+# ----------------------------------------------------------------------
+[pylithapp.timedependent]
+# Set bc to an array of 3 boundary conditions: 'x_pos', 'x_neg', and 'z_neg'.
+bc = [x_pos,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.
+#
+# On the -x and +x faces, we fix the x degrees of freedom and apply
+# velocities in the y-direction. We fix the z degree of freedom on the
+# bottom (-z) face.
+#
+# We use a UniformDB to apply the displacements and velocities, while
+# retaining the default ZeroDispDB for zero x-displacements on the -x
+# face and and 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 -- Dirichlet
+[pylithapp.timedependent.bc.x_pos]
+bc_dof = [0,1]
+label = face_xpos
+
+db_initial = spatialdata.spatialdb.UniformDB
+db_initial.label = Dirichlet BC on +x
+db_initial.values = [displacement-x,displacement-y]
+db_initial.data = [-1.0*m,0.0*m]
+
+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]
+
+# -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 slip-weakening friction model.
+friction = pylith.friction.SlipWeakening
+
+# 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 slip-weakening friction model parameters using a uniform DB. Set the
+# parameters as follows:
+# static coefficient of friction: 0.6
+# dynamic coefficient of friction: 0.5
+# slip-weakening parameter: 0.2 m
+# cohesion: 0 Pa
+friction.db_properties = spatialdata.spatialdb.UniformDB
+friction.db_properties.label = Slip weakening
+friction.db_properties.values = [static-coefficient,dynamic-coefficient,slip-weakening-parameter,cohesion]
+friction.db_properties.data = [0.6,0.5,0.2*m,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 = step13/step13.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 = step13/step13-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 = step13/step13-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 = step13/step13-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 = step13/step13-lower_crust.vtk
+writer.time_format = %04.0f
+writer.time_constant = 1.0*year



More information about the CIG-COMMITS mailing list