[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