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

willic3 at geodynamics.org willic3 at geodynamics.org
Mon May 24 20:09:30 PDT 2010


Author: willic3
Date: 2010-05-24 20:09:29 -0700 (Mon, 24 May 2010)
New Revision: 16782

Added:
   short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg
Log:
Added two examples that demonstrate multiple earthquake ruptures and
fault creep. The first has fixed displacement BC, and the second has
velocity BC.



Added: short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg	                        (rev 0)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg	2010-05-25 03:09:29 UTC (rev 16782)
@@ -0,0 +1,220 @@
+# -*- Python -*-
+[pylithapp]
+
+# ----------------------------------------------------------------------
+# PROBLEM DESCRIPTION
+# ----------------------------------------------------------------------
+
+#
+# This is a time-dependent problem with Dirichlet boundary conditions
+# and multiple earthquake ruptures as well as fault creep at constant
+# velocity.
+# The x-faces are held fixed in x and y, and the z-displacements are held
+# fixed on the -z face.
+# The upper (locked) portion of the fault ruptures at regular intervals,
+# and constant velocities are applied on the lower section of the fault.
+# 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.
+# Two materials are used:
+# 1. Elastic upper crust.
+# 2. Viscoelastic (Maxwell) lower crust.
+
+# ----------------------------------------------------------------------
+# RUNNING THE SIMULATON
+# ----------------------------------------------------------------------
+
+# This is not a self-contained simulation configuration file. This
+# file only specifies parameters specific to tutorial step06.
+# The general parameters are specificed in the pylithapp.cfg
+# file which PyLith reads by default.
+#
+# To run the simulation:
+# pylith step06.cfg
+#
+# Output will be directed to the directory step06.
+
+# ----------------------------------------------------------------------
+# 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
+
+# Change time stepping algorithm from uniform time step, to adaptive
+# time stepping.
+time_step = pylith.problems.TimeStepAdapt
+
+# Change the total simulation time to 700 years, and set the maximum time
+# step size to 10 years.
+[pylithapp.timedependent.implicit.time_step]
+total_time = 700.0*year
+max_dt = 10.0*year
+stability_factor = 1.0 ; use time step equal to stable value from materials
+
+# ----------------------------------------------------------------------
+# materials
+# ----------------------------------------------------------------------
+# Change material type of lower crust to Maxwell viscoelastic.
+[pylithapp.timedependent]
+materials.lower_crust = pylith.materials.MaxwellIsotropic3D
+
+# Provide a spatial database from which to obtain property values.
+# Since there are additional properties and state variables for the Maxwell
+# model, we explicitly request that they be output. Properties are named in
+# cell_info_fields and state variables are named in cell_data_fields.
+[pylithapp.timedependent.materials.lower_crust]
+db_properties.iohandler.filename = spatialdb/mat_maxwell.spatialdb
+output.cell_info_fields = [density,mu,lambda,maxwell_time]
+output.cell_data_fields = [total_strain,stress,viscous_strain]
+
+# ----------------------------------------------------------------------
+# boundary conditions
+# ----------------------------------------------------------------------
+# 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
+# fix the z degree of freedom on the bottom (-z) face.
+#
+# Since we are applying zero displacements on all boundaries, we retain
+# the default ZeroDispDB for displacements (db_initial).
+#
+# 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
+[pylithapp.timedependent.bc.x_pos]
+bc_dof = [0, 1]
+label = face_xpos
+db_initial.label = Dirichlet BC on +x
+
+# -x face
+[pylithapp.timedependent.bc.x_neg]
+bc_dof = [0, 1]
+label = face_xneg
+db_initial.label = Dirichlet BC on -x
+
+# -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]
+
+# Set the parameters for the fault interface conditions.
+[pylithapp.timedependent.interfaces.fault]
+# This corresponds to the label of the Cubit nodeset defining the fault.
+label = fault
+# Provide quadrature information for the fault surface.
+quadrature.cell = pylith.feassemble.FIATLagrange
+quadrature.cell.dimension = 2
+
+# Due to the complex time history used for the fault, a number of additional
+# info fields are available.
+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_time_two,slip_time_three]
+
+# Set earthquake sources to an array consisting of creep and 3 ruptures.
+eq_srcs = [creep,one,two,three]
+eq_srcs.creep.origin_time = 00.0*year
+eq_srcs.one.origin_time = 200.0*year
+eq_srcs.two.origin_time = 400.0*year
+eq_srcs.three.origin_time = 600.0*year
+
+# Define slip and origin time for first rupture.
+[pylithapp.timedependent.interfaces.fault.eq_srcs.one.slip_function]
+slip.iohandler.filename = spatialdb/finalslip_rupture.spatialdb
+slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
+
+# Define slip and origin time for second rupture.
+[pylithapp.timedependent.interfaces.fault.eq_srcs.two.slip_function]
+slip.iohandler.filename = spatialdb/finalslip_rupture.spatialdb
+slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
+
+# Define slip and origin time for third rupture.
+[pylithapp.timedependent.interfaces.fault.eq_srcs.three.slip_function]
+slip.iohandler.filename = spatialdb/finalslip_rupture.spatialdb
+slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
+
+# Define slip rate and origin time for fault creep.
+[pylithapp.timedependent.interfaces.fault.eq_srcs.creep]
+slip_function = pylith.faults.ConstRateSlipFn
+origin_time = 0.0*s
+slip_function.slip_rate.iohandler.filename = spatialdb/sliprate_creep.spatialdb
+slip_function.slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
+
+# ----------------------------------------------------------------------
+# 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 50 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 = 50.0*year
+writer.filename = step06/step06.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 = step06/step06-groundsurf.vtk
+writer.time_format = %04.0f
+writer.time_constant = 1.0*year
+
+# Give basename for VTK fault rupture 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 = step06/step06-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 = 50.0*year
+writer.filename = step06/step06-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 = 50.0*year
+writer.filename = step06/step06-lower_crust.vtk
+writer.time_format = %04.0f
+writer.time_constant = 1.0*year

