[cig-commits] r20171 - in short/3D/PyLith/branches/v1.7-trunk/tests_auto: 1d/line3 2d/quad4 2d/tri3

brad at geodynamics.org brad at geodynamics.org
Thu May 17 17:03:13 PDT 2012


Author: brad
Date: 2012-05-17 17:03:13 -0700 (Thu, 17 May 2012)
New Revision: 20171

Modified:
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestAxial.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestDislocation.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestLine3.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/axialextension.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/dislocation.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestAxialDisp.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestDislocation.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionCompression.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionOpening.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionShearSliding.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionShearStick.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestLgDeformRigidBody.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestLgDeformTraction.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestQuad4.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestShearDisp.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningCompression.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningOpening.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningShearSliding.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningShearStick.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp_gendb.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/dislocation.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/dislocation_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_compression.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_compression_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_opening.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_opening_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_sliding.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_sliding_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_stick.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_stick_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformrigidbody.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformtraction.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformtraction_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/rigidbody_gendb.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/rigidbody_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp_gendb.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_compression.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_compression_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_opening.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_opening_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_sliding_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_stick.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_stick_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/testpylith.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/TestShearDisp.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/axialdisp.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp.cfg
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp_gendb.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp_soln.py
   short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/testpylith.py
Log:
Finished converting full-scale automated test to HDF5 output with checks using h5py.

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestAxial.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestAxial.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestAxial.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -22,8 +22,6 @@
 
 import numpy
 from TestLine3 import TestLine3
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
 
 
 # Local version of PyLithApp
@@ -58,10 +56,6 @@
     TestLine3.setUp(self)
     run_pylith()
     self.outputRoot = "axialextension"
-    if has_vtk():
-      self.reader = VTKDataReader()
-    else:
-      self.reader = None
     return
 
 
@@ -71,8 +65,8 @@
     """
     nvertices = self.mesh['nvertices']
     spaceDim = self.mesh['spaceDim']    
-    disp = numpy.zeros( (nvertices, spaceDim), dtype=numpy.float64)
-    disp[:,0] = -0.2 + 0.1 * vertices[:,0]
+    disp = numpy.zeros( (1, nvertices, spaceDim), dtype=numpy.float64)
+    disp[0,:,0] = -0.2 + 0.1 * vertices[:,0]
 
     return disp
 
@@ -87,12 +81,11 @@
     tensorSize = self.mesh['tensorSize']
 
     if name == "total_strain":
-      stateVar = exx*numpy.ones( (ncells, tensorSize), dtype=numpy.float64)
+      stateVar = exx*numpy.ones( (1, ncells, tensorSize), dtype=numpy.float64)
     
     elif name == "stress":
       lp2m = self.density*self.vp**2
-      stateVar = lp2m*exx * numpy.ones( (ncells, tensorSize), 
-                                       dtype=numpy.float64)
+      stateVar = lp2m*exx * numpy.ones( (1, ncells, tensorSize), dtype=numpy.float64)
     else:
       raise ValueError("Unknown state variable '%s'." % name)
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestDislocation.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestDislocation.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestDislocation.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -22,8 +22,7 @@
 
 import numpy
 from TestLine3 import TestLine3
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
+
 from pylith.tests.Fault import check_vertex_fields
 
 # Local version of PyLithApp
@@ -60,16 +59,12 @@
     self.nverticesO = 5
 
     self.faultMesh = {'nvertices': 1,
-                      'spaceDim': 3,
+                      'spaceDim': 1,
                       'ncells': 1,
                       'ncorners': 1}
 
     run_pylith()
     self.outputRoot = "dislocation"
-    if has_vtk():
-      self.reader = VTKDataReader()
-    else:
-      self.reader = None
     return
 
 
@@ -77,10 +72,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_info.vtk" % self.outputRoot
+    filename = "%s-fault_info.h5" % self.outputRoot
     fields = ["normal_dir", "final_slip", "slip_time"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -91,10 +86,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_t0000000.vtk" % self.outputRoot
+    filename = "%s-fault.h5" % self.outputRoot
     fields = ["slip", "traction_change"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -109,11 +104,11 @@
     spaceDim = self.mesh['spaceDim']    
     nverticesO = self.nverticesO
 
-    disp = numpy.zeros( (nvertices, spaceDim), dtype=numpy.float64)
+    disp = numpy.zeros( (1, nvertices, spaceDim), dtype=numpy.float64)
     maskP = vertices[:,0] >= 2.0
     maskP[nverticesO:nvertices] = False
     maskN = numpy.bitwise_and(vertices[:,0] <= 2.0, ~maskP)
-    disp[:,0] = \
+    disp[0,:,0] = \
         maskN*(-0.20 - 0.025*vertices[:,0]) + \
         maskP*(+0.30 - 0.025*vertices[:,0])
 
@@ -130,12 +125,11 @@
     tensorSize = self.mesh['tensorSize']
 
     if name == "total_strain":
-      stateVar = exx*numpy.ones( (ncells, tensorSize), dtype=numpy.float64)
+      stateVar = exx*numpy.ones( (1, ncells, tensorSize), dtype=numpy.float64)
     
     elif name == "stress":
       lp2m = self.density*self.vp**2
-      stateVar = lp2m*exx * numpy.ones( (ncells, tensorSize), 
-                                       dtype=numpy.float64)
+      stateVar = lp2m*exx * numpy.ones( (1, ncells, tensorSize), dtype=numpy.float64)
     else:
       raise ValueError("Unknown state variable '%s'." % name)
 
@@ -159,22 +153,22 @@
     nvertices = self.faultMesh['nvertices']
 
     if name == "normal_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
       field[:,0] = normalDir
 
     elif name == "final_slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
       field[:,0] = finalSlip
       
     elif name == "slip_time":
-      field = slipTime*numpy.ones( (nvertices, 1), dtype=numpy.float64)
+      field = slipTime*numpy.ones( (1, nvertices, 1), dtype=numpy.float64)
       
     elif name == "slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
       field[:,0] = finalSlip
 
     elif name == "traction_change":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
       field[:,0] = traction
       
     else:

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestLine3.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestLine3.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/TestLine3.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,6 +23,8 @@
 import unittest
 import numpy
 
+from pylith.tests import has_h5py
+
 class TestLine3(unittest.TestCase):
   """
   Generic tests for problems using 1-D bar mesh.
@@ -35,11 +37,16 @@
     self.mesh = {'ncells': 2,
                  'ncorners': 3,
                  'nvertices': 5,
-                 'spaceDim': 3,
+                 'spaceDim': 1,
                  'tensorSize': 1}
     self.vs = 3000.0
     self.vp = 5291.502622129181
     self.density = 2500.0
+
+    if has_h5py():
+      self.checkResults = True
+    else:
+      self.checkResults = False
     return
 
 
@@ -47,18 +54,18 @@
     """
     Check elastic info.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
     ncells= self.mesh['ncells']
 
-    filename = "%s-elastic_info.vtk" % self.outputRoot
+    filename = "%s-elastic_info.h5" % self.outputRoot
     m = self.density*self.vs**2
     l = self.density*self.vp**2 - 2*m
 
-    propMu =  m*numpy.ones( (ncells, 1), dtype=numpy.float64)
-    propLambda = l*numpy.ones( (ncells, 1), dtype=numpy.float64)
-    propDensity = self.density*numpy.ones( (ncells, 2), dtype=numpy.float64)
+    propMu =  m*numpy.ones( (1, ncells, 1), dtype=numpy.float64)
+    propLambda = l*numpy.ones( (1, ncells, 1), dtype=numpy.float64)
+    propDensity = self.density*numpy.ones( (1, ncells, 1), dtype=numpy.float64)
 
     properties = {'mu': propMu,
                   'lambda': propLambda,
@@ -74,10 +81,10 @@
     """
     Check solution (displacement) field.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s_t0000000.vtk" % self.outputRoot
