[cig-commits] [commit] baagaard/fix-faults-intersect: Add 2-D fault intersection full-scale test. (01c0629)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Wed Jun 4 12:49:26 PDT 2014
Repository : https://github.com/geodynamics/pylith
On branch : baagaard/fix-faults-intersect
Link : https://github.com/geodynamics/pylith/compare/85fe9961fb58cc7323dc26e78085e3f9b7748433...d42a67a6ec678bc8486e0f74f439efbe2f82a25d
>---------------------------------------------------------------
commit 01c06291cbf4f5d238bde4310830dfcb58c46dbb
Author: Brad Aagaard <baagaard at usgs.gov>
Date: Wed Jun 4 08:53:32 2014 -0700
Add 2-D fault intersection full-scale test.
>---------------------------------------------------------------
01c06291cbf4f5d238bde4310830dfcb58c46dbb
tests_auto/2d/tri3/Makefile.am | 4 +-
...{TestSlipOneFault.py => TestFaultsIntersect.py} | 61 ++++++++++++-----
.../{sliptwofaults.cfg => faultsintersect.cfg} | 78 +++++++++++-----------
3 files changed, 86 insertions(+), 57 deletions(-)
diff --git a/tests_auto/2d/tri3/Makefile.am b/tests_auto/2d/tri3/Makefile.am
index 1f36d2e..c480638 100644
--- a/tests_auto/2d/tri3/Makefile.am
+++ b/tests_auto/2d/tri3/Makefile.am
@@ -35,6 +35,7 @@ dist_noinst_PYTHON = \
sliponefault_soln.py \
TestSlipTwoFaults.py \
sliptwofaults_soln.py \
+ TestFaultsIntersect.py \
testpylith.py
dist_noinst_DATA = \
@@ -48,7 +49,8 @@ dist_noinst_DATA = \
sheardispnosliprefine.cfg \
sheardispfriction.cfg \
sliponefault.cfg \
- sliptwofaults.cfg
+ sliptwofaults.cfg \
+ faultsintersect.cfg
noinst_TMP = \
axial_disp.spatialdb \
diff --git a/tests_auto/2d/tri3/TestSlipOneFault.py b/tests_auto/2d/tri3/TestFaultsIntersect.py
similarity index 70%
copy from tests_auto/2d/tri3/TestSlipOneFault.py
copy to tests_auto/2d/tri3/TestFaultsIntersect.py
index 8f4cac8..4619b12 100644
--- a/tests_auto/2d/tri3/TestSlipOneFault.py
+++ b/tests_auto/2d/tri3/TestFaultsIntersect.py
@@ -16,7 +16,7 @@
# ----------------------------------------------------------------------
#
-## @file tests/2d/tri3/TestSlipOneFault.py
+## @file tests/2d/tri3/TestFaultsIntersect.py
##
## @brief Test suite for testing pylith with shear slip.
@@ -26,9 +26,9 @@ from sliponefault_soln import AnalyticalSoln
# Local version of PyLithApp
from pylith.apps.PyLithApp import PyLithApp
-class SlipOneFaultApp(PyLithApp):
+class FaultsIntersectApp(PyLithApp):
def __init__(self):
- PyLithApp.__init__(self, name="sliponefault")
+ PyLithApp.__init__(self, name="faultsintersect")
return
@@ -38,15 +38,15 @@ def run_pylith():
Run pylith.
"""
if not "done" in dir(run_pylith):
- app = SlipOneFaultApp()
+ app = FaultsIntersectApp()
run_pylith.done = True # Put before run() so only called once
app.run()
return
-class TestSlipOneFault(TestTri3):
+class TestFaultsIntersect(TestTri3):
"""
- Test suite for testing pylith with shear sliponefault for 2-D box.
+ Test suite for testing pylith with shear faultsintersect for 2-D box.
"""
def setUp(self):
@@ -55,13 +55,22 @@ class TestSlipOneFault(TestTri3):
"""
TestTri3.setUp(self)
self.nverticesO = self.mesh['nvertices']
+
+ # Fault x
self.mesh['nvertices'] += 9
- self.faultMesh = {'nvertices': 9,
+ self.faultMeshX = {'nvertices': 9,
'spaceDim': 2,
'ncells': 8,
'ncorners': 2}
+ # Fault y
+ self.mesh['nvertices'] += 1
+ self.faultMeshY = {'nvertices': 3,
+ 'spaceDim': 2,
+ 'ncells': 2,
+ 'ncorners': 2}
+
run_pylith()
- self.outputRoot = "sliponefault"
+ self.outputRoot = "faultsintersect"
self.soln = AnalyticalSoln()
return
@@ -74,11 +83,16 @@ class TestSlipOneFault(TestTri3):
if not self.checkResults:
return
- filename = "%s-fault_info.h5" % self.outputRoot
+ from pylith.tests.Fault import check_vertex_fields
fields = ["normal_dir", "final_slip", "slip_time"]
- from pylith.tests.Fault import check_vertex_fields
- check_vertex_fields(self, filename, self.faultMesh, fields)
+ self.fault = "x"
+ filename = "%s-faultx_info.h5" % self.outputRoot
+ check_vertex_fields(self, filename, self.faultMeshX, fields)
+
+ self.fault = "y"
+ filename = "%s-faulty_info.h5" % self.outputRoot
+ check_vertex_fields(self, filename, self.faultMeshY, fields)
return
@@ -90,11 +104,16 @@ class TestSlipOneFault(TestTri3):
if not self.checkResults:
return
- filename = "%s-fault.h5" % self.outputRoot
+ from pylith.tests.Fault import check_vertex_fields
fields = ["slip"]
- from pylith.tests.Fault import check_vertex_fields
- check_vertex_fields(self, filename, self.faultMesh, fields)
+ filename = "%s-faultx.h5" % self.outputRoot
+ self.fault = "x"
+ check_vertex_fields(self, filename, self.faultMeshX, fields)
+
+ filename = "%s-faulty.h5" % self.outputRoot
+ self.fault = "y"
+ check_vertex_fields(self, filename, self.faultMeshY, fields)
return
@@ -127,11 +146,17 @@ class TestSlipOneFault(TestTri3):
Calculate fault info.
"""
- normalDir = (-1.0, 0.0)
- finalSlip = -2.0
+ if self.fault == "x":
+ normalDir = (-1.0, 0.0)
+ finalSlip = -2.0
+ faultMesh = self.faultMeshX
+ elif self.fault == "y":
+ normalDir = (+1.0, 0.0)
+ finalSlip = 0.0
+ faultMesh = self.faultMeshY
slipTime = 0.0
- nvertices = self.faultMesh['nvertices']
+ nvertices = faultMesh['nvertices']
if name == "normal_dir":
field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
@@ -162,7 +187,7 @@ class TestSlipOneFault(TestTri3):
# ----------------------------------------------------------------------
if __name__ == '__main__':
import unittest
- from TestSlipOneFault import TestSlipOneFault as Tester
+ from TestFaultsIntersect import TestFaultsIntersect as Tester
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(Tester))
diff --git a/tests_auto/2d/tri3/sliptwofaults.cfg b/tests_auto/2d/tri3/faultsintersect.cfg
similarity index 68%
copy from tests_auto/2d/tri3/sliptwofaults.cfg
copy to tests_auto/2d/tri3/faultsintersect.cfg
index c4508c1..ed0eef6 100644
--- a/tests_auto/2d/tri3/sliptwofaults.cfg
+++ b/tests_auto/2d/tri3/faultsintersect.cfg
@@ -1,47 +1,48 @@
-[sliptwofaults]
+[faultsintersect]
# ----------------------------------------------------------------------
# journal
# ----------------------------------------------------------------------
-[sliptwofaults.journal.info]
-#timedependent = 1
-#implicit = 1
-#petsc = 1
-#solverlinear = 1
-#meshimporter = 1
-#meshiocubit = 1
-#implicitelasticity = 1
-#quadrature2d = 1
-#fiatsimplex = 1
+[faultsintersect.journal.info]
+faultsintersect = 1
+timedependent = 1
+implicit = 1
+petsc = 1
+solverlinear = 1
+meshimporter = 1
+meshiocubit = 1
+implicitelasticity = 1
+quadrature2d = 1
+fiatsimplex = 1
# ----------------------------------------------------------------------
# mesh_generator
# ----------------------------------------------------------------------
-[sliptwofaults.mesh_generator]
+[faultsintersect.mesh_generator]
reader = pylith.meshio.MeshIOCubit
reorder_mesh = True
-[sliptwofaults.mesh_generator.reader]
+[faultsintersect.mesh_generator.reader]
filename = mesh.exo
coordsys.space_dim = 2
# ----------------------------------------------------------------------
# problem
# ----------------------------------------------------------------------
-[sliptwofaults.timedependent]
+[faultsintersect.timedependent]
dimension = 2
-[sliptwofaults.timedependent.formulation.time_step]
+[faultsintersect.timedependent.formulation.time_step]
total_time = 0.0*s
# ----------------------------------------------------------------------
# materials
# ----------------------------------------------------------------------
-[sliptwofaults.timedependent]
+[faultsintersect.timedependent]
materials = [elastic]
materials.elastic = pylith.materials.ElasticPlaneStrain
-[sliptwofaults.timedependent.materials.elastic]
+[faultsintersect.timedependent.materials.elastic]
label = Elastic material
id = 1
db_properties.label = Elastic properties
@@ -51,10 +52,10 @@ quadrature.cell.dimension = 2
# ----------------------------------------------------------------------
# boundary conditions
# ----------------------------------------------------------------------
-[sliptwofaults.timedependent]
+[faultsintersect.timedependent]
bc = [x_neg,x_pos]
-[sliptwofaults.timedependent.bc.x_pos]
+[faultsintersect.timedependent.bc.x_pos]
bc_dof = [0, 1]
label = edge_xpos
db_initial = spatialdata.spatialdb.UniformDB
@@ -62,26 +63,26 @@ db_initial.label = Dirichlet BC +x edge
db_initial.values = [displacement-x, displacement-y]
db_initial.data = [0.0*m,-1.0*m]
-[sliptwofaults.timedependent.bc.x_neg]
+[faultsintersect.timedependent.bc.x_neg]
bc_dof = [0, 1]
label = edge_xneg
db_initial = spatialdata.spatialdb.UniformDB
db_initial.label = Dirichlet BC -x edge
db_initial.values = [displacement-x, displacement-y]
-db_initial.data = [0.0*m,-1.0*m]
+db_initial.data = [0.0*m,+1.0*m]
# ----------------------------------------------------------------------
# faults
# ----------------------------------------------------------------------
-[sliptwofaults.timedependent]
-interfaces = [fault1,fault2]
+[faultsintersect.timedependent]
+interfaces = [faultx,faulty]
-[sliptwofaults.timedependent.interfaces.fault1]
+[faultsintersect.timedependent.interfaces.faultx]
id = 10
label = fault_x
quadrature.cell.dimension = 1
-[sliptwofaults.timedependent.interfaces.fault1.eq_srcs.rupture.slip_function]
+[faultsintersect.timedependent.interfaces.faultx.eq_srcs.rupture.slip_function]
slip = spatialdata.spatialdb.UniformDB
slip.label = Final slip
slip.values = [left-lateral-slip,fault-opening]
@@ -92,16 +93,17 @@ slip_time.label = Slip start time
slip_time.values = [slip-time]
slip_time.data = [0.0*s]
-[sliptwofaults.timedependent.interfaces.fault2]
+[faultsintersect.timedependent.interfaces.faulty]
id = 20
-label = fault_x2
+label = fault_y
+edge = fault_y_edge
quadrature.cell.dimension = 1
-[sliptwofaults.timedependent.interfaces.fault2.eq_srcs.rupture.slip_function]
+[faultsintersect.timedependent.interfaces.faulty.eq_srcs.rupture.slip_function]
slip = spatialdata.spatialdb.UniformDB
slip.label = Final slip
slip.values = [left-lateral-slip,fault-opening]
-slip.data = [+2.0*m,0.0*m]
+slip.data = [0.0*m,0.0*m]
slip_time = spatialdata.spatialdb.UniformDB
slip_time.label = Slip start time
@@ -111,7 +113,7 @@ slip_time.data = [0.0*s]
# ----------------------------------------------------------------------
# PETSc
# ----------------------------------------------------------------------
-[sliptwofaults.petsc]
+[faultsintersect.petsc]
pc_type = asm
# Change the preconditioner settings.
@@ -132,19 +134,19 @@ ksp_gmres_restart = 50
# ----------------------------------------------------------------------
# output
# ----------------------------------------------------------------------
-[sliptwofaults.problem.formulation.output.output]
+[faultsintersect.problem.formulation.output.output]
writer = pylith.meshio.DataWriterHDF5
-writer.filename = sliptwofaults.h5
+writer.filename = faultsintersect.h5
-[sliptwofaults.timedependent.materials.elastic.output]
+[faultsintersect.timedependent.materials.elastic.output]
cell_filter = pylith.meshio.CellFilterAvg
writer = pylith.meshio.DataWriterHDF5
-writer.filename = sliptwofaults-elastic.h5
+writer.filename = faultsintersect-elastic.h5
-[sliptwofaults.timedependent.interfaces.fault1.output]
+[faultsintersect.timedependent.interfaces.faultx.output]
writer = pylith.meshio.DataWriterHDF5
-writer.filename = sliptwofaults-fault1.h5
+writer.filename = faultsintersect-faultx.h5
-[sliptwofaults.timedependent.interfaces.fault2.output]
+[faultsintersect.timedependent.interfaces.faulty.output]
writer = pylith.meshio.DataWriterHDF5
-writer.filename = sliptwofaults-fault2.h5
+writer.filename = faultsintersect-faulty.h5
More information about the CIG-COMMITS
mailing list