Added: short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg	                        (rev 0)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg	2010-05-25 03:09:29 UTC (rev 16782)
@@ -0,0 +1,235 @@
+# -*- Python -*-
+[pylithapp]
+
+# ----------------------------------------------------------------------
+# PROBLEM DESCRIPTION
+# ----------------------------------------------------------------------
+
+#
+# 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 +
+# 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,
+# and constant velocities are applied on the lower section of the fault.
+# 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.
+# Two materials are used:
+# 1. Elastic upper crust.
+# 2. Viscoelastic (Maxwell) lower crust.
+
+# ----------------------------------------------------------------------
+# RUNNING THE SIMULATON
+# ----------------------------------------------------------------------
+
+# This is not a self-contained simulation configuration file. This
+# file only specifies parameters specific to tutorial step07.
+# The general parameters are specificed in the pylithapp.cfg
+# file which PyLith reads by default.
+#
+# To run the simulation:
+# pylith step07.cfg
+#
+# Output will be directed to the directory step07.
+
+# ----------------------------------------------------------------------
+# 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
+
+# Change time stepping algorithm from uniform time step, to adaptive
+# time stepping.
+time_step = pylith.problems.TimeStepAdapt
+
+# Change the total simulation time to 700 years, and set the maximum time
+# step size to 10 years.
+[pylithapp.timedependent.implicit.time_step]
+total_time = 700.0*year
+max_dt = 10.0*year
+stability_factor = 1.0 ; use time step equal to stable value from materials
+
+# ----------------------------------------------------------------------
+# materials
+# ----------------------------------------------------------------------
+# Change material type of lower crust to Maxwell viscoelastic.
+[pylithapp.timedependent]
+materials.lower_crust = pylith.materials.MaxwellIsotropic3D
+
+# Provide a spatial database from which to obtain property values.
+# Since there are additional properties and state variables for the Maxwell
+# model, we explicitly request that they be output. Properties are named in
+# cell_info_fields and state variables are named in cell_data_fields.
+[pylithapp.timedependent.materials.lower_crust]
+db_properties.iohandler.filename = spatialdb/mat_maxwell.spatialdb
+output.cell_info_fields = [density,mu,lambda,maxwell_time]
+output.cell_data_fields = [total_strain,stress,viscous_strain]
+
+# ----------------------------------------------------------------------
+# boundary conditions
+# ----------------------------------------------------------------------
+# Set the parameters for Dirichlet boundary conditions applied on the
+# +x, -x, and -z faces of the box.
+#
+# 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.
+#
+# 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
+# default database for velocities (db_rate) to UniformDB, which allows
+# nonzero velocities. Using UniformDB, we also specify the velocity values
+# in this .cfg file, rather than using a spatialdb file.
+#
+# For z_neg, we keep the default ZeroDispDB, since we just want zero
+# z-displacements on that boundary.
+# 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
+[pylithapp.timedependent.bc.x_pos]
+bc_dof = [0, 1]
+label = face_xpos
+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]
+
+# -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]
+
+# Set the parameters for the fault interface conditions.
+[pylithapp.timedependent.interfaces.fault]
+# This corresponds to the label of the Cubit nodeset defining the fault.
+label = fault
+# Provide quadrature information for the fault surface.
+quadrature.cell = pylith.feassemble.FIATLagrange
+quadrature.cell.dimension = 2
+
+# Due to the complex time history used for the fault, a number of additional
+# info fields are available.
+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_time_two,slip_time_three]
+
+# Set earthquake sources to an array consisting of creep and 3 ruptures.
+eq_srcs = [creep,one,two,three]
+eq_srcs.creep.origin_time = 00.0*year
+eq_srcs.one.origin_time = 200.0*year
+eq_srcs.two.origin_time = 400.0*year
+eq_srcs.three.origin_time = 600.0*year
+
+# Define slip and origin time for first rupture.
+[pylithapp.timedependent.interfaces.fault.eq_srcs.one.slip_function]
+slip.iohandler.filename = spatialdb/finalslip_rupture.spatialdb
+slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
+
+# Define slip and origin time for second rupture.
+[pylithapp.timedependent.interfaces.fault.eq_srcs.two.slip_function]
+slip.iohandler.filename = spatialdb/finalslip_rupture.spatialdb
+slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
+
+# Define slip and origin time for third rupture.
+[pylithapp.timedependent.interfaces.fault.eq_srcs.three.slip_function]
+slip.iohandler.filename = spatialdb/finalslip_rupture.spatialdb
+slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
+
+# Define slip rate and origin time for fault creep.
+[pylithapp.timedependent.interfaces.fault.eq_srcs.creep]
+slip_function = pylith.faults.ConstRateSlipFn
+origin_time = 0.0*s
+slip_function.slip_rate.iohandler.filename = spatialdb/sliprate_creep.spatialdb
+slip_function.slip_time.iohandler.filename = spatialdb/sliptime.spatialdb
+
+# ----------------------------------------------------------------------
+# 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 50 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 = 50.0*year
+writer.filename = step07/step07.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 = step07/step07-groundsurf.vtk
+writer.time_format = %04.0f
+writer.time_constant = 1.0*year
+
+# Give basename for VTK fault rupture 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 = step07/step07-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 = 50.0*year
+writer.filename = step07/step07-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 = 50.0*year
+writer.filename = step07/step07-lower_crust.vtk
+writer.time_format = %04.0f
+writer.time_constant = 1.0*year



More information about the CIG-COMMITS mailing list