+    filename = "%s.h5" % self.outputRoot
     from pylith.tests.Solution import check_displacements
     check_displacements(self, filename, self.mesh)
 
@@ -88,10 +95,10 @@
     """
     Check elastic state variables.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-elastic_t0000000.vtk" % self.outputRoot
+    filename = "%s-elastic.h5" % self.outputRoot
 
     from pylith.tests.StateVariables import check_state_variables
     stateVars = ["total_strain", "stress"]

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/axialextension.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/axialextension.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/axialextension.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -87,9 +87,11 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-[axialextension.problem.formulation.output.output.writer]
-filename = axialextension.vtk
+[axialextension.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = axialextension.h5
 
 [axialextension.timedependent.materials.elastic.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = axialextension-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = axialextension-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/dislocation.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/dislocation.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/1d/line3/dislocation.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -98,12 +98,15 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-[dislocation.problem.formulation.output.output.writer]
-filename = dislocation.vtk
+[dislocation.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = dislocation.h5
 
 [dislocation.timedependent.materials.elastic.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = dislocation-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = dislocation-elastic.h5
 
-[dislocation.timedependent.interfaces.fault.output.writer]
-filename = dislocation-fault.vtk
+[dislocation.timedependent.interfaces.fault.output]
+writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer.filename = dislocation-fault.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestAxialDisp.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestAxialDisp.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestAxialDisp.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -22,9 +22,8 @@
 
 import numpy
 from TestQuad4 import TestQuad4
+
 from axialdisp_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
 
 # Local version of PyLithApp
 from pylith.apps.PyLithApp import PyLithApp
@@ -64,11 +63,7 @@
     TestQuad4.setUp(self)
     run_pylith()
     self.outputRoot = "axialdisp"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -84,7 +79,7 @@
     Calculate state variable.
     """
     ncells = self.mesh['ncells']
-    pts = numpy.zeros( (ncells, 3), dtype=numpy.float64)
+    pts = numpy.zeros( (ncells, 2), dtype=numpy.float64)
     if name == "total_strain":
       stateVar = self.soln.strain(pts)
     elif name == "stress":

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestDislocation.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestDislocation.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestDislocation.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,8 +23,7 @@
 import numpy
 from TestQuad4 import TestQuad4
 from dislocation_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
+
 from pylith.tests.Fault import check_vertex_fields
 
 # Local version of PyLithApp
@@ -61,17 +60,13 @@
     self.mesh['nvertices'] = 81+9
     self.nverticesO = 81
     self.faultMesh = {'nvertices': 9,
-                      'spaceDim': 3,
+                      'spaceDim': 2,
                       'ncells': 8,
                       'ncorners': 2}
 
     run_pylith()
     self.outputRoot = "dislocation"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
 
     return
 
