[cig-commits] r16967 - in short/3D/PyLith/trunk: . libsrc/faults modulesrc/faults pylith/faults pylith/feassemble tests/3d tests/3d/slipdir tests_auto/2d/quad4 unittests/libtests/faults unittests/libtests/faults/data unittests/libtests/friction unittests/pytests/faults

brad at geodynamics.org brad at geodynamics.org
Wed Jun 9 19:25:53 PDT 2010


Author: brad
Date: 2010-06-09 19:25:51 -0700 (Wed, 09 Jun 2010)
New Revision: 16967

Added:
   short/3D/PyLith/trunk/tests/3d/slipdir/
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_x.cfg
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_x.exo
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_x.jou
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_xy.cfg
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_xy.exo
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_xy.jou
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz1.cfg
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz1.exo
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz1.jou
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz2.cfg
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz2.exo
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz2.jou
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_y.cfg
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_y.exo
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_y.jou
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_z.cfg
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_z.exo
   short/3D/PyLith/trunk/tests/3d/slipdir/fault_z.jou
   short/3D/PyLith/trunk/tests/3d/slipdir/matprops.spatialdb
   short/3D/PyLith/trunk/tests/3d/slipdir/pylithapp.cfg
   short/3D/PyLith/trunk/tests/3d/slipdir/slip.spatialdb
   short/3D/PyLith/trunk/tests/3d/slipdir/sliptime.spatialdb
Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/libsrc/faults/Fault.hh
   short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc
   short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.hh
   short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
   short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh
   short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveLagrange.cc
   short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveLagrange.hh
   short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveTract.cc
   short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveTract.hh
   short/3D/PyLith/trunk/modulesrc/faults/Fault.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveLagrange.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i
   short/3D/PyLith/trunk/pylith/faults/Fault.py
   short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticity.py
   short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/adjustsoln.py
   short/3D/PyLith/trunk/unittests/libtests/faults/data/cohesivedyn.py
   short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
   short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py
   short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.py
Log:
Updated unit tests for fixes to fault orientation in 2-D and 3-D.

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/TODO	2010-06-10 02:25:51 UTC (rev 16967)
@@ -23,9 +23,6 @@
 
 TUTORIALS/EXAMPLES
   
-   fault cohesive dyn - Nondiagonal A, correct cross-reference for 3d/hex8/friction?
-   is reverse motion positive or negative in 2-D and 3-D?
-
   3d/hex8
     directory structure
     1. Dirichlet BC (static)
@@ -72,12 +69,6 @@
 
   * Better preconditioning [Matt/Brad]
 
-    Diagonal preconditioner does not work very well. It looks like the
-    preconditioner needs off-diagonal terms consistent with the
-    coupling of the Lagrange multiplier constraints (sparsity pattern
-    matches the union of the matrices associated with the fault
-    meshes).
-
     Need field split working for both SolverLinear and SolverNonlinear.
 
 ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/libsrc/faults/Fault.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/Fault.hh	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/libsrc/faults/Fault.hh	2010-06-10 02:25:51 UTC (rev 16967)
@@ -105,15 +105,11 @@
    * @param cs Coordinate system for mesh
    * @param upDir Direction perpendicular to along-strike direction that is 
    *   not collinear with fault normal (usually "up" direction but could 
-   *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-   * @param normalDir General preferred direction for fault normal
-   *   (used to pick which of two possible normal directions for
-   *   interface; only applies to fault surfaces in a 3-D domain).
+   *   be up-dip direction; only applies to fault surfaces 2-D and 3-D).
    */
   virtual
   void initialize(const topology::Mesh& mesh,
-		  const double upDir[3],
-		  const double normalDir[3]) = 0;
+		  const double upDir[3]) = 0;
 
   /** Get mesh associated with fault fields.
    *

Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -103,15 +103,13 @@
 // Initialize fault. Determine orientation and setup boundary
 void
 pylith::faults::FaultCohesiveDyn::initialize(const topology::Mesh& mesh,
-					      const double upDir[3],
-					      const double normalDir[3])
+					      const double upDir[3])
 { // initialize
   assert(0 != upDir);
-  assert(0 != normalDir);
   assert(0 != _quadrature);
   assert(0 != _normalizer);
 
-  FaultCohesiveLagrange::initialize(mesh, upDir, normalDir);
+  FaultCohesiveLagrange::initialize(mesh, upDir);
 
   // Get initial tractions using a spatial database.
   _setupInitialTractions();

Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.hh	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.hh	2010-06-10 02:25:51 UTC (rev 16967)
@@ -67,14 +67,10 @@
    * @param mesh Finite-element mesh.
    * @param upDir Direction perpendicular to along-strike direction that is 
    *   not collinear with fault normal (usually "up" direction but could 
-   *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-   * @param normalDir General preferred direction for fault normal
-   *   (used to pick which of two possible normal directions for
-   *   interface; only applies to fault surfaces in a 3-D domain).
+   *   be up-dip direction; applies to fault surfaces in 2-D and 3-D).
    */
   void initialize(const topology::Mesh& mesh,
-		  const double upDir[3],
-		  const double normalDir[3]);
+		  const double upDir[3]);
 
   /** Integrate contributions to residual term (r) for operator that
    * do not require assembly across processors.

Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -91,15 +91,13 @@
 // Initialize fault. Determine orientation and setup boundary
 void
 pylith::faults::FaultCohesiveKin::initialize(const topology::Mesh& mesh,
-					     const double upDir[3],
-					     const double normalDir[3])
+					     const double upDir[3])
 { // initialize
   assert(0 != upDir);
-  assert(0 != normalDir);
   assert(0 != _quadrature);
   assert(0 != _normalizer);
 
-  FaultCohesiveLagrange::initialize(mesh, upDir, normalDir);
+  FaultCohesiveLagrange::initialize(mesh, upDir);
 
   const srcs_type::const_iterator srcsEnd = _eqSrcs.end();
   for (srcs_type::iterator s_iter = _eqSrcs.begin(); s_iter != srcsEnd; ++s_iter) {

Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh	2010-06-10 02:25:51 UTC (rev 16967)
@@ -64,14 +64,10 @@
    * @param mesh Finite-element mesh.
    * @param upDir Direction perpendicular to along-strike direction that is 
    *   not collinear with fault normal (usually "up" direction but could 
-   *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-   * @param normalDir General preferred direction for fault normal
-   *   (used to pick which of two possible normal directions for
-   *   interface; only applies to fault surfaces in a 3-D domain).
+   *   be up-dip direction; applies to fault surfaces in 2-D and 3-D).
    */
   void initialize(const topology::Mesh& mesh,
-		  const double upDir[3],
-		  const double normalDir[3]);
+		  const double upDir[3]);
 
   /** Integrate contributions to residual term (r) for operator that
    * do not require assembly across cells, vertices, or processors.

Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveLagrange.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveLagrange.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveLagrange.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -75,11 +75,9 @@
 // Initialize fault. Determine orientation and setup boundary
 void
 pylith::faults::FaultCohesiveLagrange::initialize(const topology::Mesh& mesh,
-					     const double upDir[3],
-					     const double normalDir[3])
+					     const double upDir[3])
 { // initialize
   assert(0 != upDir);
-  assert(0 != normalDir);
   assert(0 != _quadrature);
   assert(0 != _normalizer);
 
@@ -125,7 +123,7 @@
 #endif
 
   // Compute orientation at vertices in fault mesh.
-  _calcOrientation(upDir, normalDir);
+  _calcOrientation(upDir);
 
   // Compute tributary area for each vertex in fault mesh.
   _calcArea();
@@ -1531,11 +1529,9 @@
 // ----------------------------------------------------------------------
 // Calculate orientation at fault vertices.
 void
-pylith::faults::FaultCohesiveLagrange::_calcOrientation(const double upDir[3],
-						   const double normalDir[3])
+pylith::faults::FaultCohesiveLagrange::_calcOrientation(const double upDir[3])
 { // _calcOrientation
   assert(0 != upDir);
-  assert(0 != normalDir);
   assert(0 != _faultMesh);
   assert(0 != _fields);
 

Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveLagrange.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveLagrange.hh	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveLagrange.hh	2010-06-10 02:25:51 UTC (rev 16967)
@@ -100,15 +100,11 @@
    * @param mesh Finite-element mesh.
    * @param upDir Direction perpendicular to along-strike direction that is 
    *   not collinear with fault normal (usually "up" direction but could 
-   *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-   * @param normalDir General preferred direction for fault normal
-   *   (used to pick which of two possible normal directions for
-   *   interface; only applies to fault surfaces in a 3-D domain).
+   *   be up-dip direction; applies to fault surfaces in 2-D and 3-D).
    */
   virtual
   void initialize(const topology::Mesh& mesh,
-		  const double upDir[3],
-		  const double normalDir[3]);
+		  const double upDir[3]);
 
   /** Split solution field for separate preconditioning.
    *
@@ -326,13 +322,9 @@
    *
    * @param upDir Direction perpendicular to along-strike direction that is 
    *   not collinear with fault normal (usually "up" direction but could 
-   *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-   * @param normalDir General preferred direction for fault normal
-   *   (used to pick which of two possible normal directions for
-   *   interface; only applies to fault surfaces in a 3-D domain).
+   *   be up-dip direction; applies to fault surfaces in 2-D and 3-D).
    */
-  void _calcOrientation(const double upDir[3],
-			const double normalDir[3]);
+  void _calcOrientation(const double upDir[3]);
 
   /// Calculate fault area field.
   void _calcArea(void);

Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveTract.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveTract.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveTract.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -62,11 +62,9 @@
 // Initialize fault. Determine orientation and setup boundary
 void
 pylith::faults::FaultCohesiveTract::initialize(const topology::Mesh& mesh,
-					     const double upDir[3],
-					     const double normalDir[3])
+					     const double upDir[3])
 { // initialize
   assert(0 != upDir);
-  assert(0 != normalDir);
   assert(0 != _quadrature);
 
   delete _faultMesh; _faultMesh = new topology::SubMesh();
@@ -82,7 +80,7 @@
   _quadrature->initializeGeometry();
 
   // Compute orientation at quadrature points in fault mesh.
-  _calcOrientation(upDir, normalDir);
+  _calcOrientation(upDir);
 
   // Get initial tractions using a spatial database.
   _getInitialTractions();
@@ -189,8 +187,7 @@
 // ----------------------------------------------------------------------
 // Calculate orientation at fault vertices.
 void
-pylith::faults::FaultCohesiveTract::_calcOrientation(const double upDir[3],
-						   const double normalDir[3])
+pylith::faults::FaultCohesiveTract::_calcOrientation(const double upDir[3])
 { // _calcOrientation
   assert(0 != _fields);
   assert(0 != _quadrature);

Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveTract.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveTract.hh	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveTract.hh	2010-06-10 02:25:51 UTC (rev 16967)
@@ -56,14 +56,10 @@
    * @param mesh Finite-element mesh.
    * @param upDir Direction perpendicular to along-strike direction that is 
    *   not collinear with fault normal (usually "up" direction but could 
-   *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-   * @param normalDir General preferred direction for fault normal
-   *   (used to pick which of two possible normal directions for
-   *   interface; only applies to fault surfaces in a 3-D domain).
+   *   be up-dip direction; applies to fault surfaces in 2-D and 3-D).
    */
   void initialize(const topology::Mesh& mesh,
-		  const double upDir[3],
-		  const double normalDir[3]);
+		  const double upDir[3]);
 
   /** Integrate contribution of cohesive cells to residual term.
    *
@@ -121,13 +117,9 @@
    *
    * @param upDir Direction perpendicular to along-strike direction that is 
    *   not collinear with fault normal (usually "up" direction but could 
-   *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-   * @param normalDir General preferred direction for fault normal
-   *   (used to pick which of two possible normal directions for
-   *   interface; only applies to fault surfaces in a 3-D domain).
+   *   be up-dip direction; applies to fault surfaces in 2-D and 3-D).
    */
-  void _calcOrientation(const double upDir[3],
-			const double normalDir[3]);
+  void _calcOrientation(const double upDir[3]);
 
   /** Get initial tractions using a spatial database.
    */

Modified: short/3D/PyLith/trunk/modulesrc/faults/Fault.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/Fault.i	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/modulesrc/faults/Fault.i	2010-06-10 02:25:51 UTC (rev 16967)
@@ -87,15 +87,11 @@
        * @param cs Coordinate system for mesh
        * @param upDir Direction perpendicular to along-strike direction that is 
        *   not collinear with fault normal (usually "up" direction but could 
-       *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-       * @param normalDir General preferred direction for fault normal
-       *   (used to pick which of two possible normal directions for
-       *   interface; only applies to fault surfaces in a 3-D domain).
+       *   be up-dip direction; applies to fault surfaces in 2-D and 3-D).
        */
       virtual
       void initialize(const pylith::topology::Mesh& mesh,
-		      const double upDir[3],
-		      const double normalDir[3]) = 0;
+		      const double upDir[3]) = 0;
       
       /** Get mesh associated with fault fields.
        *

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i	2010-06-10 02:25:51 UTC (rev 16967)
@@ -53,14 +53,10 @@
        * @param mesh Finite-element mesh.
        * @param upDir Direction perpendicular to along-strike direction that is 
        *   not collinear with fault normal (usually "up" direction but could 
-       *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-       * @param normalDir General preferred direction for fault normal
-       *   (used to pick which of two possible normal directions for
-       *   interface; only applies to fault surfaces in a 3-D domain).
+       *   be up-dip direction; applies to fault surfaces in 2-D and 3-D).
        */
       void initialize(const pylith::topology::Mesh& mesh,
-		      const double upDir[3],
-		      const double normalDir[3]);
+		      const double upDir[3]);
       
       /** Integrate contributions to residual term (r) for operator that
        * do not require assembly across processors.

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i	2010-06-10 02:25:51 UTC (rev 16967)
@@ -58,14 +58,10 @@
        * @param mesh Finite-element mesh.
        * @param upDir Direction perpendicular to along-strike direction that is 
        *   not collinear with fault normal (usually "up" direction but could 
-       *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-       * @param normalDir General preferred direction for fault normal
-       *   (used to pick which of two possible normal directions for
-       *   interface; only applies to fault surfaces in a 3-D domain).
+       *   be up-dip direction; applies to fault surfaces in 2-D and 3-D).
        */
       void initialize(const pylith::topology::Mesh& mesh,
-		      const double upDir[3],
-		      const double normalDir[3]);
+		      const double upDir[3]);
       
       /** Integrate contributions to residual term (r) for operator that
        * do not require assembly across cells, vertices, or processors.

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveLagrange.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveLagrange.i	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveLagrange.i	2010-06-10 02:25:51 UTC (rev 16967)
@@ -41,15 +41,11 @@
        * @param mesh Finite-element mesh.
        * @param upDir Direction perpendicular to along-strike direction that is 
        *   not collinear with fault normal (usually "up" direction but could 
-       *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-       * @param normalDir General preferred direction for fault normal
-       *   (used to pick which of two possible normal directions for
-       *   interface; only applies to fault surfaces in a 3-D domain).
+       *   be up-dip direction; applies to fault surfaces in 2-D and 3-D).
        */
       virtual
       void initialize(const pylith::topology::Mesh& mesh,
-		      const double upDir[3],
-		      const double normalDir[3]);
+		      const double upDir[3]);
       
       /** Split solution field for separate preconditioning.
        *

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i	2010-06-10 02:25:51 UTC (rev 16967)
@@ -47,14 +47,10 @@
        * @param mesh Finite-element mesh.
        * @param upDir Direction perpendicular to along-strike direction that is 
        *   not collinear with fault normal (usually "up" direction but could 
-       *   be up-dip direction; only applies to fault surfaces in a 3-D domain).
-       * @param normalDir General preferred direction for fault normal
-       *   (used to pick which of two possible normal directions for
-       *   interface; only applies to fault surfaces in a 3-D domain).
+       *   be up-dip direction; applies to fault surfaces in 2-D and 3-D).
        */
       void initialize(const pylith::topology::Mesh& mesh,
-		      const double upDir[3],
-		      const double normalDir[3]);
+		      const double upDir[3]);
 
       /** Integrate contribution of cohesive cells to residual term.
        *

Modified: short/3D/PyLith/trunk/pylith/faults/Fault.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/Fault.py	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/pylith/faults/Fault.py	2010-06-10 02:25:51 UTC (rev 16967)
@@ -55,10 +55,7 @@
   @li \b name Name of fault
   @li \b up_dir Up-dip or up direction
     (perpendicular to along-strike and not collinear with fault normal;
-    only applies to fault surfaces in a 3-D domain).
-  @li \b normal_dir General preferred direction for fault normal
-    (used to pick which of two possible normal directions for
-    interface; only applies to fault surfaces in a 3-D domain).
+    applies to fault surfaces in 2-D and 3-D).
   
   \b Facilities
   @li \b quadrature Quadrature object for numerical integration
@@ -81,15 +78,9 @@
                               validator=validateDir)
   upDir.meta['tip'] = "Up-dip or up direction " \
       "(perpendicular to along-strike and not collinear " \
-      "with fault normal; only applies to fault surface " \
-      "in a 3-D domain)."
+      "with fault normal; applies to fault surfaces " \
+      "in 2-D and 3-D)."
   
-  normalDir = pyre.inventory.list("normal_dir", default=[1, 0, 0],
-                                  validator=validateDir)
-  normalDir.meta['tip'] = "General preferred direction for fault normal " \
-      "(used to pick which of two possible normal directions for " \
-      "interface; only applies to fault surfaces in a 3-D domain)."
-  
   from pylith.feassemble.Quadrature import SubMeshQuadrature
   faultQuadrature = pyre.inventory.facility("quadrature", factory=SubMeshQuadrature)
   faultQuadrature.meta['tip'] = "Quadrature object for numerical integration."
@@ -157,7 +148,7 @@
 
     self.faultQuadrature.initialize()
     ModuleFault.initialize(self, 
-                           self.mesh, self.upDir, self.normalDir)
+                           self.mesh, self.upDir)
 
     if None != self.output:
       self.output.initialize(normalizer, self.faultQuadrature)
@@ -235,7 +226,6 @@
     PetscComponent._configure(self)
     self.faultQuadrature = self.inventory.faultQuadrature
     self.upDir = map(float, self.inventory.upDir)
-    self.normalDir = map(float, self.inventory.normalDir)
     ModuleFault.id(self, self.inventory.matId)
     ModuleFault.label(self, self.inventory.faultLabel)
     self.perfLogger = self.inventory.perfLogger

Modified: short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticity.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticity.py	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticity.py	2010-06-10 02:25:51 UTC (rev 16967)
@@ -70,6 +70,14 @@
     self._eventLogger.eventBegin(logEvent)
 
     Integrator.verifyConfiguration(self)
+
+    if self.mesh.dimension() != self.materialObj.dimension():
+      raise ValueError("Mesh dimension is '%d' but material '%s' applies " \
+                         "to dimension '%d'." % \ 
+                       (self.mesh.dimension(),
+                        self.materialObj.label(),
+                        self.materialObj.dimension()))
+    
     self.output.verifyConfiguration(self.mesh)
 
     self._eventLogger.eventEnd(logEvent)    

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_x.cfg
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_x.cfg	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_x.cfg	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,17 @@
+# -*- Python -*-
+[pylithapp]
+
+# ----------------------------------------------------------------------
+# mesh_generator
+# ----------------------------------------------------------------------
+[pylithapp.mesh_generator.reader]
+filename = fault_x.exo
+
+# ----------------------------------------------------------------------
+# output
+# ----------------------------------------------------------------------
+[pylithapp.problem.formulation.output.output]
+writer.filename = fault_x.vtk
+
+[pylithapp.timedependent.interfaces.fault.output]
+writer.filename = fault_x-fault.vtk

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_x.exo
===================================================================
(Binary files differ)


Property changes on: short/3D/PyLith/trunk/tests/3d/slipdir/fault_x.exo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_x.jou
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_x.jou	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_x.jou	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,38 @@
+# Create mesh with +x fault normal.
+
+reset
+
+brick x 200 y 200 z 200
+move volume 1 x 0 y 0 z 100
+
+create surface extended from surface 6
+move surface 7 x -100 y 0 z 0
+webcut volume 1 with plane surface 7
+delete surface 7
+
+imprint all
+merge all
+
+volume all size 50
+volume all scheme tetmesh
+mesh volume all
+
+# Create blocks and nodesets
+
+block 1 volume all
+
+group "fault" add node in surface 8
+nodeset 10 group fault
+nodeset 10 name "fault"
+
+group "boundary_nofault" add node in surface 10
+group "boundary_nofault" add node in surface 17
+group "boundary_nofault" add node in surface 6
+group "boundary_nofault" add node in surface 14
+group "boundary_nofault" add node in surface 12
+group "boundary_nofault" add node in surface 4
+group "boundary_nofault" remove node in group fault
+nodeset 1 group boundary_nofault
+nodeset 1 name "boundary_nofault"
+
+export mesh "fault_x.exo" dimension 3 overwrite

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xy.cfg
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_xy.cfg	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_xy.cfg	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,17 @@
+# -*- Python -*-
+[pylithapp]
+
+# ----------------------------------------------------------------------
+# mesh_generator
+# ----------------------------------------------------------------------
+[pylithapp.mesh_generator.reader]
+filename = fault_xy.exo
+
+# ----------------------------------------------------------------------
+# output
+# ----------------------------------------------------------------------
+[pylithapp.problem.formulation.output.output]
+writer.filename = fault_xy.vtk
+
+[pylithapp.timedependent.interfaces.fault.output]
+writer.filename = fault_xy-fault.vtk

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xy.exo
===================================================================
(Binary files differ)


Property changes on: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xy.exo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xy.jou
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_xy.jou	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_xy.jou	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,38 @@
+# Create mesh with +xy fault normal.
+
+reset
+
+brick x 200 y 200 z 200
+move volume 1 x 0 y 0 z 100
+
+create surface extended from surface 6
+move surface 7 x -100 y 0 z 0
+surface 7 rotate +45 about z
+webcut volume 1 with plane surface 7
+delete surface 7
+
+imprint all
+merge all
+
+volume all size 50
+volume all scheme tetmesh
+mesh volume all
+
+# Create blocks and nodesets
+
+block 1 volume all
+
+group "fault" add node in surface 8
+nodeset 10 group fault
+nodeset 10 name "fault"
+
+group "boundary_nofault" add node in surface 5
+group "boundary_nofault" add node in surface 6
+group "boundary_nofault" add node in surface 3
+group "boundary_nofault" add node in surface 4
+group "boundary_nofault" remove node in group fault
+nodeset 1 group boundary_nofault
+nodeset 1 name "boundary_nofault"
+
+export mesh "fault_xy.exo" dimension 3 overwrite
+

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz1.cfg
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz1.cfg	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz1.cfg	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,17 @@
+# -*- Python -*-
+[pylithapp]
+
+# ----------------------------------------------------------------------
+# mesh_generator
+# ----------------------------------------------------------------------
+[pylithapp.mesh_generator.reader]
+filename = fault_xz1.exo
+
+# ----------------------------------------------------------------------
+# output
+# ----------------------------------------------------------------------
+[pylithapp.problem.formulation.output.output]
+writer.filename = fault_xz1.vtk
+
+[pylithapp.timedependent.interfaces.fault.output]
+writer.filename = fault_xz1-fault.vtk

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz1.exo
===================================================================
(Binary files differ)


Property changes on: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz1.exo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz1.jou
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz1.jou	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz1.jou	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,42 @@
+# Create mesh with +xz fault normal.
+
+reset
+
+brick x 200 y 200 z 200
+move volume 1 x 0 y 0 z -100
+
+create surface extended from surface 6
+move surface 7 x -100 y 0 z 100
+surface 7 rotate +45 about y
+move surface 7 x 0 y 0 z -100
+webcut volume 1 with plane surface 7
+delete surface 7
+
+imprint all
+merge all
+
+volume all size 50
+volume all scheme tetmesh
+mesh volume all
+
+# Create blocks and nodesets
+
+block 1 volume all
+
+group "fault" add node in surface 8
+nodeset 10 group fault
+nodeset 10 name "fault"
+
+group "boundary_nofault" add node in surface 6
+group "boundary_nofault" add node in surface 12
+group "boundary_nofault" add node in surface 10
+group "boundary_nofault" add node in surface 4
+group "boundary_nofault" add node in surface 9
+group "boundary_nofault" add node in surface 13
+group "boundary_nofault" remove node in group fault
+nodeset 1 group boundary_nofault
+nodeset 1 name "boundary_nofault"
+
+export mesh "fault_xz1.exo" dimension 3 overwrite
+
+

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz2.cfg
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz2.cfg	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz2.cfg	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,17 @@
+# -*- Python -*-
+[pylithapp]
+
+# ----------------------------------------------------------------------
+# mesh_generator
+# ----------------------------------------------------------------------
+[pylithapp.mesh_generator.reader]
+filename = fault_xz2.exo
+
+# ----------------------------------------------------------------------
+# output
+# ----------------------------------------------------------------------
+[pylithapp.problem.formulation.output.output]
+writer.filename = fault_xz2.vtk
+
+[pylithapp.timedependent.interfaces.fault.output]
+writer.filename = fault_xz2-fault.vtk

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz2.exo
===================================================================
(Binary files differ)


Property changes on: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz2.exo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz2.jou
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz2.jou	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_xz2.jou	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,43 @@
+# Create mesh with -xz fault normal.
+
+reset
+
+brick x 200 y 200 z 200
+move volume 1 x 0 y 0 z -100
+
+create surface extended from surface 6
+move surface 7 x -100 y 0 z 100
+surface 7 rotate -45 about y
+move surface 7 x 0 y 0 z -100
+webcut volume 1 with plane surface 7
+delete surface 7
+
+imprint all
+merge all
+
+volume all size 50
+volume all scheme tetmesh
+mesh volume all
+
+# Create blocks and nodesets
+
+block 1 volume all
+
+group "fault" add node in surface 8
+nodeset 10 group fault
+nodeset 10 name "fault"
+
+group "boundary_nofault" add node in surface 6
+group "boundary_nofault" add node in surface 12
+group "boundary_nofault" add node in surface 10
+group "boundary_nofault" add node in surface 4
+group "boundary_nofault" add node in surface 9
+group "boundary_nofault" add node in surface 13
+group "boundary_nofault" remove node in group fault
+nodeset 1 group boundary_nofault
+nodeset 1 name "boundary_nofault"
+
+export mesh "fault_xz2.exo" dimension 3 overwrite
+
+
+

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_y.cfg
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_y.cfg	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_y.cfg	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,17 @@
+# -*- Python -*-
+[pylithapp]
+
+# ----------------------------------------------------------------------
+# mesh_generator
+# ----------------------------------------------------------------------
+[pylithapp.mesh_generator.reader]
+filename = fault_y.exo
+
+# ----------------------------------------------------------------------
+# output
+# ----------------------------------------------------------------------
+[pylithapp.problem.formulation.output.output]
+writer.filename = fault_y.vtk
+
+[pylithapp.timedependent.interfaces.fault.output]
+writer.filename = fault_y-fault.vtk

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_y.exo
===================================================================
(Binary files differ)


Property changes on: short/3D/PyLith/trunk/tests/3d/slipdir/fault_y.exo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_y.jou
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_y.jou	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_y.jou	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,40 @@
+# Create mesh with +y fault normal.
+
+reset
+
+brick x 200 y 200 z 200
+move volume 1 x 0 y 0 z 100
+
+create surface extended from surface 5
+move surface 7 x 0 y -100 z 0
+webcut volume 1 with plane surface 7
+delete surface 7
+
+imprint all
+merge all
+
+volume all size 50
+volume all scheme tetmesh
+mesh volume all
+
+# Create blocks and nodesets
+
+block 1 volume all
+
+group "fault" add node in surface 8
+nodeset 10 group fault
+nodeset 10 name "fault"
+
+group "boundary_nofault" add node in surface 5
+group "boundary_nofault" add node in surface 14
+group "boundary_nofault" add node in surface 12
+group "boundary_nofault" add node in surface 3
+group "boundary_nofault" add node in surface 10
+group "boundary_nofault" add node in surface 17
+group "boundary_nofault" remove node in group fault
+nodeset 1 group boundary_nofault
+nodeset 1 name "boundary_nofault"
+
+export mesh "fault_y.exo" dimension 3 overwrite
+
+

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_z.cfg
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_z.cfg	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_z.cfg	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,24 @@
+# -*- Python -*-
+[pylithapp]
+
+# ----------------------------------------------------------------------
+# mesh_generator
+# ----------------------------------------------------------------------
+[pylithapp.mesh_generator.reader]
+filename = fault_z.exo
+
+# ----------------------------------------------------------------------
+# faults
+# ----------------------------------------------------------------------
+[pylithapp.timedependent.interfaces.fault]
+
+up_dir = [1.0,0.0,0.0]
+
+# ----------------------------------------------------------------------
+# output
+# ----------------------------------------------------------------------
+[pylithapp.problem.formulation.output.output]
+writer.filename = fault_z.vtk
+
+[pylithapp.timedependent.interfaces.fault.output]
+writer.filename = fault_z-fault.vtk

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_z.exo
===================================================================
(Binary files differ)


Property changes on: short/3D/PyLith/trunk/tests/3d/slipdir/fault_z.exo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: short/3D/PyLith/trunk/tests/3d/slipdir/fault_z.jou
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/fault_z.jou	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/fault_z.jou	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,34 @@
+# Create mesh with +z fault normal.
+
+reset
+
+brick x 200 y 200 z 200
+move volume 1 x 0 y 0 z 100
+
+create surface extended from surface 1
+move surface 7 x 0 y 0 z -100
+webcut volume 1 with plane surface 7
+delete surface 7
+
+imprint all
+merge all
+
+volume all size 50
+volume all scheme tetmesh
+mesh volume all
+
+# Create blocks and nodesets
+
+block 1 volume all
+
+group "fault" add node in surface 8
+nodeset 10 group fault
+nodeset 10 name "fault"
+
+group "boundary_nofault" add node in surface 1
+group "boundary_nofault" add node in surface 2
+nodeset 1 group boundary_nofault
+nodeset 1 name "boundary_nofault"
+
+export mesh "fault_z.exo" dimension 3 overwrite
+

Added: short/3D/PyLith/trunk/tests/3d/slipdir/matprops.spatialdb
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/matprops.spatialdb	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/matprops.spatialdb	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,14 @@
+#SPATIAL.ascii 1
+SimpleDB {
+  num-values = 3
+  value-names =  density vs vp
+  value-units =  kg/m**3  m/s  m/s
+  num-locs = 1
+  data-dim = 0
+  space-dim = 3
+  cs-data = cartesian {
+    to-meters = 1.0
+    space-dim = 3
+  }
+}
+0.0  0.0  0.0    2500.0  1000.0  1732.0

Added: short/3D/PyLith/trunk/tests/3d/slipdir/pylithapp.cfg
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/pylithapp.cfg	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/pylithapp.cfg	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,117 @@
+# -*- Python -*-
+[pylithapp]
+
+# ----------------------------------------------------------------------
+# journal
+# ----------------------------------------------------------------------
+[pylithapp.journal.info]
+timedependent = 1
+meshiocubit = 1
+faultcohesivekin = 1
+
+[pylithapp.journal.debug]
+pylithapp = 1
+problem = 1
+explicit = 1
+
+# ----------------------------------------------------------------------
+# mesh_generator
+# ----------------------------------------------------------------------
+[pylithapp.mesh_generator]
+reader = pylith.meshio.MeshIOCubit
+
+[pylithapp.mesh_generator.reader]
+
+# ----------------------------------------------------------------------
+# problem
+# ----------------------------------------------------------------------
+[pylithapp.timedependent]
+dimension = 3
+
+bc = [boundary]
+interfaces = [fault]
+
+materials = [elastic]
+
+[pylithapp.timedependent.formulation.time_step]
+total_time = 0.0*s
+dt = 1.0*year
+
+# ----------------------------------------------------------------------
+# materials
+# ----------------------------------------------------------------------
+[pylithapp.timedependent.materials]
+elastic = pylith.materials.ElasticPlaneStrain
+
+[pylithapp.timedependent.materials.elastic]
+
+label = Elastic material
+id = 1
+
+db_properties.iohandler.filename = matprops.spatialdb
+
+quadrature.cell = pylith.feassemble.FIATSimplex
+quadrature.cell.shape = tetrahedron
+
+# ----------------------------------------------------------------------
+# boundary conditions
+# ----------------------------------------------------------------------
+[pylithapp.timedependent.bc.boundary]
+
+bc_dof = [0,2]
+label = boundary_nofault
+
+# ----------------------------------------------------------------------
+# faults
+# ----------------------------------------------------------------------
+[pylithapp.timedependent.interfaces.fault]
+
+id = 100
+label = fault
+
+quadrature.cell = pylith.feassemble.FIATSimplex
+quadrature.cell.shape = triangle
+
+eq_srcs.rupture.slip_function = pylith.faults.StepSlipFn
+
+[pylithapp.timedependent.interfaces.fault.eq_srcs.rupture.slip_function]
+
+slip.iohandler.filename = slip.spatialdb
+slip_time.iohandler.filename = sliptime.spatialdb
+
+# ----------------------------------------------------------------------
+# PETSc
+# ----------------------------------------------------------------------
+[pylithapp.petsc]
+ksp_type = gmres
+pc_type = asm
+
+sub_pc_factor_shift_type = nonzero
+
+ksp_rtol = 1.0e-8
+ksp_atol = 1.0e-10
+ksp_max_it = 50
+ksp_gmres_restart = 25
+
+ksp_monitor = true
+#ksp_view = true
+#log_summary = true
+
+
+# ----------------------------------------------------------------------
+# output
+# ----------------------------------------------------------------------
+[pylithapp.problem.formulation.output.output]
+vertex_data_fields = [displacement]
+writer.time_format = %05.2f
+
+# Give basename for VTK fault output.
+[pylithapp.timedependent.interfaces.fault.output]
+writer.time_format = %05.2f
+vertex_info_fields = [strike_dir,dip_dir,normal_dir,final_slip_rupture]
+
+# Give basename for VTK output of state variables.
+[pylithapp.timedependent.materials.elastic.output]
+writer.filename = null.vtk
+#cell_info_fields = []
+cell_data_fields = []

Added: short/3D/PyLith/trunk/tests/3d/slipdir/slip.spatialdb
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/slip.spatialdb	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/slip.spatialdb	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,14 @@
+#SPATIAL.ascii 1
+SimpleDB {
+  num-values = 3
+  value-names =  left-lateral-slip  reverse-slip  fault-opening
+  value-units =  m  m m
+  num-locs = 1
+  data-dim = 0
+  space-dim = 3
+  cs-data = cartesian {
+    to-meters = 1.0
+    space-dim = 3
+  }
+}
+0.0  0.0  0.0    0.5  1.0  0.25

Added: short/3D/PyLith/trunk/tests/3d/slipdir/sliptime.spatialdb
===================================================================
--- short/3D/PyLith/trunk/tests/3d/slipdir/sliptime.spatialdb	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/3d/slipdir/sliptime.spatialdb	2010-06-10 02:25:51 UTC (rev 16967)
@@ -0,0 +1,14 @@
+#SPATIAL.ascii 1
+SimpleDB {
+  num-values = 1
+  value-names =  slip-time
+  value-units =  s
+  num-locs = 1
+  data-dim = 0
+  space-dim = 3
+  cs-data = cartesian {
+    to-meters = 1.0
+    space-dim = 3
+  }
+}
+0.0  0.0  0.0   -1.0

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg	2010-06-10 02:25:51 UTC (rev 16967)
@@ -10,8 +10,8 @@
 # The settings below turn on journal info for the specified components.
 # If you want less output to stdout, you can turn these off.
 [slipweakening_shear_sliding.journal.info]
-#timedependent = 1
-#implicit = 1
+timedependent = 1
+implicit = 1
 #petsc = 1
 #solvernonlinear = 1
 #meshioascii = 1
@@ -19,7 +19,7 @@
 #elasticityimplicit = 1
 #fiatlagrange = 1
 #quadrature1d = 1
-#faultcohesivedyn = 1
+faultcohesivedyn = 1
 
 # ----------------------------------------------------------------------
 # mesh_generator

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -736,9 +736,8 @@
   mesh->nondimensionalize(normalizer);
   
   const double upDir[] = { 0.0, 0.0, 1.0 };
-  const double normalDir[] = { 1.0, 0.0, 0.0 };
   
-  fault->initialize(*mesh, upDir, normalDir);
+  fault->initialize(*mesh, upDir);
   
   // Setup fields
   fields->add("disp(t)", "displacement");

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -367,7 +367,7 @@
 
   jacobian.assemble("final_assembly");
 
-  // MatView(jacobian.matrix(), PETSC_VIEWER_STDOUT_WORLD); // DEBUGGING
+  //MatView(jacobian.matrix(), PETSC_VIEWER_STDOUT_WORLD); // DEBUGGING
 
   const double* valsE = _data->jacobian;
   const int nrowsE = dispSection->sizeWithBC();
@@ -924,9 +924,8 @@
   mesh->nondimensionalize(normalizer);
 
   const double upDir[] = { 0.0, 0.0, 1.0 };
-  const double normalDir[] = { 1.0, 0.0, 0.0 };
   
-  fault->initialize(*mesh, upDir, normalDir); 
+  fault->initialize(*mesh, upDir); 
   
   delete[] sources; sources = 0;
   for (int i=0; i < nsrcs; ++i)

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -1329,10 +1329,10 @@
 // ----------------------------------------------------------------------
 
 const double pylith::faults::CohesiveDynDataHex8::_orientation[] = {
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
 };
 
 const double pylith::faults::CohesiveDynDataHex8::_area[] = {
@@ -1340,10 +1340,10 @@
 };
 
 const double pylith::faults::CohesiveDynDataHex8::_forcesInitial[] = {
-  3.063397471, -1.063397471, -2.063397471, 
-  3.121132498, -1.121132498, -2.121132498, 
-  3.178867525, -1.178867525, -2.178867525,
-  3.236602552, -1.236602552, -2.236602552,
+  3.063397471, -1.063397471, +2.063397471, 
+  3.121132498, -1.121132498, +2.121132498, 
+  3.178867525, -1.178867525, +2.178867525,
+  3.236602552, -1.236602552, +2.236602552,
 };
 
 
@@ -1414,18 +1414,18 @@
    5.200000000000,   7.200000000000,   9.200000000000,
    5.300000000000,   7.300000000000,   9.300000000000,
    5.400000000000,   7.400000000000,   9.400000000000,
-   5.500000000000,   7.502147646546,   9.501854987583,
-   5.600000000000,   7.601366849268,   9.601164065411,
-   5.700000000000,   7.700813991519,   9.700664113555,
-   5.800000000000,   7.800399117540,   9.800283216344,
+   5.500000000000,   7.504978662071,   9.495178588558,
+   5.600000000000,   7.604183996601,   9.595885186290,
+   5.700000000000,   7.703622549597,   9.696395508868,
+   5.800000000000,   7.803201980792,   9.796783683690,
    5.900000000000,   7.900000000000,   9.900000000000,
    5.000000000000,   7.000000000000,   9.000000000000,
    6.100000000000,   8.100000000000,  10.100000000000,
    6.200000000000,   8.200000000000,  10.200000000000,
-   6.300000000000,   8.297852353454,  10.298145012417,
-   6.500000000000,   8.498633150732,  10.498835934589,
-   6.700000000000,   8.699186008481,  10.699335886445,
-   6.900000000000,   8.899600882460,  10.899716783656,
+   6.300000000000,   8.295021337929,  10.304821411442,
+   6.500000000000,   8.495816003399,  10.504114813710,
+   6.700000000000,   8.696377450403,  10.703604491132,
+   6.900000000000,   8.896798019208,  10.903216316310,
   -5.824264068712,  -7.824264068712, -10.400000000000,
   -6.024264068712,  -8.024264068712, -10.600000000000,
   -6.224264068712,  -8.224264068712, -10.800000000000,
@@ -1433,10 +1433,10 @@
 };
 
 const double pylith::faults::CohesiveDynDataHex8::_slipSlipE[] = {
-  0.004295293093,  0.003709975165,  0.0,
-  0.002733698536,  0.002328130822,  0.0,
-  0.001627983037,  0.001328227109,  0.0,
-  0.000798235080,  0.000566432689,  0.0,
+   0.009957324142,   0.009642822884,   0.000000000000,
+   0.008367993202,   0.008229627421,   0.000000000000,
+   0.007245099193,   0.007208982264,   0.000000000000,
+   0.006403961584,   0.006432632620,   0.000000000000,
 };
 
 // ----------------------------------------------------------------------
@@ -1472,18 +1472,18 @@
    5.200000000000,   7.200000000000,   9.200000000000,
    5.300000000000,   7.300000000000,   9.300000000000,
    5.400000000000,   7.400000000000,   9.400000000000,
-   5.500000000000,   7.520764683862,   9.493622329940,
-   5.600000000000,   7.633324383533,   9.609428688349,
-   5.700000000000,   7.742157282680,   9.720808020010,
-   5.810556284102,   7.860109359324,   9.840397686530,
+   5.500000000000,   7.442454974471,   9.676228188067,
+   5.600000000000,   7.555401305851,   9.759311696661,
+   5.700000000000,   7.664478333931,   9.847182893464,
+   5.800000000000,   7.782595639240,   9.927084810574,
    5.900000000000,   7.900000000000,   9.900000000000,
    5.000000000000,   7.000000000000,   9.000000000000,
    6.100000000000,   8.100000000000,  10.100000000000,
    6.200000000000,   8.200000000000,  10.200000000000,
-   6.300000000000,   8.279235316138,  10.306377670060,
-   6.500000000000,   8.466675616467,  10.490571311651,
-   6.700000000000,   8.657842717320,  10.679191979990,
-   6.889443715898,   8.839890640676,  10.859602313470,
+   6.300000000000,   8.357545025529,  10.123771811933,
+   6.500000000000,   8.544598694149,  10.340688303339,
+   6.700000000000,   8.735521666069,  10.552817106536,
+   6.900000000000,   8.917404360760,  10.772915189426,
   -5.400000000000,  -7.400000000000,  -9.400000000000,
   -5.600000000000,  -7.600000000000,  -9.600000000000,
   -5.800000000000,  -7.800000000000,  -9.800000000000,
@@ -1491,10 +1491,10 @@
 };
 
 const double pylith::faults::CohesiveDynDataHex8::_slipOpenE[] = {
-  0.041529367723, -0.012755340119, 0.0,
-  0.066648767067,  0.018857376697, 0.0,
-  0.084314565359,  0.041616040020,  0.0,
-  0.120218718648,  0.080795373061,  0.021112568204,
+  -0.115090051058,  -0.352456376134,   0.000000000000,
+  -0.089197388297,  -0.318623393323,   0.000000000000,
+  -0.071043332138,  -0.294365786929,   0.000000000000,
+  -0.034808721519,  -0.254169621148,   0.000000000000,
 };
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -459,9 +459,9 @@
 // ----------------------------------------------------------------------
 
 const double pylith::faults::CohesiveDynDataTet4::_orientation[] = {
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
 };
 
 const double pylith::faults::CohesiveDynDataTet4::_area[] = {
@@ -471,9 +471,9 @@
 };
 
 const double pylith::faults::CohesiveDynDataTet4::_forcesInitial[] = {
-  3.1/3.0, -1.1/3.0, -2.1/3.0,
-  3.1/3.0, -1.1/3.0, -2.1/3.0,
-  3.1/3.0, -1.1/3.0, -2.1/3.0,
+  3.1/3.0, -1.1/3.0, +2.1/3.0,
+  3.1/3.0, -1.1/3.0, +2.1/3.0,
+  3.1/3.0, -1.1/3.0, +2.1/3.0,
 };
 
 
@@ -523,23 +523,23 @@
 
 // Output
 const double pylith::faults::CohesiveDynDataTet4::_fieldIncrSlipE[] = {
-  8.100000000000,   9.100000000000,  10.100000000000,
-  8.200000000000,   8.809232141461,   9.862173674926,
-  8.300000000000,   9.190332288811,  10.187259296949,
-  8.400000000000,   9.453729592911,  10.437030750553,
-  8.500000000000,   9.500000000000,  10.500000000000,
-  8.600000000000,   9.990767858539,  10.937826325074,
-  8.800000000000,   9.909667711189,  10.912740703051,
-  8.000000000000,   8.946270407089,   9.962969249447,
- -7.300777685147,  -8.252092036995, -10.700000000000,
- -7.500201409882,  -8.452606339630, -10.900000000000,
- -6.702681322117,  -7.650402548711, -10.100000000000,
+   8.100000000000,   9.100000000000,  10.100000000000,
+   8.200000000000,   8.391727731714,  10.956284985259,
+   8.300000000000,   8.791277340217,  10.815192651071,
+   8.400000000000,   9.060755249362,  10.758883268626,
+   8.500000000000,   9.500000000000,  10.500000000000,
+   8.600000000000,  10.408272268286,   9.843715014741,
+   8.800000000000,  10.308722659783,  10.284807348929,
+   8.000000000000,   9.339244750638,   9.641116731374,
+  -7.300777685147,  -8.252092036995, -10.700000000000,
+  -7.500201409882,  -8.452606339630, -10.900000000000,
+  -6.702681322117,  -7.650402548711, -10.100000000000,
 };
 
 const double pylith::faults::CohesiveDynDataTet4::_slipSlipE[] = {
-  -0.78153572, -0.67565265, 0.0,
-  -0.21933542, -0.22548141, 0.0,
-   0.10745919,  0.0740615,  0.0,
+  -1.616544536572,  -1.512569970519,   0.000000000000,
+  -1.017445319566,  -1.030385302142,   0.000000000000,
+  -0.678489501275,  -0.717766537252,   0.000000000000,
 };
 
 // ----------------------------------------------------------------------
@@ -563,22 +563,22 @@
 // Output
 const double pylith::faults::CohesiveDynDataTet4::_fieldIncrOpenE[] = {
    8.100000000000,   9.100000000000,  10.100000000000,
-   8.200000000000,   9.135497272962,  10.179476872604,
-   8.300000000000,   9.499046287062,  10.492579766051,
-   8.626823377123,   9.756303461532,  10.737559383723,
+   8.200000000000,   8.707485448105,  11.300792216319,
+   8.300000000000,   9.089936432069,  11.135493258511,
+   8.400000000000,   9.353421152116,  11.068689140292,
    8.500000000000,   9.500000000000,  10.500000000000,
-   8.600000000000,   9.664502727038,  10.620523127396,
-   8.800000000000,   9.600953712938,  10.607420233949,
-   7.773176622877,   8.643696538468,   9.662440616277,
+   8.600000000000,  10.092514551895,   9.499207783681,
+   8.800000000000,  10.010063567931,   9.964506741489,
+   8.000000000000,   9.046578847884,   9.331310859708,
   -7.700000000000,  -8.700000000000,  -9.700000000000,
   -7.900000000000,  -8.900000000000,  -9.900000000000,
   -7.100000000000,  -8.100000000000,  -9.100000000000,
 };
 
 const double pylith::faults::CohesiveDynDataTet4::_slipOpenE[] = {
-  -0.12900545, -0.04104625, 0.0,
-  0.39809257,  0.38515953, 0.0,
-  0.71260692,  0.67511877,  0.45364675,
+  -0.985029103789,  -2.201584432637,   0.000000000000,
+  -0.420127135861,  -1.670986517021,   0.000000000000,
+  -0.093157695768,  -1.337378280584,   0.000000000000,
 };
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -194,10 +194,10 @@
 
 
 const double pylith::faults::CohesiveKinDataHex8::_orientation[] = {
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
 };
 
 const double pylith::faults::CohesiveKinDataHex8::_area[] = {
@@ -209,22 +209,22 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
- -9.4,-5.4,-7.4, // 6
- -9.6,-5.6,-7.6, // 7
- -9.8,-5.8,-7.8, // 8
- -9.0,-5.0,-7.0, // 9
+ -9.4,-5.4,+7.4, // 6
+ -9.6,-5.6,+7.6, // 7
+ -9.8,-5.8,+7.8, // 8
+ -9.0,-5.0,+7.0, // 9
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
- +9.4,+5.4,+7.4, // 14
- +9.6,+5.6,+7.6, // 15
- +9.8,+5.8,+7.8, // 16
- +9.0,+5.0,+7.0, // 17
-  0.8+1.82575588523, 0.8+-0.55566483464, 0.8+0.07938069066, // 18 (constraint)
-  0.9+1.69682900001, 0.9+-0.56560966667, 0.9+0.14140241667, // 19 (constraint)
-  1.0+1.51709826228, 1.0+-0.54615537442, 1.0+0.18205179147, // 20 (constraint)
-  1.1+1.29378670385, 1.1+-0.49761027071, 1.1+0.19904410828, // 21 (constraint)
+ +9.4,+5.4,-7.4, // 14
+ +9.6,+5.6,-7.6, // 15
+ +9.8,+5.8,-7.8, // 16
+ +9.0,+5.0,-7.0, // 17
+  0.8+1.82575588523, -0.8+-0.55566483464, 0.8+0.07938069066, // 18 (constraint)
+  0.9+1.69682900001, -0.9+-0.56560966667, 0.9+0.14140241667, // 19 (constraint)
+  1.0+1.51709826228, -1.0+-0.54615537442, 1.0+0.18205179147, // 20 (constraint)
+  1.1+1.29378670385, -1.1+-0.49761027071, 1.1+0.19904410828, // 21 (constraint)
 };
 
 const double pylith::faults::CohesiveKinDataHex8::_residualIncr[] = {
@@ -232,22 +232,22 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
- -9.4,-5.4,-7.4, // 6
- -9.6,-5.6,-7.6, // 7
- -9.8,-5.8,-7.8, // 8
- -9.0,-5.0,-7.0, // 9
+ -9.4,-5.4,+7.4, // 6
+ -9.6,-5.6,+7.6, // 7
+ -9.8,-5.8,+7.8, // 8
+ -9.0,-5.0,+7.0, // 9
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
- +9.4,+5.4,+7.4, // 14
- +9.6,+5.6,+7.6, // 15
- +9.8,+5.8,+7.8, // 16
- +9.0,+5.0,+7.0, // 17
-  0.8+1.82575588523, 0.8+-0.55566483464, 0.8+0.07938069066, // 18 (constraint)
-  0.9+1.69682900001, 0.9+-0.56560966667, 0.9+0.14140241667, // 19 (constraint)
-  1.0+1.51709826228, 1.0+-0.54615537442, 1.0+0.18205179147, // 20 (constraint)
-  1.1+1.29378670385, 1.1+-0.49761027071, 1.1+0.19904410828, // 21 (constraint)
+ +9.4,+5.4,-7.4, // 14
+ +9.6,+5.6,-7.6, // 15
+ +9.8,+5.8,-7.8, // 16
+ +9.0,+5.0,-7.0, // 17
+  0.8+1.82575588523, -0.8+-0.55566483464, 0.8+0.07938069066, // 18 (constraint)
+  0.9+1.69682900001, -0.9+-0.56560966667, 0.9+0.14140241667, // 19 (constraint)
+  1.0+1.51709826228, -1.0+-0.54615537442, 1.0+0.18205179147, // 20 (constraint)
+  1.1+1.29378670385, -1.1+-0.49761027071, 1.1+0.19904410828, // 21 (constraint)
 };
 
 const double pylith::faults::CohesiveKinDataHex8::_jacobian[] = {
@@ -547,7 +547,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,+1.0, 0.0, // 18
+  0.0,-1.0, 0.0, // 18
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -608,7 +608,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,+1.0, 0.0, // 19
+  0.0,-1.0, 0.0, // 19
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 8x
@@ -669,7 +669,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,+1.0, 0.0, // 20
+  0.0,-1.0, 0.0, // 20
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 9x
   0.0, 0.0, 0.0,
@@ -730,7 +730,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,+1.0, 0.0, // 21
+  0.0,-1.0, 0.0, // 21
   0.0, 0.0, 0.0, // 10x
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1027,7 +1027,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,-1.0, 0.0, // 18
+  0.0,+1.0, 0.0, // 18
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1088,7 +1088,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,-1.0, 0.0, // 19
+  0.0,+1.0, 0.0, // 19
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 16x
@@ -1149,7 +1149,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,-1.0, 0.0, // 20
+  0.0,+1.0, 0.0, // 20
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 17x
   0.0, 0.0, 0.0,
@@ -1210,7 +1210,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,-1.0, 0.0, // 21
+  0.0,+1.0, 0.0, // 21
   0.0, 0.0, 0.0, // 18x
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1235,7 +1235,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,+1.0, // 6
+  0.0, 0.0,-1.0, // 6
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1243,7 +1243,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,-1.0, // 14
+  0.0, 0.0,+1.0, // 14
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1296,7 +1296,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,+1.0, // 7
+  0.0, 0.0,-1.0, // 7
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1304,7 +1304,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,-1.0, // 15
+  0.0, 0.0,+1.0, // 15
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1357,7 +1357,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,+1.0, // 8
+  0.0, 0.0,-1.0, // 8
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1365,7 +1365,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,-1.0, // 16
+  0.0, 0.0,+1.0, // 16
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1418,7 +1418,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,+1.0, // 9
+  0.0, 0.0,-1.0, // 9
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1426,7 +1426,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,-1.0, // 17
+  0.0, 0.0,+1.0, // 17
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1458,22 +1458,22 @@
   3.2, 4.2, 5.2,
   3.3, 4.3, 5.3,
   3.4, 4.4, 5.4,
-  10.1749505588, 9.31910094671, 10.5467746601, // 6
-  10.1039043952, 9.3565301613, 10.5118017742, // 7
-  10.0557317781, 9.37031383702, 10.5151576069, // 8
-  9.46707670425, 8.80701959867, 9.99822415528, // 9
+  10.1749505588, 9.31910094671, 1.19608248275, // 6
+  10.1039043952, 9.3565301613, 1.55916596774, // 7
+  10.0557317781, 9.37031383702, 1.88484239309, // 8
+  9.46707670425, 8.80701959867, 2.73150557445, // 9
   3.9, 4.9, 5.9,
   3.0, 4.0, 5.0,
   3.1, 4.1, 5.1,
   3.2, 4.2, 5.2,
-  -4.40186602934, -1.26050109236, -0.523201530893, // 14
-  -3.43749802151, -0.573632172048, 0.260744774195, // 15
-  -2.65573177809, 0.0296861629776, 0.884842393092, // 16
-  -1.46880950929, 1.10387616968, 1.92273501079, // 17
-  -7.22865142007, -7.57016199016, -10.0124258381, // 18
-  -7.61044825807, -7.85888283871, -10.4062470323, // 19
-  -7.93953352294, -8.18576793174, -10.8047440227, // 20
-  -7.21263527761, -7.55680347951, -10.2007380677, // 21
+  -4.40186602934, -1.26050109236, 10.2660586738, // 14
+  -3.43749802151, -0.573632172048, 9.81022296774, // 15
+  -2.65573177809, 0.0296861629776, 9.51515760691, // 16
+  -1.46880950929, 1.10387616968, 8.80699471894, // 17
+  -7.22865142007, -6.45587627588, -10.0124258381, // 18
+  -7.61044825807, -6.46533445161, -10.4062470323, // 19
+  -7.93953352294, -6.48576793174, -10.8047440227, // 20
+  -7.21263527761, -5.52328996599, -10.2007380677, // 21
 };
 
 pylith::faults::CohesiveKinDataHex8::CohesiveKinDataHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -93,9 +93,9 @@
 
 
 const double pylith::faults::CohesiveKinDataTet4f::_orientation[] = {
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
 };
 
 const double pylith::faults::CohesiveKinDataTet4f::_area[] = {
@@ -129,30 +129,30 @@
 
 const double pylith::faults::CohesiveKinDataTet4f::_residual[] = {
   0.0,  0.0,  0.0,
- -9.7, -7.7, -8.7, // 3
- -9.9, -7.9, -8.9, // 4
- -9.1, -7.1, -8.1, // 5
+ -9.7, -7.7, +8.7, // 3
+ -9.9, -7.9, +8.9, // 4
+ -9.1, -7.1, +8.1, // 5
   0.0,  0.0,  0.0,
- +9.7, +7.7, +8.7, // 7
- +9.9, +7.9, +8.9, // 8
- +9.1, +7.1, +8.1, // 9
-  0.4+1.82575588523,  0.4+-0.55566483464,  0.4+0.07938069066, // 10
-  0.5+1.69682900001,  0.5+-0.56560966667,  0.5+0.14140241667, // 11
- -0.4+1.51709826228, -0.4+-0.54615537442, -0.4+0.18205179147, // 12
+ +9.7, +7.7, -8.7, // 7
+ +9.9, +7.9, -8.9, // 8
+ +9.1, +7.1, -8.1, // 9
+  0.4+1.82575588523,  -0.4+-0.55566483464,  0.4+0.07938069066, // 10
+  0.5+1.69682900001,  -0.5+-0.56560966667,  0.5+0.14140241667, // 11
+ -0.4+1.51709826228,  +0.4+-0.54615537442, -0.4+0.18205179147, // 12
 };
 
 const double pylith::faults::CohesiveKinDataTet4f::_residualIncr[] = {
   0.0,  0.0,  0.0,
- -9.7, -7.7, -8.7, // 3
- -9.9, -7.9, -8.9, // 4
- -9.1, -7.1, -8.1, // 5
+ -9.7, -7.7, +8.7, // 3
+ -9.9, -7.9, +8.9, // 4
+ -9.1, -7.1, +8.1, // 5
   0.0,  0.0,  0.0,
- +9.7, +7.7, +8.7, // 7
- +9.9, +7.9, +8.9, // 8
- +9.1, +7.1, +8.1, // 9
-  0.4+1.82575588523,  0.4+-0.55566483464,  0.4+0.07938069066, // 10
-  0.5+1.69682900001,  0.5+-0.56560966667,  0.5+0.14140241667, // 11
- -0.4+1.51709826228, -0.4+-0.54615537442, -0.4+0.18205179147, // 12
+ +9.7, +7.7, -8.7, // 7
+ +9.9, +7.9, -8.9, // 8
+ +9.1, +7.1, -8.1, // 9
+  0.4+1.82575588523, -0.4+-0.55566483464,  0.4+0.07938069066, // 10
+  0.5+1.69682900001, -0.5+-0.56560966667,  0.5+0.14140241667, // 11
+ -0.4+1.51709826228, +0.4+-0.54615537442, -0.4+0.18205179147, // 12
 };
 
 const double pylith::faults::CohesiveKinDataTet4f::_jacobian[] = {
@@ -219,7 +219,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,+1.0, 0.0, // 10
+  0.0,-1.0, 0.0, // 10
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 4x
@@ -253,7 +253,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,+1.0, 0.0, // 11
+  0.0,-1.0, 0.0, // 11
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 5x
   0.0, 0.0, 0.0,
@@ -287,7 +287,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,+1.0, 0.0, // 12
+  0.0,-1.0, 0.0, // 12
   0.0, 0.0, 0.0, // 6x
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -351,7 +351,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,-1.0, 0.0, // 10
+  0.0,+1.0, 0.0, // 10
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 8x
@@ -385,7 +385,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,-1.0, 0.0, // 11
+  0.0,+1.0, 0.0, // 11
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 9x
   0.0, 0.0, 0.0,
@@ -419,7 +419,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,-1.0, 0.0, // 12
+  0.0,+1.0, 0.0, // 12
   0.0, 0.0, 0.0, // 10x
   0.0,+1.0, 0.0, // 3
   0.0, 0.0, 0.0,
@@ -432,11 +432,11 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 10y
-  0.0, 0.0,+1.0, // 3
+  0.0, 0.0,-1.0, // 3
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,-1.0, // 7
+  0.0, 0.0,+1.0, // 7
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -466,11 +466,11 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 11y
   0.0, 0.0, 0.0,
-  0.0, 0.0,+1.0, // 4
+  0.0, 0.0,-1.0, // 4
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,-1.0, // 8
+  0.0, 0.0,+1.0, // 8
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -500,11 +500,11 @@
   0.0, 0.0, 0.0, // 12y
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,+1.0, // 5
+  0.0, 0.0,-1.0, // 5
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,-1.0, // 9
+  0.0, 0.0,+1.0, // 9
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -126,10 +126,10 @@
 
 
 const double pylith::faults::CohesiveKinSrcsDataHex8::_orientation[] = {
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
-  0.0, -1.0, 0.0,    0.0, 0.0, -1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
+  0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
 };
 
 const double pylith::faults::CohesiveKinSrcsDataHex8::_area[] = {
@@ -164,22 +164,22 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
- -9.4,-5.4,-7.4, // 6
- -9.6,-5.6,-7.6, // 7
- -9.8,-5.8,-7.8, // 8
- -9.0,-5.0,-7.0, // 9
+ -9.4,-5.4,+7.4, // 6
+ -9.6,-5.6,+7.6, // 7
+ -9.8,-5.8,+7.8, // 8
+ -9.0,-5.0,+7.0, // 9
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
- +9.4,+5.4,+7.4, // 14
- +9.6,+5.6,+7.6, // 15
- +9.8,+5.8,+7.8, // 16
- +9.0,+5.0,+7.0, // 17
-  0.8+1.82575588523+0.91680340354, 0.8+-0.55566483464-0.27902712282, 0.8+0.07938069066+0.03986101755, // 18 (constraint)
-  0.9+1.69682900001+0.62551316338, 0.9+-0.56560966667-0.20850438779, 0.9+0.14140241667+0.05212609695, // 19 (constraint)
-  1.0+1.51709826228+0.34903622931, 1.0+-0.54615537442-0.12565304255, 1.0+0.18205179147+0.04188434752, // 20 (constraint)
-  1.1+1.29378670385+0.12855127934, 1.1+-0.49761027071+-0.04944279975, 1.1+0.19904410828+0.01977711990, // 21 (constraint)
+ +9.4,+5.4,-7.4, // 14
+ +9.6,+5.6,-7.6, // 15
+ +9.8,+5.8,-7.8, // 16
+ +9.0,+5.0,-7.0, // 17
+  0.8+1.82575588523+0.91680340354, -0.8+-0.55566483464-0.27902712282, 0.8+0.07938069066+0.03986101755, // 18 (constraint)
+  0.9+1.69682900001+0.62551316338, -0.9+-0.56560966667-0.20850438779, 0.9+0.14140241667+0.05212609695, // 19 (constraint)
+  1.0+1.51709826228+0.34903622931, -1.0+-0.54615537442-0.12565304255, 1.0+0.18205179147+0.04188434752, // 20 (constraint)
+  1.1+1.29378670385+0.12855127934, -1.1+-0.49761027071+-0.04944279975, 1.1+0.19904410828+0.01977711990, // 21 (constraint)
 };
 
 const double pylith::faults::CohesiveKinSrcsDataHex8::_residualIncr[] = {
@@ -187,22 +187,22 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
- -9.4,-5.4,-7.4, // 6
- -9.6,-5.6,-7.6, // 7
- -9.8,-5.8,-7.8, // 8
- -9.0,-5.0,-7.0, // 9
+ -9.4,-5.4,+7.4, // 6
+ -9.6,-5.6,+7.6, // 7
+ -9.8,-5.8,+7.8, // 8
+ -9.0,-5.0,+7.0, // 9
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
- +9.4,+5.4,+7.4, // 14
- +9.6,+5.6,+7.6, // 15
- +9.8,+5.8,+7.8, // 16
- +9.0,+5.0,+7.0, // 17
-  0.8+1.82575588523+0.91680340354, 0.8+-0.55566483464-0.27902712282, 0.8+0.07938069066+0.03986101755, // 18 (constraint)
-  0.9+1.69682900001+0.62551316338, 0.9+-0.56560966667-0.20850438779, 0.9+0.14140241667+0.05212609695, // 19 (constraint)
-  1.0+1.51709826228+0.34903622931, 1.0+-0.54615537442-0.12565304255, 1.0+0.18205179147+0.04188434752, // 20 (constraint)
-  1.1+1.29378670385+0.12855127934, 1.1+-0.49761027071+-0.04944279975, 1.1+0.19904410828+0.01977711990, // 21 (constraint)
+ +9.4,+5.4,-7.4, // 14
+ +9.6,+5.6,-7.6, // 15
+ +9.8,+5.8,-7.8, // 16
+ +9.0,+5.0,-7.0, // 17
+  0.8+1.82575588523+0.91680340354, -0.8+-0.55566483464-0.27902712282, 0.8+0.07938069066+0.03986101755, // 18 (constraint)
+  0.9+1.69682900001+0.62551316338, -0.9+-0.56560966667-0.20850438779, 0.9+0.14140241667+0.05212609695, // 19 (constraint)
+  1.0+1.51709826228+0.34903622931, -1.0+-0.54615537442-0.12565304255, 1.0+0.18205179147+0.04188434752, // 20 (constraint)
+  1.1+1.29378670385+0.12855127934, -1.1+-0.49761027071+-0.04944279975, 1.1+0.19904410828+0.01977711990, // 21 (constraint)
 };
 
 const double pylith::faults::CohesiveKinSrcsDataHex8::_jacobian[] = {
@@ -502,7 +502,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,+1.0, 0.0, // 18
+  0.0,-1.0, 0.0, // 18
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -563,7 +563,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,+1.0, 0.0, // 19
+  0.0,-1.0, 0.0, // 19
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 8x
@@ -624,7 +624,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,+1.0, 0.0, // 20
+  0.0,-1.0, 0.0, // 20
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 9x
   0.0, 0.0, 0.0,
@@ -685,7 +685,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,+1.0, 0.0, // 21
+  0.0,-1.0, 0.0, // 21
   0.0, 0.0, 0.0, // 10x
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -982,7 +982,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,-1.0, 0.0, // 18
+  0.0,+1.0, 0.0, // 18
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1043,7 +1043,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,-1.0, 0.0, // 19
+  0.0,+1.0, 0.0, // 19
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 16x
@@ -1104,7 +1104,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,-1.0, 0.0, // 20
+  0.0,+1.0, 0.0, // 20
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0, // 17x
   0.0, 0.0, 0.0,
@@ -1165,7 +1165,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0,-1.0, 0.0, // 21
+  0.0,+1.0, 0.0, // 21
   0.0, 0.0, 0.0, // 18x
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1190,7 +1190,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,+1.0, // 6
+  0.0, 0.0,-1.0, // 6
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1198,7 +1198,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,-1.0, // 14
+  0.0, 0.0,+1.0, // 14
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1251,7 +1251,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,+1.0, // 7
+  0.0, 0.0,-1.0, // 7
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1259,7 +1259,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,-1.0, // 15
+  0.0, 0.0,+1.0, // 15
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1312,7 +1312,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,+1.0, // 8
+  0.0, 0.0,-1.0, // 8
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1320,7 +1320,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,-1.0, // 16
+  0.0, 0.0,+1.0, // 16
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1373,7 +1373,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,+1.0, // 9
+  0.0, 0.0,-1.0, // 9
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1381,7 +1381,7 @@
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
-  0.0, 0.0,-1.0, // 17
+  0.0, 0.0,+1.0, // 17
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/adjustsoln.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/adjustsoln.py	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/adjustsoln.py	2010-06-10 02:25:51 UTC (rev 16967)
@@ -226,7 +226,7 @@
         Cpz = 0.0
         Cqx = 0.0
         Cqy = 0.0
-        Cqz = -1.0
+        Cqz = +1.0
         Crx = -1.0
         Cry = 0.0
         Crz = 0.0
@@ -239,13 +239,13 @@
             
             # vertex i: 6
             Aix = 1.5; Aiy = 1.5; Aiz = 1.5
-            rix = -9.4; riy = -5.4; riz = -7.4
+            rix = -9.4; riy = -5.4; riz = +7.4
             uix = 4.5; uiy = 6.5; uiz = 8.5
             duix = 3.5; duiy = 4.5; duiz = 5.5
             
             # vertex j: 14
             Ajx = 1.3; Ajy = 1.3; Ajz = 1.3
-            rjx = +9.4; rjy = +5.4; rjz = +7.4
+            rjx = +9.4; rjy = +5.4; rjz = -7.4
             ujx = 5.3; ujy = 7.3; ujz = 9.3
             dujx = 3.3; dujy = 4.3; dujz = 5.3
             
@@ -257,13 +257,13 @@
             
             # vertex i: 7
             Aix = 1.6; Aiy = 1.6; Aiz = 1.6
-            rix = -9.6; riy = -5.6; riz = -7.6
+            rix = -9.6; riy = -5.6; riz = +7.6
             uix = 4.6; uiy = 6.6; uiz = 8.6
             duix = 3.6; duiy = 4.6; duiz = 5.6
             
             # vertex j: 15
             Ajx = 1.5; Ajy = 1.5; Ajz = 1.5
-            rjx = +9.6; rjy = +5.6; rjz = +7.6
+            rjx = +9.6; rjy = +5.6; rjz = -7.6
             ujx = 5.5; ujy = 7.5; ujz = 9.5
             dujx = 3.5; dujy = 4.5; dujz = 5.5
             
@@ -275,13 +275,13 @@
             
             # vertex i: 8
             Aix = 1.7; Aiy = 1.7; Aiz = 1.7
-            rix = -9.8; riy = -5.8; riz = -7.8
+            rix = -9.8; riy = -5.8; riz = +7.8
             uix = 4.7; uiy = 6.7; uiz = 8.7
             duix = 3.7; duiy = 4.7; duiz = 5.7
             
             # vertex j: 16
             Ajx = 1.7; Ajy = 1.7; Ajz = 1.7
-            rjx = +9.8; rjy = +5.8; rjz = +7.8
+            rjx = +9.8; rjy = +5.8; rjz = -7.8
             ujx = 5.7; ujy = 7.7; ujz = 9.7
             dujx = 3.7; dujy = 4.7; dujz = 5.7
             
@@ -293,13 +293,13 @@
             
             # vertex i: 9
             Aix = 1.8; Aiy = 1.8; Aiz = 1.8
-            rix = -9.0; riy = -5.0; riz = -7.0
+            rix = -9.0; riy = -5.0; riz = +7.0
             uix = 4.8; uiy = 6.8; uiz = 8.8
             duix = 3.8; duiy = 4.8; duiz = 5.8
             
             # vertex j: 17
             Ajx = 1.9; Ajy = 1.9; Ajz = 1.9
-            rjx = +9.0; rjy = +5.0; rjz = +7.0
+            rjx = +9.0; rjy = +5.0; rjz = -7.0
             ujx = 5.9; ujy = 7.9; ujz = 9.9
             dujx = 3.9; dujy = 4.9; dujz = 5.9
             

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/cohesivedyn.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/cohesivedyn.py	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/cohesivedyn.py	2010-06-10 02:25:51 UTC (rev 16967)
@@ -1,6 +1,6 @@
 cell = "hex8"
 dim = "3d"
-testCase = "open"
+testCase = "slip"
 
 import numpy
 
@@ -516,7 +516,7 @@
     print "dlagrange1",dlagrange1
 
     D = numpy.array([[ 0, -1, 0,],
-                     [ 0, 0, -1,],
+                     [ 0, 0, +1,],
                      [ -1, 0, 0,],])
 
     Z = numpy.zeros([3,3])

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc	2010-06-10 02:25:51 UTC (rev 16967)
@@ -338,8 +338,7 @@
     fault.frictionModel(&friction);
     
     const double upDir[] = { 0.0, 0.0, 1.0 };
-    const double normalDir[] = { 1.0, 0.0, 0.0 };
-    fault.initialize(mesh, upDir, normalDir);
+    fault.initialize(mesh, upDir);
     const int vertex = 2;
 
     const double slip = 0.25;
@@ -782,8 +781,7 @@
   fault->frictionModel(friction);
   
   const double upDir[] = { 0.0, 0.0, 1.0 };
-  const double normalDir[] = { 1.0, 0.0, 0.0 };
-  fault->initialize(*mesh, upDir, normalDir);
+  fault->initialize(*mesh, upDir);
 } // _initialize
 
 

Modified: short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py	2010-06-10 02:25:51 UTC (rev 16967)
@@ -303,7 +303,6 @@
     fault.inventory.matId = 10
     fault.inventory.faultLabel = "fault"
     fault.inventory.upDir = [0, 0, 1]
-    fault.inventory.normalDir = [1, 0, 0]
     fault.inventory.faultQuadrature = quadrature
     fault.inventory.friction = friction
     fault._configure()

Modified: short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.py	2010-06-10 02:11:37 UTC (rev 16966)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.py	2010-06-10 02:25:51 UTC (rev 16967)
@@ -331,7 +331,6 @@
     fault.inventory.matId = 10
     fault.inventory.faultLabel = "fault"
     fault.inventory.upDir = [0, 0, 1]
-    fault.inventory.normalDir = [1, 0, 0]
     fault.inventory.faultQuadrature = quadrature
     fault._configure()
     eqsrc = fault.eqsrcs.components()[0]



More information about the CIG-COMMITS mailing list