@@ -80,10 +75,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_info.vtk" % self.outputRoot
+    filename = "%s-fault_info.h5" % self.outputRoot
     fields = ["normal_dir", "final_slip", "slip_time"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -94,10 +89,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_t0000000.vtk" % self.outputRoot
+    filename = "%s-fault.h5" % self.outputRoot
     fields = ["slip", "traction_change"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -139,24 +134,24 @@
     nvertices = self.faultMesh['nvertices']
 
     if name == "normal_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = normalDir[0]
-      field[:,1] = normalDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = normalDir[0]
+      field[0,:,1] = normalDir[1]
 
     elif name == "final_slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = finalSlip
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = finalSlip
       
     elif name == "slip_time":
-      field = slipTime*numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = slipTime*numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
       
     elif name == "slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = finalSlip
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = finalSlip
 
     elif name == "traction_change":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = 0.0
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = 0.0
       
     else:
       raise ValueError("Unknown fault field '%s'." % name)

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionCompression.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionCompression.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionCompression.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,8 +23,7 @@
 import numpy
 from TestQuad4 import TestQuad4
 from friction_compression_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
+
 from pylith.tests.Fault import check_vertex_fields
 
 # Local version of PyLithApp
@@ -61,17 +60,13 @@
     self.mesh['nvertices'] = 81+9
     self.nverticesO = 81
     self.faultMesh = {'nvertices': 9,
-                      'spaceDim': 3,
+                      'spaceDim': 2,
                       'ncells': 8,
                       'ncorners': 2}
 
     run_pylith()
     self.outputRoot = "friction_compression"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -79,10 +74,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_info.vtk" % self.outputRoot
+    filename = "%s-fault_info.h5" % self.outputRoot
     fields = ["strike_dir", "normal_dir", "traction_initial","friction_coefficient","cohesion"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -93,10 +88,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_t0000000.vtk" % self.outputRoot
+    filename = "%s-fault.h5" % self.outputRoot
     fields = ["slip", "traction"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -139,34 +134,34 @@
     nvertices = self.faultMesh['nvertices']
 
     if name == "strike_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = strikeDir[0]
-      field[:,1] = strikeDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = strikeDir[0]
+      field[0,:,1] = strikeDir[1]
 
     elif name == "normal_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = normalDir[0]
-      field[:,1] = normalDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = normalDir[0]
+      field[0,:,1] = normalDir[1]
 
     elif name == "traction_initial":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = initialTraction[0]
-      field[:,1] = initialTraction[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = initialTraction[0]
+      field[0,:,1] = initialTraction[1]
 
     elif name == "friction_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = frictionCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:] = frictionCoefficient
 
     elif name == "cohesion":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     elif name == "slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
 
     elif name == "traction":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = 0.0
-      field[:,1] = -2.2e+6
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = 0.0
+      field[0,:,1] = -2.2e+6
       
     else:
       raise ValueError("Unknown fault field '%s'." % name)

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionOpening.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionOpening.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionOpening.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,8 +23,7 @@
 import numpy
 from TestQuad4 import TestQuad4
 from friction_opening_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
+
 from pylith.tests.Fault import check_vertex_fields
 
 # Local version of PyLithApp
@@ -61,17 +60,13 @@
     self.mesh['nvertices'] = 81+9
     self.nverticesO = 81
     self.faultMesh = {'nvertices': 9,
-                      'spaceDim': 3,
+                      'spaceDim': 2,
                       'ncells': 8,
                       'ncorners': 2}
 
     run_pylith()
     self.outputRoot = "friction_opening"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -79,10 +74,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_info.vtk" % self.outputRoot
+    filename = "%s-fault_info.h5" % self.outputRoot
     fields = ["strike_dir", "normal_dir", "traction_initial","friction_coefficient","cohesion"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -93,10 +88,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_t0000000.vtk" % self.outputRoot
+    filename = "%s-fault.h5" % self.outputRoot
     fields = ["slip", "traction"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -140,34 +135,34 @@
     nvertices = self.faultMesh['nvertices']
 
     if name == "strike_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = strikeDir[0]
-      field[:,1] = strikeDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = strikeDir[0]
+      field[0,:,1] = strikeDir[1]
 
     elif name == "normal_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = normalDir[0]
-      field[:,1] = normalDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = normalDir[0]
+      field[0,:,1] = normalDir[1]
 
     elif name == "traction_initial":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = initialTraction[0]
-      field[:,1] = initialTraction[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = initialTraction[0]
+      field[0,:,1] = initialTraction[1]
 
     elif name == "friction_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = frictionCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = frictionCoefficient
 
     elif name == "cohesion":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     elif name == "slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = slip[0]
-      field[:,1] = slip[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = slip[0]
+      field[0,:,1] = slip[1]
 
     elif name == "traction":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
       
     else:
       raise ValueError("Unknown fault field '%s'." % name)

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionShearSliding.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionShearSliding.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionShearSliding.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,8 +23,7 @@
 import numpy
 from TestQuad4 import TestQuad4
 from friction_shear_sliding_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
+
 from pylith.tests.Fault import check_vertex_fields
 
 # Local version of PyLithApp
@@ -61,17 +60,13 @@
     self.mesh['nvertices'] = 81+9
     self.nverticesO = 81
     self.faultMesh = {'nvertices': 9,
-                      'spaceDim': 3,
+                      'spaceDim': 2,
                       'ncells': 8,
                       'ncorners': 2}
 
     run_pylith()
     self.outputRoot = "friction_shear_sliding"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -79,10 +74,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_info.vtk" % self.outputRoot
+    filename = "%s-fault_info.h5" % self.outputRoot
     fields = ["strike_dir", "normal_dir", "traction_initial","friction_coefficient","cohesion"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -93,10 +88,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_t0000000.vtk" % self.outputRoot
+    filename = "%s-fault.h5" % self.outputRoot
     fields = ["slip", "traction"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -115,7 +110,7 @@
     Calculate state variable.
     """
     ncells = self.mesh['ncells']
-    pts = numpy.zeros( (ncells, 3), dtype=numpy.float64)
+    pts = numpy.zeros( (ncells, 2), dtype=numpy.float64)
     if name == "total_strain":
       stateVar = self.soln.strain(pts)
     elif name == "stress":
@@ -148,36 +143,36 @@
     nvertices = self.faultMesh['nvertices']
 
     if name == "strike_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = strikeDir[0]
-      field[:,1] = strikeDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = strikeDir[0]
+      field[0,:,1] = strikeDir[1]
 
     elif name == "normal_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = normalDir[0]
-      field[:,1] = normalDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = normalDir[0]
+      field[0,:,1] = normalDir[1]
 
     elif name == "traction_initial":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = initialTraction[0]
-      field[:,1] = initialTraction[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = initialTraction[0]
+      field[0,:,1] = initialTraction[1]
 
     elif name == "friction_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = frictionCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = frictionCoefficient
 
     elif name == "cohesion":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     elif name == "slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = slip[0]
-      field[:,1] = slip[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = slip[0]
+      field[0,:,1] = slip[1]
 
     elif name == "traction":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = 0.6e+6
-      field[:,1] = -1.0e+6
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = 0.6e+6
+      field[0,:,1] = -1.0e+6
       
     else:
       raise ValueError("Unknown fault field '%s'." % name)

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionShearStick.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionShearStick.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestFrictionShearStick.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,8 +23,7 @@
 import numpy
 from TestQuad4 import TestQuad4
 from friction_shear_stick_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
+
 from pylith.tests.Fault import check_vertex_fields
 
 # Local version of PyLithApp
@@ -61,17 +60,13 @@
     self.mesh['nvertices'] = 81+9
     self.nverticesO = 81
     self.faultMesh = {'nvertices': 9,
-                      'spaceDim': 3,
+                      'spaceDim': 2,
                       'ncells': 8,
                       'ncorners': 2}
 
     run_pylith()
     self.outputRoot = "friction_shear_stick"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -79,10 +74,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_info.vtk" % self.outputRoot
+    filename = "%s-fault_info.h5" % self.outputRoot
     fields = ["strike_dir", "normal_dir", "traction_initial","friction_coefficient","cohesion"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -93,10 +88,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_t0000000.vtk" % self.outputRoot
+    filename = "%s-fault.h5" % self.outputRoot
     fields = ["slip", "traction"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -139,34 +134,34 @@
     nvertices = self.faultMesh['nvertices']
 
     if name == "strike_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = strikeDir[0]
-      field[:,1] = strikeDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = strikeDir[0]
+      field[0,:,1] = strikeDir[1]
 
     elif name == "normal_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = normalDir[0]
-      field[:,1] = normalDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = normalDir[0]
+      field[0,:,1] = normalDir[1]
 
     elif name == "traction_initial":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = initialTraction[0]
-      field[:,1] = initialTraction[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = initialTraction[0]
+      field[0,:,1] = initialTraction[1]
 
     elif name == "friction_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = frictionCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = frictionCoefficient
 
     elif name == "cohesion":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     elif name == "slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
 
     elif name == "traction":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = 1.0e+6
-      field[:,1] = -1.0e+7
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = 1.0e+6
+      field[0,:,1] = -1.0e+7
       
     else:
       raise ValueError("Unknown fault field '%s'." % name)

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestLgDeformRigidBody.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestLgDeformRigidBody.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestLgDeformRigidBody.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,9 +23,8 @@
 
 import numpy
 from TestQuad4 import TestQuad4
+
 from rigidbody_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
 
 # Local version of PyLithApp
 from pylith.apps.PyLithApp import PyLithApp
@@ -65,11 +64,7 @@
     TestQuad4.setUp(self)
     run_pylith()
     self.outputRoot = "lgdeformrigidbody"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -85,7 +80,7 @@
     Calculate state variable.
     """
     ncells = self.mesh['ncells']
-    pts = numpy.zeros( (ncells, 3), dtype=numpy.float64)
+    pts = numpy.zeros( (ncells, 2), dtype=numpy.float64)
     if name == "total_strain":
       stateVar = self.soln.strain(pts)
     elif name == "stress":

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestLgDeformTraction.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestLgDeformTraction.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestLgDeformTraction.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,9 +23,8 @@
 
 import numpy
 from TestQuad4 import TestQuad4
+
 from lgdeformtraction_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
 
 # Local version of PyLithApp
 from pylith.apps.PyLithApp import PyLithApp
@@ -60,11 +59,7 @@
     TestQuad4.setUp(self)
     run_pylith()
     self.outputRoot = "lgdeformtraction"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -80,7 +75,7 @@
     Calculate state variable.
     """
     ncells = self.mesh['ncells']
-    pts = numpy.zeros( (ncells, 3), dtype=numpy.float64)
+    pts = numpy.zeros( (ncells, 2), dtype=numpy.float64)
     if name == "total_strain":
       stateVar = self.soln.strain(pts)
     elif name == "stress":

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestQuad4.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestQuad4.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestQuad4.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,6 +23,8 @@
 import unittest
 import numpy
 
+from pylith.tests import has_h5py
+
 class TestQuad4(unittest.TestCase):
   """
   Generic tests for problems using 2-D mesh.
@@ -35,8 +37,13 @@
     self.mesh = {'ncells': 64,
                  'ncorners': 4,
                  'nvertices': 81,
-                 'spaceDim': 3,
+                 'spaceDim': 2,
                  'tensorSize': 3}
+
+    if has_h5py():
+      self.checkResults = True
+    else:
+      self.checkResults = False
     return
 
 
@@ -44,17 +51,17 @@
     """
     Check elastic info.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
     ncells= self.mesh['ncells']
 
-    filename = "%s-elastic_info.vtk" % self.outputRoot
+    filename = "%s-elastic_info.h5" % self.outputRoot
     from axialdisp_soln import p_mu,p_lambda,p_density
 
-    propMu =  p_mu*numpy.ones( (ncells, 1), dtype=numpy.float64)
-    propLambda = p_lambda*numpy.ones( (ncells, 1), dtype=numpy.float64)
-    propDensity = p_density*numpy.ones( (ncells, 2), dtype=numpy.float64)
+    propMu =  p_mu*numpy.ones( (1, ncells, 1), dtype=numpy.float64)
+    propLambda = p_lambda*numpy.ones( (1, ncells, 1), dtype=numpy.float64)
+    propDensity = p_density*numpy.ones( (1, ncells, 1), dtype=numpy.float64)
 
     properties = {'mu': propMu,
                   'lambda': propLambda,
@@ -70,10 +77,10 @@
     """
     Check solution (displacement) field.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s_t0000000.vtk" % self.outputRoot
+    filename = "%s.h5" % self.outputRoot
     from pylith.tests.Solution import check_displacements
     check_displacements(self, filename, self.mesh)
 
@@ -84,10 +91,10 @@
     """
     Check elastic state variables.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-elastic_t0000000.vtk" % self.outputRoot
+    filename = "%s-elastic.h5" % self.outputRoot
 
     from pylith.tests.StateVariables import check_state_variables
     stateVars = ["total_strain", "stress"]

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestShearDisp.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestShearDisp.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestShearDisp.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -22,9 +22,8 @@
 
 import numpy
 from TestQuad4 import TestQuad4
+
 from sheardisp_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
 
 # Local version of PyLithApp
 from pylith.apps.PyLithApp import PyLithApp
@@ -64,11 +63,7 @@
     TestQuad4.setUp(self)
     run_pylith()
     self.outputRoot = "sheardisp"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -84,7 +79,7 @@
     Calculate state variable.
     """
     ncells = self.mesh['ncells']
-    pts = numpy.zeros( (ncells, 3), dtype=numpy.float64)
+    pts = numpy.zeros( (ncells, 2), dtype=numpy.float64)
     if name == "total_strain":
       stateVar = self.soln.strain(pts)
     elif name == "stress":

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningCompression.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningCompression.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningCompression.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,8 +23,7 @@
 import numpy
 from TestQuad4 import TestQuad4
 from slipweakening_compression_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
+
 from pylith.tests.Fault import check_vertex_fields
 
 # Local version of PyLithApp
@@ -61,17 +60,13 @@
     self.mesh['nvertices'] = 81+9
     self.nverticesO = 81
     self.faultMesh = {'nvertices': 9,
-                      'spaceDim': 3,
+                      'spaceDim': 2,
                       'ncells': 8,
                       'ncorners': 2}
 
     run_pylith()
     self.outputRoot = "slipweakening_compression"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -79,10 +74,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_info.vtk" % self.outputRoot
+    filename = "%s-fault_info.h5" % self.outputRoot
     fields = ["strike_dir", "normal_dir", "traction_initial","static_coefficient","dynamic_coefficient","slip_weakening_parameter","cohesion"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -93,10 +88,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_t0000000.vtk" % self.outputRoot
+    filename = "%s-fault.h5" % self.outputRoot
     fields = ["slip", "traction","cumulative_slip","previous_slip"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -115,7 +110,7 @@
     Calculate state variable.
     """
     ncells = self.mesh['ncells']
-    pts = numpy.zeros( (ncells, 3), dtype=numpy.float64)
+    pts = numpy.zeros( (ncells, 2), dtype=numpy.float64)
     if name == "total_strain":
       stateVar = self.soln.strain(pts)
     elif name == "stress":
@@ -141,48 +136,48 @@
     nvertices = self.faultMesh['nvertices']
 
     if name == "strike_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = strikeDir[0]
-      field[:,1] = strikeDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = strikeDir[0]
+      field[0,:,1] = strikeDir[1]
 
     elif name == "normal_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = normalDir[0]
-      field[:,1] = normalDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = normalDir[0]
+      field[0,:,1] = normalDir[1]
 
     elif name == "traction_initial":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = initialTraction[0]
-      field[:,1] = initialTraction[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = initialTraction[0]
+      field[0,:,1] = initialTraction[1]
 
     elif name == "static_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = staticCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = staticCoefficient
 
     elif name == "dynamic_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = dynamicCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = dynamicCoefficient
 
     elif name == "slip_weakening_parameter":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = slipWeakeningParameter
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = slipWeakeningParameter
 
     elif name == "cohesion":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     elif name == "slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
 
     elif name == "traction":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = 0.0
-      field[:,1] = -2.2e+6
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = 0.0
+      field[0,:,1] = -2.2e+6
       
     elif name == "cumulative_slip":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     elif name == "previous_slip":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     else:
       raise ValueError("Unknown fault field '%s'." % name)

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningOpening.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningOpening.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningOpening.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,8 +23,7 @@
 import numpy
 from TestQuad4 import TestQuad4
 from slipweakening_opening_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
+
 from pylith.tests.Fault import check_vertex_fields
 
 # Local version of PyLithApp
@@ -61,17 +60,13 @@
     self.mesh['nvertices'] = 81+9
     self.nverticesO = 81
     self.faultMesh = {'nvertices': 9,
-                      'spaceDim': 3,
+                      'spaceDim': 2,
                       'ncells': 8,
                       'ncorners': 2}
 
     run_pylith()
     self.outputRoot = "slipweakening_opening"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -79,10 +74,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_info.vtk" % self.outputRoot
+    filename = "%s-fault_info.h5" % self.outputRoot
     fields = ["strike_dir", "normal_dir", "traction_initial","static_coefficient","dynamic_coefficient","slip_weakening_parameter","cohesion"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -93,10 +88,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_t0000000.vtk" % self.outputRoot
+    filename = "%s-fault.h5" % self.outputRoot
     fields = ["slip", "traction","cumulative_slip","previous_slip"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -115,7 +110,7 @@
     Calculate state variable.
     """
     ncells = self.mesh['ncells']
-    pts = numpy.zeros( (ncells, 3), dtype=numpy.float64)
+    pts = numpy.zeros( (ncells, 2), dtype=numpy.float64)
     if name == "total_strain":
       stateVar = self.soln.strain(pts)
     elif name == "stress":
@@ -142,48 +137,48 @@
     nvertices = self.faultMesh['nvertices']
 
     if name == "strike_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = strikeDir[0]
-      field[:,1] = strikeDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = strikeDir[0]
+      field[0,:,1] = strikeDir[1]
 
     elif name == "normal_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = normalDir[0]
-      field[:,1] = normalDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = normalDir[0]
+      field[0,:,1] = normalDir[1]
 
     elif name == "traction_initial":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = initialTraction[0]
-      field[:,1] = initialTraction[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = initialTraction[0]
+      field[0,:,1] = initialTraction[1]
 
     elif name == "static_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = staticCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = staticCoefficient
 
     elif name == "dynamic_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = dynamicCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = dynamicCoefficient
 
     elif name == "slip_weakening_parameter":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = slipWeakeningParameter
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = slipWeakeningParameter
 
     elif name == "cohesion":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     elif name == "slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = slip[0]
-      field[:,1] = slip[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = slip[0]
+      field[0,:,1] = slip[1]
 
     elif name == "traction":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
       
     elif name == "cumulative_slip":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     elif name == "previous_slip":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     else:
       raise ValueError("Unknown fault field '%s'." % name)

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningShearSliding.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningShearSliding.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningShearSliding.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,8 +23,7 @@
 import numpy
 from TestQuad4 import TestQuad4
 from slipweakening_shear_sliding_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
+
 from pylith.tests.Fault import check_vertex_fields
 
 # Local version of PyLithApp
@@ -61,17 +60,13 @@
     self.mesh['nvertices'] = 81+9
     self.nverticesO = 81
     self.faultMesh = {'nvertices': 9,
-                      'spaceDim': 3,
+                      'spaceDim': 2,
                       'ncells': 8,
                       'ncorners': 2}
 
     run_pylith()
     self.outputRoot = "slipweakening_shear_sliding"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -79,10 +74,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_info.vtk" % self.outputRoot
+    filename = "%s-fault_info.h5" % self.outputRoot
     fields = ["strike_dir", "normal_dir", "traction_initial","static_coefficient","dynamic_coefficient","slip_weakening_parameter","cohesion"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -93,10 +88,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_t0000000.vtk" % self.outputRoot
+    filename = "%s-fault.h5" % self.outputRoot
     fields = ["slip", "traction","cumulative_slip","previous_slip"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -151,52 +146,52 @@
     nvertices = self.faultMesh['nvertices']
 
     if name == "strike_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = strikeDir[0]
-      field[:,1] = strikeDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = strikeDir[0]
+      field[0,:,1] = strikeDir[1]
 
     elif name == "normal_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = normalDir[0]
-      field[:,1] = normalDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = normalDir[0]
+      field[0,:,1] = normalDir[1]
 
     elif name == "traction_initial":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = initialTraction[0]
-      field[:,1] = initialTraction[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = initialTraction[0]
+      field[0,:,1] = initialTraction[1]
 
     elif name == "static_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = staticCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = staticCoefficient
 
     elif name == "dynamic_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = dynamicCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = dynamicCoefficient
 
     elif name == "slip_weakening_parameter":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = slipWeakeningParameter
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = slipWeakeningParameter
 
     elif name == "cohesion":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     elif name == "slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = slip[0]
-      field[:,1] = slip[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = slip[0]
+      field[0,:,1] = slip[1]
 
     elif name == "traction":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = 0.6e+6
-      field[:,1] = -1.0e+6
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = 0.6e+6
+      field[0,:,1] = -1.0e+6
       
     elif name == "cumulative_slip":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = cumulativeSlip
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = cumulativeSlip
 
     elif name == "previous_slip":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = cumulativeSlip
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = cumulativeSlip
 
     else:
       raise ValueError("Unknown fault field '%s'." % name)

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningShearStick.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningShearStick.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/TestSlipWeakeningShearStick.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -23,8 +23,7 @@
 import numpy
 from TestQuad4 import TestQuad4
 from slipweakening_shear_stick_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
+
 from pylith.tests.Fault import check_vertex_fields
 
 # Local version of PyLithApp
@@ -61,17 +60,13 @@
     self.mesh['nvertices'] = 81+9
     self.nverticesO = 81
     self.faultMesh = {'nvertices': 9,
-                      'spaceDim': 3,
+                      'spaceDim': 2,
                       'ncells': 8,
                       'ncorners': 2}
 
     run_pylith()
     self.outputRoot = "slipweakening_shear_stick"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 
@@ -79,10 +74,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_info.vtk" % self.outputRoot
+    filename = "%s-fault_info.h5" % self.outputRoot
     fields = ["strike_dir", "normal_dir", "traction_initial","static_coefficient","dynamic_coefficient","slip_weakening_parameter","cohesion"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -93,10 +88,10 @@
     """
     Check fault information.
     """
-    if self.reader is None:
+    if not self.checkResults:
       return
 
-    filename = "%s-fault_t0000000.vtk" % self.outputRoot
+    filename = "%s-fault.h5" % self.outputRoot
     fields = ["slip", "traction","cumulative_slip","previous_slip"]
     check_vertex_fields(self, filename, self.faultMesh, fields)
 
@@ -141,48 +136,48 @@
     nvertices = self.faultMesh['nvertices']
 
     if name == "strike_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = strikeDir[0]
-      field[:,1] = strikeDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = strikeDir[0]
+      field[0,:,1] = strikeDir[1]
 
     elif name == "normal_dir":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = normalDir[0]
-      field[:,1] = normalDir[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = normalDir[0]
+      field[0,:,1] = normalDir[1]
 
     elif name == "traction_initial":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = initialTraction[0]
-      field[:,1] = initialTraction[1]
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = initialTraction[0]
+      field[0,:,1] = initialTraction[1]
 
     elif name == "static_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = staticCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = staticCoefficient
 
     elif name == "dynamic_coefficient":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = dynamicCoefficient
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = dynamicCoefficient
 
     elif name == "slip_weakening_parameter":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
-      field[:] = slipWeakeningParameter
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
+      field[0,:,0] = slipWeakeningParameter
 
     elif name == "cohesion":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     elif name == "slip":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
 
     elif name == "traction":
-      field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
-      field[:,0] = 1.0e+6
-      field[:,1] = -1.0e+7
+      field = numpy.zeros( (1, nvertices, 2), dtype=numpy.float64)
+      field[0,:,0] = 1.0e+6
+      field[0,:,1] = -1.0e+7
       
     elif name == "cumulative_slip":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     elif name == "previous_slip":
-      field = numpy.zeros( (nvertices, 1), dtype=numpy.float64)
+      field = numpy.zeros( (1, nvertices, 1), dtype=numpy.float64)
 
     else:
       raise ValueError("Unknown fault field '%s'." % name)

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -98,9 +98,11 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-[axialdisp.problem.formulation.output.output.writer]
-filename = axialdisp.vtk
+[axialdisp.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = axialdisp.h5
 
 [axialdisp.timedependent.materials.elastic.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = axialdisp-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = axialdisp-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp_gendb.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp_gendb.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp_gendb.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -64,10 +64,10 @@
             'data_dim': 2,
             'values': [{'name': "displacement-x",
                         'units': "m",
-                        'data': numpy.ravel(disp[:,0])},
+                        'data': numpy.ravel(disp[0,:,0])},
                        {'name': "displacement-y",
                         'units': "m",
-                        'data': numpy.ravel(disp[:,1])}]}
+                        'data': numpy.ravel(disp[0,:,1])}]}
 
     from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
     io = SimpleIOAscii()

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/axialdisp_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -77,9 +77,9 @@
     Compute displacement field at locations.
     """
     (npts, dim) = locs.shape
-    disp = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    disp[:,0] = exx*locs[:,0] + exy*locs[:,1]
-    disp[:,1] = eyy*locs[:,1] + exy*locs[:,0]
+    disp = numpy.zeros( (1, npts, 2), dtype=numpy.float64)
+    disp[0,:,0] = exx*locs[:,0] + exy*locs[:,1]
+    disp[0,:,1] = eyy*locs[:,1] + exy*locs[:,0]
     return disp
 
 
@@ -88,10 +88,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -100,10 +100,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/dislocation.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/dislocation.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/dislocation.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -119,12 +119,15 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-[dislocation.problem.formulation.output.output.writer]
-filename = dislocation.vtk
+[dislocation.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = dislocation.h5
 
 [dislocation.timedependent.materials.elastic.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = dislocation-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = dislocation-elastic.h5
 
-[dislocation.timedependent.interfaces.fault.output.writer]
-filename = dislocation-fault.vtk
+[dislocation.timedependent.interfaces.fault.output]
+writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer.filename = dislocation-fault.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/dislocation_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/dislocation_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/dislocation_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -62,13 +62,11 @@
     """
     (nlocs, dim) = locs.shape
 
-    disp = numpy.zeros( (nlocs, 3), dtype=numpy.float64)
+    disp = numpy.zeros( (1, nlocs, 2), dtype=numpy.float64)
     maskP = locs[:,0] >= 0.0
     maskP[nlocsO:nlocs] = False
     maskN = numpy.bitwise_and(locs[:,0] <= 0.0, ~maskP)
-    disp[:,1] = \
-        maskN*(+1.0) + \
-        maskP*(-1.0)
+    disp[0,:,1] = maskN*(+1.0) + maskP*(-1.0)
     return disp
 
 
@@ -77,10 +75,10 @@
     Compute strain field at locations.
     """
     (nlocs, dim) = locs.shape
-    strain = numpy.zeros( (nlocs, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, nlocs, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -89,10 +87,10 @@
     Compute stress field at locations.
     """
     (nlocs, dim) = locs.shape
-    stress = numpy.zeros( (nlocs, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, nlocs, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_compression.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_compression.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_compression.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -155,16 +155,16 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-# Give basename for VTK domain output of solution over domain.
-[friction_compression.problem.formulation.output.output.writer]
-filename = friction_compression.vtk
+[friction_compression.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = friction_compression.h5
 
-# Give basename for VTK fault output.
 [friction_compression.timedependent.interfaces.fault.output]
-writer.filename = friction_compression-fault.vtk
+writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer.filename = friction_compression-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,friction_coefficient,cohesion]
 
-# Give basename for VTK output of state variables.
 [friction_compression.timedependent.materials.material.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = friction_compression-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = friction_compression-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_compression_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_compression_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_compression_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -62,9 +62,9 @@
     """
     (nlocs, dim) = locs.shape
 
-    disp = numpy.zeros( (nlocs, 3), dtype=numpy.float64)
-    disp[:,0] = exx*(locs[:,0]+max(abs(locs[:,0])))
-    disp[:,1] = eyy*(locs[:,1]+max(abs(locs[:,1])))
+    disp = numpy.zeros( (1, nlocs, 2), dtype=numpy.float64)
+    disp[0,:,0] = exx*(locs[:,0]+max(abs(locs[:,0])))
+    disp[0,:,1] = eyy*(locs[:,1]+max(abs(locs[:,1])))
     return disp
 
 
@@ -73,10 +73,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -85,10 +85,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_opening.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_opening.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_opening.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -158,16 +158,16 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-# Give basename for VTK domain output of solution over domain.
-[friction_opening.problem.formulation.output.output.writer]
-filename = friction_opening.vtk
+[friction_opening.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = friction_opening.h5
 
-# Give basename for VTK fault output.
 [friction_opening.timedependent.interfaces.fault.output]
-writer.filename = friction_opening-fault.vtk
+writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer.filename = friction_opening-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,friction_coefficient,cohesion]
 
-# Give basename for VTK output of state variables.
 [friction_opening.timedependent.materials.material.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = friction_opening-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = friction_opening-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_opening_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_opening_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_opening_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -62,8 +62,8 @@
     """
     (nlocs, dim) = locs.shape
 
-    disp = numpy.zeros( (nlocs, 3), dtype=numpy.float64)
-    disp[0:nlocs/2,0] = 1.0
+    disp = numpy.zeros( (1, nlocs, 2), dtype=numpy.float64)
+    disp[0,0:nlocs/2,0] = 1.0
     return disp
 
 
@@ -72,10 +72,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -84,10 +84,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_sliding.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_sliding.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_sliding.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -175,16 +175,16 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-# Give basename for VTK domain output of solution over domain.
-[friction_shear_sliding.problem.formulation.output.output.writer]
-filename = friction_shear_sliding.vtk
+[friction_shear_sliding.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = friction_shear_sliding.h5
 
-# Give basename for VTK fault output.
 [friction_shear_sliding.timedependent.interfaces.fault.output]
-writer.filename = friction_shear_sliding-fault.vtk
+writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer.filename = friction_shear_sliding-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,friction_coefficient,cohesion]
 
-# Give basename for VTK output of state variables.
 [friction_shear_sliding.timedependent.materials.material.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = friction_shear_sliding-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = friction_shear_sliding-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_sliding_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_sliding_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_sliding_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -68,9 +68,9 @@
     """
     (nlocs, dim) = locs.shape
 
-    disp = numpy.zeros( (nlocs, 3), dtype=numpy.float64)
-    disp[0:nlocs/2,1] = 2 * exy * (locs[0:nlocs/2,0] + len/2) + D
-    disp[nlocs/2:nlocs,1] = 2 * exy * (locs[nlocs/2:nlocs,0] + len/2)
+    disp = numpy.zeros( (1, nlocs, 2), dtype=numpy.float64)
+    disp[0,0:nlocs/2,1] = 2 * exy * (locs[0:nlocs/2,0] + len/2) + D
+    disp[0,nlocs/2:nlocs,1] = 2 * exy * (locs[nlocs/2:nlocs,0] + len/2)
     return disp
 
 
@@ -79,10 +79,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -91,10 +91,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_stick.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_stick.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_stick.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -181,16 +181,16 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-# Give basename for VTK domain output of solution over domain.
-[friction_shear_stick.problem.formulation.output.output.writer]
-filename = friction_shear_stick.vtk
+[friction_shear_stick.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = friction_shear_stick.h5
 
-# Give basename for VTK fault output.
 [friction_shear_stick.timedependent.interfaces.fault.output]
-writer.filename = friction_shear_stick-fault.vtk
+writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer.filename = friction_shear_stick-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,friction_coefficient,cohesion]
 
-# Give basename for VTK output of state variables.
 [friction_shear_stick.timedependent.materials.material.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = friction_shear_stick-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = friction_shear_stick-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_stick_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_stick_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/friction_shear_stick_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -62,8 +62,8 @@
     """
     (nlocs, dim) = locs.shape
 
-    disp = numpy.zeros( (nlocs, 3), dtype=numpy.float64)
-    disp[:,1] = 2*exy*(locs[:,0]+max(abs(locs[:,0])))
+    disp = numpy.zeros( (1, nlocs, 2), dtype=numpy.float64)
+    disp[0,:,1] = 2*exy*(locs[:,0]+max(abs(locs[:,0])))
     return disp
 
 
@@ -72,10 +72,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -84,10 +84,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformrigidbody.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformrigidbody.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformrigidbody.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -107,11 +107,11 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-[lgdeformrigidbody.problem.formulation.output.output.writer]
-filename = lgdeformrigidbody.vtk
-float_precision = 8
+[lgdeformrigidbody.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = lgdeformrigidbody.h5
 
 [lgdeformrigidbody.timedependent.materials.elastic.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = lgdeformrigidbody-elastic.vtk
-writer.float_precision = 8
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = lgdeformrigidbody-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformtraction.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformtraction.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformtraction.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -117,11 +117,11 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-[lgdeformtraction.problem.formulation.output.output.writer]
-filename = lgdeformtraction.vtk
-float_precision = 8
+[lgdeformtraction.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = lgdeformtraction.h5
 
 [lgdeformtraction.timedependent.materials.elastic.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = lgdeformtraction-elastic.vtk
-writer.float_precision = 8
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = lgdeformtraction-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformtraction_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformtraction_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/lgdeformtraction_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -68,9 +68,9 @@
     Compute displacement field at locations.
     """
     (npts, dim) = locs.shape
-    disp = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    disp[:,0] = ux*(4000.0 + locs[:,0]) / 8000.0
-    disp[:,1] = uy*(4000.0 + locs[:,1]) / 8000.0
+    disp = numpy.zeros( (1, npts, 2), dtype=numpy.float64)
+    disp[0,:,0] = ux*(4000.0 + locs[:,0]) / 8000.0
+    disp[0,:,1] = uy*(4000.0 + locs[:,1]) / 8000.0
     return disp
 
 
@@ -79,10 +79,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -91,10 +91,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/rigidbody_gendb.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/rigidbody_gendb.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/rigidbody_gendb.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -64,10 +64,10 @@
             'data_dim': 2,
             'values': [{'name': "displacement-x",
                         'units': "m",
-                        'data': numpy.ravel(disp[:,0])},
+                        'data': numpy.ravel(disp[0,:,0])},
                        {'name': "displacement-y",
                         'units': "m",
-                        'data': numpy.ravel(disp[:,1])}]}
+                        'data': numpy.ravel(disp[0,:,1])}]}
 
     from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
     io = SimpleIOAscii()

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/rigidbody_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/rigidbody_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/rigidbody_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -66,10 +66,10 @@
     theta = -25.0/180.0*pi
 
     (npts, dim) = locs.shape
-    disp = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    disp[:,0] = -locs[:,0] + \
+    disp = numpy.zeros( (1, npts, 2), dtype=numpy.float64)
+    disp[0,:,0] = -locs[:,0] + \
         u0 + numpy.cos(theta)*locs[:,0] + numpy.sin(theta)*locs[:,1]
-    disp[:,1] = -locs[:,1] + \
+    disp[0,:,1] = -locs[:,1] + \
         v0 - numpy.sin(theta)*locs[:,0] + numpy.cos(theta)*locs[:,1]
     return disp
 
@@ -79,10 +79,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -91,10 +91,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -107,9 +107,11 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-[sheardisp.problem.formulation.output.output.writer]
-filename = sheardisp.vtk
+[sheardisp.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = sheardisp.h5
 
 [sheardisp.timedependent.materials.elastic.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = sheardisp-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = sheardisp-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp_gendb.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp_gendb.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp_gendb.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -64,10 +64,10 @@
             'data_dim': 2,
             'values': [{'name': "displacement-x",
                         'units': "m",
-                        'data': numpy.ravel(disp[:,0])},
+                        'data': numpy.ravel(disp[0,:,0])},
                        {'name': "displacement-y",
                         'units': "m",
-                        'data': numpy.ravel(disp[:,1])}]}
+                        'data': numpy.ravel(disp[0,:,1])}]}
 
     from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
     io = SimpleIOAscii()

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/sheardisp_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -61,9 +61,9 @@
     Compute displacement field at locations.
     """
     (npts, dim) = locs.shape
-    disp = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    disp[:,0] = exx*locs[:,0] + exy*locs[:,1]
-    disp[:,1] = eyy*locs[:,1] + exy*locs[:,0]
+    disp = numpy.zeros( (1, npts, 2), dtype=numpy.float64)
+    disp[0,:,0] = exx*locs[:,0] + exy*locs[:,1]
+    disp[0,:,1] = eyy*locs[:,1] + exy*locs[:,0]
     return disp
 
 
@@ -72,10 +72,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -84,10 +84,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_compression.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_compression.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_compression.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -155,18 +155,18 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-# Give basename for VTK domain output of solution over domain.
-[slipweakening_compression.problem.formulation.output.output.writer]
-filename = slipweakening_compression.vtk
+[slipweakening_compression.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = slipweakening_compression.h5
 
-# Give basename for VTK fault output.
 [slipweakening_compression.timedependent.interfaces.fault.output]
-writer.filename = slipweakening_compression-fault.vtk
+writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer.filename = slipweakening_compression-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,static_coefficient,dynamic_coefficient,slip_weakening_parameter,cohesion]
 vertex_data_fields = [slip,traction,cumulative_slip,previous_slip]
 
-# Give basename for VTK output of state variables.
 [slipweakening_compression.timedependent.materials.material.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = slipweakening_compression-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = slipweakening_compression-elastic.h5
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_compression_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_compression_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_compression_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -62,9 +62,9 @@
     """
     (nlocs, dim) = locs.shape
 
-    disp = numpy.zeros( (nlocs, 3), dtype=numpy.float64)
-    disp[:,0] = exx*(locs[:,0]+max(abs(locs[:,0])))
-    disp[:,1] = eyy*(locs[:,1]+max(abs(locs[:,1])))
+    disp = numpy.zeros( (1, nlocs, 2), dtype=numpy.float64)
+    disp[0,:,0] = exx*(locs[:,0]+max(abs(locs[:,0])))
+    disp[0,:,1] = eyy*(locs[:,1]+max(abs(locs[:,1])))
     return disp
 
 
@@ -73,10 +73,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -85,10 +85,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_opening.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_opening.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_opening.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -147,17 +147,17 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-# Give basename for VTK domain output of solution over domain.
-[slipweakening_opening.problem.formulation.output.output.writer]
-filename = slipweakening_opening.vtk
+[slipweakening_opening.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = slipweakening_opening.h5
 
-# Give basename for VTK fault output.
 [slipweakening_opening.timedependent.interfaces.fault.output]
-writer.filename = slipweakening_opening-fault.vtk
+writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer.filename = slipweakening_opening-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,static_coefficient,dynamic_coefficient,slip_weakening_parameter,cohesion]
 vertex_data_fields = [slip,traction,cumulative_slip,previous_slip]
 
-# Give basename for VTK output of state variables.
 [slipweakening_opening.timedependent.materials.material.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = slipweakening_opening-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = slipweakening_opening-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_opening_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_opening_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_opening_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -62,8 +62,8 @@
     """
     (nlocs, dim) = locs.shape
 
-    disp = numpy.zeros( (nlocs, 3), dtype=numpy.float64)
-    disp[0:nlocs/2,0] = 1.0
+    disp = numpy.zeros( (1, nlocs, 2), dtype=numpy.float64)
+    disp[0,0:nlocs/2,0] = 1.0
     return disp
 
 
@@ -72,10 +72,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -84,10 +84,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -168,17 +168,17 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-# Give basename for VTK domain output of solution over domain.
-[slipweakening_shear_sliding.problem.formulation.output.output.writer]
-filename = slipweakening_shear_sliding.vtk
+[slipweakening_shear_sliding.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = slipweakening_shear_sliding.h5
 
-# Give basename for VTK fault output.
 [slipweakening_shear_sliding.timedependent.interfaces.fault.output]
-writer.filename = slipweakening_shear_sliding-fault.vtk
+writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer.filename = slipweakening_shear_sliding-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,static_coefficient,dynamic_coefficient,slip_weakening_parameter,cohesion]
 vertex_data_fields = [slip,traction,cumulative_slip,previous_slip]
 
-# Give basename for VTK output of state variables.
 [slipweakening_shear_sliding.timedependent.materials.material.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = slipweakening_shear_sliding-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = slipweakening_shear_sliding-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_sliding_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_sliding_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_sliding_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -68,9 +68,9 @@
     """
     (nlocs, dim) = locs.shape
 
-    disp = numpy.zeros( (nlocs, 3), dtype=numpy.float64)
-    disp[0:nlocs/2,1] = 2 * exy * (locs[0:nlocs/2,0] + len/2) + D
-    disp[nlocs/2:nlocs,1] = 2 * exy * (locs[nlocs/2:nlocs,0] + len/2)
+    disp = numpy.zeros( (1, nlocs, 2), dtype=numpy.float64)
+    disp[0,0:nlocs/2,1] = 2 * exy * (locs[0:nlocs/2,0] + len/2) + D
+    disp[0,nlocs/2:nlocs,1] = 2 * exy * (locs[nlocs/2:nlocs,0] + len/2)
     return disp
 
 
@@ -79,10 +79,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -91,10 +91,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_stick.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_stick.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_stick.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -183,17 +183,17 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-# Give basename for VTK domain output of solution over domain.
-[slipweakening_shear_stick.problem.formulation.output.output.writer]
-filename = slipweakening_shear_stick.vtk
+[slipweakening_shear_stick.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = slipweakening_shear_stick.h5
 
-# Give basename for VTK fault output.
 [slipweakening_shear_stick.timedependent.interfaces.fault.output]
-writer.filename = slipweakening_shear_stick-fault.vtk
+writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer.filename = slipweakening_shear_stick-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,static_coefficient,dynamic_coefficient,slip_weakening_parameter,cohesion]
 vertex_data_fields = [slip,traction,cumulative_slip,previous_slip]
 
-# Give basename for VTK output of state variables.
 [slipweakening_shear_stick.timedependent.materials.material.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = slipweakening_shear_stick-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = slipweakening_shear_stick-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_stick_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_stick_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/slipweakening_shear_stick_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -62,8 +62,8 @@
     """
     (nlocs, dim) = locs.shape
 
-    disp = numpy.zeros( (nlocs, 3), dtype=numpy.float64)
-    disp[:,1] = 2*exy*(locs[:,0]+max(abs(locs[:,0])))
+    disp = numpy.zeros( (1, nlocs, 2), dtype=numpy.float64)
+    disp[0,:,1] = 2*exy*(locs[:,0]+max(abs(locs[:,0])))
     return disp
 
 
@@ -72,10 +72,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -84,10 +84,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/testpylith.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/testpylith.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/quad4/testpylith.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -35,6 +35,7 @@
   from TestDislocation import TestDislocation
   suite.addTest(unittest.makeSuite(TestDislocation))
 
+  # Not complete
   ##from TestDislocation2 import TestDislocation2
   ##suite.addTest(unittest.makeSuite(TestDislocation2))
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/TestShearDisp.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/TestShearDisp.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/TestShearDisp.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -22,9 +22,8 @@
 
 import numpy
 from TestTri3 import TestTri3
+
 from sheardisp_soln import AnalyticalSoln
-from pylith.utils.VTKDataReader import has_vtk
-from pylith.utils.VTKDataReader import VTKDataReader
 
 # Local version of PyLithApp
 from pylith.apps.PyLithApp import PyLithApp
@@ -64,11 +63,7 @@
     TestTri3.setUp(self)
     run_pylith()
     self.outputRoot = "sheardisp"
-    if has_vtk():
-      self.reader = VTKDataReader()
-      self.soln = AnalyticalSoln()
-    else:
-      self.reader = None
+    self.soln = AnalyticalSoln()
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/axialdisp.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/axialdisp.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/axialdisp.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -90,9 +90,9 @@
 ksp_max_it = 100
 ksp_gmres_restart = 50
 
-ksp_monitor = true
+#ksp_monitor = true
 #ksp_view = true
-ksp_converged_reason = true
+#ksp_converged_reason = true
 
 #log_summary = true
 # start_in_debugger = true

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp.cfg
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp.cfg	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp.cfg	2012-05-18 00:03:13 UTC (rev 20171)
@@ -108,9 +108,11 @@
 # ----------------------------------------------------------------------
 # output
 # ----------------------------------------------------------------------
-[sheardisp.problem.formulation.output.output.writer]
-filename = sheardisp.vtk
+[sheardisp.problem.formulation.output.output]
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = sheardisp.h5
 
 [sheardisp.timedependent.materials.elastic.output]
 cell_filter = pylith.meshio.CellFilterAvgMesh
-writer.filename = sheardisp-elastic.vtk
+writer = pylith.meshio.DataWriterHDF5Mesh
+writer.filename = sheardisp-elastic.h5

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp_gendb.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp_gendb.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp_gendb.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -64,10 +64,10 @@
             'data_dim': 2,
             'values': [{'name': "displacement-x",
                         'units': "m",
-                        'data': numpy.ravel(disp[:,0])},
+                        'data': numpy.ravel(disp[0,:,0])},
                        {'name': "displacement-y",
                         'units': "m",
-                        'data': numpy.ravel(disp[:,1])}]}
+                        'data': numpy.ravel(disp[0,:,1])}]}
 
     from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
     io = SimpleIOAscii()

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp_soln.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp_soln.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/sheardisp_soln.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -61,9 +61,9 @@
     Compute displacement field at locations.
     """
     (npts, dim) = locs.shape
-    disp = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    disp[:,0] = exx*locs[:,0] + exy*locs[:,1]
-    disp[:,1] = eyy*locs[:,1] + exy*locs[:,0]
+    disp = numpy.zeros( (1, npts, 2), dtype=numpy.float64)
+    disp[0,:,0] = exx*locs[:,0] + exy*locs[:,1]
+    disp[0,:,1] = eyy*locs[:,1] + exy*locs[:,0]
     return disp
 
 
@@ -72,10 +72,10 @@
     Compute strain field at locations.
     """
     (npts, dim) = locs.shape
-    strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    strain[:,0] = exx
-    strain[:,1] = eyy
-    strain[:,2] = exy
+    strain = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    strain[0,:,0] = exx
+    strain[0,:,1] = eyy
+    strain[0,:,2] = exy
     return strain
   
 
@@ -84,10 +84,10 @@
     Compute stress field at locations.
     """
     (npts, dim) = locs.shape
-    stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
-    stress[:,0] = sxx
-    stress[:,1] = syy
-    stress[:,2] = sxy
+    stress = numpy.zeros( (1, npts, 3), dtype=numpy.float64)
+    stress[0,:,0] = sxx
+    stress[0,:,1] = syy
+    stress[0,:,2] = sxy
     return stress
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/testpylith.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/testpylith.py	2012-05-17 21:51:05 UTC (rev 20170)
+++ short/3D/PyLith/branches/v1.7-trunk/tests_auto/2d/tri3/testpylith.py	2012-05-18 00:03:13 UTC (rev 20171)
@@ -29,8 +29,8 @@
   from TestAxialDisp import TestAxialDisp
   suite.addTest(unittest.makeSuite(TestAxialDisp))
 
-  #from TestShearDisp import TestShearDisp
-  #suite.addTest(unittest.makeSuite(TestShearDisp))
+  from TestShearDisp import TestShearDisp
+  suite.addTest(unittest.makeSuite(TestShearDisp))
 
   #from TestDislocation import TestDislocation
   #suite.addTest(unittest.makeSuite(TestDislocation))



More information about the CIG-COMMITS mailing list