[cig-commits] r22058 - in short/3D/PyLith/trunk: libsrc/pylith libsrc/pylith/bc libsrc/pylith/faults libsrc/pylith/friction libsrc/pylith/meshio libsrc/pylith/problems libsrc/pylith/topology modulesrc/bc modulesrc/faults modulesrc/feassemble modulesrc/friction modulesrc/include modulesrc/meshio modulesrc/problems modulesrc/topology pylith pylith/bc pylith/faults pylith/feassemble pylith/meshio pylith/problems pylith/topology unittests/libtests/bc unittests/libtests/faults unittests/libtests/feassemble unittests/libtests/friction unittests/libtests/meshio unittests/libtests/topology unittests/pytests/bc unittests/pytests/faults unittests/pytests/feassemble unittests/pytests/meshio unittests/pytests/problems unittests/pytests/topology

brad at geodynamics.org brad at geodynamics.org
Mon May 13 16:33:38 PDT 2013


Author: brad
Date: 2013-05-13 16:33:37 -0700 (Mon, 13 May 2013)
New Revision: 22058

Removed:
   short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.icc
   short/3D/PyLith/trunk/modulesrc/include/submeshfield.i
   short/3D/PyLith/trunk/modulesrc/topology/SubMesh.i
   short/3D/PyLith/trunk/pylith/meshio/CellFilterAvgSubMesh.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtSubMesh.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtSubSubMesh.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5SubMesh.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5SubSubMesh.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubMesh.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubSubMesh.py
   short/3D/PyLith/trunk/pylith/meshio/OutputManagerSubMesh.py
   short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNormSubMesh.py
   short/3D/PyLith/trunk/pylith/topology/SubMesh.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestSubMeshQuadrature.py
Modified:
   short/3D/PyLith/trunk/libsrc/pylith/Makefile.am
   short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc
   short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.cc
   short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.hh
   short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.icc
   short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.cc
   short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.hh
   short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.icc
   short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc
   short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.icc
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/TopologyOps.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/TopologyOps.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.hh
   short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc
   short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.hh
   short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.cc
   short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/Makefile.am
   short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.icc
   short/3D/PyLith/trunk/libsrc/pylith/topology/MeshOps.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.icc
   short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.icc
   short/3D/PyLith/trunk/libsrc/pylith/topology/topologyfwd.hh
   short/3D/PyLith/trunk/modulesrc/bc/BCIntegratorSubMesh.i
   short/3D/PyLith/trunk/modulesrc/bc/DirichletBoundary.i
   short/3D/PyLith/trunk/modulesrc/bc/Neumann.i
   short/3D/PyLith/trunk/modulesrc/bc/bc.i
   short/3D/PyLith/trunk/modulesrc/faults/BruneSlipFn.i
   short/3D/PyLith/trunk/modulesrc/faults/ConstRateSlipFn.i
   short/3D/PyLith/trunk/modulesrc/faults/EqKinSrc.i
   short/3D/PyLith/trunk/modulesrc/faults/Fault.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesive.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveImpulses.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i
   short/3D/PyLith/trunk/modulesrc/faults/LiuCosSlipFn.i
   short/3D/PyLith/trunk/modulesrc/faults/Makefile.am
   short/3D/PyLith/trunk/modulesrc/faults/SlipTimeFn.i
   short/3D/PyLith/trunk/modulesrc/faults/StepSlipFn.i
   short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i
   short/3D/PyLith/trunk/modulesrc/faults/TractPerturbation.i
   short/3D/PyLith/trunk/modulesrc/faults/faults.i
   short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i
   short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i
   short/3D/PyLith/trunk/modulesrc/include/Makefile.am
   short/3D/PyLith/trunk/modulesrc/include/integratorarray.i
   short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnPoints.i
   short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnSubset.i
   short/3D/PyLith/trunk/modulesrc/meshio/meshio.i
   short/3D/PyLith/trunk/modulesrc/problems/Formulation.i
   short/3D/PyLith/trunk/modulesrc/topology/Jacobian.i
   short/3D/PyLith/trunk/modulesrc/topology/Makefile.am
   short/3D/PyLith/trunk/modulesrc/topology/Mesh.i
   short/3D/PyLith/trunk/modulesrc/topology/topology.i
   short/3D/PyLith/trunk/pylith/Makefile.am
   short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py
   short/3D/PyLith/trunk/pylith/bc/Neumann.py
   short/3D/PyLith/trunk/pylith/faults/Fault.py
   short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py
   short/3D/PyLith/trunk/pylith/meshio/MeshIOObj.py
   short/3D/PyLith/trunk/pylith/meshio/OutputDirichlet.py
   short/3D/PyLith/trunk/pylith/meshio/OutputFaultDyn.py
   short/3D/PyLith/trunk/pylith/meshio/OutputFaultImpulses.py
   short/3D/PyLith/trunk/pylith/meshio/OutputFaultKin.py
   short/3D/PyLith/trunk/pylith/meshio/OutputNeumann.py
   short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py
   short/3D/PyLith/trunk/pylith/meshio/__init__.py
   short/3D/PyLith/trunk/pylith/problems/TimeStep.py
   short/3D/PyLith/trunk/pylith/topology/Field.py
   short/3D/PyLith/trunk/pylith/topology/Fields.py
   short/3D/PyLith/trunk/pylith/topology/Mesh.py
   short/3D/PyLith/trunk/pylith/topology/MeshImporter.py
   short/3D/PyLith/trunk/pylith/topology/RefineUniform.py
   short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersCases.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestBoundaryMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannCases.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynCases.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulsesCases.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinCases.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsCases.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestSlipFn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc
   short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestCellFilterAvg.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMeshCases.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMeshCases.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMeshCases.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMeshCases.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMeshCases.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMeshCases.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMeshCases.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMeshCases.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMeshCases.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputSolnSubset.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.hh
   short/3D/PyLith/trunk/unittests/pytests/bc/TestAbsorbingDampers.py
   short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py
   short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py
   short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveImpulses.py
   short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/Makefile.am
   short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.py
   short/3D/PyLith/trunk/unittests/pytests/meshio/TestCellFilterAvg.py
   short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5.py
   short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5Ext.py
   short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterVTK.py
   short/3D/PyLith/trunk/unittests/pytests/meshio/TestOutputManagerSubMesh.py
   short/3D/PyLith/trunk/unittests/pytests/meshio/TestVertexFilterVecNorm.py
   short/3D/PyLith/trunk/unittests/pytests/meshio/testhdf5.py
   short/3D/PyLith/trunk/unittests/pytests/meshio/testmeshio.py
   short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepAdapt.py
   short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepUniform.py
   short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepUser.py
   short/3D/PyLith/trunk/unittests/pytests/topology/TestJacobian.py
   short/3D/PyLith/trunk/unittests/pytests/topology/TestMesh.py
   short/3D/PyLith/trunk/unittests/pytests/topology/TestSubMesh.py
Log:
Removed SubMesh. Mesh is now used for both the domain mesh and the boundary meshes.

Modified: short/3D/PyLith/trunk/libsrc/pylith/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/Makefile.am	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/Makefile.am	2013-05-13 23:33:37 UTC (rev 22058)
@@ -149,7 +149,6 @@
 	topology/Jacobian.cc \
 	topology/Mesh.cc \
 	topology/MeshOps.cc \
-	topology/SubMesh.cc \
 	topology/SolutionFields.cc \
 	topology/Distributor.cc \
 	topology/ReverseCuthillMcKee.cc \

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -105,7 +105,7 @@
   const int fiberDim = numQuadPts * spaceDim;
 
   delete _parameters;
-  _parameters = new topology::Fields<topology::Field<topology::SubMesh> >(*_boundaryMesh);
+  _parameters = new topology::Fields<topology::Field<topology::Mesh> >(*_boundaryMesh);
   assert(_parameters);
   _parameters->add("damping constants", "damping_constants", topology::FieldBase::FACES_FIELD, fiberDim);
   _parameters->get("damping constants").allocate();
@@ -136,7 +136,7 @@
 
   // Container for damping constants for current cell
   scalar_array dampingConstsLocal(spaceDim);
-  topology::Field<topology::SubMesh>& dampingConsts = _parameters->get("damping constants");
+  topology::Field<topology::Mesh>& dampingConsts = _parameters->get("damping constants");
   topology::VecVisitorMesh dampingConstsVisitor(dampingConsts);
 
   topology::CoordsVisitor coordsVisitor(dmSubMesh);
@@ -252,7 +252,7 @@
   _initCellVector();
 
   // Get sections
-  topology::Field<topology::SubMesh>& dampingConsts = _parameters->get("damping constants");
+  topology::Field<topology::Mesh>& dampingConsts = _parameters->get("damping constants");
   topology::VecVisitorMesh dampingConstsVisitor(dampingConsts);
   PetscScalar* dampingConstsArray = dampingConstsVisitor.localArray();
 
@@ -393,7 +393,7 @@
   const PetscInt cEnd = cellsStratum.end();
 
   // Get sections
-  topology::Field<topology::SubMesh>& dampingConsts = _parameters->get("damping constants");
+  topology::Field<topology::Mesh>& dampingConsts = _parameters->get("damping constants");
   topology::VecVisitorMesh dampingConstsVisitor(dampingConsts);
   PetscScalar* dampingConstsArray = dampingConstsVisitor.localArray();
 
@@ -525,7 +525,7 @@
   const PetscInt cEnd = cellsStratum.end();
 
   // Get sections
-  topology::Field<topology::SubMesh>& dampingConsts = _parameters->get("damping constants");
+  topology::Field<topology::Mesh>& dampingConsts = _parameters->get("damping constants");
   topology::VecVisitorMesh dampingConstsVisitor(dampingConsts);
   PetscScalar* dampingConstsArray = dampingConstsVisitor.localArray();
 
@@ -667,7 +667,7 @@
   _initCellVector();
 
   // Get sections
-  topology::Field<topology::SubMesh>& dampingConsts = _parameters->get("damping constants");
+  topology::Field<topology::Mesh>& dampingConsts = _parameters->get("damping constants");
   topology::VecVisitorMesh dampingConstsVisitor(dampingConsts);
   PetscScalar* dampingConstsArray = dampingConstsVisitor.localArray();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "BCIntegratorSubMesh.hh" // implementation of object methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Stratum.hh" // USES Stratum
@@ -48,7 +48,7 @@
   PYLITH_METHOD_BEGIN;
 
   BoundaryCondition::deallocate();
-  feassemble::Integrator<feassemble::Quadrature<topology::SubMesh> >::deallocate();
+  feassemble::Integrator<feassemble::Quadrature<topology::Mesh> >::deallocate();
 
   delete _boundaryMesh; _boundaryMesh = 0;
   delete _parameters; _parameters = 0;
@@ -66,7 +66,7 @@
   delete _boundaryMesh; _boundaryMesh = 0;
   delete _parameters; _parameters = 0;
 
-  _boundaryMesh = new topology::SubMesh(mesh, _label.c_str());
+  _boundaryMesh = new topology::Mesh(mesh, _label.c_str());
   assert(_boundaryMesh);
 
   PYLITH_METHOD_END;

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -31,9 +31,9 @@
 // Include directives ---------------------------------------------------
 #include "BoundaryCondition.hh" // ISA BoundaryCondition
 
-#include "pylith/topology/topologyfwd.hh" // HOLDSA Fields, SubMesh
+#include "pylith/topology/topologyfwd.hh" // HOLDSA Fields, Mesh
 
-#include "pylith/topology/SubMesh.hh" // ISA Quadrature<SubMesh>
+#include "pylith/topology/Mesh.hh" // ISA Quadrature<Mesh>
 #include "pylith/feassemble/Quadrature.hh" // ISA Integrator<Quadrature>
 #include "pylith/feassemble/Integrator.hh" // ISA Integrator
 
@@ -41,7 +41,7 @@
 /// @brief Abstract base classs for BoundaryCondition object with
 /// boundary condition applied at a simple-connect surface (submesh).
 class pylith::bc::BCIntegratorSubMesh : public BoundaryCondition,
-      public feassemble::Integrator<feassemble::Quadrature<topology::SubMesh> >
+      public feassemble::Integrator<feassemble::Quadrature<topology::Mesh> >
 { // class BCIntegratorSubMesh
   friend class TestBCIntegratorSubMesh; // unit testing
 
@@ -63,14 +63,14 @@
    *
    * @returns Parameter fields.
    */
-  const topology::Fields<topology::Field<topology::SubMesh> >*
+  const topology::Fields<topology::Field<topology::Mesh> >*
   parameterFields(void) const;
 
   /** Get boundary mesh.
    *
    * @return Boundary mesh.
    */
-  const topology::SubMesh& boundaryMesh(void) const;
+  const topology::Mesh& boundaryMesh(void) const;
 
   /** Get mesh labels for submesh associated with applied forces.
    *
@@ -87,10 +87,10 @@
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 
-  topology::SubMesh* _boundaryMesh; ///< Boundary mesh.
+  topology::Mesh* _boundaryMesh; ///< Boundary mesh.
 
   /// Parameters for boundary condition.
-  topology::Fields<topology::Field<topology::SubMesh> >* _parameters;
+  topology::Fields<topology::Field<topology::Mesh> >* _parameters;
 
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.icc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.icc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -24,14 +24,14 @@
 
 // Get parameter fields.
 inline
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::SubMesh> >*
+const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
 pylith::bc::BCIntegratorSubMesh::parameterFields(void) const {
   return _parameters;
 } // parameterFields
 
 // Get boundary mesh.
 inline
-const pylith::topology::SubMesh&
+const pylith::topology::Mesh&
 pylith::bc::BCIntegratorSubMesh::boundaryMesh(void) const {
   assert(_boundaryMesh);
   return *_boundaryMesh;

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -21,7 +21,6 @@
 #include "DirichletBoundary.hh" // implementation of object methods
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
@@ -73,7 +72,7 @@
 
   DirichletBC::initialize(mesh, upDir);
 
-  _boundaryMesh = new topology::SubMesh(mesh, _label.c_str());
+  _boundaryMesh = new topology::Mesh(mesh, _label.c_str());
   assert(_boundaryMesh);
 
   PYLITH_METHOD_END;
@@ -81,7 +80,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field of BC initial or rate of change of values.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::bc::DirichletBoundary::vertexField(const char* name,
 					   const topology::SolutionFields& fields)
 { // getVertexField
@@ -98,17 +97,17 @@
   const int spaceDim = cs->spaceDim();
 
   if (!_outputFields) {
-    _outputFields = new topology::Fields<topology::Field<topology::SubMesh> >(*_boundaryMesh);
+    _outputFields = new topology::Fields<topology::Field<topology::Mesh> >(*_boundaryMesh);
   } // if
   assert(_outputFields);
   _outputFields->add("buffer (vector)", "buffer_vector", topology::FieldBase::FACES_FIELD, spaceDim);
-  topology::Field<topology::SubMesh>& bufferVector = _outputFields->get("buffer (vector)");
+  topology::Field<topology::Mesh>& bufferVector = _outputFields->get("buffer (vector)");
   bufferVector.vectorFieldType(topology::FieldBase::VECTOR);
   bufferVector.scale(lengthScale);
   bufferVector.allocate();
 
   _outputFields->add("buffer (scalar)", "buffer_scalar", topology::FieldBase::FACES_FIELD, 1);
-  topology::Field<topology::SubMesh>& bufferScalar = _outputFields->get("buffer (scalar)");
+  topology::Field<topology::Mesh>& bufferScalar = _outputFields->get("buffer (scalar)");
   bufferScalar.vectorFieldType(topology::FieldBase::SCALAR);
   bufferScalar.scale(timeScale);
   bufferScalar.allocate();
@@ -138,7 +137,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex vector field with BC information.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::bc::DirichletBoundary::_bufferVector(const char* name,
 					     const char* label,
 					     const PylithScalar scale)
@@ -157,7 +156,7 @@
   } // if
   
   assert(_outputFields->hasField("buffer (vector)"));
-  topology::Field<topology::SubMesh>& buffer = _outputFields->get("buffer (vector)");
+  topology::Field<topology::Mesh>& buffer = _outputFields->get("buffer (vector)");
   topology::VecVisitorMesh bufferVisitor(buffer);
   PetscScalar* bufferArray = bufferVisitor.localArray();
 
@@ -191,7 +190,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex scalar field with BC information.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::bc::DirichletBoundary::_bufferScalar(const char* name,
 					     const char* label,
 					     const PylithScalar scale)
@@ -210,7 +209,7 @@
   } // if
   
   assert(_outputFields->hasField("buffer (scalar)"));
-  topology::Field<topology::SubMesh>& buffer = _outputFields->get("buffer (scalar)");
+  topology::Field<topology::Mesh>& buffer = _outputFields->get("buffer (scalar)");
   topology::VecVisitorMesh bufferVisitor(buffer);
   PetscScalar* bufferArray = bufferVisitor.localArray();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -59,7 +59,7 @@
    *
    * @return Boundary mesh.
    */
-  const topology::SubMesh& boundaryMesh(void) const;
+  const topology::Mesh& boundaryMesh(void) const;
 
   /** Get vertex field with BC information.
    *
@@ -68,7 +68,7 @@
    *
    * @returns Field over vertices.
    */
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   vertexField(const char* name,
 	      const topology::SolutionFields& fields);
 
@@ -83,7 +83,7 @@
    *
    * @returns Field over vertices.
    */
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   _bufferVector(const char* name,
 		const char* label,
 		const PylithScalar scale);
@@ -96,7 +96,7 @@
    *
    * @returns Field over vertices.
    */
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   _bufferScalar(const char* name,
 		const char* label,
 		const PylithScalar scale);
@@ -104,10 +104,10 @@
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 
-  topology::SubMesh* _boundaryMesh; ///< Boundary mesh.
+  topology::Mesh* _boundaryMesh; ///< Boundary mesh.
 
   /// Fields manager (holds temporary field for output).
-  topology::Fields<topology::Field<topology::SubMesh> >* _outputFields;
+  topology::Fields<topology::Field<topology::Mesh> >* _outputFields;
 
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.icc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.icc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -24,9 +24,9 @@
 
 // Get boundary mesh.
 inline
-const pylith::topology::SubMesh&
+const pylith::topology::Mesh&
 pylith::bc::DirichletBoundary::boundaryMesh(void) const {
-  assert(0 != _boundaryMesh);
+  assert(_boundaryMesh);
   return *_boundaryMesh;
 } // boundaryMesh
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "Neumann.hh" // implementation of object methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Fields.hh" // HOLDSA Fields
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/CoordsVisitor.hh" // USES CoordsVisitor
@@ -112,7 +112,7 @@
 
   // Get sections
   _calculateValue(t);
-  topology::Field<topology::SubMesh>& valueField = _parameters->get("value");
+  topology::Field<topology::Mesh>& valueField = _parameters->get("value");
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
 
@@ -181,7 +181,7 @@
 
 // ----------------------------------------------------------------------
 // Get cell field for tractions.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::bc::Neumann::cellField(const char* name,
 			       topology::SolutionFields* const fields)
 { // cellField
@@ -234,41 +234,41 @@
   const int numQuadPts = _quadrature->numQuadPts();
 
   delete _parameters; 
-  _parameters = new topology::Fields<topology::Field<topology::SubMesh> >(*_boundaryMesh);
+  _parameters = new topology::Fields<topology::Field<topology::Mesh> >(*_boundaryMesh);
 
   // Create section to hold time dependent values
   _parameters->add("value", "traction", topology::FieldBase::FACES_FIELD, numQuadPts*spaceDim);
-  topology::Field<topology::SubMesh>& value = _parameters->get("value");
+  topology::Field<topology::Mesh>& value = _parameters->get("value");
   value.vectorFieldType(topology::FieldBase::MULTI_VECTOR);
   value.scale(pressureScale);
   value.allocate();
   if (_dbInitial) {
     _parameters->add("initial", "initial_traction", topology::FieldBase::FACES_FIELD, numQuadPts*spaceDim);
-    topology::Field<topology::SubMesh>& initial = _parameters->get("initial");
+    topology::Field<topology::Mesh>& initial = _parameters->get("initial");
     initial.vectorFieldType(topology::FieldBase::MULTI_VECTOR);
     initial.scale(pressureScale);
     initial.allocate();
   }
   if (_dbRate) {
     _parameters->add("rate", "traction_rate", topology::FieldBase::FACES_FIELD, numQuadPts*spaceDim);
-    topology::Field<topology::SubMesh>& rate = _parameters->get("rate");
+    topology::Field<topology::Mesh>& rate = _parameters->get("rate");
     rate.vectorFieldType(topology::FieldBase::MULTI_VECTOR);
     rate.scale(rateScale);
     rate.allocate();
     _parameters->add("rate time", "traction_rate_time", topology::FieldBase::FACES_FIELD, numQuadPts);
-    topology::Field<topology::SubMesh>& rateTime = _parameters->get("rate time");
+    topology::Field<topology::Mesh>& rateTime = _parameters->get("rate time");
     rateTime.vectorFieldType(topology::FieldBase::MULTI_VECTOR);
     rateTime.scale(timeScale);
     rateTime.allocate();
   } // if
   if (_dbChange) {
     _parameters->add("change", "change_traction", topology::FieldBase::FACES_FIELD, numQuadPts*spaceDim);
-    topology::Field<topology::SubMesh>& change = _parameters->get("change");
+    topology::Field<topology::Mesh>& change = _parameters->get("change");
     change.vectorFieldType(topology::FieldBase::MULTI_VECTOR);
     change.scale(pressureScale);
     change.allocate();
     _parameters->add("change time", "change_traction_time", topology::FieldBase::FACES_FIELD, numQuadPts);
-    topology::Field<topology::SubMesh>& changeTime = _parameters->get("change time");
+    topology::Field<topology::Mesh>& changeTime = _parameters->get("change time");
     changeTime.vectorFieldType(topology::FieldBase::MULTI_VECTOR);
     changeTime.scale(timeScale);
     changeTime.allocate();
@@ -412,7 +412,7 @@
   scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get sections.
-  topology::Field<topology::SubMesh>& valueField = _parameters->get(name);
+  topology::Field<topology::Mesh>& valueField = _parameters->get(name);
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
 
@@ -512,15 +512,15 @@
   // Get sections
   scalar_array tmpLocal(spaceDim);
   
-  topology::Field<topology::SubMesh>* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
+  topology::Field<topology::Mesh>* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
   topology::VecVisitorMesh* initialVisitor = (initialField) ? new topology::VecVisitorMesh(*initialField) : 0;
   PetscScalar* initialArray = (initialVisitor) ? initialVisitor->localArray() : NULL;
 
-  topology::Field<topology::SubMesh>* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
+  topology::Field<topology::Mesh>* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
   topology::VecVisitorMesh* rateVisitor = (rateField) ? new topology::VecVisitorMesh(*rateField) : 0;
   PetscScalar* rateArray = (rateVisitor) ? rateVisitor->localArray() : NULL;
 
-  topology::Field<topology::SubMesh>* changeField = (_dbChange) ? &_parameters->get("change") : 0;
+  topology::Field<topology::Mesh>* changeField = (_dbChange) ? &_parameters->get("change") : 0;
   topology::VecVisitorMesh* changeVisitor = (changeField) ? new topology::VecVisitorMesh(*changeField) : 0;
   PetscScalar* changeArray = (changeVisitor) ? changeVisitor->localArray() : NULL;
 
@@ -621,27 +621,27 @@
   const int numQuadPts = _quadrature->numQuadPts();
 
   // Get sections
-  topology::Field<topology::SubMesh>& valueField = _parameters->get("value");
+  topology::Field<topology::Mesh>& valueField = _parameters->get("value");
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
   
-  topology::Field<topology::SubMesh>* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
+  topology::Field<topology::Mesh>* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
   topology::VecVisitorMesh* initialVisitor = (initialField) ? new topology::VecVisitorMesh(*initialField) : 0;
   PetscScalar* initialArray = (initialVisitor) ? initialVisitor->localArray() : NULL;
 
-  topology::Field<topology::SubMesh>* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
+  topology::Field<topology::Mesh>* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
   topology::VecVisitorMesh* rateVisitor = (rateField) ? new topology::VecVisitorMesh(*rateField) : 0;
   PetscScalar* rateArray = (rateVisitor) ? rateVisitor->localArray() : NULL;
 
-  topology::Field<topology::SubMesh>* rateTimeField = (_dbRate) ? &_parameters->get("rate time") : 0;
+  topology::Field<topology::Mesh>* rateTimeField = (_dbRate) ? &_parameters->get("rate time") : 0;
   topology::VecVisitorMesh* rateTimeVisitor = (rateTimeField) ? new topology::VecVisitorMesh(*rateTimeField) : 0;
   PetscScalar* rateTimeArray = (rateTimeVisitor) ? rateTimeVisitor->localArray() : NULL;
 
-  topology::Field<topology::SubMesh>* changeField = (_dbChange) ? &_parameters->get("change") : 0;
+  topology::Field<topology::Mesh>* changeField = (_dbChange) ? &_parameters->get("change") : 0;
   topology::VecVisitorMesh* changeVisitor = (changeField) ? new topology::VecVisitorMesh(*changeField) : 0;
   PetscScalar* changeArray = (changeVisitor) ? changeVisitor->localArray() : NULL;
 
-  topology::Field<topology::SubMesh>* changeTimeField = (_dbChange) ? &_parameters->get("change time") : 0;
+  topology::Field<topology::Mesh>* changeTimeField = (_dbChange) ? &_parameters->get("change time") : 0;
   topology::VecVisitorMesh* changeTimeVisitor = (changeTimeField) ? new topology::VecVisitorMesh(*changeTimeField) : 0;
   PetscScalar* changeTimeArray = (changeTimeVisitor) ? changeTimeVisitor->localArray() : NULL;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -81,7 +81,7 @@
    *
    * @returns Traction vector at integration points.
    */
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   cellField(const char* name,
 	    topology::SolutionFields* const fields =0);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "BruneSlipFn.hh" // implementation of object methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/CoordsVisitor.hh" // USES CoordsVisitor
@@ -72,7 +72,7 @@
 // ----------------------------------------------------------------------
 // Initialize slip time function.
 void
-pylith::faults::BruneSlipFn::initialize(const topology::SubMesh& faultMesh,
+pylith::faults::BruneSlipFn::initialize(const topology::Mesh& faultMesh,
 					const spatialdata::units::Nondimensional& normalizer,
 					const PylithScalar originTime)
 { // initialize
@@ -94,10 +94,10 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::SubMesh> >(faultMesh);
+  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
   assert(_parameters);
   _parameters->add("final slip", "final_slip");
-  topology::Field<topology::SubMesh>& finalSlip = _parameters->get("final slip");
+  topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
   finalSlip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   finalSlip.allocate();
   finalSlip.scale(lengthScale);
@@ -106,7 +106,7 @@
   PetscScalar* finalSlipArray = finalSlipVisitor.localArray();
 
   _parameters->add("slip time", "slip_time");
-  topology::Field<topology::SubMesh>& slipTime = _parameters->get("slip time");
+  topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
   slipTime.newSection(finalSlip, 1);
   slipTime.allocate();
   slipTime.scale(timeScale);
@@ -115,7 +115,7 @@
   PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
   _parameters->add("rise time", "rise_time");
-  topology::Field<topology::SubMesh>& riseTime = _parameters->get("rise time");
+  topology::Field<topology::Mesh>& riseTime = _parameters->get("rise time");
   riseTime.newSection(finalSlip, 1);
   riseTime.allocate();
   riseTime.scale(timeScale);
@@ -234,7 +234,7 @@
 // ----------------------------------------------------------------------
 // Get slip on fault surface at time t.
 void
-pylith::faults::BruneSlipFn::slip(topology::Field<topology::SubMesh>* slip,
+pylith::faults::BruneSlipFn::slip(topology::Field<topology::Mesh>* slip,
 				  const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -249,15 +249,15 @@
   const PetscInt vEnd = verticesStratum.end();
 
   // Get sections
-  const topology::Field<topology::SubMesh>& finalSlip = _parameters->get("final slip");
+  const topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
   topology::VecVisitorMesh finalSlipVisitor(finalSlip);
   const PetscScalar* finalSlipArray = finalSlipVisitor.localArray();
 
-  const topology::Field<topology::SubMesh>& slipTime = _parameters->get("slip time");
+  const topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
   topology::VecVisitorMesh slipTimeVisitor(slipTime);
   const PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
-  const topology::Field<topology::SubMesh>& riseTime = _parameters->get("rise time");
+  const topology::Field<topology::Mesh>& riseTime = _parameters->get("rise time");
   topology::VecVisitorMesh riseTimeVisitor(riseTime);
   const PetscScalar* riseTimeArray = riseTimeVisitor.localArray();
 
@@ -297,7 +297,7 @@
 
 // ----------------------------------------------------------------------
 // Get final slip.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::BruneSlipFn::finalSlip(void)
 { // finalSlip
   PYLITH_METHOD_BEGIN;
@@ -307,7 +307,7 @@
 
 // ----------------------------------------------------------------------
 // Get time when slip begins at each point.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::BruneSlipFn::slipTime(void)
 { // slipTime
   PYLITH_METHOD_BEGIN;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,7 @@
 // Include directives ---------------------------------------------------
 #include "SlipTimeFn.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Fields<Field<SubMesh> >
+#include "pylith/topology/topologyfwd.hh" // USES Fields<Field<Mesh> >
 
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // USES SpatialDB
 
@@ -84,7 +84,7 @@
    * @param normalizer Nondimensionalization of scales.
    * @param originTime Origin time for earthquake source.
    */
-  void initialize(const topology::SubMesh& faultMesh,
+  void initialize(const topology::Mesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
 		  const PylithScalar originTime =0.0);
 
@@ -95,20 +95,20 @@
    *
    * @returns Slip vector as left-lateral/reverse/normal.
    */
-  void slip(topology::Field<topology::SubMesh>* const slipField,
+  void slip(topology::Field<topology::Mesh>* const slipField,
 	    const PylithScalar t);
   
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::SubMesh>& finalSlip(void);
+  const topology::Field<topology::Mesh>& finalSlip(void);
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::SubMesh>& slipTime(void);
+  const topology::Field<topology::Mesh>& slipTime(void);
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -21,7 +21,7 @@
 #include "CohesiveTopology.hh" // implementation of object methods
 
 #include "TopologyOps.hh" // USES TopologyOps
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 
 #include <cassert> // USES assert()
 
@@ -40,7 +40,7 @@
 
 // ----------------------------------------------------------------------
 void
-pylith::faults::CohesiveTopology::createFault(topology::SubMesh* faultMesh,
+pylith::faults::CohesiveTopology::createFault(topology::Mesh* faultMesh,
                                               PetscDM& faultBoundary,
                                               const topology::Mesh& mesh,
                                               PetscDMLabel groupField,
@@ -52,7 +52,7 @@
   assert(groupField);
   PetscErrorCode err;
 
-  faultMesh->coordsys(mesh);
+  faultMesh->coordsys(mesh.coordsys());
   PetscDM dmMesh = mesh.dmMesh();assert(dmMesh);
 
   PetscInt dim, depth;
@@ -156,7 +156,7 @@
 // ----------------------------------------------------------------------
 void
 pylith::faults::CohesiveTopology::create(topology::Mesh* mesh,
-                                         const topology::SubMesh& faultMesh,
+                                         const topology::Mesh& faultMesh,
                                          DM faultBoundary,
                                          DMLabel groupField,
                                          const int materialId,
@@ -631,7 +631,7 @@
 
 void
 pylith::faults::CohesiveTopology::createInterpolated(topology::Mesh* mesh,
-						     const topology::SubMesh& faultMesh,
+						     const topology::Mesh& faultMesh,
 						     PetscDM faultBoundary,
 						     PetscDMLabel groupField,
 						     const int materialId,
@@ -660,7 +660,7 @@
 // ----------------------------------------------------------------------
 // Form a parallel fault mesh using the cohesive cell information
 void
-pylith::faults::CohesiveTopology::createFaultParallel(topology::SubMesh* faultMesh,
+pylith::faults::CohesiveTopology::createFaultParallel(topology::Mesh* faultMesh,
 						      const topology::Mesh& mesh,
 						      const int materialId,
 						      const char* label,
@@ -671,7 +671,7 @@
   assert(faultMesh);
   PetscErrorCode err;
 
-  faultMesh->coordsys(mesh);
+  faultMesh->coordsys(mesh.coordsys());
 
   PetscDM dmMesh = mesh.dmMesh();assert(dmMesh);
   PetscDM dmFaultMesh;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -51,7 +51,7 @@
    * of the fault.
    */
   static
-  void createFault(topology::SubMesh* faultMesh,
+  void createFault(topology::Mesh* faultMesh,
 		   DM& faultBoundary,
 		   const topology::Mesh& mesh,
 		   DMLabel groupField,
@@ -73,7 +73,7 @@
    */
   static
   void create(topology::Mesh* mesh,
-	      const topology::SubMesh& faultMesh,
+	      const topology::Mesh& faultMesh,
               DM faultBoundary,
               DMLabel groupField,
               const int materialId,
@@ -98,7 +98,7 @@
    */
   static
   void createInterpolated(topology::Mesh* mesh,
-                          const topology::SubMesh& faultMesh,
+                          const topology::Mesh& faultMesh,
                           DM faultBoundary,
                           DMLabel groupField,
                           const int materialId,
@@ -117,7 +117,7 @@
    *   Lagrange multipliers that require extra vertices, false otherwise.
    */
   static
-  void createFaultParallel(topology::SubMesh* faultMesh,
+  void createFaultParallel(topology::Mesh* faultMesh,
 			   const topology::Mesh& mesh,
 			   const int materialId,
 			   const char* label,

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "ConstRateSlipFn.hh" // implementation of object methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/CoordsVisitor.hh" // USES CoordsVisitor
@@ -69,10 +69,9 @@
 // ----------------------------------------------------------------------
 // Initialize slip time function.
 void
-pylith::faults::ConstRateSlipFn::initialize(
-			    const topology::SubMesh& faultMesh,
-			    const spatialdata::units::Nondimensional& normalizer,
-			    const PylithScalar originTime)
+pylith::faults::ConstRateSlipFn::initialize(const topology::Mesh& faultMesh,
+					    const spatialdata::units::Nondimensional& normalizer,
+					    const PylithScalar originTime)
 { // initialize
   PYLITH_METHOD_BEGIN;
 
@@ -92,10 +91,10 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::SubMesh> >(faultMesh);
+  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
   assert(_parameters);
   _parameters->add("slip rate", "slip_rate");
-  topology::Field<topology::SubMesh>& slipRate = _parameters->get("slip rate");
+  topology::Field<topology::Mesh>& slipRate = _parameters->get("slip rate");
   slipRate.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slipRate.allocate();
   slipRate.scale(velocityScale);
@@ -104,7 +103,7 @@
   PetscScalar* slipRateArray = slipRateVisitor.localArray();
 
   _parameters->add("slip time", "slip_time");
-  topology::Field<topology::SubMesh>& slipTime = _parameters->get("slip time");
+  topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
   slipTime.newSection(slipRate, 1);
   slipTime.allocate();
   slipTime.scale(timeScale);
@@ -203,7 +202,7 @@
 // ----------------------------------------------------------------------
 // Get slip on fault surface at time t.
 void
-pylith::faults::ConstRateSlipFn::slip(topology::Field<topology::SubMesh>* slip,
+pylith::faults::ConstRateSlipFn::slip(topology::Field<topology::Mesh>* slip,
 				      const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -218,11 +217,11 @@
   const PetscInt vEnd = verticesStratum.end();
 
   // Get sections
-  const topology::Field<topology::SubMesh>& slipRate = _parameters->get("slip rate");
+  const topology::Field<topology::Mesh>& slipRate = _parameters->get("slip rate");
   topology::VecVisitorMesh slipRateVisitor(slipRate);
   const PetscScalar* slipRateArray = slipRateVisitor.localArray();
 
-  const topology::Field<topology::SubMesh>& slipTime = _parameters->get("slip time");
+  const topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
   topology::VecVisitorMesh slipTimeVisitor(slipTime);
   const PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
@@ -254,7 +253,7 @@
 
 // ----------------------------------------------------------------------
 // Get final slip.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::ConstRateSlipFn::finalSlip(void)
 { // finalSlip
   PYLITH_METHOD_BEGIN;
@@ -265,7 +264,7 @@
 
 // ----------------------------------------------------------------------
 // Get time when slip begins at each point.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::ConstRateSlipFn::slipTime(void)
 { // slipTime
   PYLITH_METHOD_BEGIN;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,7 @@
 // Include directives ---------------------------------------------------
 #include "SlipTimeFn.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Fields<Field<SubMesh> >
+#include "pylith/topology/topologyfwd.hh" // USES Fields<Field<Mesh> >
 
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // USES SpatialDB
 
@@ -76,7 +76,7 @@
    * @param normalizer Nondimensionalization of scales.
    * @param originTime Origin time for earthquake source.
    */
-  void initialize(const topology::SubMesh& faultMesh,
+  void initialize(const topology::Mesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
 		  const PylithScalar originTime =0.0);
 
@@ -87,20 +87,20 @@
    *
    * @returns Slip vector as left-lateral/reverse/normal.
    */
-  void slip(topology::Field<topology::SubMesh>* const slipField,
+  void slip(topology::Field<topology::Mesh>* const slipField,
 	    const PylithScalar t);
   
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::SubMesh>& finalSlip(void);
+  const topology::Field<topology::Mesh>& finalSlip(void);
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::SubMesh>& slipTime(void);
+  const topology::Field<topology::Mesh>& slipTime(void);
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -78,7 +78,7 @@
 // ----------------------------------------------------------------------
 // Initialize slip time function.
 void
-pylith::faults::EqKinSrc::initialize(const topology::SubMesh& faultMesh,
+pylith::faults::EqKinSrc::initialize(const topology::Mesh& faultMesh,
 				     const spatialdata::units::Nondimensional& normalizer)
 { // initialize
   PYLITH_METHOD_BEGIN;
@@ -94,7 +94,7 @@
 // ----------------------------------------------------------------------
 // Get slip on fault surface at time t.
 void
-pylith::faults::EqKinSrc::slip(topology::Field<topology::SubMesh>* const slipField,
+pylith::faults::EqKinSrc::slip(topology::Field<topology::Mesh>* const slipField,
 			       const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -107,7 +107,7 @@
 
 // ----------------------------------------------------------------------
 // Get final slip.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::EqKinSrc::finalSlip(void) const
 { // finalSlip
   PYLITH_METHOD_BEGIN;
@@ -118,7 +118,7 @@
 
 // ----------------------------------------------------------------------
 // Get time when slip begins at each point.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::EqKinSrc::slipTime(void) const
 { // slipTime
   PYLITH_METHOD_BEGIN;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -28,7 +28,7 @@
 // Include directives ---------------------------------------------------
 #include "faultsfwd.hh" // forward declarations
 
-#include "pylith/topology/topologyfwd.hh" // USES Field<SubMesh>
+#include "pylith/topology/topologyfwd.hh" // USES Field<Mesh>
 
 #include "spatialdata/units/unitsfwd.hh" // USES Nondimensional
 
@@ -78,7 +78,7 @@
    * @param faultMesh Finite-element mesh of fault.
    * @param normalizer Nondimensionalization of scales.
    */
-  void initialize(const topology::SubMesh& faultMesh,
+  void initialize(const topology::Mesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer);
 
   /** Get slip on fault surface at time t.
@@ -86,20 +86,20 @@
    * @param slipField Slip field over fault mesh.
    * @param t Time t.
    */
-  void slip(topology::Field<topology::SubMesh>* const slipField,
+  void slip(topology::Field<topology::Mesh>* const slipField,
 	    const PylithScalar t);
 
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::SubMesh>& finalSlip(void) const;
+  const topology::Field<topology::Mesh>& finalSlip(void) const;
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::SubMesh>& slipTime(void) const;
+  const topology::Field<topology::Mesh>& slipTime(void) const;
 
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "Fault.hh" // implementation of object methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 
 // ----------------------------------------------------------------------
 // Default constructor.
@@ -48,7 +48,7 @@
   
 // ----------------------------------------------------------------------
 // Get mesh associated with fault fields.
-const pylith::topology::SubMesh&
+const pylith::topology::Mesh&
 pylith::faults::Fault::faultMesh(void) const
 { // faultMesh
   return *_faultMesh;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -26,7 +26,7 @@
 // Include directives ---------------------------------------------------
 #include "faultsfwd.hh" // forward declarations
 
-#include "pylith/topology/topologyfwd.hh" // USES Field<SubMesh>, SubMesh
+#include "pylith/topology/topologyfwd.hh" // USES Field<Mesh>, Mesh
 #include "pylith/utils/arrayfwd.hh" // USES scalar_array
 
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // USES SpatialDB
@@ -146,7 +146,7 @@
    *
    * @returns PETSc mesh object
    */
-  const topology::SubMesh& faultMesh(void) const;
+  const topology::Mesh& faultMesh(void) const;
 
   /** Get vertex field associated with integrator.
    *
@@ -155,7 +155,7 @@
    * @returns Vertex field.
    */
   virtual
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   vertexField(const char* name,
 	      const topology::SolutionFields* fields =0) = 0;
 
@@ -166,7 +166,7 @@
    * @returns Cell field.
    */
   virtual
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   cellField(const char* name,
 	    const topology::SolutionFields* fields =0) = 0;
 
@@ -179,7 +179,7 @@
 // PROTECTED MEMBERS ////////////////////////////////////////////////////
 protected :
 
-  topology::SubMesh* _faultMesh; ///< Mesh over fault surface
+  topology::Mesh* _faultMesh; ///< Mesh over fault surface
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -51,7 +51,7 @@
   PYLITH_METHOD_BEGIN;
 
   Fault::deallocate();
-  feassemble::Integrator<feassemble::Quadrature<topology::SubMesh> >::deallocate();
+  feassemble::Integrator<feassemble::Quadrature<topology::Mesh> >::deallocate();
 
   delete _fields; _fields = 0;
 
@@ -115,8 +115,8 @@
   assert(std::string("") != label());
   
   try {
-    topology::SubMesh faultMesh;
-    DM faultBoundary = NULL;
+    topology::Mesh faultMesh;
+    PetscDM faultBoundary = NULL;
   
     // Get group of vertices associated with fault
     PetscDM dmMesh = mesh->dmMesh();assert(dmMesh);
@@ -135,11 +135,9 @@
         throw std::runtime_error(msg.str());
       } // if
       err = DMPlexGetLabel(dmMesh, charlabel, &groupField);PYLITH_CHECK_ERROR(err);
-      CohesiveTopology::createFault(&faultMesh, faultBoundary, *mesh, groupField, 
-                                    flipFault);
+      CohesiveTopology::createFault(&faultMesh, faultBoundary, *mesh, groupField, flipFault);
       
-      CohesiveTopology::create(mesh, faultMesh, faultBoundary, groupField, id(), 
-                               *firstFaultVertex, *firstLagrangeVertex, *firstFaultCell, useLagrangeConstraints());
+      CohesiveTopology::create(mesh, faultMesh, faultBoundary, groupField, id(), *firstFaultVertex, *firstLagrangeVertex, *firstFaultCell, useLagrangeConstraints());
       err = DMDestroy(&faultBoundary);PYLITH_CHECK_ERROR(err);
     } else {
       const int faultDim = 2;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -28,14 +28,14 @@
 // Include directives ---------------------------------------------------
 #include "Fault.hh" // ISA Fault
 
-#include "pylith/topology/SubMesh.hh" // ISA Integrator<Quadrature<SubMesh> >
+#include "pylith/topology/Mesh.hh" // ISA Integrator<Quadrature<Mesh> >
 #include "pylith/feassemble/Quadrature.hh" // ISA Integrator<Quadrature>
 #include "pylith/feassemble/Integrator.hh" // ISA Integrator
 
 // FaultCohesive --------------------------------------------------------
 /// Absract base class for fault surface implemented with cohesive cells.
 class pylith::faults::FaultCohesive : public Fault,
-				      public feassemble::Integrator<feassemble::Quadrature<topology::SubMesh> >
+				      public feassemble::Integrator<feassemble::Quadrature<topology::Mesh> >
 { // class FaultCohesive
   friend class TestFaultCohesive; // unit testing
 
@@ -102,14 +102,14 @@
    *
    * @returns Fields associated with fault.
    */
-  const topology::Fields<topology::Field<topology::SubMesh> >*
+  const topology::Fields<topology::Field<topology::Mesh> >*
   fields(void) const;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 
   /// Fields for fault information.
-  topology::Fields<topology::Field<topology::SubMesh> >* _fields;
+  topology::Fields<topology::Field<topology::Mesh> >* _fields;
 
   bool _useLagrangeConstraints; ///< True if uses Lagrange multipliers.
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.icc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.icc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -29,7 +29,7 @@
 
 // Get fields associated with fault.
 inline
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::SubMesh> >*
+const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
 pylith::faults::FaultCohesive::fields(void) const {
   return _fields;
 } // fields

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -26,7 +26,6 @@
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/feassemble/CellGeometry.hh" // USES CellGeometry
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
@@ -146,7 +145,7 @@
 
   // Get initial tractions using a spatial database.
   if (_tractPerturbation) {
-    const topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+    const topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
     _tractPerturbation->initialize(*_faultMesh, orientation, *_normalizer);
   } // if
 
@@ -162,8 +161,8 @@
 
   // Create field for relative velocity associated with Lagrange vertex k
   _fields->add("relative velocity", "relative_velocity");
-  topology::Field<topology::SubMesh>& velRel = _fields->get("relative velocity");
-  topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+  topology::Field<topology::Mesh>& velRel = _fields->get("relative velocity");
+  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
   velRel.cloneSection(dispRel);
   velRel.vectorFieldType(topology::FieldBase::VECTOR);
   velRel.scale(_normalizer->lengthScale() / _normalizer->timeScale());
@@ -226,18 +225,18 @@
   if (_tractPerturbation) {
     _tractPerturbation->calculate(t);
     
-    const topology::Fields<topology::Field<topology::SubMesh> >* params = _tractPerturbation->parameterFields();assert(params);
-    const topology::Field<topology::SubMesh>& tractions = params->get("value");
+    const topology::Fields<topology::Field<topology::Mesh> >* params = _tractPerturbation->parameterFields();assert(params);
+    const topology::Field<topology::Mesh>& tractions = params->get("value");
 
     tractionsVisitor = new topology::VecVisitorMesh(tractions);
     tractionsArray = tractionsVisitor->localArray();
   } // if
 
-  topology::Field<topology::SubMesh>& area = _fields->get("area");
+  topology::Field<topology::Mesh>& area = _fields->get("area");
   topology::VecVisitorMesh areaVisitor(area);
   const PetscScalar* areaArray = areaVisitor.localArray();
 
-  topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+  topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
   topology::VecVisitorMesh orientationVisitor(orientation);
   const PetscScalar* orientationArray = orientationVisitor.localArray();
 
@@ -388,16 +387,16 @@
   const PetscScalar* dispTIncrArray = dispTIncrVisitor.localArray();
 
   scalar_array slipVertex(spaceDim);
-  topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
   topology::VecVisitorMesh dispRelVisitor(dispRel);
   const PetscScalar* dispRelArray = dispRelVisitor.localArray();
 
   scalar_array slipRateVertex(spaceDim);
-  topology::Field<topology::SubMesh>& velRel = _fields->get("relative velocity");
+  topology::Field<topology::Mesh>& velRel = _fields->get("relative velocity");
   topology::VecVisitorMesh velRelVisitor(velRel);
   const PetscScalar* velRelArray = velRelVisitor.localArray();
 
-  topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+  topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
   topology::VecVisitorMesh orientationVisitor(orientation);
   const PetscScalar* orientationArray = orientationVisitor.localArray();
 
@@ -1320,7 +1319,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field associated with integrator.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::FaultCohesiveDyn::vertexField(const char* name,
 					      const topology::SolutionFields* fields)
 { // vertexField
@@ -1335,23 +1334,23 @@
   const int cohesiveDim = _faultMesh->dimension();
   const int spaceDim = _quadrature->spaceDim();
 
-  const topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+  const topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
 
   PylithScalar scale = 0.0;
   int fiberDim = 0;
   if (0 == strcasecmp("slip", name)) {
-    const topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+    const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer =  _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer =  _fields->get("buffer (vector)");
     buffer.copy(dispRel);
     buffer.label("slip");
     FaultCohesiveLagrange::globalToFault(&buffer, orientation);
     PYLITH_METHOD_RETURN(buffer);
 
   } else if (0 == strcasecmp("slip_rate", name)) {
-    const topology::Field<topology::SubMesh>& velRel = _fields->get("relative velocity");
+    const topology::Field<topology::Mesh>& velRel = _fields->get("relative velocity");
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(velRel);
     buffer.label("slip_rate");
     FaultCohesiveLagrange::globalToFault(&buffer, orientation);
@@ -1361,7 +1360,7 @@
     PetscSection orientationSection = _fields->get("orientation").petscSection();assert(orientationSection);
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 0, PETSC_DETERMINE, orientationVec);
     buffer.label("strike_dir");
     buffer.scale(1.0);
@@ -1371,7 +1370,7 @@
     PetscSection orientationSection = _fields->get("orientation").petscSection();assert(orientationSection);
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 1, PETSC_DETERMINE, orientationVec);
     buffer.label("dip_dir");
     buffer.scale(1.0);
@@ -1381,7 +1380,7 @@
     PetscSection orientationSection = _fields->get("orientation").petscSection();assert(orientationSection);
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, cohesiveDim, PETSC_DETERMINE, orientationVec);
     buffer.label("normal_dir");
     buffer.scale(1.0);
@@ -1391,7 +1390,7 @@
     assert(fields);
     const topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     _calcTractions(&buffer, dispT);
     PYLITH_METHOD_RETURN(buffer);
 
@@ -1399,10 +1398,10 @@
     PYLITH_METHOD_RETURN(_friction->getField(name));
 
   } else if (_tractPerturbation && _tractPerturbation->hasParameter(name)) {
-    const topology::Field<topology::SubMesh>& param = _tractPerturbation->vertexField(name, fields);
+    const topology::Field<topology::Mesh>& param = _tractPerturbation->vertexField(name, fields);
     if (param.vectorFieldType() == topology::FieldBase::VECTOR) {
       _allocateBufferVectorField();
-      topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+      topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
       buffer.copy(param);
       FaultCohesiveLagrange::globalToFault(&buffer, orientation);
       PYLITH_METHOD_RETURN(buffer);
@@ -1422,7 +1421,7 @@
 
   // Satisfy return values
   assert(_fields);
-  const topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+  const topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
 
   PYLITH_METHOD_RETURN(buffer);
 } // vertexField
@@ -1430,7 +1429,7 @@
 // ----------------------------------------------------------------------
 // Compute tractions on fault surface using solution.
 void
-pylith::faults::FaultCohesiveDyn::_calcTractions(topology::Field<topology::SubMesh>* tractions,
+pylith::faults::FaultCohesiveDyn::_calcTractions(topology::Field<topology::Mesh>* tractions,
 						 const topology::Field<topology::Mesh>& dispT)
 { // _calcTractions
   PYLITH_METHOD_BEGIN;
@@ -1452,7 +1451,7 @@
 
   // Allocate buffer for tractions field (if necessary).
   if (!tractions->petscSection()) {
-    const topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+    const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
     tractions->cloneSection(dispRel);
   } // if
   const PylithScalar pressureScale = _normalizer->pressureScale();
@@ -1586,34 +1585,34 @@
   // Setup fields involved in sensitivity solve.
   if (!_fields->hasField("sensitivity solution")) {
     _fields->add("sensitivity solution", "sensitivity_soln");
-    topology::Field<topology::SubMesh>& solution = _fields->get("sensitivity solution");
-    const topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+    topology::Field<topology::Mesh>& solution = _fields->get("sensitivity solution");
+    const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
     solution.cloneSection(dispRel);
     solution.createScatter(solution.mesh());
   } // if
-  const topology::Field<topology::SubMesh>& solution = _fields->get("sensitivity solution");
+  const topology::Field<topology::Mesh>& solution = _fields->get("sensitivity solution");
 
   if (!_fields->hasField("sensitivity residual")) {
     _fields->add("sensitivity residual", "sensitivity_residual");
-    topology::Field<topology::SubMesh>& residual = _fields->get("sensitivity residual");
+    topology::Field<topology::Mesh>& residual = _fields->get("sensitivity residual");
     residual.cloneSection(solution);
     residual.createScatter(solution.mesh());
   } // if
 
   if (!_fields->hasField("sensitivity relative disp")) {
     _fields->add("sensitivity relative disp", "sensitivity_relative_disp");
-    topology::Field<topology::SubMesh>& dispRel = _fields->get("sensitivity relative disp");
+    topology::Field<topology::Mesh>& dispRel = _fields->get("sensitivity relative disp");
     dispRel.cloneSection(solution);
   } // if
-  topology::Field<topology::SubMesh>& dispRel = _fields->get("sensitivity relative disp");
+  topology::Field<topology::Mesh>& dispRel = _fields->get("sensitivity relative disp");
   dispRel.zero();
 
   if (!_fields->hasField("sensitivity dLagrange")) {
     _fields->add("sensitivity dLagrange", "sensitivity_dlagrange");
-    topology::Field<topology::SubMesh>& dLagrange = _fields->get("sensitivity dLagrange");
+    topology::Field<topology::Mesh>& dLagrange = _fields->get("sensitivity dLagrange");
     dLagrange.cloneSection(solution);
   } // if
-  topology::Field<topology::SubMesh>& dLagrange = _fields->get("sensitivity dLagrange");
+  topology::Field<topology::Mesh>& dLagrange = _fields->get("sensitivity dLagrange");
   dLagrange.zero();
 
   // Setup Jacobian sparse matrix for sensitivity solve.
@@ -1822,7 +1821,7 @@
   topology::VecVisitorMesh dLagrangeVisitor(_fields->get("sensitivity dLagrange"));
 
   scalar_array residualCell(numBasis*spaceDim);
-  topology::Field<topology::SubMesh>& residual = _fields->get("sensitivity residual");
+  topology::Field<topology::Mesh>& residual = _fields->get("sensitivity residual");
   topology::VecVisitorMesh residualVisitor(residual);
   residual.zero();
 
@@ -1890,8 +1889,8 @@
   assert(_jacobian);
   assert(_ksp);
 
-  topology::Field<topology::SubMesh>& residual = _fields->get("sensitivity residual");
-  topology::Field<topology::SubMesh>& solution = _fields->get("sensitivity solution");
+  topology::Field<topology::Mesh>& residual = _fields->get("sensitivity residual");
+  topology::Field<topology::Mesh>& solution = _fields->get("sensitivity solution");
 
   // Assemble residual over processors.
   residual.complete();

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -145,7 +145,7 @@
    * @param fields Solution fields.
    * @returns Vertex field.
    */
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   vertexField(const char* name,
 	      const topology::SolutionFields* fields =0);
 
@@ -157,7 +157,7 @@
    * @param tractions Field for tractions.
    * @param solution Solution over domain
    */
-  void _calcTractions(topology::Field<topology::SubMesh>* tractions,
+  void _calcTractions(topology::Field<topology::Mesh>* tractions,
           const topology::Field<topology::Mesh>& solution);
 
   /** Update relative displacement and velocity associated with

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -25,7 +25,6 @@
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/feassemble/CellGeometry.hh" // USES CellGeometry
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
@@ -166,14 +165,14 @@
   const int setupEvent = _logger->eventId("FaIR setup");
   _logger->eventBegin(setupEvent);
 
-  topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
   dispRel.zero();
   // Set impulse corresponding to current time.
   _setRelativeDisp(dispRel, int(t+0.1));
 
   // Transform slip from local (fault) coordinate system to relative
   // displacement field in global coordinate system
-  const topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+  const topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
   FaultCohesiveLagrange::faultToGlobal(&dispRel, orientation);
 
   _logger->eventEnd(setupEvent);
@@ -185,7 +184,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field associated with integrator.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::FaultCohesiveImpulses::vertexField(const char* name,
 						   const topology::SolutionFields* fields)
 { // vertexField
@@ -199,14 +198,14 @@
   const int cohesiveDim = _faultMesh->dimension();
   const int spaceDim = _quadrature->spaceDim();
 
-  const topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+  const topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
 
   PylithScalar scale = 0.0;
   int fiberDim = 0;
   if (0 == strcasecmp("slip", name)) {
-    const topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+    const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(dispRel);
     buffer.label("slip");
     FaultCohesiveLagrange::globalToFault(&buffer, orientation);
@@ -216,7 +215,7 @@
     PetscSection orientationSection = _fields->get("orientation").petscSection();assert(orientationSection);
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 0, PETSC_DETERMINE, orientationVec);
     buffer.label("strike_dir");
     buffer.scale(1.0);
@@ -227,7 +226,7 @@
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     assert(orientationSection);assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 1, PETSC_DETERMINE, orientationVec);
     buffer.label("dip_dir");
     buffer.scale(1.0);
@@ -238,25 +237,25 @@
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     assert(orientationSection);assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, cohesiveDim, PETSC_DETERMINE, orientationVec);
     buffer.label("normal_dir");
     buffer.scale(1.0);
     PYLITH_METHOD_RETURN(buffer);
 
   } else if (0 == strcasecmp("impulse_amplitude", name)) {
-    topology::Field<topology::SubMesh>& amplitude = _fields->get("impulse amplitude");
+    topology::Field<topology::Mesh>& amplitude = _fields->get("impulse amplitude");
     PYLITH_METHOD_RETURN(amplitude);
 
   } else if (0 == strcasecmp("area", name)) {
-    topology::Field<topology::SubMesh>& area = _fields->get("area");
+    topology::Field<topology::Mesh>& area = _fields->get("area");
     PYLITH_METHOD_RETURN(area);
 
   } else if (0 == strcasecmp("traction_change", name)) {
     assert(fields);
     const topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     _calcTractionsChange(&buffer, dispT);
     PYLITH_METHOD_RETURN(buffer);
 
@@ -273,7 +272,7 @@
 
   // Satisfy return values
   assert(_fields);
-  const topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+  const topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
   PYLITH_METHOD_RETURN(buffer);
 } // vertexField
 
@@ -297,8 +296,8 @@
 
   // Create section to hold amplitudes of impulses.
   _fields->add("impulse amplitude", "impulse_amplitude");
-  topology::Field<topology::SubMesh>& amplitude = _fields->get("impulse amplitude");
-  topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+  topology::Field<topology::Mesh>& amplitude = _fields->get("impulse amplitude");
+  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
   const int fiberDim = 1;
   amplitude.newSection(dispRel, fiberDim);
   amplitude.allocate();
@@ -431,7 +430,7 @@
 // ----------------------------------------------------------------------
 // Set relative displacemet associated with impulse.
 void
-pylith::faults::FaultCohesiveImpulses::_setRelativeDisp(const topology::Field<topology::SubMesh>& dispRel,
+pylith::faults::FaultCohesiveImpulses::_setRelativeDisp(const topology::Field<topology::Mesh>& dispRel,
 							const int impulse)
 { // _setRelativeDisp
   PYLITH_METHOD_BEGIN;
@@ -445,7 +444,7 @@
   const spatialdata::geocoords::CoordSys* cs = _faultMesh->coordsys();assert(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::SubMesh>& amplitude = _fields->get("impulse amplitude");
+  topology::Field<topology::Mesh>& amplitude = _fields->get("impulse amplitude");
   topology::VecVisitorMesh amplitudeVisitor(amplitude);
   const PetscScalar* amplitudeArray = amplitudeVisitor.localArray();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -116,7 +116,7 @@
    * @param fields Solution fields.
    * @returns Vertex field.
    */
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   vertexField(const char* name,
 	      const topology::SolutionFields* fields =0);
 
@@ -137,7 +137,7 @@
    * @param dispRel Relative displacement field.
    * @parm impulse Index of impulse.
    */
-  void _setRelativeDisp(const topology::Field<topology::SubMesh>& dispRel,
+  void _setRelativeDisp(const topology::Field<topology::Mesh>& dispRel,
 			const int impulse);
 
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -26,7 +26,6 @@
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/feassemble/CellGeometry.hh" // USES CellGeometry
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
@@ -132,7 +131,7 @@
   const int setupEvent = _logger->eventId("FaIR setup");
   _logger->eventBegin(setupEvent);
 
-  topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
   dispRel.zero();
   // Compute slip field at current time step
   const srcs_type::const_iterator srcsEnd = _eqSrcs.end();
@@ -145,7 +144,7 @@
 
   // Transform slip from local (fault) coordinate system to relative
   // displacement field in global coordinate system
-  const topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+  const topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
   FaultCohesiveLagrange::faultToGlobal(&dispRel, orientation);
 
   _logger->eventEnd(setupEvent);
@@ -158,7 +157,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field associated with integrator.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::FaultCohesiveKin::vertexField(const char* name,
                                               const topology::SolutionFields* fields)
 { // vertexField
@@ -172,7 +171,7 @@
   const int cohesiveDim = _faultMesh->dimension();
   const int spaceDim = _quadrature->spaceDim();
 
-  const topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+  const topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
 
   const int slipStrLen = strlen("final_slip");
   const int timeStrLen = strlen("slip_time");
@@ -180,9 +179,9 @@
   PylithScalar scale = 0.0;
   int fiberDim = 0;
   if (0 == strcasecmp("slip", name)) {
-    const topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+    const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(dispRel);
     buffer.label("slip");
     FaultCohesiveLagrange::globalToFault(&buffer, orientation);
@@ -192,7 +191,7 @@
     PetscSection orientationSection = _fields->get("orientation").petscSection();assert(orientationSection);
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 0, PETSC_DETERMINE, orientationVec);
     buffer.label("strike_dir");
     buffer.scale(1.0);
@@ -203,7 +202,7 @@
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     assert(orientationSection);assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 1, PETSC_DETERMINE, orientationVec);
     buffer.label("dip_dir");
     buffer.scale(1.0);
@@ -214,7 +213,7 @@
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     assert(orientationSection);assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, cohesiveDim, PETSC_DETERMINE, orientationVec);
     buffer.label("normal_dir");
     buffer.scale(1.0);
@@ -228,7 +227,7 @@
     // Need to append name of rupture to final slip label. Because
     // Field is const, we use a buffer.
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     buffer.copy(s_iter->second->finalSlip());
     assert(value.length() > 0);
     const std::string& label = (_eqSrcs.size() > 1) ? 
@@ -245,7 +244,7 @@
     // Need to append name of rupture to final slip label. Because
     // Field is const, we use a buffer.
     _allocateBufferScalarField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (scalar)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (scalar)");
     buffer.copy(s_iter->second->slipTime());
     assert(value.length() > 0);
     const std::string& label = (_eqSrcs.size() > 1) ? 
@@ -257,7 +256,7 @@
     assert(fields);
     const topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
     _allocateBufferVectorField();
-    topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
     _calcTractionsChange(&buffer, dispT);
     PYLITH_METHOD_RETURN(buffer);
 
@@ -274,7 +273,7 @@
 
   // Satisfy return values
   assert(_fields);
-  const topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+  const topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
   PYLITH_METHOD_RETURN(buffer);
 } // vertexField
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -92,7 +92,7 @@
    * @param fields Solution fields.
    * @returns Vertex field.
    */
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   vertexField(const char* name,
 	      const topology::SolutionFields* fields =0);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -25,7 +25,6 @@
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/feassemble/CellGeometry.hh" // USES CellGeometry
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
@@ -91,16 +90,17 @@
 
   const spatialdata::geocoords::CoordSys* cs = mesh.coordsys();assert(cs);
 
-  delete _faultMesh; _faultMesh = new topology::SubMesh();assert(_faultMesh);
+  const bool isSubMesh = true;
+  delete _faultMesh; _faultMesh = new topology::Mesh(isSubMesh);assert(_faultMesh);
   CohesiveTopology::createFaultParallel(_faultMesh, mesh, id(), label(), _useLagrangeConstraints);
   _initializeCohesiveInfo(mesh);
 
   delete _fields;
-  _fields = new topology::Fields<topology::Field<topology::SubMesh> >(*_faultMesh);
+  _fields = new topology::Fields<topology::Field<topology::Mesh> >(*_faultMesh);
 
   // Allocate dispRel field
   _fields->add("relative disp", "relative_disp");
-  topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
   dispRel.newSection(topology::FieldBase::VERTICES_FIELD, cs->spaceDim());
   dispRel.allocate();
   dispRel.vectorFieldType(topology::FieldBase::VECTOR);
@@ -210,11 +210,11 @@
   topology::VecVisitorMesh dispTIncrVisitor(dispTIncr);
   PetscScalar* dispTIncrArray = dispTIncrVisitor.localArray();
 
-  topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
   topology::VecVisitorMesh dispRelVisitor(dispRel);
   PetscScalar* dispRelArray = dispRelVisitor.localArray();
 
-  topology::Field<topology::SubMesh>& area = _fields->get("area");
+  topology::Field<topology::Mesh>& area = _fields->get("area");
   topology::VecVisitorMesh areaVisitor(area);
   PetscScalar* areaArray = areaVisitor.localArray();
 
@@ -337,7 +337,7 @@
   const int spaceDim = _quadrature->spaceDim();
 
   // Get fields.
-  topology::Field<topology::SubMesh>& area = _fields->get("area");
+  topology::Field<topology::Mesh>& area = _fields->get("area");
   topology::VecVisitorMesh areaVisitor(area);
   const PetscScalar* areaArray = areaVisitor.localArray();
   
@@ -600,7 +600,7 @@
   } // for
 
   // Get fields
-  topology::Field<topology::SubMesh>& area = _fields->get("area");
+  topology::Field<topology::Mesh>& area = _fields->get("area");
   topology::VecVisitorMesh areaVisitor(area);
   const PetscScalar* areaArray = areaVisitor.localArray();
 
@@ -752,7 +752,7 @@
   const int spaceDim = _quadrature->spaceDim();
 
   // Get fields
-  topology::Field<topology::SubMesh>& area = _fields->get("area");
+  topology::Field<topology::Mesh>& area = _fields->get("area");
   topology::VecVisitorMesh areaVisitor(area);
   const PetscScalar* areaArray = areaVisitor.localArray();
 
@@ -1141,8 +1141,8 @@
 // Transform field from local (fault) coordinate system to
 // global coordinate system.
 void
-pylith::faults::FaultCohesiveLagrange::faultToGlobal(topology::Field<topology::SubMesh>* field,
-						     const topology::Field<topology::SubMesh>& faultOrientation)
+pylith::faults::FaultCohesiveLagrange::faultToGlobal(topology::Field<topology::Mesh>* field,
+						     const topology::Field<topology::Mesh>& faultOrientation)
 { // faultToGlobal
   PYLITH_METHOD_BEGIN;
 
@@ -1196,8 +1196,8 @@
 // Transform field from global coordinate system to local (fault)
 // coordinate system.
 void
-pylith::faults::FaultCohesiveLagrange::globalToFault(topology::Field<topology::SubMesh>* field,
-						     const topology::Field<topology::SubMesh>& faultOrientation)
+pylith::faults::FaultCohesiveLagrange::globalToFault(topology::Field<topology::Mesh>* field,
+						     const topology::Field<topology::Mesh>& faultOrientation)
 { // globalToFault
   PYLITH_METHOD_BEGIN;
 
@@ -1291,8 +1291,8 @@
   // Allocate orientation field.
   scalar_array orientationVertex(orientationSize);
   _fields->add("orientation", "orientation");
-  topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
-  const topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+  topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
+  const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
   if (spaceDim > 1) orientation.addField("strike_dir", spaceDim);
   if (spaceDim > 2) orientation.addField("dip_dir", spaceDim);
   orientation.addField("normal_dir", spaceDim);
@@ -1549,8 +1549,8 @@
 
   // Allocate area field.
   _fields->add("area", "area");
-  topology::Field<topology::SubMesh>& area = _fields->get("area");
-  const topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+  topology::Field<topology::Mesh>& area = _fields->get("area");
+  const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
   area.newSection(dispRel, 1);
   area.allocate();
   area.vectorFieldType(topology::FieldBase::SCALAR);
@@ -1603,7 +1603,7 @@
 // ----------------------------------------------------------------------
 // Compute change in tractions on fault surface using solution.
 void
-pylith::faults::FaultCohesiveLagrange::_calcTractionsChange(topology::Field<topology::SubMesh>* tractions,
+pylith::faults::FaultCohesiveLagrange::_calcTractionsChange(topology::Field<topology::Mesh>* tractions,
 							    const topology::Field<topology::Mesh>& dispT)
 { // _calcTractionsChange
   PYLITH_METHOD_BEGIN;
@@ -1623,13 +1623,13 @@
   topology::VecVisitorMesh dispTVisitor(dispT);
   const PetscScalar* dispTArray = dispTVisitor.localArray();
 
-  topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+  topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
   topology::VecVisitorMesh orientationVisitor(orientation);
   const PetscScalar* orientationArray = orientationVisitor.localArray();
 
   // Allocate buffer for tractions field (if necessary).
   if (!tractions->petscSection()) {
-    const topology::Field<topology::SubMesh>& dispRel = _fields->get("relative disp");
+    const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
     tractions->cloneSection(dispRel);
   } // if
   tractions->zero();
@@ -1685,8 +1685,8 @@
   // displacement field.
   assert(_faultMesh);
   _fields->add("buffer (vector)", "buffer");
-  topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
-  const topology::Field<topology::SubMesh>& dispRel = 
+  topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+  const topology::Field<topology::Mesh>& dispRel = 
     _fields->get("relative disp");
   buffer.cloneSection(dispRel);
   buffer.zero();
@@ -1709,7 +1709,7 @@
   // Create vector field; use same shape/chart as area field.
   assert(_faultMesh);
   _fields->add("buffer (scalar)", "buffer");
-  topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (scalar)");
+  topology::Field<topology::Mesh>& buffer = _fields->get("buffer (scalar)");
   buffer.newSection(topology::FieldBase::VERTICES_FIELD, 1);
   buffer.allocate();
   buffer.vectorFieldType(topology::FieldBase::SCALAR);
@@ -1820,7 +1820,7 @@
 
 // ----------------------------------------------------------------------
 // Get cell field associated with integrator.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::FaultCohesiveLagrange::cellField(const char* name,
                                                  const topology::SolutionFields* fields)
 { // cellField
@@ -1835,7 +1835,7 @@
 
     const int fiberDim = 1;
     _fields->add("partition", "partition", pylith::topology::FieldBase::CELLS_FIELD, fiberDim);
-    topology::Field<topology::SubMesh>& partition = _fields->get("partition");
+    topology::Field<topology::Mesh>& partition = _fields->get("partition");
     partition.allocate();
     topology::VecVisitorMesh partitionVisitor(partition);
     PetscScalar* partitionArray = partitionVisitor.localArray();
@@ -1859,7 +1859,7 @@
 
   // Satisfy return values
   assert(_fields);
-  const topology::Field<topology::SubMesh>& buffer = _fields->get("buffer (vector)");
+  const topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
   PYLITH_METHOD_RETURN(buffer);
 } // cellField
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -202,7 +202,7 @@
    * @param fields Solution fields.
    * @returns Cell field.
    */
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   cellField(const char* name,
 	    const topology::SolutionFields* fields =0);
 
@@ -213,8 +213,8 @@
    * @param faultOrientation Orientation of vertices on fault.
    */
   static
-  void faultToGlobal(topology::Field<topology::SubMesh>* field,
-		     const topology::Field<topology::SubMesh>& faultOrientation);
+  void faultToGlobal(topology::Field<topology::Mesh>* field,
+		     const topology::Field<topology::Mesh>& faultOrientation);
 
   /** Transform field from global coordinate system to local (fault)
    * coordinate system.
@@ -223,8 +223,8 @@
    * @param faultOrientation Orientation of vertices on fault.
    */
   static
-  void globalToFault(topology::Field<topology::SubMesh>* field,
-		     const topology::Field<topology::SubMesh>& faultOrientation);
+  void globalToFault(topology::Field<topology::Mesh>* field,
+		     const topology::Field<topology::Mesh>& faultOrientation);
 
   // PROTECTED STRUCTS //////////////////////////////////////////////////
 protected :
@@ -253,7 +253,7 @@
    * @param tractions Field for tractions.
    * @param solution Solution over domain
    */
-  void _calcTractionsChange(topology::Field<topology::SubMesh>* tractions,
+  void _calcTractionsChange(topology::Field<topology::Mesh>* tractions,
           const topology::Field<topology::Mesh>& solution);
 
   /// Allocate buffer for vector field.

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -66,13 +66,13 @@
   assert(upDir);
   assert(_quadrature);
 
-  delete _faultMesh; _faultMesh = new topology::SubMesh();
+  delete _faultMesh; _faultMesh = new topology::Mesh();
   CohesiveTopology::createFaultParallel(_faultMesh, mesh, id(), label(), useLagrangeConstraints());
 
   // Reset fields.
   delete _fields; 
   _fields = 
-    new topology::Fields<topology::Field<topology::SubMesh> >(*_faultMesh);
+    new topology::Fields<topology::Field<topology::Mesh> >(*_faultMesh);
 
   // Initialize quadrature geometry.
   _quadrature->initializeGeometry();
@@ -156,7 +156,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field associated with integrator.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::FaultCohesiveTract::vertexField(const char* name,
 						const topology::SolutionFields* fields)
 { // vertexField
@@ -165,7 +165,7 @@
 
 // ----------------------------------------------------------------------
 // Get cell field associated with integrator.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::FaultCohesiveTract::cellField(const char* name,
 					      const topology::SolutionFields* fields)
 { // cellField

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -96,7 +96,7 @@
    *
    * @returns Vertex field.
    */
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   vertexField(const char* name,
 	      const topology::SolutionFields* fields =0);
   
@@ -107,7 +107,7 @@
    *
    * @returns Cell field.
    */
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   cellField(const char* name,
 	    const topology::SolutionFields* fields =0);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "LiuCosSlipFn.hh" // implementation of object methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/CoordsVisitor.hh" // USES CoordsVisitor
@@ -72,7 +72,7 @@
 // ----------------------------------------------------------------------
 // Initialize slip time function.
 void
-pylith::faults::LiuCosSlipFn::initialize(const topology::SubMesh& faultMesh,
+pylith::faults::LiuCosSlipFn::initialize(const topology::Mesh& faultMesh,
 					 const spatialdata::units::Nondimensional& normalizer,
 					 const PylithScalar originTime)
 { // initialize
@@ -94,10 +94,10 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::SubMesh> >(faultMesh);
+  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
   assert(_parameters);
   _parameters->add("final slip", "final_slip");
-  topology::Field<topology::SubMesh>& finalSlip = _parameters->get("final slip");
+  topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
   finalSlip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   finalSlip.allocate();
   finalSlip.scale(lengthScale);
@@ -106,7 +106,7 @@
   PetscScalar* finalSlipArray = finalSlipVisitor.localArray();
 
   _parameters->add("slip time", "slip_time");
-  topology::Field<topology::SubMesh>& slipTime = _parameters->get("slip time");
+  topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
   slipTime.newSection(finalSlip, 1);
   slipTime.allocate();
   slipTime.scale(timeScale);
@@ -115,7 +115,7 @@
   PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
   _parameters->add("rise time", "rise_time");
-  topology::Field<topology::SubMesh>& riseTime = _parameters->get("rise time");
+  topology::Field<topology::Mesh>& riseTime = _parameters->get("rise time");
   riseTime.newSection(finalSlip, 1);
   riseTime.allocate();
   riseTime.scale(timeScale);
@@ -234,7 +234,7 @@
 // ----------------------------------------------------------------------
 // Get slip on fault surface at time t.
 void
-pylith::faults::LiuCosSlipFn::slip(topology::Field<topology::SubMesh>* slip,
+pylith::faults::LiuCosSlipFn::slip(topology::Field<topology::Mesh>* slip,
 				   const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -249,15 +249,15 @@
   const PetscInt vEnd = verticesStratum.end();
 
   // Get sections
-  const topology::Field<topology::SubMesh>& finalSlip = _parameters->get("final slip");
+  const topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
   topology::VecVisitorMesh finalSlipVisitor(finalSlip);
   const PetscScalar* finalSlipArray = finalSlipVisitor.localArray();
 
-  const topology::Field<topology::SubMesh>& slipTime = _parameters->get("slip time");
+  const topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
   topology::VecVisitorMesh slipTimeVisitor(slipTime);
   const PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
-  const topology::Field<topology::SubMesh>& riseTime = _parameters->get("rise time");
+  const topology::Field<topology::Mesh>& riseTime = _parameters->get("rise time");
   topology::VecVisitorMesh riseTimeVisitor(riseTime);
   const PetscScalar* riseTimeArray = riseTimeVisitor.localArray();
 
@@ -297,7 +297,7 @@
 
 // ----------------------------------------------------------------------
 // Get final slip.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::LiuCosSlipFn::finalSlip(void)
 { // finalSlip
   PYLITH_METHOD_BEGIN;
@@ -307,7 +307,7 @@
 
 // ----------------------------------------------------------------------
 // Get time when slip begins at each point.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::LiuCosSlipFn::slipTime(void)
 { // slipTime
   PYLITH_METHOD_BEGIN;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,7 @@
 // Include directives ---------------------------------------------------
 #include "SlipTimeFn.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Fields<Field<SubMesh> >
+#include "pylith/topology/topologyfwd.hh" // USES Fields<Field<Mesh> >
 
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // USES SpatialDB
 
@@ -84,7 +84,7 @@
    * @param normalizer Nondimensionalization of scales.
    * @param originTime Origin time for earthquake source.
    */
-  void initialize(const topology::SubMesh& faultMesh,
+  void initialize(const topology::Mesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
 		  const PylithScalar originTime =0.0);
 
@@ -95,20 +95,20 @@
    *
    * @returns Slip vector as left-lateral/reverse/normal.
    */
-  void slip(topology::Field<topology::SubMesh>* const slipField,
+  void slip(topology::Field<topology::Mesh>* const slipField,
 	    const PylithScalar t);
   
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::SubMesh>& finalSlip(void);
+  const topology::Field<topology::Mesh>& finalSlip(void);
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::SubMesh>& slipTime(void);
+  const topology::Field<topology::Mesh>& slipTime(void);
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "SlipTimeFn.hh" // implementation of object methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Field.hh" // USES Field
 
@@ -52,7 +52,7 @@
   
 // ----------------------------------------------------------------------
 // Get parameter fields.
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::SubMesh> >*
+const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
 pylith::faults::SlipTimeFn::parameterFields(void) const
 { // parameterFields
   return _parameters;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,7 @@
 // Include directives ---------------------------------------------------
 #include "faultsfwd.hh" // forward declarations
 
-#include "pylith/topology/topologyfwd.hh" // USES Fields<SubMesh>
+#include "pylith/topology/topologyfwd.hh" // USES Fields<Mesh>
 
 #include "spatialdata/units/unitsfwd.hh" // USES Nondimensional
 
@@ -62,7 +62,7 @@
    * @param originTime Origin time for earthquake source.
    */
   virtual
-  void initialize(const topology::SubMesh& faultMesh,
+  void initialize(const topology::Mesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
 		  const PylithScalar originTime =0.0) = 0;
 
@@ -72,7 +72,7 @@
    * @param t Time t.
    */
   virtual
-  void slip(topology::Field<topology::SubMesh>* const slipField,
+  void slip(topology::Field<topology::Mesh>* const slipField,
 	    const PylithScalar t) = 0;
   
   /** Get final slip.
@@ -80,27 +80,27 @@
    * @returns Final slip.
    */
   virtual
-  const topology::Field<topology::SubMesh>& finalSlip(void) = 0;
+  const topology::Field<topology::Mesh>& finalSlip(void) = 0;
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
   virtual
-  const topology::Field<topology::SubMesh>& slipTime(void) = 0;
+  const topology::Field<topology::Mesh>& slipTime(void) = 0;
 
   /** Get parameter fields.
    *
    * @returns Parameter fields.
    */
-  const topology::Fields<topology::Field<topology::SubMesh> >*
+  const topology::Fields<topology::Field<topology::Mesh> >*
   parameterFields(void) const;
 
 // PROTECTED MEMBERS ////////////////////////////////////////////////////
 protected :
 
   /// Parameters for slip time function.
-  topology::Fields<topology::Field<topology::SubMesh> >* _parameters;
+  topology::Fields<topology::Field<topology::Mesh> >* _parameters;
 
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "StepSlipFn.hh" // implementation of object methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/CoordsVisitor.hh" // USES CoordsVisitor
@@ -69,7 +69,7 @@
 // ----------------------------------------------------------------------
 // Initialize slip time function.
 void
-pylith::faults::StepSlipFn::initialize(const topology::SubMesh& faultMesh,
+pylith::faults::StepSlipFn::initialize(const topology::Mesh& faultMesh,
 				       const spatialdata::units::Nondimensional& normalizer,
 				       const PylithScalar originTime)
 { // initialize
@@ -90,11 +90,11 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::SubMesh> >(faultMesh);
+  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
   assert(_parameters);
 
   _parameters->add("final slip", "final_slip");
-  topology::Field<topology::SubMesh>& finalSlip = _parameters->get("final slip");
+  topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
   finalSlip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   finalSlip.allocate();
   finalSlip.scale(lengthScale);
@@ -103,7 +103,7 @@
   PetscScalar* finalSlipArray = finalSlipVisitor.localArray();
 
   _parameters->add("slip time", "slip_time");
-  topology::Field<topology::SubMesh>& slipTime = _parameters->get("slip time");
+  topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
   slipTime.newSection(finalSlip, 1);
   slipTime.allocate();
   slipTime.scale(timeScale);
@@ -202,7 +202,7 @@
 // ----------------------------------------------------------------------
 // Get slip on fault surface at time t.
 void
-pylith::faults::StepSlipFn::slip(topology::Field<topology::SubMesh>* slip,
+pylith::faults::StepSlipFn::slip(topology::Field<topology::Mesh>* slip,
 				 const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -217,11 +217,11 @@
   const PetscInt vEnd = verticesStratum.end();
 
   // Get sections
-  const topology::Field<topology::SubMesh>& finalSlip = _parameters->get("final slip");
+  const topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
   topology::VecVisitorMesh finalSlipVisitor(finalSlip);
   const PetscScalar* finalSlipArray = finalSlipVisitor.localArray();
 
-  const topology::Field<topology::SubMesh>& slipTime = _parameters->get("slip time");
+  const topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
   topology::VecVisitorMesh slipTimeVisitor(slipTime);
   const PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
@@ -253,7 +253,7 @@
 
 // ----------------------------------------------------------------------
 // Get final slip.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::StepSlipFn::finalSlip(void)
 { // finalSlip
   PYLITH_METHOD_BEGIN;
@@ -263,7 +263,7 @@
 
 // ----------------------------------------------------------------------
 // Get time when slip begins at each point.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::StepSlipFn::slipTime(void)
 { // slipTime
   PYLITH_METHOD_BEGIN;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -75,7 +75,7 @@
    * @param normalizer Nondimensionalization of scales.
    * @param originTime Origin time for earthquake source.
    */
-  void initialize(const topology::SubMesh& faultMesh,
+  void initialize(const topology::Mesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
 		  const PylithScalar originTime =0.0);
 
@@ -86,20 +86,20 @@
    *
    * @returns Slip vector as left-lateral/reverse/normal.
    */
-  void slip(topology::Field<topology::SubMesh>* const slipField,
+  void slip(topology::Field<topology::Mesh>* const slipField,
 	    const PylithScalar t);
   
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::SubMesh>& finalSlip(void);
+  const topology::Field<topology::Mesh>& finalSlip(void);
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::SubMesh>& slipTime(void);
+  const topology::Field<topology::Mesh>& slipTime(void);
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "TimeHistorySlipFn.hh" // implementation of object methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/CoordsVisitor.hh" // USES CoordsVisitor
@@ -75,7 +75,7 @@
 // ----------------------------------------------------------------------
 // Initialize slip time function.
 void
-pylith::faults::TimeHistorySlipFn::initialize(const topology::SubMesh& faultMesh,
+pylith::faults::TimeHistorySlipFn::initialize(const topology::Mesh& faultMesh,
 					      const spatialdata::units::Nondimensional& normalizer,
 					      const PylithScalar originTime)
 { // initialize
@@ -96,11 +96,11 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::SubMesh> >(faultMesh);
+  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
   assert(_parameters);
   _parameters->add("slip amplitude", "slip_amplitude");
 
-  topology::Field<topology::SubMesh>& slipAmplitude = _parameters->get("slip amplitude");
+  topology::Field<topology::Mesh>& slipAmplitude = _parameters->get("slip amplitude");
   slipAmplitude.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slipAmplitude.allocate();
   slipAmplitude.scale(lengthScale);
@@ -109,7 +109,7 @@
   PetscScalar* slipAmplitudeArray = slipAmplitudeVisitor.localArray();
 
   _parameters->add("slip time", "slip_time");
-  topology::Field<topology::SubMesh>& slipTime = _parameters->get("slip time");
+  topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
   slipTime.newSection(slipAmplitude, 1);
   slipTime.allocate();
   slipTime.scale(timeScale);
@@ -212,7 +212,7 @@
 // ----------------------------------------------------------------------
 // Get slip on fault surface at time t.
 void
-pylith::faults::TimeHistorySlipFn::slip(topology::Field<topology::SubMesh>* slip,
+pylith::faults::TimeHistorySlipFn::slip(topology::Field<topology::Mesh>* slip,
 					const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -228,11 +228,11 @@
   const PetscInt vEnd = verticesStratum.end();
 
   // Get sections
-  const topology::Field<topology::SubMesh>& slipAmplitude = _parameters->get("slip amplitude");
+  const topology::Field<topology::Mesh>& slipAmplitude = _parameters->get("slip amplitude");
   topology::VecVisitorMesh slipAmplitudeVisitor(slipAmplitude);
   const PetscScalar* slipAmplitudeArray = slipAmplitudeVisitor.localArray();
 
-  const topology::Field<topology::SubMesh>& slipTime = _parameters->get("slip time");
+  const topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
   topology::VecVisitorMesh slipTimeVisitor(slipTime);
   const PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
@@ -275,7 +275,7 @@
 
 // ----------------------------------------------------------------------
 // Get final slip.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::TimeHistorySlipFn::finalSlip(void)
 { // finalSlip
   PYLITH_METHOD_BEGIN;
@@ -285,7 +285,7 @@
 
 // ----------------------------------------------------------------------
 // Get time when slip begins at each point.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::TimeHistorySlipFn::slipTime(void)
 { // slipTime
   PYLITH_METHOD_BEGIN;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -81,7 +81,7 @@
    * @param normalizer Nondimensionalization of scales.
    * @param originTime Origin time for earthquake source.
    */
-  void initialize(const topology::SubMesh& faultMesh,
+  void initialize(const topology::Mesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
 		  const PylithScalar originTime =0.0);
 
@@ -92,20 +92,20 @@
    *
    * @returns Slip vector as left-lateral/reverse/normal.
    */
-  void slip(topology::Field<topology::SubMesh>* const slipField,
+  void slip(topology::Field<topology::Mesh>* const slipField,
 	    const PylithScalar t);
   
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::SubMesh>& finalSlip(void);
+  const topology::Field<topology::Mesh>& finalSlip(void);
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::SubMesh>& slipTime(void);
+  const topology::Field<topology::Mesh>& slipTime(void);
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/TopologyOps.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/TopologyOps.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TopologyOps.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -24,7 +24,7 @@
 
 // ----------------------------------------------------------------------
 void
-pylith::faults::TopologyOps::classifyCellsDM(DM dmMesh,
+pylith::faults::TopologyOps::classifyCellsDM(PetscDM dmMesh,
                                              PetscInt vertex,
                                              const int depth,
                                              const int faceSize,

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/TopologyOps.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/TopologyOps.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TopologyOps.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -36,20 +36,23 @@
 
   // PUBLIC TYPEDEFS ////////////////////////////////////////////////////
 public :
-  typedef std::set<PetscInt>    PointSet;
+
+  typedef std::set<PetscInt> PointSet;
   typedef std::vector<PetscInt> PointArray;
 
   // PUBLIC METHODS /////////////////////////////////////////////////////
 public :
+
   static
-  void classifyCellsDM(DM dmMesh,
-		     PetscInt vertex,
-		     const int depth,
-		     const int faceSize,
-		     PetscInt firstCohesiveCell,
-		     PointSet& replaceCells,
-		     PointSet& noReplaceCells,
-		     const int debug);
+  void classifyCellsDM(PetscDM dmMesh,
+		       PetscInt vertex,
+		       const int depth,
+		       const int faceSize,
+		       PetscInt firstCohesiveCell,
+		       PointSet& replaceCells,
+		       PointSet& noReplaceCells,
+		       const int debug);
+
 }; // class CohesiveTopology
 
 #endif // pylith_faults_cohesivetopology_hh

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,7 +22,7 @@
 
 #include "FaultCohesiveLagrange.hh" // USES faultToGlobal()
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Fields.hh" // HOLDSA Fields
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/CoordsVisitor.hh" // USES CoordsVisitor
@@ -78,7 +78,7 @@
 
 // ----------------------------------------------------------------------
 // Get parameter fields.
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::SubMesh> >*
+const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
 pylith::faults::TractPerturbation::parameterFields(void) const
 { // parameterFields
   return _parameters;
@@ -87,8 +87,8 @@
 // ----------------------------------------------------------------------
 // Initialize traction perturbation function.
 void
-pylith::faults::TractPerturbation::initialize(const topology::SubMesh& faultMesh,
-					      const topology::Field<topology::SubMesh>& faultOrientation, 
+pylith::faults::TractPerturbation::initialize(const topology::Mesh& faultMesh,
+					      const topology::Field<topology::Mesh>& faultOrientation, 
 					      const spatialdata::units::Nondimensional& normalizer)
 { // initialize
   PYLITH_METHOD_BEGIN;
@@ -102,41 +102,41 @@
   const int spaceDim = cs->spaceDim();
 
   delete _parameters; 
-  _parameters = new topology::Fields<topology::Field<topology::SubMesh> >(faultMesh);
+  _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
 
   // Create section to hold time dependent values
   _parameters->add("value", "traction", topology::FieldBase::VERTICES_FIELD, spaceDim);
-  topology::Field<topology::SubMesh>& value = _parameters->get("value");
+  topology::Field<topology::Mesh>& value = _parameters->get("value");
   value.vectorFieldType(topology::FieldBase::VECTOR);
   value.scale(pressureScale);
   value.allocate();
   if (_dbInitial) {
     _parameters->add("initial", "traction_initial", topology::FieldBase::VERTICES_FIELD, spaceDim);
-    topology::Field<topology::SubMesh>& initial = _parameters->get("initial");
+    topology::Field<topology::Mesh>& initial = _parameters->get("initial");
     initial.vectorFieldType(topology::FieldBase::VECTOR);
     initial.scale(pressureScale);
     initial.allocate();
   }
   if (_dbRate) {
     _parameters->add("rate", "traction_rate", topology::FieldBase::VERTICES_FIELD, spaceDim);
-    topology::Field<topology::SubMesh>& rate = _parameters->get("rate");
+    topology::Field<topology::Mesh>& rate = _parameters->get("rate");
     rate.vectorFieldType(topology::FieldBase::VECTOR);
     rate.scale(rateScale);
     rate.allocate();
     _parameters->add("rate time", "rate_start_time", topology::FieldBase::VERTICES_FIELD, 1);
-    topology::Field<topology::SubMesh>& rateTime = _parameters->get("rate time");
+    topology::Field<topology::Mesh>& rateTime = _parameters->get("rate time");
     rateTime.vectorFieldType(topology::FieldBase::SCALAR);
     rateTime.scale(timeScale);
     rateTime.allocate();
   } // if
   if (_dbChange) {
     _parameters->add("change", "traction_change", topology::FieldBase::VERTICES_FIELD, spaceDim);
-    topology::Field<topology::SubMesh>& change = _parameters->get("change");
+    topology::Field<topology::Mesh>& change = _parameters->get("change");
     change.vectorFieldType(topology::FieldBase::VECTOR);
     change.scale(pressureScale);
     change.allocate();
     _parameters->add("change time", "change_start_time", topology::FieldBase::VERTICES_FIELD, 1);
-    topology::Field<topology::SubMesh>& changeTime = _parameters->get("change time");
+    topology::Field<topology::Mesh>& changeTime = _parameters->get("change time");
     changeTime.vectorFieldType(topology::FieldBase::SCALAR);
     changeTime.scale(timeScale);
     changeTime.allocate();
@@ -170,7 +170,7 @@
       } // switch
     _queryDB("initial", _dbInitial, spaceDim, pressureScale, normalizer);
     _dbInitial->close();
-    pylith::topology::Field<pylith::topology::SubMesh>& initial = _parameters->get("initial");
+    pylith::topology::Field<pylith::topology::Mesh>& initial = _parameters->get("initial");
     FaultCohesiveLagrange::faultToGlobal(&initial, faultOrientation);
   } // if
 
@@ -207,7 +207,7 @@
     _dbRate->queryVals(timeNames, 1);
     _queryDB("rate time", _dbRate, 1, timeScale, normalizer);
     _dbRate->close();
-    pylith::topology::Field<pylith::topology::SubMesh>& rate = _parameters->get("rate");
+    pylith::topology::Field<pylith::topology::Mesh>& rate = _parameters->get("rate");
     FaultCohesiveLagrange::faultToGlobal(&rate, faultOrientation);
   } // if
 
@@ -243,7 +243,7 @@
     _dbChange->queryVals(timeNames, 1);
     _queryDB("change time", _dbChange, 1, timeScale, normalizer);
     _dbChange->close();
-    pylith::topology::Field<pylith::topology::SubMesh>& change = _parameters->get("change");
+    pylith::topology::Field<pylith::topology::Mesh>& change = _parameters->get("change");
     FaultCohesiveLagrange::faultToGlobal(&change, faultOrientation);
 
     if (_dbTimeHistory)
@@ -273,27 +273,27 @@
   const spatialdata::geocoords::CoordSys* cs = _parameters->mesh().coordsys();assert(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::SubMesh>& valueField = _parameters->get("value");
+  topology::Field<topology::Mesh>& valueField = _parameters->get("value");
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
   
-  topology::Field<topology::SubMesh>* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
+  topology::Field<topology::Mesh>* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
   topology::VecVisitorMesh* initialVisitor = (initialField) ? new topology::VecVisitorMesh(*initialField) : 0;
   PetscScalar* initialArray = (initialVisitor) ? initialVisitor->localArray() : NULL;
 
-  topology::Field<topology::SubMesh>* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
+  topology::Field<topology::Mesh>* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
   topology::VecVisitorMesh* rateVisitor = (rateField) ? new topology::VecVisitorMesh(*rateField) : 0;
   PetscScalar* rateArray = (rateVisitor) ? rateVisitor->localArray() : NULL;
 
-  topology::Field<topology::SubMesh>* rateTimeField = (_dbRate) ? &_parameters->get("rate time") : 0;
+  topology::Field<topology::Mesh>* rateTimeField = (_dbRate) ? &_parameters->get("rate time") : 0;
   topology::VecVisitorMesh* rateTimeVisitor = (rateTimeField) ? new topology::VecVisitorMesh(*rateTimeField) : 0;
   PetscScalar* rateTimeArray = (rateTimeVisitor) ? rateTimeVisitor->localArray() : NULL;
 
-  topology::Field<topology::SubMesh>* changeField = (_dbChange) ? &_parameters->get("change") : 0;
+  topology::Field<topology::Mesh>* changeField = (_dbChange) ? &_parameters->get("change") : 0;
   topology::VecVisitorMesh* changeVisitor = (changeField) ? new topology::VecVisitorMesh(*changeField) : 0;
   PetscScalar* changeArray = (changeVisitor) ? changeVisitor->localArray() : NULL;
 
-  topology::Field<topology::SubMesh>* changeTimeField = (_dbChange) ? &_parameters->get("change time") : 0;
+  topology::Field<topology::Mesh>* changeTimeField = (_dbChange) ? &_parameters->get("change time") : 0;
   topology::VecVisitorMesh* changeTimeVisitor = (changeTimeField) ? new topology::VecVisitorMesh(*changeTimeField) : 0;
   PetscScalar* changeTimeArray = (changeTimeVisitor) ? changeTimeVisitor->localArray() : NULL;
 
@@ -390,7 +390,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field with traction perturbation information.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::faults::TractPerturbation::vertexField(const char* name,
 					       const topology::SolutionFields* const fields)
 { // vertexField
@@ -462,7 +462,7 @@
   topology::CoordsVisitor coordsVisitor(dmMesh);
   PetscScalar *coordArray = coordsVisitor.localArray();
 
-  topology::Field<topology::SubMesh>& parametersField = _parameters->get(name);
+  topology::Field<topology::Mesh>& parametersField = _parameters->get(name);
   topology::VecVisitorMesh parametersVisitor(parametersField);
   PetscScalar* parametersArray = parametersVisitor.localArray();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -64,7 +64,7 @@
    *
    * @returns Parameter fields.
    */
-  const topology::Fields<topology::Field<topology::SubMesh> >* parameterFields(void) const;
+  const topology::Fields<topology::Field<topology::Mesh> >* parameterFields(void) const;
   
   /** Initialize slip time function.
    *
@@ -72,8 +72,8 @@
    * @param faultOrientation Orientation of fault.
    * @param normalizer Nondimensionalization of scales.
    */
-  void initialize(const topology::SubMesh& faultMesh,
-		  const topology::Field<topology::SubMesh>& faultOrientation,
+  void initialize(const topology::Mesh& faultMesh,
+		  const topology::Field<topology::Mesh>& faultOrientation,
 		  const spatialdata::units::Nondimensional& normalizer);
 
   /** Calculate spatial and temporal variation of value.
@@ -96,7 +96,7 @@
    *
    * @returns Traction vector field.
    */
-  const topology::Field<topology::SubMesh>&
+  const topology::Field<topology::Mesh>&
   vertexField(const char* name,
 	      const topology::SolutionFields* const fields =0);
 
@@ -127,7 +127,7 @@
 private :
   
   /// Parameters for perturbations.
-  topology::Fields<topology::Field<topology::SubMesh> >* _parameters;
+  topology::Fields<topology::Field<topology::Mesh> >* _parameters;
 
   /// Time scale for current time.
   PylithScalar _timeScale;

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "FrictionModel.hh" // implementation of object methods
 
-#include "pylith/topology/SubMesh.hh" // USES Mesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Stratum.hh" // USES Stratum
@@ -97,8 +97,8 @@
 // ----------------------------------------------------------------------
 // Get physical property parameters and initial state (if used) from database.
 void
-pylith::friction::FrictionModel::initialize(const topology::SubMesh& faultMesh,
-					    feassemble::Quadrature<topology::SubMesh>* quadrature)
+pylith::friction::FrictionModel::initialize(const topology::Mesh& faultMesh,
+					    feassemble::Quadrature<topology::Mesh>* quadrature)
 { // initialize
   PYLITH_METHOD_BEGIN;
 
@@ -125,7 +125,7 @@
 
   // Create fields to hold physical properties and state variables.
   delete _fieldsPropsStateVars; 
-  _fieldsPropsStateVars = new topology::Fields<topology::Field<topology::SubMesh> >(faultMesh);
+  _fieldsPropsStateVars = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
   assert(_fieldsPropsStateVars);
   _setupPropsStateVars();
 
@@ -169,7 +169,7 @@
     for (int i=0; i < _metadata.numProperties(); ++i) {
       const materials::Metadata::ParamDescription& property = _metadata.getProperty(i);
       // TODO This needs to be an integer instead of a string
-      topology::Field<topology::SubMesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+      topology::Field<topology::Mesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
       topology::VecVisitorMesh propertyVisitor(propertyField);
       PetscScalar* propertyArray = propertyVisitor.localArray();
       const PetscInt off = propertyVisitor.sectionOffset(v);
@@ -222,7 +222,7 @@
       for (int i=0; i < _metadata.numStateVars(); ++i) {
         const materials::Metadata::ParamDescription& stateVar = _metadata.getStateVar(i);
         // TODO This needs to be an integer instead of a string
-        topology::Field<topology::SubMesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+        topology::Field<topology::Mesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
 	topology::VecVisitorMesh stateVarVisitor(stateVarField);
 	PetscScalar* stateVarArray = stateVarVisitor.localArray();
 	const PetscInt off = stateVarVisitor.sectionOffset(v);
@@ -247,7 +247,7 @@
 
 // ----------------------------------------------------------------------
 // Get the field with all properties and state variables.
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::SubMesh> >&
+const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >&
 pylith::friction::FrictionModel::fieldsPropsStateVars(void) const
 { // fieldsPropsStateVars
   PYLITH_METHOD_BEGIN;
@@ -290,7 +290,7 @@
   
 // ----------------------------------------------------------------------
 // Get physical property or state variable field.
-const pylith::topology::Field<pylith::topology::SubMesh>&
+const pylith::topology::Field<pylith::topology::Mesh>&
 pylith::friction::FrictionModel::getField(const char* name)
 { // getField
   PYLITH_METHOD_BEGIN;
@@ -314,7 +314,7 @@
   for (int i=0; i < _metadata.numProperties(); ++i) {
     const materials::Metadata::ParamDescription& property = _metadata.getProperty(i);
     // TODO This needs to be an integer instead of a string
-    topology::Field<topology::SubMesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+    topology::Field<topology::Mesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
     topology::VecVisitorMesh propertyVisitor(propertyField);
     PetscScalar* propertyArray = propertyVisitor.localArray();
     const PetscInt off = propertyVisitor.sectionOffset(point);
@@ -326,7 +326,7 @@
   for (int i=0; i < _metadata.numStateVars(); ++i) {
     const materials::Metadata::ParamDescription& stateVar = _metadata.getStateVar(i);
     // TODO This needs to be an integer instead of a string
-    topology::Field<topology::SubMesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+    topology::Field<topology::Mesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
     topology::VecVisitorMesh stateVarVisitor(stateVarField);
     PetscScalar* stateVarArray = stateVarVisitor.localArray();
     const PetscInt off = stateVarVisitor.sectionOffset(point);
@@ -391,7 +391,7 @@
   for (int i=0; i < _metadata.numProperties(); ++i) {
     const materials::Metadata::ParamDescription& property = _metadata.getProperty(i);
     // TODO This needs to be an integer instead of a string
-    topology::Field<topology::SubMesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+    topology::Field<topology::Mesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
     topology::VecVisitorMesh propertyVisitor(propertyField);
     PetscScalar* propertyArray = propertyVisitor.localArray();
     const PetscInt off = propertyVisitor.sectionOffset(vertex);
@@ -403,7 +403,7 @@
   for (int i=0; i < _metadata.numStateVars(); ++i) {
     const materials::Metadata::ParamDescription& stateVar = _metadata.getStateVar(i);
     // TODO This needs to be an integer instead of a string
-    topology::Field<topology::SubMesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+    topology::Field<topology::Mesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
     topology::VecVisitorMesh stateVarVisitor(stateVarField);
     PetscScalar* stateVarArray = stateVarVisitor.localArray();
     const PetscInt off = stateVarVisitor.sectionOffset(vertex);
@@ -472,7 +472,7 @@
     const materials::Metadata::ParamDescription& property = 
       _metadata.getProperty(i);
     _fieldsPropsStateVars->add(property.name.c_str(), property.name.c_str());
-    topology::Field<topology::SubMesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+    topology::Field<topology::Mesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
     propertyField.newSection(topology::FieldBase::VERTICES_FIELD, property.fiberDim);
     propertyField.allocate();
     propertyField.vectorFieldType(property.fieldType);
@@ -485,7 +485,7 @@
     const materials::Metadata::ParamDescription& stateVar = 
       _metadata.getStateVar(i);
     _fieldsPropsStateVars->add(stateVar.name.c_str(), stateVar.name.c_str());
-    topology::Field<topology::SubMesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+    topology::Field<topology::Mesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
     stateVarField.newSection(topology::FieldBase::VERTICES_FIELD, stateVar.fiberDim);
     stateVarField.allocate();
     stateVarField.vectorFieldType(stateVar.fieldType);

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -118,8 +118,8 @@
    * @param quadrature Quadrature for finite-element integration
    */
   virtual
-  void initialize(const topology::SubMesh& mesh,
-		  feassemble::Quadrature<topology::SubMesh>* quadrature);
+  void initialize(const topology::Mesh& mesh,
+		  feassemble::Quadrature<topology::Mesh>* quadrature);
   
   /** Check whether friction model has a field as a property or state
    * variable.
@@ -143,13 +143,13 @@
    * @param name Name of field to retrieve.
    * @returns Field over fault interface cells.
    */
-  const topology::Field<topology::SubMesh>& getField(const char* name);
+  const topology::Field<topology::Mesh>& getField(const char* name);
 
   /** Get the field with all properties and state variables.
    *
    * @returns Properties field.
    */
-  const topology::Fields<topology::Field<topology::SubMesh> >& fieldsPropsStateVars() const;
+  const topology::Fields<topology::Field<topology::Mesh> >& fieldsPropsStateVars() const;
 
   /** Retrieve properties and state variables for a point.
    *
@@ -323,7 +323,7 @@
 
   /// Field containing physical properties and state variables of
   /// friction model.
-  topology::Fields<topology::Field<topology::SubMesh> >* _fieldsPropsStateVars;
+  topology::Fields<topology::Field<topology::Mesh> >* _fieldsPropsStateVars;
 
   /// Buffer for properties and state variables at vertex.
   scalar_array _propsStateVarsVertex;

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -44,7 +44,7 @@
 { // deallocate
   PYLITH_METHOD_BEGIN;
 
-  OutputManager<topology::SubMesh, topology::Field<topology::Mesh> >::deallocate();
+  OutputManager<topology::Mesh, topology::Field<topology::Mesh> >::deallocate();
 
   delete _submesh; _submesh = 0;
 
@@ -85,12 +85,12 @@
 
 // ----------------------------------------------------------------------
 // Get mesh associated with subdomain.
-const pylith::topology::SubMesh&
+const pylith::topology::Mesh&
 pylith::meshio::OutputSolnSubset::subdomainMesh(const topology::Mesh& mesh)
 { // subdomainMesh
   PYLITH_METHOD_BEGIN;
 
-  delete _submesh; _submesh = new topology::SubMesh(mesh, _label.c_str());assert(_submesh);
+  delete _submesh; _submesh = new topology::Mesh(mesh, _label.c_str());assert(_submesh);
 
   PYLITH_METHOD_RETURN(*_submesh);
 } // subdomainMesh

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -29,8 +29,7 @@
 // Include directives ---------------------------------------------------
 #include "meshiofwd.hh" // forward declarations
 
-#include "pylith/topology/SubMesh.hh" // ISA OutputManager<SubMesh>
-#include "pylith/topology/Mesh.hh" // ISA OutputManager<Field<Mesh>>
+#include "pylith/topology/Mesh.hh" // ISA OutputManager<Mesh>
 #include "pylith/topology/Field.hh" // ISA OutputManager<Field<Mesh>>
 #include "OutputManager.hh" // ISA OutputManager
 
@@ -41,7 +40,7 @@
  * a subdomain.
  */
 class pylith::meshio::OutputSolnSubset : 
-  public OutputManager<topology::SubMesh, topology::Field<topology::Mesh> >
+  public OutputManager<topology::Mesh, topology::Field<topology::Mesh> >
 { // OutputSolnSubset
   friend class TestOutputSolnSubset; // unit testing
 
@@ -73,7 +72,7 @@
    *
    * @returns Mesh associated with subdomain.
    */
-  const topology::SubMesh& subdomainMesh(const topology::Mesh& mesh);
+  const topology::Mesh& subdomainMesh(const topology::Mesh& mesh);
   
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :
@@ -85,7 +84,7 @@
 private :
 
   std::string _label; ///< Label of subdomain.
-  topology::SubMesh* _submesh; ///< Mesh of subdomain.
+  topology::Mesh* _submesh; ///< Mesh of subdomain.
 
 }; // OutputSolnSubset
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -21,7 +21,6 @@
 #include "Formulation.hh" // implementation of class methods
 
 #include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
-#include "pylith/topology/SubMesh.hh" // USES Quadrature<SubMesh>
 #include "pylith/feassemble/Quadrature.hh" // USES Integrator<Quadrature>
 #include "pylith/feassemble/Integrator.hh" // USES Integrator
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
@@ -156,7 +155,7 @@
 // ----------------------------------------------------------------------
 // Set integrators over lower-dimension meshes.
 void
-pylith::problems::Formulation::submeshIntegrators(IntegratorSubMesh** integrators,
+pylith::problems::Formulation::submeshIntegrators(IntegratorMesh** integrators,
 						  const int numIntegrators)
 { // submeshIntegrators
   assert( (!integrators && 0 == numIntegrators) ||

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -47,7 +47,6 @@
 private :
 
   typedef feassemble::Integrator<feassemble::Quadrature<topology::Mesh> > IntegratorMesh;
-  typedef feassemble::Integrator<feassemble::Quadrature<topology::SubMesh> > IntegratorSubMesh;
 
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////
 public :
@@ -122,7 +121,7 @@
    * @param integrators Integrators over lower-dimension meshes.
    * @param numIntegrators Number of integrators.
    */
-  void submeshIntegrators(IntegratorSubMesh** integrators,
+  void submeshIntegrators(IntegratorMesh** integrators,
 			  const int numIntegrators);
 
   /** Set handle to preconditioner.
@@ -210,7 +209,7 @@
   std::vector<IntegratorMesh*> _meshIntegrators;
 
   ///< Integrators over lower-dimensional subdomains of the mesh.
-  std::vector<IntegratorSubMesh*> _submeshIntegrators;
+  std::vector<IntegratorMesh*> _submeshIntegrators;
 
   bool _isJacobianSymmetric; ///< Is system Jacobian symmetric?
   bool _splitFields; ///< True if splitting fields.

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -21,7 +21,6 @@
 #include "Jacobian.hh" // implementation of class methods
 
 #include "Mesh.hh" // USES Mesh
-#include "SubMesh.hh" // USES SubMesh
 #include "Field.hh" // USES Field
 
 #include "pylith/utils/error.h" // USES PYLITH_CHECK_ERROR
@@ -51,30 +50,6 @@
 } // constructor
 
 // ----------------------------------------------------------------------
-// Default constructor.
-pylith::topology::Jacobian::Jacobian(const Field<SubMesh>& field,
-                                     const char* matrixType,
-                                     const bool blockOkay) :
-  _matrix(0),
-  _valuesChanged(true)
-{ // constructor
-  PYLITH_METHOD_BEGIN;
-
-  PetscDM dmMesh = field.dmMesh();assert(dmMesh);
-
-  // Set blockFlag to -1 if okay to set block size equal to fiber
-  // dimension, otherwise use a block size of 1.
-  const int blockFlag = (blockOkay) ? -1 : 1;
-
-  const char* msg = "Could not create PETSc sparse matrix associated with subsystem Jacobian.";
-  PetscErrorCode err = DMCreateMatrix(dmMesh, matrixType, &_matrix);PYLITH_CHECK_ERROR_MSG(err, msg);
-
-  _type = matrixType;
-
-  PYLITH_METHOD_END;
-} // constructor
-
-// ----------------------------------------------------------------------
 // Destructor.
 pylith::topology::Jacobian::~Jacobian(void)
 { // destructor

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -55,17 +55,6 @@
            const char* matrixType ="aij",
            const bool blockOkay =false);
 
-  /** Constructor with field for submesh.
-   *
-   * @param field Fields associated with submesh and solution of the problem.
-   * @param matrixType Type of PETSc sparse matrix.
-   * @param blockOkay True if okay to use block size equal to fiberDim
-   * (all or none of the DOF at each point are constrained).
-   */
-  Jacobian(const Field<SubMesh>& field,
-           const char* matrixType ="aij",
-           const bool blockOkay =true);
-
   /// Destructor.
   ~Jacobian(void);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Makefile.am	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Makefile.am	2013-05-13 23:33:37 UTC (rev 22058)
@@ -37,9 +37,6 @@
 	SolutionFields.hh \
 	Stratum.hh \
 	Stratum.icc \
-	SubMesh.hh \
-	SubMesh.icc \
-	SubMesh.cc \
 	VisitorMesh.hh \
 	VisitorMesh.icc \
 	VisitorSubMesh.hh \

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -32,7 +32,7 @@
 
 // ----------------------------------------------------------------------
 // Default constructor
-pylith::topology::Mesh::Mesh(void) :
+pylith::topology::Mesh::Mesh(const bool isSubMesh) :
   _dmMesh(NULL),
   _numNormalCells(0),
   _numCohesiveCells(0),
@@ -40,9 +40,8 @@
   _numShadowVertices(0),
   _numLagrangeVertices(0),
   _coordsys(0),
-  _comm(PETSC_COMM_WORLD),
   _debug(false),
-  _isSubMesh(false)
+  _isSubMesh(isSubMesh)
 { // constructor
 } // constructor
 
@@ -57,14 +56,13 @@
   _numShadowVertices(0),
   _numLagrangeVertices(0),
   _coordsys(0),
-  _comm(comm),
   _debug(false),
   _isSubMesh(false)
 { // constructor
   PYLITH_METHOD_BEGIN;
 
   PetscErrorCode err;
-  err = DMCreate(_comm, &_dmMesh);PYLITH_CHECK_ERROR(err);
+  err = DMCreate(comm, &_dmMesh);PYLITH_CHECK_ERROR(err);
   err = DMSetType(_dmMesh, DMPLEX);PYLITH_CHECK_ERROR(err);
   err = DMPlexSetDimension(_dmMesh, dim);PYLITH_CHECK_ERROR(err);
   err = PetscObjectSetName((PetscObject) _dmMesh, "domain");PYLITH_CHECK_ERROR(err);
@@ -83,8 +81,7 @@
   _numShadowVertices(0),
   _numLagrangeVertices(0),
   _coordsys(0),
-  _comm(mesh.comm()),
-  _debug(mesh.debug()),
+  _debug(mesh._debug),
   _isSubMesh(true)
 { // Submesh constructor
   PYLITH_METHOD_BEGIN;
@@ -159,14 +156,50 @@
 { // coordsys
   PYLITH_METHOD_BEGIN;
 
-  delete _coordsys; _coordsys = (0 != cs) ? cs->clone() : 0;
-  if (0 != _coordsys)
+  delete _coordsys; _coordsys = (cs) ? cs->clone() : 0;
+  if (_coordsys)
     _coordsys->initialize();
 
   PYLITH_METHOD_END;
 } // coordsys
 
 // ----------------------------------------------------------------------
+// Get MPI communicator associated with mesh.
+MPI_Comm
+pylith::topology::Mesh::comm(void) const
+{ // comm
+  PYLITH_METHOD_BEGIN;
+  
+  MPI_Comm comm;
+  if (_dmMesh) {
+    PetscObjectGetComm((PetscObject) _dmMesh, &comm);
+  } else {
+    comm = PETSC_COMM_WORLD;
+  } // if/else
+  
+  PYLITH_METHOD_RETURN(comm);
+} // comm
+    
+// ----------------------------------------------------------------------
+// Get MPI rank.
+int
+pylith::topology::Mesh::commRank(void) const
+{ // commRank
+  PYLITH_METHOD_BEGIN;
+
+  int rank = 0;
+  MPI_Comm comm;
+  if (_dmMesh) {
+    PetscObjectGetComm((PetscObject) _dmMesh, &comm);
+  } else {
+    comm = PETSC_COMM_WORLD;
+  } // if/else
+  MPI_Comm_rank(comm, &rank);
+
+  PYLITH_METHOD_RETURN(rank);
+} // commRank
+
+// ----------------------------------------------------------------------
 // Return the names of all vertex groups.
 void
 pylith::topology::Mesh::groups(int* numNames, 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -44,8 +44,11 @@
 // PUBLIC METHODS ///////////////////////////////////////////////////////
 public :
 
-  /// Default constructor.
-  Mesh(void);
+  /** Default constructor.
+   *
+   * @param isSubMesh True if mesh is a submesh of another mesh.
+   */
+  Mesh(const bool isSubMesh =false);
 
   /** Constructor with dimension and communicator.
    *
@@ -159,25 +162,17 @@
    */
   int numCells(void) const;
 
-  /** Set MPI communicator associated with mesh.
-   *
-   * @param value MPI communicator.
-   */
-  void comm(const MPI_Comm value);
-    
   /** Get MPI communicator associated with mesh.
    *
    * @returns MPI communicator.
    */
-  const MPI_Comm comm(void) const;
+  MPI_Comm comm(void) const;
     
   /** Get MPI rank.
    *
    * @returns MPI rank.
    */
   int commRank(void) const;
-    
-  /** Get 
 
   /** Print mesh to stdout.
    *
@@ -210,9 +205,8 @@
   PetscInt _numNormalCells, _numCohesiveCells, _numNormalVertices, _numShadowVertices, _numLagrangeVertices;
 
   spatialdata::geocoords::CoordSys* _coordsys; ///< Coordinate system.
-  MPI_Comm _comm; ///< MPI communicator for mesh.
   bool _debug; ///< Debugging flag for mesh.
-  bool _isSubMesh; ///< True if mesh is a submesh of another mesh.
+  const bool _isSubMesh; ///< True if mesh is a submesh of another mesh.
   
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.icc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.icc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -172,32 +172,6 @@
 }
 
 // ----------------------------------------------------------------------
-// Set MPI communicator associated with mesh.
-inline
-void
-pylith::topology::Mesh::comm(const MPI_Comm value) {
-  _comm = value;
-}
-    
-// ----------------------------------------------------------------------
-// Get MPI communicator associated with mesh.
-inline
-const MPI_Comm
-pylith::topology::Mesh::comm(void) const {
-  return _comm;
-}
-    
-// ----------------------------------------------------------------------
-// Get MPI rank.
-inline
-int
-pylith::topology::Mesh::commRank(void) const {
-  int rank = 0;
-  MPI_Comm_rank(_comm, &rank);
-  return rank;
-}
-    
-// ----------------------------------------------------------------------
 // Print mesh to stdout.
 inline
 void

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/MeshOps.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/MeshOps.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/MeshOps.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -50,7 +50,6 @@
   err = DMSetType(dmMesh, DMPLEX);PYLITH_CHECK_ERROR(err);
   err = DMPlexSetDimension(dmMesh, dim);PYLITH_CHECK_ERROR(err);
   mesh->dmMesh(dmMesh, label);
-  mesh->comm(comm);
 
   PYLITH_METHOD_END;
 } // createDMMesh

Deleted: short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,154 +0,0 @@
-
-// -*- C++ -*-
-//
-// ======================================================================
-//
-// Brad T. Aagaard, U.S. Geological Survey
-// Charles A. Williams, GNS Science
-// Matthew G. Knepley, University of Chicago
-//
-// This code was developed as part of the Computational Infrastructure
-// for Geodynamics (http://geodynamics.org).
-//
-// Copyright (c) 2010-2013 University of California, Davis
-//
-// See COPYING for license information.
-//
-// ======================================================================
-//
-
-#include <portinfo>
-
-#include "SubMesh.hh" // implementation of class methods
-
-#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
-#include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
-#include "pylith/utils/petscfwd.h" // USES PetscVec
-#include "pylith/utils/error.h" // USES PYLITH_CHECK_ERROR
-
-#include <stdexcept> // USES std::runtime_error
-#include <sstream> // USES std::ostringstream
-#include <cassert> // USES assert()
-
-// ----------------------------------------------------------------------
-// Default constructor
-pylith::topology::SubMesh::SubMesh(void) :
-  _newMesh(NULL),
-  _coordsys(0),
-  _debug(false)
-{ // constructor
-} // constructor
-
-// ----------------------------------------------------------------------
-// Constructor with mesh and label for vertices marking boundary.
-pylith::topology::SubMesh::SubMesh(const Mesh& mesh,
-				   const char* label) :
-  _newMesh(NULL),
-  _coordsys(0),
-  _debug(false)
-{ // constructor
-  PYLITH_METHOD_BEGIN;
-
-  createSubMesh(mesh, label);
-
-  PYLITH_METHOD_END;
-} // constructor
-
-// ----------------------------------------------------------------------
-// Default destructor
-pylith::topology::SubMesh::~SubMesh(void)
-{ // destructor
-  deallocate();
-} // destructor
-
-// ----------------------------------------------------------------------
-// Deallocate PETSc and local data structures.
-void
-pylith::topology::SubMesh::deallocate(void)
-{ // deallocate
-  PYLITH_METHOD_BEGIN;
-
-  delete _coordsys; _coordsys = 0;
-  PetscErrorCode err = DMDestroy(&_newMesh);PYLITH_CHECK_ERROR(err);
-
-  PYLITH_METHOD_END;
-} // deallocate
-  
-// ----------------------------------------------------------------------
-// Create PETSc mesh.
-void
-pylith::topology::SubMesh::createSubMesh(const Mesh& mesh,
-					 const char* label)
-{ // createSubMesh
-  PYLITH_METHOD_BEGIN;
-
-  PetscDM dmMesh = mesh.dmMesh();assert(dmMesh);
-  PetscBool hasLabel;
-  PetscErrorCode err;
-
-  err = DMPlexHasLabel(dmMesh, label, &hasLabel);PYLITH_CHECK_ERROR(err);
-  if (!hasLabel) {
-    std::ostringstream msg;
-    msg << "Could not find group of points '" << label << "' in DM mesh.";
-    throw std::runtime_error(msg.str());
-  } // if
-
-  /* TODO: Add creation of pointSF for submesh */
-  err = DMDestroy(&_newMesh);PYLITH_CHECK_ERROR(err);
-  err = DMPlexCreateSubmesh(dmMesh, label, 1, &_newMesh);PYLITH_CHECK_ERROR(err);
-
-  // Set data from mesh.
-  coordsys(mesh);
-
-  // Set name
-  std::string meshLabel = "subdomain_" + std::string(label);
-  err = PetscObjectSetName((PetscObject) _newMesh, meshLabel.c_str());PYLITH_CHECK_ERROR(err);
-  PetscInt maxConeSizeLocal, maxConeSize = 0;
-
-  err = DMPlexGetMaxSizes(dmMesh, &maxConeSizeLocal, NULL);PYLITH_CHECK_ERROR(err);
-  err = MPI_Allreduce(&maxConeSizeLocal, &maxConeSize, 1, MPI_INT, MPI_MAX,
-                      PetscObjectComm((PetscObject) dmMesh)); PYLITH_CHECK_ERROR(err);
-
-  if (maxConeSize <= 0) {
-    std::ostringstream msg;
-    msg << "Error while creating submesh. Submesh '" 
-	<< label << "' does not contain any cells.\n"
-	<< "Submeshes must be one dimension lower than the domain mesh.";
-    throw std::runtime_error(msg.str());
-  } // if
-
-  PYLITH_METHOD_END;
-} // createSubMesh
-
-// ----------------------------------------------------------------------
-// Set coordinate system using mesh.
-void
-pylith::topology::SubMesh::coordsys(const Mesh& mesh)
-{ // coordsys
-  PYLITH_METHOD_BEGIN;
-
-  delete _coordsys; _coordsys = 0;
-  const spatialdata::geocoords::CoordSys* cs = mesh.coordsys();
-  if (cs) {
-    _coordsys = cs->clone();assert(_coordsys);
-    _coordsys->initialize();
-  } // if
-
-  PYLITH_METHOD_END;
-} // coordsys
-
-// ----------------------------------------------------------------------
-// Initialize the finite-element mesh.
-void 
-pylith::topology::SubMesh::initialize(void)
-{ // initialize
-  PYLITH_METHOD_BEGIN;
-
-  assert(0);
-  if (_coordsys)
-    _coordsys->initialize();
-
-  PYLITH_METHOD_END;
-} // initialize
-
-// End of file 

Deleted: short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,184 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-// Brad T. Aagaard, U.S. Geological Survey
-// Charles A. Williams, GNS Science
-// Matthew G. Knepley, University of Chicago
-//
-// This code was developed as part of the Computational Infrastructure
-// for Geodynamics (http://geodynamics.org).
-//
-// Copyright (c) 2010-2013 University of California, Davis
-//
-// See COPYING for license information.
-//
-// ======================================================================
-//
-
-/**
- * @file libsrc/topology/SubMesh.hh
- *
- * @brief C++ PyLith finite-element mesh.
- */
-
-#if !defined(pylith_topology_submesh_hh)
-#define pylith_topology_submesh_hh
-
-// Include directives ---------------------------------------------------
-#include "topologyfwd.hh" // forward declarations
-#include "spatialdata/geocoords/geocoordsfwd.hh" // forward declarations
-
-#include "Mesh.hh" // USES Mesh
-
-// SubMesh -----------------------------------------------------------------
-/** @brief C++ PyLith finite-element mesh.
- *
- * Extends mesh over subset of domain to include coordinate
- * system associated with domain. Also has functions to simply
- * creating submeshes from groups of vertices.
- */
-class pylith::topology::SubMesh
-{ // SubMesh
-  friend class TestSubMesh; // unit testing
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public :
-
-  /// Default constructor.
-  SubMesh(void);
-
-  /** Constructor with mesh and label for vertices marking boundary.
-   *
-   * @param mesh Finite-element mesh over domain.
-   * @param label Label for vertices marking boundary.
-   */
-  SubMesh(const Mesh& mesh,
-	  const char* label);
-
-  /// Default destructor
-  ~SubMesh(void);
-
-  /// Deallocate PETSc and local data structures.
-  void deallocate(void);
-  
-  /** Create mesh.
-   *
-   * @param mesh Finite-element mesh over domain.
-   * @param label Label for vertices marking boundary.
-   */
-  void createSubMesh(const Mesh& mesh,
-		     const char* label);
-
-  /** Get DMPlex mesh.
-   *
-   * @returns DMPlex mesh.
-   */
-  PetscDM dmMesh(void) const;
-
-  /** Set DMPlex mesh.
-   *
-   * @param DMPlex mesh.
-   * @param label Label for mesh.
-   */
-  void dmMesh(PetscDM dm,
-	      const char* label ="domain");
-
-  /** Get sizes for all point types.
-   *
-   * @param numNormalCells
-   * @param numCohesiveCells
-   * @param numNormalVertices
-   * @param numShadowVertices
-   * @param numLagrangeVertices.
-   */
-  void getPointTypeSizes(PetscInt *numNormalCells,
-			 PetscInt *numCohesiveCells,
-			 PetscInt *numNormalVertices,
-			 PetscInt *numShadowVertices,
-			 PetscInt *numLagrangeVertices) const;
-
-  /** Set coordinate system using mesh.
-   *
-   * @param mesh Finite-element mesh over domain.
-   */
-  void coordsys(const Mesh& mesh);
-
-  /** Get coordinate system.
-   *
-   * @returns Coordinate system.
-   */
-  const spatialdata::geocoords::CoordSys* coordsys(void) const;
-
-  /** Set debug flag.
-   *
-   * @param value Turn on debugging if true.
-   */
-   void debug(const bool value);
-
-  /** Get debug flag.
-   *
-   * @param Get debugging flag.
-   */
-   bool debug(void) const;
-
-  /** Get dimension of mesh.
-   *
-   * @returns Dimension of mesh.
-   */
-  int dimension(void) const;
-
-  /** Get representative cone size for mesh.
-   *
-   * @returns Representative cone size for mesh.
-   */
-  int coneSize(void) const;
-  
-  /** Get number of vertices in mesh.
-   *
-   * @returns Number of vertices in mesh.
-   */
-  int numVertices(void) const;
-  
-  /** Get number of cells in mesh.
-   *
-   * @returns Number of cells in mesh.
-   */
-  int numCells(void) const;
-
-  /** Get MPI communicator associated with mesh.
-   *
-   * @returns MPI communicator.
-   */
-  const MPI_Comm comm(void) const;
-    
-  /// Initialize the finite-element mesh.
-  void initialize(void);
-
-  /** Print mesh to stdout.
-   *
-   * @param label Label for mesh.
-   */
-  void view(const char* label) const;
-
-// PRIVATE MEMBERS //////////////////////////////////////////////////////
-private :
-
-  PetscDM _newMesh;
-  spatialdata::geocoords::CoordSys* _coordsys; ///< Coordinate system.
-  bool _debug; ///< Debugging flag for mesh.
-  
-// NOT IMPLEMENTED //////////////////////////////////////////////////////
-private :
-
-  SubMesh(const SubMesh&); ///< Not implemented
-  const SubMesh& operator=(const SubMesh&); ///< Not implemented
-
-}; // SubMesh
-
-#include "SubMesh.icc"
-
-#endif // pylith_topology_submesh_hh
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.icc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/SubMesh.icc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,153 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-// Brad T. Aagaard, U.S. Geological Survey
-// Charles A. Williams, GNS Science
-// Matthew G. Knepley, University of Chicago
-//
-// This code was developed as part of the Computational Infrastructure
-// for Geodynamics (http://geodynamics.org).
-//
-// Copyright (c) 2010-2013 University of California, Davis
-//
-// See COPYING for license information.
-//
-// ======================================================================
-//
-
-#if !defined(pylith_topology_submesh_hh)
-#error "SubMesh.icc must be included only from SubMesh.hh"
-#else
-
-#include "pylith/utils/error.h" // USES PYLITH_CHECK_ERROR
-
-// Get DMComplex mesh.
-inline
-PetscDM
-pylith::topology::SubMesh::dmMesh(void) const {
-  return _newMesh;
-}
-
-// Set DMComplex mesh.
-inline
-void
-pylith::topology::SubMesh::dmMesh(PetscDM dm,
-				  const char* label) {
-  PetscErrorCode err;
-  err = DMDestroy(&_newMesh);PYLITH_CHECK_ERROR(err);
-  _newMesh = dm;
-  err = PetscObjectSetName((PetscObject) _newMesh, label);PYLITH_CHECK_ERROR(err);
-}
-
-// Get point type sizes.
-inline
-void
-pylith::topology::SubMesh::getPointTypeSizes(PetscInt *numNormalCells,
-					     PetscInt *numCohesiveCells,
-					     PetscInt *numNormalVertices,
-					     PetscInt *numShadowVertices,
-					     PetscInt *numLagrangeVertices) const {
-  *numNormalCells = 0;
-  *numCohesiveCells = 0;
-  *numNormalVertices = 0;
-  *numShadowVertices = 0;
-  *numLagrangeVertices = 0;
-}
-
-// Get coordinate system.
-inline
-const spatialdata::geocoords::CoordSys*
-pylith::topology::SubMesh::coordsys(void) const {
-  return _coordsys;
-}
-
-// Set debug flag.
-inline
-void
-pylith::topology::SubMesh::debug(const bool value) {
-  _debug = value;
-}
-
-// Get debug flag.
-inline
-bool
-pylith::topology::SubMesh::debug(void) const {
-  return _debug;
-}
-
-// Get dimension of mesh.
-inline
-int
-pylith::topology::SubMesh::dimension(void) const {
-  PetscInt dim = 0;
-  if (_newMesh) {
-    PetscErrorCode err = DMPlexGetDimension(_newMesh, &dim);PYLITH_CHECK_ERROR(err);
-  } // if
-  return dim;
-}
-
-// Get representative cone size for mesh.
-inline
-int
-pylith::topology::SubMesh::coneSize(void) const {
-  PetscInt coneSize = 0;
-  if (_newMesh) {
-    PetscErrorCode err;
-    PetscInt cStart = 0;
-    err = DMPlexGetHeightStratum(_newMesh, 1, &cStart, NULL);PYLITH_CHECK_ERROR(err);
-    err = DMPlexGetConeSize(_newMesh, cStart, &coneSize);PYLITH_CHECK_ERROR(err);
-  } // if
-  return coneSize;
-}
-
-// Get number of vertices in mesh.
-inline
-int
-pylith::topology::SubMesh::numVertices(void) const {
-  PetscInt nvertices = 0;
-  if (_newMesh) {
-    PetscInt begin=0, end=0;
-    PetscErrorCode err = DMPlexGetDepthStratum(_newMesh, 0, &begin, &end);PYLITH_CHECK_ERROR(err);
-    nvertices = end-begin;
-  } // if
-  return nvertices;
-}
-
-// Get number of cells in mesh.
-inline
-int
-pylith::topology::SubMesh::numCells(void) const {
-  PetscInt ncells = 0;
-  if (_newMesh) {
-    PetscInt begin=0, end=0;
-    PetscErrorCode err = DMPlexGetHeightStratum(_newMesh, 1, &begin, &end);PYLITH_CHECK_ERROR(err);
-    ncells = end-begin;
-  } // if
-  return ncells;
-}
-
-// Get MPI communicator associated with mesh.
-inline
-const MPI_Comm
-pylith::topology::SubMesh::comm(void) const {
-  MPI_Comm comm;
-  if (_newMesh) {
-    PetscErrorCode err = PetscObjectGetComm((PetscObject)_newMesh, &comm);
-  } // if
-  return comm;
-} // if
-    
-// Print mesh to stdout.
-inline
-void
-pylith::topology::SubMesh::view(const char* label) const {
-  assert(_newMesh);
-  PetscErrorCode err = DMView(_newMesh, PETSC_VIEWER_STDOUT_WORLD);PYLITH_CHECK_ERROR(err);
-}
-
-
-#endif
-
-
-// End of file

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -50,12 +50,6 @@
    */
   VecVisitorMesh(const Field<Mesh>& field);
 
-  /** Constructor with field over a submesh.
-   *
-   * @param field Field over a submesh.
-   */
-  VecVisitorMesh(const Field<SubMesh>& field);
-
   /// Default destructor
   ~VecVisitorMesh(void);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.icc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.icc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -21,7 +21,6 @@
 #else
 
 #include "Mesh.hh" // USES Mesh
-#include "SubMesh.hh" // USES SubMesh
 #include "Field.hh" // USES Field
 
 #include "pylith/utils/error.h" // USES PYLITH_CHECK_ERROR
@@ -40,19 +39,6 @@
 } // constructor
 
 // ----------------------------------------------------------------------
-// Constructor with field over a submesh.
-inline
-pylith::topology::VecVisitorMesh::VecVisitorMesh(const Field<SubMesh>& field) :
-  _dm(NULL),
-  _localVec(NULL),
-  _section(NULL),
-  _localArray(NULL)
-{ // constructor
-  _dm = field.mesh().dmMesh();assert(_dm);
-  initialize<Field<SubMesh> >(field);
-} // constructor
-
-// ----------------------------------------------------------------------
 // Default destructor
 inline
 pylith::topology::VecVisitorMesh::~VecVisitorMesh(void)

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -247,7 +247,7 @@
    * 
    * @param submesh Submesh associated with index set.
    */
-  SubMeshIS(const SubMesh& submesh);
+  SubMeshIS(const Mesh& submesh);
 
   /// Default destructor.
   ~SubMeshIS(void);
@@ -259,7 +259,7 @@
    *
    * @returns Submesh.
    */
-  const SubMesh& submesh(void) const;
+  const Mesh& submesh(void) const;
 
   /** Get PETSc index set.
    *
@@ -282,7 +282,7 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  const SubMesh& _submesh;
+  const Mesh& _submesh;
   PetscIS _indexSet; ///< PETSc index set.
   PetscInt _size; ///< Size of index set.
   const PetscInt* _points; ///< Array of points in index set.

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.icc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.icc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -270,7 +270,7 @@
 // ----------------------------------------------------------------------
 // Default constructor.
 inline
-pylith::topology::SubMeshIS::SubMeshIS(const SubMesh& submesh) :
+pylith::topology::SubMeshIS::SubMeshIS(const Mesh& submesh) :
   _submesh(submesh),
   _indexSet(NULL)
 { // constructor
@@ -305,7 +305,7 @@
 // ----------------------------------------------------------------------
 // Get the submesh.
 inline
-const pylith::topology::SubMesh&
+const pylith::topology::Mesh&
 pylith::topology::SubMeshIS::submesh(void) const
 { // submesh
   return _submesh;

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/topologyfwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/topologyfwd.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/topologyfwd.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -29,6 +29,7 @@
 
 #include "pylith/utils/types.hh"
 
+#if 0 // :TODO: Update this for PETSc DM.
 namespace ALE {
   template<typename cellrefiner_type> class MeshRefiner;
   class RefineEdges2;
@@ -43,12 +44,12 @@
 
   class MeshOrder;
 } // ALE
+#endif
 
 namespace pylith {
   namespace topology {
 
     class Mesh;
-    class SubMesh;
     class MeshOps;
     class CoordsVisitor;
     class SubMeshIS;

Modified: short/3D/PyLith/trunk/modulesrc/bc/BCIntegratorSubMesh.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/BCIntegratorSubMesh.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/bc/BCIntegratorSubMesh.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -25,7 +25,7 @@
   namespace bc {
 
     class pylith::bc::BCIntegratorSubMesh : public BoundaryCondition,
-		    public pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::SubMesh> >
+		    public pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::Mesh> >
     { // class BoundaryCondition
 
       // PUBLIC METHODS /////////////////////////////////////////////////
@@ -52,7 +52,7 @@
        *
        * @return Boundary mesh.
        */
-      const pylith::topology::SubMesh& boundaryMesh(void) const;
+      const pylith::topology::Mesh& boundaryMesh(void) const;
       
       /** Get mesh labels for submesh associated with applied forces.
        *

Modified: short/3D/PyLith/trunk/modulesrc/bc/DirichletBoundary.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/DirichletBoundary.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/bc/DirichletBoundary.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -52,7 +52,7 @@
        *
        * @return Boundary mesh.
        */
-      const pylith::topology::SubMesh& boundaryMesh(void) const;
+      const pylith::topology::Mesh& boundaryMesh(void) const;
       
       /** Get vertex field with BC information.
        *
@@ -61,7 +61,7 @@
        *
        * @returns Field over vertices.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       vertexField(const char* name,
 		  const pylith::topology::SolutionFields& fields);
       

Modified: short/3D/PyLith/trunk/modulesrc/bc/Neumann.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/Neumann.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/bc/Neumann.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -85,7 +85,7 @@
        *
        * @returns Traction vector at integration points.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       cellField(const char* name,
 		pylith::topology::SolutionFields* const fields =0);
 

Modified: short/3D/PyLith/trunk/modulesrc/bc/bc.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/bc.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/bc/bc.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -61,7 +61,6 @@
 
 // template instantiation
 %template(MeshIntegrator) pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::Mesh> >;
-%template(SubMeshIntegrator) pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::SubMesh> >;
 
 %include "BoundaryCondition.i"
 %include "BoundaryConditionPoints.i"

Modified: short/3D/PyLith/trunk/modulesrc/faults/BruneSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/BruneSlipFn.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/BruneSlipFn.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -65,7 +65,7 @@
        * @param normalizer Nondimensionalization of scales.
        * @param originTime Origin time for earthquake source.
        */
-      void initialize(const pylith::topology::SubMesh& faultMesh,
+      void initialize(const pylith::topology::Mesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
 		      const PylithScalar originTime =0.0);
       
@@ -76,20 +76,20 @@
        *
        * @returns Slip vector as left-lateral/reverse/normal.
        */
-      void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
+      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
 		const PylithScalar t);
       
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& finalSlip(void);
+      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void);
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& slipTime(void);
+      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void);
 
     }; // class BruneSlipFn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/ConstRateSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/ConstRateSlipFn.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/ConstRateSlipFn.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -59,7 +59,7 @@
        * @param normalizer Nondimensionalization of scales.
        * @param originTime Origin time for earthquake source.
        */
-      void initialize(const pylith::topology::SubMesh& faultMesh,
+      void initialize(const pylith::topology::Mesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
 		      const PylithScalar originTime =0.0);
       
@@ -70,20 +70,20 @@
        *
        * @returns Slip vector as left-lateral/reverse/normal.
        */
-      void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
+      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
 		const PylithScalar t);
   
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& finalSlip(void);
+      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void);
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& slipTime(void);
+      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void);
 
     }; // class ConstRateSlipFn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/EqKinSrc.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/EqKinSrc.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/EqKinSrc.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -63,7 +63,7 @@
        * @param faultMesh Finite-element mesh of fault.
        * @param normalizer Nondimensionalization of scales.
        */
-      void initialize(const pylith::topology::SubMesh& faultMesh,
+      void initialize(const pylith::topology::Mesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer);
 
       /** Get slip on fault surface at time t.
@@ -71,20 +71,20 @@
        * @param slipField Slip field over fault mesh.
        * @param t Time t.
        */
-      void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
+      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
 		const PylithScalar t);
 
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& finalSlip(void) const;
+      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void) const;
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& slipTime(void) const;
+      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void) const;
 
     }; // class EqKinSrc
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/Fault.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/Fault.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/Fault.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -128,7 +128,7 @@
        *
        * @returns PETSc mesh object
        */
-      const pylith::topology::SubMesh& faultMesh(void) const;
+      const pylith::topology::Mesh& faultMesh(void) const;
       
       /** Get vertex field associated with integrator.
        *
@@ -137,7 +137,7 @@
        * @returns Vertex field.
        */
       virtual
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       vertexField(const char* name,
 		  const pylith::topology::SolutionFields* fields =0) = 0;
       
@@ -148,7 +148,7 @@
        * @returns Cell field.
        */
       virtual
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       cellField(const char* name,
 		const pylith::topology::SolutionFields* fields =0) = 0;
       

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesive.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesive.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesive.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -25,7 +25,7 @@
   namespace faults {
 
     class FaultCohesive : public Fault,
-			  public pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::SubMesh> >
+			  public pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::Mesh> >
     { // class FaultCohesive
 
       // PUBLIC METHODS /////////////////////////////////////////////////
@@ -85,8 +85,7 @@
        *
        * @returns Fields associated with fault.
        */
-      const pylith::topology::Fields<topology::Field<pylith::topology::SubMesh> >*
-      fields(void) const;
+      const pylith::topology::Fields<topology::Field<pylith::topology::Mesh> >* fields(void) const;
 
     }; // class FaultCohesive
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -137,7 +137,7 @@
        * @param fields Solution fields.
        * @returns Vertex field.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       vertexField(const char* name,
 		  const pylith::topology::SolutionFields* fields =0);
       
@@ -147,7 +147,7 @@
        * @param fields Solution fields.
        * @returns Cell field.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       cellField(const char* name,
 		const pylith::topology::SolutionFields* fields =0);
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveImpulses.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveImpulses.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveImpulses.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -109,7 +109,7 @@
        * @param fields Solution fields.
        * @returns Vertex field.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
 	vertexField(const char* name,
 		    const pylith::topology::SolutionFields* fields =0);
       
@@ -119,7 +119,7 @@
        * @param fields Solution fields.
        * @returns Cell field.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       cellField(const char* name,
 		const pylith::topology::SolutionFields* fields =0);
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -86,7 +86,7 @@
        * @param fields Solution fields.
        * @returns Vertex field.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       vertexField(const char* name,
 		  const pylith::topology::SolutionFields* fields =0);
       
@@ -96,7 +96,7 @@
        * @param fields Solution fields.
        * @returns Cell field.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       cellField(const char* name,
 		const pylith::topology::SolutionFields* fields =0);
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -86,7 +86,7 @@
        *
        * @returns Vertex field.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       vertexField(const char* name,
 		  const pylith::topology::SolutionFields* fields =0);
       
@@ -97,7 +97,7 @@
        *
        * @returns Cell field.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       cellField(const char* name,
 		const pylith::topology::SolutionFields* fields =0);
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/LiuCosSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/LiuCosSlipFn.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/LiuCosSlipFn.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -67,7 +67,7 @@
        * @param normalizer Nondimensionalization of scales.
        * @param originTime Origin time for earthquake source.
        */
-      void initialize(const pylith::topology::SubMesh& faultMesh,
+      void initialize(const pylith::topology::Mesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
 		      const PylithScalar originTime =0.0);
       
@@ -78,20 +78,20 @@
        *
        * @returns Slip vector as left-lateral/reverse/normal.
        */
-      void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
+      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
 		const PylithScalar t);
   
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& finalSlip(void);
+      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void);
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& slipTime(void);
+      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void);
 
     }; // class LiuCosSlipFn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/Makefile.am	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/Makefile.am	2013-05-13 23:33:37 UTC (rev 22058)
@@ -40,7 +40,7 @@
 	FaultCohesiveDyn.i \
 	FaultCohesiveImpulses.i \
 	FaultCohesiveTract.i \
-	../topology/SubMesh.i \
+	../topology/Mesh.i \
 	../feassemble/Quadrature.i \
 	../feassemble/Integrator.i
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/SlipTimeFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/SlipTimeFn.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/SlipTimeFn.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -49,7 +49,7 @@
        * @param originTime Origin time for earthquake source.
        */
       virtual
-      void initialize(const pylith::topology::SubMesh& faultMesh,
+      void initialize(const pylith::topology::Mesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
 		      const PylithScalar originTime =0.0) = 0;
 
@@ -61,7 +61,7 @@
        * @returns Slip vector as left-lateral/reverse/normal.
        */
       virtual
-      void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
+      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
 		const PylithScalar t) = 0;
   
       /** Get final slip.
@@ -69,20 +69,20 @@
        * @returns Final slip.
        */
       virtual
-      const pylith::topology::Field<pylith::topology::SubMesh>& finalSlip(void) = 0;
+      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void) = 0;
 
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
       virtual
-      const pylith::topology::Field<pylith::topology::SubMesh>& slipTime(void) = 0;
+      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void) = 0;
 
       /** Get parameter fields.
        *
        * @returns Parameter fields.
        */
-      const pylith::topology::Fields<pylith::topology::Field<pylith::topology::SubMesh> >*
+      const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
       parameterFields(void) const;
 
     }; // class SlipTimeFn

Modified: short/3D/PyLith/trunk/modulesrc/faults/StepSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/StepSlipFn.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/StepSlipFn.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -59,7 +59,7 @@
        * @param normalizer Nondimensionalization of scales.
        * @param originTime Origin time for earthquake source.
        */
-      void initialize(const pylith::topology::SubMesh& faultMesh,
+      void initialize(const pylith::topology::Mesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
 		      const PylithScalar originTime =0.0);
       
@@ -70,20 +70,20 @@
        *
        * @returns Slip vector as left-lateral/reverse/normal.
        */
-      void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
+      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
 		const PylithScalar t);
       
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& finalSlip(void);
+      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void);
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& slipTime(void);
+      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void);
 
     }; // class StepSlipFn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -65,7 +65,7 @@
        * @param normalizer Nondimensionalization of scales.
        * @param originTime Origin time for earthquake source.
        */
-      void initialize(const pylith::topology::SubMesh& faultMesh,
+      void initialize(const pylith::topology::Mesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
 		      const PylithScalar originTime =0.0);
       
@@ -76,20 +76,20 @@
        *
        * @returns Slip vector as left-lateral/reverse/normal.
        */
-      void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
+      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
 		const PylithScalar t);
   
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& finalSlip(void);
+      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void);
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& slipTime(void);
+      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void);
 
     }; // class TimeHistorySlipFn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/TractPerturbation.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/TractPerturbation.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/TractPerturbation.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -51,7 +51,7 @@
        *
        * @returns Parameter fields.
        */
-      const pylith::topology::Fields<topology::Field<pylith::topology::SubMesh> >* parameterFields(void) const;
+      const pylith::topology::Fields<topology::Field<pylith::topology::Mesh> >* parameterFields(void) const;
       
       /** Initialize slip time function.
        *
@@ -59,8 +59,8 @@
        * @param faultOrientation Orientation of fault.
        * @param normalizer Nondimensionalization of scales.
        */
-      void initialize(const pylith::topology::SubMesh& faultMesh,
-		      const pylith::topology::Field<pylith::topology::SubMesh>& faultOrientation,
+      void initialize(const pylith::topology::Mesh& faultMesh,
+		      const pylith::topology::Field<pylith::topology::Mesh>& faultOrientation,
 		      const spatialdata::units::Nondimensional& normalizer);
       
       /** Calculate spatial and temporal variation of value.
@@ -83,7 +83,7 @@
        *
        * @returns Traction vector field.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>&
+      const pylith::topology::Field<pylith::topology::Mesh>&
       vertexField(const char* name,
 		  pylith::topology::SolutionFields* const fields =0);
       

Modified: short/3D/PyLith/trunk/modulesrc/faults/faults.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/faults.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/faults/faults.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -37,7 +37,7 @@
 #include "pylith/faults/FaultCohesiveImpulses.hh"
 #include "pylith/faults/FaultCohesiveTract.hh"
 
-#include "pylith/topology/SubMesh.hh"
+#include "pylith/topology/Mesh.hh"
 #include "pylith/feassemble/Quadrature.hh"
 #include "pylith/feassemble/Integrator.hh"
 %}
@@ -66,13 +66,13 @@
 %}
 
 // Interfaces
-%include "../topology/SubMesh.i" // ISA Integrator<Quadrature<SubMesh> >
-%include "../feassemble/Quadrature.i" // ISA Integrator<Quadrature<SubMesh> >
-%include "../feassemble/Integrator.i" // ISA Integrator<Quadrature<SubMesh> >
+%include "../topology/Mesh.i" // ISA Integrator<Quadrature<Mesh> >
+%include "../feassemble/Quadrature.i" // ISA Integrator<Quadrature<Mesh> >
+%include "../feassemble/Integrator.i" // ISA Integrator<Quadrature<Mesh> >
 %include "../bc/TimeDependent.i" // ISA TimeDependent
 
 // Template instatiation
-%template(SubMeshIntegrator) pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::SubMesh > >;
+%template(MeshIntegrator) pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::Mesh > >;
 
 %include "SlipTimeFn.i"
 %include "StepSlipFn.i"

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -37,7 +37,6 @@
 #include "pylith/feassemble/QuadratureRefCell.hh"
 
 #include "pylith/topology/Mesh.hh"
-#include "pylith/topology/SubMesh.hh"
 #include "pylith/feassemble/Quadrature.hh"
 #include "pylith/feassemble/ElasticityImplicit.hh"
 #include "pylith/feassemble/ElasticityExplicit.hh"
@@ -103,7 +102,6 @@
 
 // Template instatiation
 %template(MeshQuadrature) pylith::feassemble::Quadrature<pylith::topology::Mesh>;
-%template(SubMeshQuadrature) pylith::feassemble::Quadrature<pylith::topology::SubMesh>;
 
 
 // End of file

Modified: short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -97,8 +97,8 @@
        * @param quadrature Quadrature for finite-element integration
        */
       virtual
-      void initialize(const pylith::topology::SubMesh& mesh,
-		      pylith::feassemble::Quadrature<pylith::topology::SubMesh>* quadrature);
+      void initialize(const pylith::topology::Mesh& mesh,
+		      pylith::feassemble::Quadrature<pylith::topology::Mesh>* quadrature);
   
       /** Check whether friction model has a field as a property or
        * state variable.
@@ -116,13 +116,13 @@
        * @param name Name of field to retrieve.
        * @returns Field over fault interface cells.
        */
-      const pylith::topology::Field<pylith::topology::SubMesh>& getField(const char* name);
+      const pylith::topology::Field<pylith::topology::Mesh>& getField(const char* name);
 
       /** Get the field with all properties and state variables.
        *
        * @returns Properties field.
        */
-      const pylith::topology::Fields<pylith::topology::Field<pylith::topology::SubMesh> >& fieldsPropsStateVars() const;
+      const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >& fieldsPropsStateVars() const;
 
       /** Retrieve parameters for physical properties and state variables
        * for vertex.

Modified: short/3D/PyLith/trunk/modulesrc/include/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/modulesrc/include/Makefile.am	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/include/Makefile.am	2013-05-13 23:33:37 UTC (rev 22058)
@@ -24,8 +24,7 @@
 	chararray.i \
 	scalartypemaps.i \
 	eqkinsrcarray.i \
-	integratorarray.i \
-	submeshfield.i
+	integratorarray.i
 
 
 # End of file 

Modified: short/3D/PyLith/trunk/modulesrc/include/integratorarray.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/include/integratorarray.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/include/integratorarray.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -52,41 +52,4 @@
   delete[] $1;
 }
 
-// ----------------------------------------------------------------------
-// List of submesh integrators.
-%typemap(in) (pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::SubMesh> >** integrators,
-	      const int numIntegrators)
-{
-  // Check to make sure input is a list.
-  if (PyList_Check($input)) {
-    const int size = PyList_Size($input);
-    $2 = size;
-    $1 = (size > 0) ? new pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::SubMesh> >*[size] : 0;
-    for (int i = 0; i < size; i++) {
-      PyObject* s = PyList_GetItem($input,i);
-      pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::SubMesh> >* integrator = 0;
-      int err = SWIG_ConvertPtr(s, (void**) &integrator, 
-				$descriptor(pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::SubMesh> >*),
-				0);
-      if (SWIG_IsOK(err))
-	$1[i] = (pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::SubMesh> >*) integrator;
-      else {
-	PyErr_SetString(PyExc_TypeError, "List must contain submesh integrators.");
-	delete[] $1;
-	return NULL;
-      } // if
-    } // for
-  } else {
-    PyErr_SetString(PyExc_TypeError, "Expected list of submesh integrators.");
-    return NULL;
-  } // if/else
-} // typemap(in) [List of submesh integrators.]
-
-// This cleans up the array we malloc'd before the function call
-%typemap(freearg) (pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::SubMesh> >** integrators,
-	      const int numIntegrators) {
-  delete[] $1;
-}
-
-
 // End of file

Deleted: short/3D/PyLith/trunk/modulesrc/include/submeshfield.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/include/submeshfield.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/include/submeshfield.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,43 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-// Brad T. Aagaard, U.S. Geological Survey
-// Charles A. Williams, GNS Science
-// Matthew G. Knepley, University of Chicago
-//
-// This code was developed as part of the Computational Infrastructure
-// for Geodynamics (http://geodynamics.org).
-//
-// Copyright (c) 2010-2013 University of California, Davis
-//
-// See COPYING for license information.
-//
-// ======================================================================
-//
-
-// ----------------------------------------------------------------------
-// const Field<SubMesh>::Mesh (SubMesh)
-%typemap(in) (const pylith::topology::Field<pylith::topology::SubMesh>::Mesh& mesh)
-{
-  pylith::topology::Field<pylith::topology::SubMesh>::Mesh* submesh = 0;
-  int err = SWIG_ConvertPtr($input, (void**) &submesh, 
-			    $descriptor(pylith::topology::Field<pylith::topology::SubMesh>::Mesh*),
-				0);
-  if (SWIG_IsOK(err))
-    $1 = (pylith::topology::Field<pylith::topology::SubMesh>::Mesh*) submesh;
-  else {
-    err = SWIG_ConvertPtr($input, (void**) &submesh, 
-			  $descriptor(pylith::topology::SubMesh*),
-			  0);
-    if (SWIG_IsOK(err))
-      $1 = (pylith::topology::Field<pylith::topology::SubMesh>::Mesh*) submesh;
-    else {
-      PyErr_SetString(PyExc_TypeError, "Argument must be a submesh.");
-      return NULL;
-    } // if
-  } // if/else
-} // typemap(in)
-
-
-// End of file

Modified: short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnPoints.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnPoints.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnPoints.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -25,7 +25,7 @@
 namespace pylith {
   namespace meshio {
 
-%template(_MeshOutputManager) pylith::meshio::OutputManager<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
+%template(_PointsOutputManager) pylith::meshio::OutputManager<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
 
 
     class pylith::meshio::OutputSolnPoints : public OutputManager<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >

Modified: short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnSubset.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnSubset.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnSubset.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,12 +22,12 @@
  * @brief Python interface to C++ OutputSolnSubset object.
  */
 
-%template(_SubMeshOutputManager) pylith::meshio::OutputManager<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::Mesh> >;
+%template(_MeshOutputManager) pylith::meshio::OutputManager<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
 
 namespace pylith {
   namespace meshio {
 
-    class pylith::meshio::OutputSolnSubset : public OutputManager<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::Mesh> >
+    class pylith::meshio::OutputSolnSubset : public OutputManager<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >
     { // OutputSolnSubset
 
       // PUBLIC METHODS /////////////////////////////////////////////////
@@ -58,7 +58,7 @@
        *
        * @returns Mesh associated with subdomain.
        */
-      const pylith::topology::SubMesh& subdomainMesh(const pylith::topology::Mesh& mesh);
+      const pylith::topology::Mesh& subdomainMesh(const pylith::topology::Mesh& mesh);
   
     }; // OutputSolnSubset
 

Modified: short/3D/PyLith/trunk/modulesrc/meshio/meshio.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/meshio.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/meshio/meshio.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -92,35 +92,22 @@
 
 // Template instatiation
 %template(MeshVertexFilter) pylith::meshio::VertexFilter<pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubMeshVertexFilter) pylith::meshio::VertexFilter<pylith::topology::Field<pylith::topology::SubMesh> >;
 %template(MeshVertexFilterVecNorm) pylith::meshio::VertexFilterVecNorm<pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubMeshVertexFilterVecNorm) pylith::meshio::VertexFilterVecNorm<pylith::topology::Field<pylith::topology::SubMesh> >;
 
 %template(MeshCellFilter) pylith::meshio::CellFilter<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubMeshCellFilter) pylith::meshio::CellFilter<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::SubMesh> >;
 %template(MeshCellFilterAvg) pylith::meshio::CellFilterAvg<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubMeshCellFilterAvg) pylith::meshio::CellFilterAvg<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::SubMesh> >;
 
 %template(MeshDataWriter) pylith::meshio::DataWriter<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubMeshDataWriter) pylith::meshio::DataWriter<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubSubMeshDataWriter) pylith::meshio::DataWriter<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::SubMesh> >;
 
 %template(MeshDataWriterVTK) pylith::meshio::DataWriterVTK<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubMeshDataWriterVTK) pylith::meshio::DataWriterVTK<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubSubMeshDataWriterVTK) pylith::meshio::DataWriterVTK<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::SubMesh> >;
 %template(PointsDataWriterVTK) pylith::meshio::DataWriterVTK<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
 
 #if defined(ENABLE_HDF5)
 %template(MeshDataWriterHDF5) pylith::meshio::DataWriterHDF5<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubMeshDataWriterHDF5) pylith::meshio::DataWriterHDF5<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubSubMeshDataWriterHDF5) pylith::meshio::DataWriterHDF5<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::SubMesh> >;
 
 %template(MeshDataWriterHDF5Ext) pylith::meshio::DataWriterHDF5Ext<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubMeshDataWriterHDF5Ext) pylith::meshio::DataWriterHDF5Ext<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubSubMeshDataWriterHDF5Ext) pylith::meshio::DataWriterHDF5Ext<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::SubMesh> >;
 #endif
 
 %template(MeshOutputManager) pylith::meshio::OutputManager<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubMeshOutputManager) pylith::meshio::OutputManager<pylith::topology::SubMesh, pylith::topology::Field<pylith::topology::SubMesh> >;
 
 // End of file

Modified: short/3D/PyLith/trunk/modulesrc/problems/Formulation.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/problems/Formulation.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/problems/Formulation.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -103,7 +103,7 @@
        * @param integrators Integrators over lower-dimension meshes.
        * @param numIntegrators Number of integrators.
        */
-      void submeshIntegrators(pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::SubMesh> >** integrators,
+      void submeshIntegrators(pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::Mesh> >** integrators,
 			      const int numIntegrators);
       
       /** Update handles and parameters for reforming the Jacobian and

Modified: short/3D/PyLith/trunk/modulesrc/topology/Jacobian.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/Jacobian.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/topology/Jacobian.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -42,17 +42,6 @@
 	       const char* matrixType ="aij",
 	       const bool blockOkay =false);
 
-      /** Constructor with field for submesh.
-       *
-       * @param field Fields associated with submesh and solution of the problem.
-       * @param matrixType Type of PETSc sparse matrix.
-       * @param blockOkay True if okay to use block size equal to fiberDim
-       * (all or none of the DOF at each point are constrained).
-       */
-      Jacobian(const Field<SubMesh>& field,
-	       const char* matrixType ="aij",
-	       const bool blockOkay =true);
-
       /// Destructor.
       ~Jacobian(void);
       

Modified: short/3D/PyLith/trunk/modulesrc/topology/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/Makefile.am	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/topology/Makefile.am	2013-05-13 23:33:37 UTC (rev 22058)
@@ -26,7 +26,6 @@
 swig_sources = \
 	topology.i \
 	Mesh.i \
-	SubMesh.i \
 	MeshOps.i \
 	FieldBase.i \
 	Field.i \

Modified: short/3D/PyLith/trunk/modulesrc/topology/Mesh.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/Mesh.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/topology/Mesh.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -106,12 +106,6 @@
        */
       int numCells(void) const;
       
-      /** Set MPI communicator associated with mesh.
-       *
-       * @param value MPI communicator.
-       */
-      void comm(const MPI_Comm value);
-    
       /** Get MPI communicator associated with mesh.
        *
        * @returns MPI communicator.

Deleted: short/3D/PyLith/trunk/modulesrc/topology/SubMesh.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/SubMesh.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/topology/SubMesh.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,123 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-// Brad T. Aagaard, U.S. Geological Survey
-// Charles A. Williams, GNS Science
-// Matthew G. Knepley, University of Chicago
-//
-// This code was developed as part of the Computational Infrastructure
-// for Geodynamics (http://geodynamics.org).
-//
-// Copyright (c) 2010-2013 University of California, Davis
-//
-// See COPYING for license information.
-//
-// ======================================================================
-//
-
-/**
- * @file modulesrc/topology/SubMesh.i
- *
- * @brief Python interface to C++ Mesh object.
- */
-
-namespace pylith {
-  namespace topology {
-
-    class SubMesh
-    { // SubMesh
-
-      // PUBLIC METHODS /////////////////////////////////////////////////
-    public :
-
-      /// Default constructor.
-      SubMesh(void);
-      
-      /** Constructor with mesh and label for vertices marking boundary.
-       *
-       * @param mesh Finite-element mesh over domain.
-       * @param label Label for vertices marking boundary.
-       */
-      SubMesh(const pylith::topology::Mesh& mesh,
-	      const char* label);
-
-      /// Default destructor
-      ~SubMesh(void);
-      
-      /// Deallocate PETSc and local data structures.
-      virtual
-      void deallocate(void);
-
-      /** Create Sieve mesh.
-       *
-       * @param mesh Finite-element mesh over domain.
-       * @param label Label for vertices marking boundary.
-       */
-      void createSubMesh(const pylith::topology::Mesh& mesh,
-			 const char* label); 
-
-      /** Get coordinate system.
-       *
-       * @returns Coordinate system.
-       */
-      const spatialdata::geocoords::CoordSys* coordsys(void) const;
-      
-      /** Set debug flag.
-       *
-       * @param value Turn on debugging if true.
-       */
-      void debug(const bool value);
-
-      /** Get debug flag.
-       *
-       * @param Get debugging flag.
-       */
-      bool debug(void) const;
-      
-      /** Get dimension of mesh.
-       *
-       * @returns Dimension of mesh.
-       */
-      int dimension(void) const;
-
-      /** Get representative cone size for mesh.
-       *
-       * @returns Representative cone size for mesh.
-       */
-      int coneSize(void) const;
-      
-      /** Get number of vertices in mesh.
-       *
-       * @returns Number of vertices in mesh.
-       */
-      int numVertices(void) const;
-      
-      /** Get number of cells in mesh.
-       *
-       * @returns Number of cells in mesh.
-       */
-      int numCells(void) const;
-
-      /** Get MPI communicator associated with mesh.
-       *
-       * @returns MPI communicator.
-       */
-      const MPI_Comm comm(void) const;
-    
-      /// Initialize the finite-element mesh.
-      void initialize(void);
-      
-      /** Print mesh to stdout.
-       *
-       * @param label Label for mesh.
-       */
-      void view(const char* label);
-      
-    }; // SubMesh
-
-  } // topology
-} // pylith
-
-
-// End of file

Modified: short/3D/PyLith/trunk/modulesrc/topology/topology.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/topology.i	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/modulesrc/topology/topology.i	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,7 +22,6 @@
 // Header files for module C++ code
 %{
 #include "pylith/topology/Mesh.hh"
-#include "pylith/topology/SubMesh.hh"
 #include "pylith/topology/MeshOps.hh"
 #include "pylith/topology/FieldBase.hh"
 #include "pylith/topology/Field.hh"
@@ -45,7 +44,6 @@
 
 %include "typemaps.i"
 %include "../include/chararray.i"
-%include "../include/submeshfield.i"
 %include "../include/scalartypemaps.i"
 
 // Numpy interface stuff
@@ -59,7 +57,6 @@
 
 // Interfaces
 %include "Mesh.i"
-%include "SubMesh.i"
 %include "MeshOps.i"
 %include "FieldBase.i"
 %include "Field.i"
@@ -73,16 +70,11 @@
 // Template instatiation
 
 %template(MeshField) pylith::topology::Field<pylith::topology::Mesh>;
-%template(SubMeshField) pylith::topology::Field<pylith::topology::SubMesh>;
 %template(MeshFields) pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >;
-%template(SubMeshFields) pylith::topology::Fields<pylith::topology::Field<pylith::topology::SubMesh> >;
 
 %extend pylith::topology::Field<pylith::topology::Mesh> {
   %template(createScatterMesh) createScatter<pylith::topology::Mesh>;
  }
-%extend pylith::topology::Field<pylith::topology::Mesh> {
-  %template(createScatterSubMesh) createScatter<pylith::topology::SubMesh>;
- }
 
 // End of file
 

Modified: short/3D/PyLith/trunk/pylith/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/pylith/Makefile.am	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/Makefile.am	2013-05-13 23:33:37 UTC (rev 22058)
@@ -93,12 +93,9 @@
 	meshio/__init__.py \
 	meshio/CellFilter.py \
 	meshio/CellFilterAvgMesh.py \
-	meshio/CellFilterAvgSubMesh.py \
 	meshio/DataWriter.py \
 	meshio/DataWriterVTK.py \
 	meshio/DataWriterVTKMesh.py \
-	meshio/DataWriterVTKSubMesh.py \
-	meshio/DataWriterVTKSubSubMesh.py \
 	meshio/DataWriterVTKPoints.py \
 	meshio/MeshIOObj.py \
 	meshio/MeshIOAscii.py \
@@ -106,7 +103,6 @@
 	meshio/OutputDirichlet.py \
 	meshio/OutputManager.py \
 	meshio/OutputManagerMesh.py \
-	meshio/OutputManagerSubMesh.py \
 	meshio/OutputSoln.py \
 	meshio/OutputFaultKin.py \
 	meshio/OutputFaultDyn.py \
@@ -119,7 +115,6 @@
 	meshio/SingleOutput.py \
 	meshio/VertexFilter.py \
 	meshio/VertexFilterVecNormMesh.py \
-	meshio/VertexFilterVecNormSubMesh.py \
 	mpi/__init__.py \
 	mpi/Communicator.py \
 	perf/__init__.py \
@@ -155,7 +150,6 @@
 	topology/__init__.py \
 	topology/Distributor.py \
 	topology/Mesh.py \
-	topology/SubMesh.py \
 	topology/Field.py \
 	topology/Fields.py \
 	topology/SolutionFields.py \
@@ -193,12 +187,8 @@
   nobase_pkgpyexec_PYTHON += \
 	meshio/DataWriterHDF5.py \
 	meshio/DataWriterHDF5Mesh.py \
-	meshio/DataWriterHDF5SubMesh.py \
-	meshio/DataWriterHDF5SubSubMesh.py \
 	meshio/DataWriterHDF5Ext.py \
 	meshio/DataWriterHDF5ExtMesh.py \
-	meshio/DataWriterHDF5ExtSubMesh.py \
-	meshio/DataWriterHDF5ExtSubSubMesh.py \
 	meshio/Xdmf.py
 endif
 

Modified: short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -55,9 +55,9 @@
 
     import pyre.inventory
 
-    from pylith.feassemble.Quadrature import SubMeshQuadrature
+    from pylith.feassemble.Quadrature import MeshQuadrature
     quadrature = pyre.inventory.facility("quadrature",
-                                         factory=SubMeshQuadrature)
+                                         factory=MeshQuadrature)
     quadrature.meta['tip'] = "Quadrature object for numerical integration."
 
     from spatialdata.spatialdb.SimpleDB import SimpleDB

Modified: short/3D/PyLith/trunk/pylith/bc/Neumann.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/Neumann.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/bc/Neumann.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -44,9 +44,9 @@
 
   import pyre.inventory
   
-  from pylith.feassemble.Quadrature import SubMeshQuadrature
+  from pylith.feassemble.Quadrature import MeshQuadrature
   bcQuadrature = pyre.inventory.facility("quadrature",
-                                       factory=SubMeshQuadrature)
+                                       factory=MeshQuadrature)
   bcQuadrature.meta['tip'] = "Quadrature object for numerical integration."
   
   from pylith.meshio.OutputNeumann import OutputNeumann

Modified: short/3D/PyLith/trunk/pylith/faults/Fault.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/Fault.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/faults/Fault.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -97,8 +97,8 @@
       "with fault normal; applies to fault surfaces " \
       "in 2-D and 3-D)."
   
-  from pylith.feassemble.Quadrature import SubMeshQuadrature
-  faultQuadrature = pyre.inventory.facility("quadrature", factory=SubMeshQuadrature)
+  from pylith.feassemble.Quadrature import MeshQuadrature
+  faultQuadrature = pyre.inventory.facility("quadrature", factory=MeshQuadrature)
   faultQuadrature.meta['tip'] = "Quadrature object for numerical integration."
   
   from pylith.perf.MemoryLogger import MemoryLogger

Modified: short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -157,50 +157,4 @@
     return
 
 
-# ----------------------------------------------------------------------
-from feassemble import SubMeshQuadrature as ModuleSubMeshQuadrature
-
-# SubMeshQuadrature class
-class SubMeshQuadrature(QuadratureBase, ModuleSubMeshQuadrature):
-  """
-  Python object for integrating over finite-elements using quadrature.
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="submeshquadrature"):
-    """
-    Constructor.
-    """
-    QuadratureBase.__init__(self, name)
-    ModuleSubMeshQuadrature.__init__(self)
-    return
-
-
-  # PRIVATE METHODS ////////////////////////////////////////////////////
-
-  def _initialize(self, cell):
-    """
-    Initialize C++ quadrature object.
-    """
-    import numpy
-    from pylith.utils.utils import sizeofPylithScalar
-    size = sizeofPylithScalar()
-    if 8 == size:
-        ModuleSubMeshQuadrature.initialize(self, cell.basis,
-                                           cell.basisDeriv,
-                                           cell.quadPts,
-                                           cell.quadWts,
-                                           cell.geometry.spaceDim())
-    elif 4 == size:
-        ModuleSubMeshQuadrature.initialize(self, numpy.float32(cell.basis),
-                                           numpy.float32(cell.basisDeriv),
-                                           numpy.float32(cell.quadPts),
-                                           numpy.float32(cell.quadWts),
-                                           cell.geometry.spaceDim())
-    else:
-        raise ValueError("Unknown size for PylithScalar")
-    return
-
-
 # End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/CellFilterAvgSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/CellFilterAvgSubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/CellFilterAvgSubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,76 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard, U.S. Geological Survey
-# Charles A. Williams, GNS Science
-# Matthew G. Knepley, University of Chicago
-#
-# This code was developed as part of the Computational Infrastructure
-# for Geodynamics (http://geodynamics.org).
-#
-# Copyright (c) 2010-2013 University of California, Davis
-#
-# See COPYING for license information.
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pyre/meshio/CellFilterAvgSubMesh.py
-##
-## @brief Python class for averageing cell fields over each cell's
-## quadrature points when writing finite-element data.
-##
-## Factory: output_cell_filter
-
-from CellFilter import CellFilter
-from meshio import SubMeshCellFilterAvg as ModuleCellFilterAvg
-
-# CellFilterAvgSubMesh class
-class CellFilterAvgSubMesh(CellFilter, ModuleCellFilterAvg):
-  """
-  Python class for average cell fields over each cell's quadrature
-  points when writing finite-element data.
-
-  Factory: output_cell_filter
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="cellfilteravgsubmesh"):
-    """
-    Constructor.
-    """
-    CellFilter.__init__(self, name)
-    ModuleCellFilterAvg.__init__(self)
-    return
-
-
-  def initialize(self, quadrature):
-    """
-    Initialize output manager.
-    """
-    self.quadrature(quadrature)
-    return
-
-
-  # PRIVATE METHODS ///////////////////////////////////////////////////
-
-  def _modelMemoryUse(self):
-    """
-    Model memory allocation.
-    """
-    self.perfLogger.logFields('Output', self.fieldAvg())
-    return
-
-
-# FACTORIES ////////////////////////////////////////////////////////////
-
-def output_cell_filter():
-  """
-  Factory associated with CellFilter.
-  """
-  return CellFilterAvgSubMesh()
-
-
-# End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtSubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtSubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard, U.S. Geological Survey
-# Charles A. Williams, GNS Science
-# Matthew G. Knepley, University of Chicago
-#
-# This code was developed as part of the Computational Infrastructure
-# for Geodynamics (http://geodynamics.org).
-#
-# Copyright (c) 2010-2013 University of California, Davis
-#
-# See COPYING for license information.
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pyre/meshio/DataWriterHDF5ExtSubMesh.py
-##
-## @brief Python object for writing finite-element data to HDF5Ext file.
-
-from DataWriterHDF5Ext import DataWriterHDF5Ext
-from meshio import SubMeshDataWriterHDF5Ext as ModuleDataWriterHDF5Ext
-
-# DataWriterHDF5ExtSubMesh class
-class DataWriterHDF5ExtSubMesh(DataWriterHDF5Ext, ModuleDataWriterHDF5Ext):
-  """
-  Python object for writing finite-element data to HDF5Ext file.
-
-  Inventory
-
-  Factory: output_data_writer
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="datawriterhdf5submesh"):
-    """
-    Constructor.
-    """
-    DataWriterHDF5Ext.__init__(self, name)
-    ModuleDataWriterHDF5Ext.__init__(self)
-    return
-
-
-  def initialize(self, normalizer):
-    """
-    Initialize writer.
-    """
-    DataWriterHDF5Ext.initialize(self, normalizer)
-
-    timeScale = normalizer.timeScale()
-
-    ModuleDataWriterHDF5Ext.filename(self, self.filename)
-    ModuleDataWriterHDF5Ext.timeScale(self, timeScale.value)
-    return
-  
-
-# FACTORIES ////////////////////////////////////////////////////////////
-
-def data_writer():
-  """
-  Factory associated with DataWriter.
-  """
-  return DataWriterHDF5ExtSubMesh()
-
-
-# End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtSubSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtSubSubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtSubSubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard, U.S. Geological Survey
-# Charles A. Williams, GNS Science
-# Matthew G. Knepley, University of Chicago
-#
-# This code was developed as part of the Computational Infrastructure
-# for Geodynamics (http://geodynamics.org).
-#
-# Copyright (c) 2010-2013 University of California, Davis
-#
-# See COPYING for license information.
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pyre/meshio/DataWriterHDF5ExtSubSubMesh.py
-##
-## @brief Python object for writing finite-element data to HDF5Ext file.
-
-from DataWriterHDF5Ext import DataWriterHDF5Ext
-from meshio import SubSubMeshDataWriterHDF5Ext as ModuleDataWriterHDF5Ext
-
-# DataWriterHDF5ExtSubSubMesh class
-class DataWriterHDF5ExtSubSubMesh(DataWriterHDF5Ext, ModuleDataWriterHDF5Ext):
-  """
-  Python object for writing finite-element data to HDF5Ext file.
-
-  Inventory
-
-  Factory: output_data_writer
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="datawriterhdf5submesh"):
-    """
-    Constructor.
-    """
-    DataWriterHDF5Ext.__init__(self, name)
-    ModuleDataWriterHDF5Ext.__init__(self)
-    return
-
-
-  def initialize(self, normalizer):
-    """
-    Initialize writer.
-    """
-    DataWriterHDF5Ext.initialize(self, normalizer)
-
-    timeScale = normalizer.timeScale()
-
-    ModuleDataWriterHDF5Ext.filename(self, self.filename)
-    ModuleDataWriterHDF5Ext.timeScale(self, timeScale.value)
-    return
-  
-
-# FACTORIES ////////////////////////////////////////////////////////////
-
-def data_writer():
-  """
-  Factory associated with DataWriter.
-  """
-  return DataWriterHDF5ExtSubSubMesh()
-
-
-# End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5SubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5SubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5SubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard, U.S. Geological Survey
-# Charles A. Williams, GNS Science
-# Matthew G. Knepley, University of Chicago
-#
-# This code was developed as part of the Computational Infrastructure
-# for Geodynamics (http://geodynamics.org).
-#
-# Copyright (c) 2010-2013 University of California, Davis
-#
-# See COPYING for license information.
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pyre/meshio/DataWriterHDF5SubMesh.py
-##
-## @brief Python object for writing finite-element data to HDF5 file.
-
-from DataWriterHDF5 import DataWriterHDF5
-from meshio import SubMeshDataWriterHDF5 as ModuleDataWriterHDF5
-
-# DataWriterHDF5SubMesh class
-class DataWriterHDF5SubMesh(DataWriterHDF5, ModuleDataWriterHDF5):
-  """
-  Python object for writing finite-element data to HDF5 file.
-
-  Inventory
-
-  Factory: output_data_writer
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="datawriterhdf5submesh"):
-    """
-    Constructor.
-    """
-    DataWriterHDF5.__init__(self, name)
-    ModuleDataWriterHDF5.__init__(self)
-    return
-
-
-  def initialize(self, normalizer):
-    """
-    Initialize writer.
-    """
-    DataWriterHDF5.initialize(self, normalizer)
-
-    timeScale = normalizer.timeScale()
-    
-    ModuleDataWriterHDF5.filename(self, self.filename)
-    ModuleDataWriterHDF5.timeScale(self, timeScale.value)
-    return
-  
-
-# FACTORIES ////////////////////////////////////////////////////////////
-
-def data_writer():
-  """
-  Factory associated with DataWriter.
-  """
-  return DataWriterHDF5SubMesh()
-
- 
-# End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5SubSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5SubSubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5SubSubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard, U.S. Geological Survey
-# Charles A. Williams, GNS Science
-# Matthew G. Knepley, University of Chicago
-#
-# This code was developed as part of the Computational Infrastructure
-# for Geodynamics (http://geodynamics.org).
-#
-# Copyright (c) 2010-2013 University of California, Davis
-#
-# See COPYING for license information.
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pyre/meshio/DataWriterHDF5SubSubMesh.py
-##
-## @brief Python object for writing finite-element data to HDF5 file.
-
-from DataWriterHDF5 import DataWriterHDF5
-from meshio import SubSubMeshDataWriterHDF5 as ModuleDataWriterHDF5
-
-# DataWriterHDF5SubSubMesh class
-class DataWriterHDF5SubSubMesh(DataWriterHDF5, ModuleDataWriterHDF5):
-  """
-  Python object for writing finite-element data to HDF5 file.
-
-  Inventory
-
-  Factory: output_data_writer
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="datawriterhdf5submesh"):
-    """
-    Constructor.
-    """
-    DataWriterHDF5.__init__(self, name)
-    ModuleDataWriterHDF5.__init__(self)
-    return
-
-
-  def initialize(self, normalizer):
-    """
-    Initialize writer.
-    """
-    DataWriterHDF5.initialize(self, normalizer)
-
-    timeScale = normalizer.timeScale()
-    
-    ModuleDataWriterHDF5.filename(self, self.filename)
-    ModuleDataWriterHDF5.timeScale(self, timeScale.value)
-    return
-  
-
-# FACTORIES ////////////////////////////////////////////////////////////
-
-def data_writer():
-  """
-  Factory associated with DataWriter.
-  """
-  return DataWriterHDF5SubSubMesh()
-
-
-# End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,74 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard, U.S. Geological Survey
-# Charles A. Williams, GNS Science
-# Matthew G. Knepley, University of Chicago
-#
-# This code was developed as part of the Computational Infrastructure
-# for Geodynamics (http://geodynamics.org).
-#
-# Copyright (c) 2010-2013 University of California, Davis
-#
-# See COPYING for license information.
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pyre/meshio/DataWriterVTKSubMesh.py
-##
-## @brief Python object for writing finite-element data to VTK file.
-
-from DataWriterVTK import DataWriterVTK
-from meshio import SubMeshDataWriterVTK as ModuleDataWriterVTK
-
-# DataWriterVTKSubMesh class
-class DataWriterVTKSubMesh(DataWriterVTK, ModuleDataWriterVTK):
-  """
-  Python object for writing finite-element data to VTK file.
-
-  Inventory
-
-  Factory: output_data_writer
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="datawritervtksubmesh"):
-    """
-    Constructor.
-    """
-    DataWriterVTK.__init__(self, name)
-    ModuleDataWriterVTK.__init__(self)
-    return
-
-
-  def initialize(self, normalizer):
-    """
-    Initialize writer.
-    """
-    DataWriterVTK.initialize(self, normalizer)
-
-    timeScale = normalizer.timeScale()
-    timeConstantN = normalizer.nondimensionalize(self.timeConstant,
-                                                 timeScale)
-
-    ModuleDataWriterVTK.filename(self, self.filename)
-    ModuleDataWriterVTK.timeScale(self, timeScale.value)
-    ModuleDataWriterVTK.timeFormat(self, self.timeFormat)
-    ModuleDataWriterVTK.timeConstant(self, timeConstantN)
-    ModuleDataWriterVTK.precision(self, self.precision)
-    return
-  
-
-# FACTORIES ////////////////////////////////////////////////////////////
-
-def data_writer():
-  """
-  Factory associated with DataWriter.
-  """
-  return DataWriterVTKSubMesh()
-
-
-# End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubSubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubSubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,74 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard, U.S. Geological Survey
-# Charles A. Williams, GNS Science
-# Matthew G. Knepley, University of Chicago
-#
-# This code was developed as part of the Computational Infrastructure
-# for Geodynamics (http://geodynamics.org).
-#
-# Copyright (c) 2010-2013 University of California, Davis
-#
-# See COPYING for license information.
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pyre/meshio/DataWriterVTKSubSubMesh.py
-##
-## @brief Python object for writing finite-element data to VTK file.
-
-from DataWriterVTK import DataWriterVTK
-from meshio import SubSubMeshDataWriterVTK as ModuleDataWriterVTK
-
-# DataWriterVTKSubSubMesh class
-class DataWriterVTKSubSubMesh(DataWriterVTK, ModuleDataWriterVTK):
-  """
-  Python object for writing finite-element data to VTK file.
-
-  Inventory
-
-  Factory: output_data_writer
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="datawritervtksubmesh"):
-    """
-    Constructor.
-    """
-    DataWriterVTK.__init__(self, name)
-    ModuleDataWriterVTK.__init__(self)
-    return
-
-
-  def initialize(self, normalizer):
-    """
-    Initialize writer.
-    """
-    DataWriterVTK.initialize(self, normalizer)
-
-    timeScale = normalizer.timeScale()
-    timeConstantN = normalizer.nondimensionalize(self.timeConstant,
-                                                 timeScale)
-
-    ModuleDataWriterVTK.filename(self, self.filename)
-    ModuleDataWriterVTK.timeScale(self, timeScale.value)
-    ModuleDataWriterVTK.timeFormat(self, self.timeFormat)
-    ModuleDataWriterVTK.timeConstant(self, timeConstantN)
-    ModuleDataWriterVTK.precision(self, self.precision)
-    return
-  
-
-# FACTORIES ////////////////////////////////////////////////////////////
-
-def data_writer():
-  """
-  Factory associated with DataWriter.
-  """
-  return DataWriterVTKSubSubMesh()
-
-
-# End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/MeshIOObj.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/MeshIOObj.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/MeshIOObj.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -64,8 +64,7 @@
 
     from pylith.mpi.Communicator import petsc_comm_world
     from pylith.topology.Mesh import Mesh    
-    mesh = Mesh()
-    mesh.setComm(petsc_comm_world())
+    mesh = Mesh(dim=self.coordsys.spaceDim(), comm=petsc_comm_world())
     mesh.coordsys(self.coordsys)
 
     # Read mesh

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputDirichlet.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputDirichlet.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputDirichlet.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,10 +23,10 @@
 ##
 ## Factory: output_manager
 
-from OutputManagerSubMesh import OutputManagerSubMesh
+from OutputManagerMesh import OutputManagerMesh
 
 # OutputDirichlet class
-class OutputDirichlet(OutputManagerSubMesh):
+class OutputDirichlet(OutputManagerMesh):
   """
   Python object for managing output of finite-element information for
   Dirichlet boundary conditions.
@@ -36,7 +36,7 @@
 
   # INVENTORY //////////////////////////////////////////////////////////
 
-  class Inventory(OutputManagerSubMesh.Inventory):
+  class Inventory(OutputManagerMesh.Inventory):
     """
     Python object for managing OutputDirichlet facilities and properties.
     """
@@ -63,7 +63,7 @@
     """
     Constructor.
     """
-    OutputManagerSubMesh.__init__(self, name)
+    OutputManagerMesh.__init__(self, name)
     return
 
     
@@ -73,7 +73,7 @@
     """
     Set members based using inventory.
     """
-    OutputManagerSubMesh._configure(self)
+    OutputManagerMesh._configure(self)
     self.vertexInfoFields = self.inventory.vertexInfoFields
     self.vertexDataFields = []
     self.cellInfoFields = []

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputFaultDyn.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputFaultDyn.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputFaultDyn.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,10 +23,10 @@
 ##
 ## Factory: output_manager
 
-from OutputManagerSubMesh import OutputManagerSubMesh
+from OutputManagerMesh import OutputManagerMesh
 
 # OutputFaultDyn class
-class OutputFaultDyn(OutputManagerSubMesh):
+class OutputFaultDyn(OutputManagerMesh):
   """
   Python object for managing output of finite-element information for
   faults with dynamic ruptures.
@@ -69,7 +69,7 @@
     """
     Constructor.
     """
-    OutputManagerSubMesh.__init__(self, name)
+    OutputManagerMesh.__init__(self, name)
     return
 
     
@@ -79,7 +79,7 @@
     """
     Set members based using inventory.
     """
-    OutputManagerSubMesh._configure(self)
+    OutputManagerMesh._configure(self)
     self.vertexInfoFields = self.inventory.vertexInfoFields
     self.vertexDataFields = self.inventory.vertexDataFields
     self.cellInfoFields   = self.inventory.cellInfoFields

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputFaultImpulses.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputFaultImpulses.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputFaultImpulses.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,10 +23,10 @@
 ##
 ## Factory: output_manager
 
-from OutputManagerSubMesh import OutputManagerSubMesh
+from OutputManagerMesh import OutputManagerMesh
 
 # OutputFaultImpulses class
-class OutputFaultImpulses(OutputManagerSubMesh):
+class OutputFaultImpulses(OutputManagerMesh):
   """
   Python object for managing output of finite-element information for
   faults with Green's function slip impulses.
@@ -70,7 +70,7 @@
     """
     Constructor.
     """
-    OutputManagerSubMesh.__init__(self, name)
+    OutputManagerMesh.__init__(self, name)
     return
 
     
@@ -80,7 +80,7 @@
     """
     Set members based using inventory.
     """
-    OutputManagerSubMesh._configure(self)
+    OutputManagerMesh._configure(self)
     self.vertexInfoFields = self.inventory.vertexInfoFields
     self.vertexDataFields = self.inventory.vertexDataFields
     self.cellInfoFields   = self.inventory.cellInfoFields

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputFaultKin.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputFaultKin.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputFaultKin.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,10 +23,10 @@
 ##
 ## Factory: output_manager
 
-from OutputManagerSubMesh import OutputManagerSubMesh
+from OutputManagerMesh import OutputManagerMesh
 
 # OutputFaultKin class
-class OutputFaultKin(OutputManagerSubMesh):
+class OutputFaultKin(OutputManagerMesh):
   """
   Python object for managing output of finite-element information for
   faults with kinematic ruptures.
@@ -71,7 +71,7 @@
     """
     Constructor.
     """
-    OutputManagerSubMesh.__init__(self, name)
+    OutputManagerMesh.__init__(self, name)
     return
 
     
@@ -81,7 +81,7 @@
     """
     Set members based using inventory.
     """
-    OutputManagerSubMesh._configure(self)
+    OutputManagerMesh._configure(self)
     self.vertexInfoFields = self.inventory.vertexInfoFields
     self.vertexDataFields = self.inventory.vertexDataFields
     self.cellInfoFields   = self.inventory.cellInfoFields

Deleted: short/3D/PyLith/trunk/pylith/meshio/OutputManagerSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputManagerSubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputManagerSubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,155 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard, U.S. Geological Survey
-# Charles A. Williams, GNS Science
-# Matthew G. Knepley, University of Chicago
-#
-# This code was developed as part of the Computational Infrastructure
-# for Geodynamics (http://geodynamics.org).
-#
-# Copyright (c) 2010-2013 University of California, Davis
-#
-# See COPYING for license information.
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pyre/meshio/OutputManagerSubMesh.py
-##
-## @brief Python abstract base class for managing output of
-## finite-element information.
-##
-## Factory: output_manager
-
-from OutputManager import OutputManager
-from meshio import SubMeshOutputManager as ModuleOutputManager
-
-# OutputManagerSubMsh class
-class OutputManagerSubMesh(OutputManager, ModuleOutputManager):
-  """
-  Python abstract base class for managing output of finite-element
-  information.
-
-  \b Properties
-  @li None
-  
-  \b Facilities
-  @li \b writer Writer for data.
-
-  Factory: output_manager
-  """
-
-  # INVENTORY //////////////////////////////////////////////////////////
-
-  import pyre.inventory
-
-  from DataWriterVTKSubSubMesh import DataWriterVTKSubSubMesh
-  writer = pyre.inventory.facility("writer", factory=DataWriterVTKSubSubMesh,
-                                   family="data_writer")
-  writer.meta['tip'] = "Writer for data."
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="outputmanagersubmesh"):
-    """
-    Constructor.
-    """
-    OutputManager.__init__(self, name)
-    return
-
-
-  # PRIVATE METHODS ////////////////////////////////////////////////////
-
-  def _configure(self):
-    """
-    Set members based using inventory.
-    """
-    from pylith.utils.NullComponent import NullComponent
-
-    OutputManager._configure(self)
-    ModuleOutputManager.coordsys(self, self.inventory.coordsys)
-    ModuleOutputManager.writer(self, self.inventory.writer)
-    if not isinstance(self.inventory.vertexFilter, NullComponent):
-      ModuleOutputManager.vertexFilter(self, self.inventory.vertexFilter)
-    if not isinstance(self.inventory.cellFilter, NullComponent):
-      ModuleOutputManager.cellFilter(self, self.inventory.cellFilter)
-    return
-
-
-  def _createModuleObj(self):
-    """
-    Create handle to C++ object.
-    """
-    ModuleOutputManager.__init__(self)
-    return
-
-
-  def _open(self, mesh, nsteps, label, labelId):
-    """
-    Call C++ open();
-    """
-    if label != None and labelId != None:
-      ModuleOutputManager.open(self, mesh, nsteps, label, labelId)
-    else:
-      ModuleOutputManager.open(self, mesh, nsteps)
-    return
-
-
-  def _openTimeStep(self, t, mesh, label, labelId):
-    """
-    Call C++ openTimeStep();
-    """
-    if label != None and labelId != None:
-      ModuleOutputManager.openTimeStep(self, t, mesh, label, labelId)
-    else:
-      ModuleOutputManager.openTimeStep(self, t, mesh)
-    return
-
-
-  def _appendVertexField(self, t, field, mesh):
-    """
-    Call C++ appendVertexField();
-    """
-    ModuleOutputManager.appendVertexField(self, t, field, mesh)
-    return
-
-
-  def _appendCellField(self, t, field, label, labelId):
-    """
-    Call C++ appendCellField();
-    """
-    if label != None and labelId != None:
-      ModuleOutputManager.appendCellField(self, t, field, label, labelId)
-    else:
-      ModuleOutputManager.appendCellField(self, t, field)
-    return
-
-
-  def _closeTimeStep(self):
-    """
-    Call C++ closeTimeStep().
-    """
-    ModuleOutputManager.closeTimeStep(self)
-    return
-
-
-  def _close(self):
-    """
-    Call C++ close().
-    """
-    ModuleOutputManager.close(self)
-    return
-
-
-# FACTORIES ////////////////////////////////////////////////////////////
-
-def output_manager():
-  """
-  Factory associated with OutputManager.
-  """
-  return OutputManagerSubMesh()
-
-
-# End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputNeumann.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputNeumann.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputNeumann.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,10 +23,10 @@
 ##
 ## Factory: output_manager
 
-from OutputManagerSubMesh import OutputManagerSubMesh
+from OutputManagerMesh import OutputManagerMesh
 
 # OutputNeumann class
-class OutputNeumann(OutputManagerSubMesh):
+class OutputNeumann(OutputManagerMesh):
   """
   Python object for managing output of finite-element information for
   Neumann boundary conditions.
@@ -36,7 +36,7 @@
 
   # INVENTORY //////////////////////////////////////////////////////////
 
-  class Inventory(OutputManagerSubMesh.Inventory):
+  class Inventory(OutputManagerMesh.Inventory):
     """
     Python object for managing OutputNeumann facilities and properties.
     """
@@ -63,7 +63,7 @@
     """
     Constructor.
     """
-    OutputManagerSubMesh.__init__(self, name)
+    OutputManagerMesh.__init__(self, name)
     return
 
     
@@ -73,7 +73,7 @@
     """
     Set members based using inventory.
     """
-    OutputManagerSubMesh._configure(self)
+    OutputManagerMesh._configure(self)
     self.vertexInfoFields = []
     self.vertexDataFields = []
     self.cellInfoFields = self.inventory.cellInfoFields

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -66,8 +66,8 @@
   label = pyre.inventory.str("label", default="", validator=validateLabel)
   label.meta['tip'] = "Label identifier for subdomain."
 
-  from DataWriterVTKSubMesh import DataWriterVTKSubMesh
-  writer = pyre.inventory.facility("writer", factory=DataWriterVTKSubMesh,
+  from DataWriterVTKMesh import DataWriterVTKMesh
+  writer = pyre.inventory.facility("writer", factory=DataWriterVTKMesh,
                                  family="data_writer")
   writer.meta['tip'] = "Writer for data."
 

Deleted: short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNormSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNormSubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNormSubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,59 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard, U.S. Geological Survey
-# Charles A. Williams, GNS Science
-# Matthew G. Knepley, University of Chicago
-#
-# This code was developed as part of the Computational Infrastructure
-# for Geodynamics (http://geodynamics.org).
-#
-# Copyright (c) 2010-2013 University of California, Davis
-#
-# See COPYING for license information.
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pyre/meshio/VertexFilterVecNormSubMesh.py
-##
-## @brief Python class for computing vector norm for each vertex for
-## field over vertices when writing finite-element data.
-##
-## Factory: output_vertex_filter
-
-from VertexFilter import VertexFilter
-from meshio import SubMeshVertexFilterVecNorm as ModuleVertexFilterVecNorm
-
-# VertexFilterVecNormSubMesh class
-class VertexFilterVecNormSubMesh(VertexFilter, ModuleVertexFilterVecNorm):
-  """
-  Python class for computing vector norm for each vertex for field
-  over vertices when writing finite-element data.
-
-  Factory: output_vertex_filter
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="vertexfiltervecnormsubmesh"):
-    """
-    Constructor.
-    """
-    VertexFilter.__init__(self, name)
-    ModuleVertexFilterVecNorm.__init__(self)
-    self.filter = True
-    return
-
-
-# FACTORIES ////////////////////////////////////////////////////////////
-
-def output_vertex_filter():
-  """
-  Factory associated with VertexFilter.
-  """
-  return VertexFilterVecNormSubMesh()
-
-
-# End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/__init__.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/meshio/__init__.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,12 +22,9 @@
 
 __all__ = ['CellFilter',
            'CellFilterAvgMesh',
-           'CellFilterAvgSubMesh',
            'DataWriter',
            'DataWriterVTK',
            'DataWriterVTKMesh',
-           'DataWriterVTKSubMesh',
-           'DataWriterVTKSubSubMesh',
            'DataWriterVTKPoints',
            'MeshIOObj',
            'MeshIOAscii',
@@ -37,7 +34,6 @@
            'OutputFaultKin',
            'OutputManager',
            'OutputManagerMesh',
-           'OutputManagerSubMesh',
            'OutputMatElastic',
            'OutputNeumann'
            'OutputSoln',
@@ -47,7 +43,6 @@
            'SingleOutput',
            'VertexFilter',
            'VertexFilterVecNormMesh',
-           'VertexFilterVecNormSubMesh',
            ]
 
 

Modified: short/3D/PyLith/trunk/pylith/problems/TimeStep.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/TimeStep.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/problems/TimeStep.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -187,7 +187,7 @@
       if dt < dtStable:
         dtStable = dt
     import pylith.mpi.mpi as mpi
-    comm = mesh.getComm()
+    comm = mesh.comm()
     dtStableAll = mpi.allreduce_scalar_double(dtStable, mpi.mpi_min(), comm.handle)
     return dtStableAll
 

Modified: short/3D/PyLith/trunk/pylith/topology/Field.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/Field.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/topology/Field.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,7 +22,6 @@
 ## cells of a finite-element mesh.
 
 from topology import MeshField as ModuleMeshField
-from topology import SubMeshField as ModuleSubMeshField
 
 # ----------------------------------------------------------------------
 # MeshField class
@@ -50,30 +49,4 @@
     return
     
 
-# ----------------------------------------------------------------------
-# SubMeshField class
-class SubMeshField(ModuleSubMeshField):
-  """
-  Python object for managing a vector field over vertices or cells of
-  a lower-dimension finite-element mesh.
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, mesh):
-    """
-    Constructor.
-    """
-    ModuleSubMeshField.__init__(self, mesh)
-    return
-    
-
-  def cleanup(self):
-    """
-    Deallocate PETSc and local data structures.
-    """
-    self.deallocate()
-    return
-    
-
 # End of file

Modified: short/3D/PyLith/trunk/pylith/topology/Fields.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/Fields.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/topology/Fields.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,7 +22,6 @@
 ## cells of a finite-element mesh.
 
 from topology import MeshFields as ModuleMeshFields
-from topology import SubMeshFields as ModuleSubMeshFields
 
 # ----------------------------------------------------------------------
 # MeshFields class
@@ -50,30 +49,4 @@
     return
     
 
-# ----------------------------------------------------------------------
-# SubMeshFields class
-class SubMeshFields(ModuleSubMeshFields):
-  """
-  Python object for managing vector fields over vertices or cells of
-  a lower-dimension finite-element mesh.
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, mesh):
-    """
-    Constructor.
-    """
-    ModuleSubMeshFields.__init__(self, mesh)
-    return
-    
-
-  def cleanup(self):
-    """
-    Deallocate PETSc and local data structures.
-    """
-    self.deallocate()
-    return
-    
-
 # End of file

Modified: short/3D/PyLith/trunk/pylith/topology/Mesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/Mesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/topology/Mesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,16 +30,19 @@
 
   # PUBLIC METHODS /////////////////////////////////////////////////////
 
-  def __init__(self, dim=None, comm=None):
+  def __init__(self, dim=None, comm=None, mesh=None, label=None, isSubMesh=False):
     """
     Constructor.
     """
-    if comm is None and dim is None:
-      ModuleMesh.__init__(self)
-    elif comm is None:
+    if comm is None and dim is None and label is None:
+      ModuleMesh.__init__(self, isSubMesh)
+    elif comm is None and mesh is None and label is None:
       ModuleMesh.__init__(self, dim)
-    else:
+    elif label is None:
       ModuleMesh.__init__(self, dim, comm.handle)
+    else:
+      assert(not mesh is None and not label is None)
+      ModuleMesh.__init__(self, mesh, label)
 
     # Name of logging stage for mesh. We progress through various
     # stages as we read, distribute, and refine mesh.
@@ -47,16 +50,8 @@
     return
 
 
-  def setComm(self, comm):
+  def comm(self):
     """
-    Set communicator.
-    """
-    ModuleMesh.comm(self, comm.handle)
-    return
-
-
-  def getComm(self):
-    """
     Get communicator.
     """
     # Use Communicator object to wrap C++ MPI_Comm* returned by

Modified: short/3D/PyLith/trunk/pylith/topology/MeshImporter.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/MeshImporter.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/topology/MeshImporter.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -89,8 +89,8 @@
     Hook for creating mesh.
     """
     from pylith.utils.profiling import resourceUsageString
-    from pylith.mpi.Communicator import mpi_comm_world
-    comm = mpi_comm_world()
+    from pylith.mpi.Communicator import petsc_comm_world
+    comm = petsc_comm_world()
 
     self._setupLogging()
     logEvent = "%screate" % self._loggingPrefix
@@ -120,7 +120,7 @@
     self._adjustTopology(mesh, faults)
 
     # Distribute mesh
-    if mesh.getComm().size > 1:
+    if comm.size > 1:
       if 0 == comm.rank:
         self._info.log("Distributing mesh.")
       mesh = self.distributor.distribute(mesh, normalizer)

Modified: short/3D/PyLith/trunk/pylith/topology/RefineUniform.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/RefineUniform.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/topology/RefineUniform.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -63,7 +63,7 @@
     self._eventLogger.eventBegin(logEvent)
 
     from Mesh import Mesh
-    newMesh = Mesh(mesh.dimension(), mesh.getComm())
+    newMesh = Mesh(dim=mesh.dimension(), comm=mesh.comm())
     newMesh.debug(mesh.debug())
     newMesh.coordsys(mesh.coordsys())
     ModuleRefineUniform.refine(self, newMesh, mesh, self.levels)

Deleted: short/3D/PyLith/trunk/pylith/topology/SubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/SubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/pylith/topology/SubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,57 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard, U.S. Geological Survey
-# Charles A. Williams, GNS Science
-# Matthew G. Knepley, University of Chicago
-#
-# This code was developed as part of the Computational Infrastructure
-# for Geodynamics (http://geodynamics.org).
-#
-# Copyright (c) 2010-2013 University of California, Davis
-#
-# See COPYING for license information.
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pylith/topology/SubMesh.py
-##
-## @brief Python Mesh for lower-dimension finite-element topology
-## information.
-
-from topology import SubMesh as ModuleSubMesh
-
-# SubMesh class
-class SubMesh(ModuleSubMesh):
-  """
-  Python Mesh for lower-dimension finite-element topology information.
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, mesh=None, label=None):
-    """
-    Constructor.
-    """
-    if mesh is None:
-      ModuleSubMesh.__init__(self)
-    else:
-      if label is None:
-        raise ValueError("SubMesh constructor with mesh requires label.")
-      ModuleSubMesh.__init__(self, mesh, label)
-    return
-
-
-  def comm(self):
-    """
-    Get communicator.
-    """
-    # Use Communicator object to wrap C++ MPI_Comm* returned by
-    # module.
-    from pylith.mpi.Communicator import Communicator
-    return Communicator(ModuleSubMesh.comm(self))
-
-
-# End of file

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,6 @@
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
@@ -50,7 +49,7 @@
   PYLITH_METHOD_BEGIN;
 
   _data = 0;
-  _quadrature = new feassemble::Quadrature<topology::SubMesh>();
+  _quadrature = new feassemble::Quadrature<topology::Mesh>();
   CPPUNIT_ASSERT(_quadrature);
 
   PYLITH_METHOD_END;
@@ -113,7 +112,7 @@
 
   CPPUNIT_ASSERT(_data);
 
-  const topology::SubMesh& boundaryMesh = *bc._boundaryMesh;
+  const topology::Mesh& boundaryMesh = *bc._boundaryMesh;
 
   PetscDM subMesh = boundaryMesh.dmMesh();CPPUNIT_ASSERT(subMesh);
 
@@ -193,7 +192,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &bc, &fields);
 
-  const topology::SubMesh& boundaryMesh = *bc._boundaryMesh;
+  const topology::Mesh& boundaryMesh = *bc._boundaryMesh;
   PetscDM             subMesh = boundaryMesh.dmMesh();
   PetscErrorCode err;
 
@@ -250,7 +249,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &bc, &fields);
 
-  const topology::SubMesh& boundaryMesh = *bc._boundaryMesh;
+  const topology::Mesh& boundaryMesh = *bc._boundaryMesh;
   PetscDM subMesh = boundaryMesh.dmMesh();CPPUNIT_ASSERT(subMesh);
 
   topology::Field<topology::Mesh>& solution = fields.solution();
@@ -334,7 +333,7 @@
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
   jacobian.allocate();
 
-  const topology::SubMesh& boundaryMesh = *bc._boundaryMesh;
+  const topology::Mesh& boundaryMesh = *bc._boundaryMesh;
   PetscDM subMesh = boundaryMesh.dmMesh();CPPUNIT_ASSERT(subMesh);
 
   const PylithScalar t = 1.0;

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -84,7 +84,7 @@
 protected :
 
   AbsorbingDampersData* _data; ///< Data for testing
-  feassemble::Quadrature<topology::SubMesh>* _quadrature; ///< Used in testing.
+  feassemble::Quadrature<topology::Mesh>* _quadrature; ///< Used in testing.
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "TestAbsorbingDampersCases.hh" // Implementation of cases
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestBoundaryMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestBoundaryMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestBoundaryMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -25,7 +25,6 @@
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
 #include "pylith/topology/Field.hh" // USES Field
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorSubMesh.hh" // USES SubMeshIS
 #include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
@@ -80,7 +79,7 @@
   topology::MeshOps::nondimensionalize(&mesh, normalizer);
 
   // Create submesh
-  topology::SubMesh submesh(mesh, _data->bcLabel);
+  topology::Mesh submesh(mesh, _data->bcLabel);
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
 
   // Check vertices
@@ -152,7 +151,7 @@
   fault.adjustTopology(&mesh, &firstFaultVertex, &firstLagrangeVertex, &firstFaultCell, _flipFault);
 
   // Create submesh
-  topology::SubMesh submesh(mesh, _data->bcLabel);
+  topology::Mesh submesh(mesh, _data->bcLabel);
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
 
   // Check vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -26,7 +26,6 @@
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,6 @@
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
@@ -94,7 +93,7 @@
       static
       void _checkValues(const PylithScalar* valuesE,
 			const int fiberDimE,
-			const topology::Field<topology::SubMesh>& field);
+			const topology::Field<topology::Mesh>& field);
     } // _TestNeumann
   } // bc
 } // pylith
@@ -107,7 +106,7 @@
   PYLITH_METHOD_BEGIN;
 
   _data = 0;
-  _quadrature = new feassemble::Quadrature<topology::SubMesh>();
+  _quadrature = new feassemble::Quadrature<topology::Mesh>();
   CPPUNIT_ASSERT(_quadrature);
 
   PYLITH_METHOD_END;
@@ -168,7 +167,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &bc, &fields);
 
-  const topology::SubMesh& boundaryMesh = *bc._boundaryMesh;
+  const topology::Mesh& boundaryMesh = *bc._boundaryMesh;
 
   PetscDM subMesh = boundaryMesh.dmMesh();assert(subMesh);
   topology::Stratum verticesStratum(subMesh, topology::Stratum::DEPTH, 0);
@@ -337,23 +336,23 @@
   // bc._parameters->view("PARAMETERS"); // DEBUGGING
 
   // Check initial values.
-  const topology::Field<topology::SubMesh>& initial = bc._parameters->get("initial");
+  const topology::Field<topology::Mesh>& initial = bc._parameters->get("initial");
   _TestNeumann::_checkValues(_TestNeumann::initial, numQuadPts*spaceDim, initial);
 
   // Check rate values.
-  const topology::Field<topology::SubMesh>& rate = bc._parameters->get("rate");
+  const topology::Field<topology::Mesh>& rate = bc._parameters->get("rate");
   _TestNeumann::_checkValues(_TestNeumann::rate, numQuadPts*spaceDim, rate);
 
   // Check rate start time.
-  const topology::Field<topology::SubMesh>& rateTime = bc._parameters->get("rate time");
+  const topology::Field<topology::Mesh>& rateTime = bc._parameters->get("rate time");
   _TestNeumann::_checkValues(_TestNeumann::rateTime, numQuadPts, rateTime);
 
   // Check change values.
-  const topology::Field<topology::SubMesh>& change = bc._parameters->get("change");
+  const topology::Field<topology::Mesh>& change = bc._parameters->get("change");
   _TestNeumann::_checkValues(_TestNeumann::change, numQuadPts*spaceDim, change);
 
   // Check change start time.
-  const topology::Field<topology::SubMesh>& changeTime = bc._parameters->get("change time");
+  const topology::Field<topology::Mesh>& changeTime = bc._parameters->get("change time");
   _TestNeumann::_checkValues(_TestNeumann::changeTime, numQuadPts, changeTime);
   th.close();
 
@@ -419,7 +418,7 @@
     valuesE[i+0] = _TestNeumann::initial[i+0]; // x
     valuesE[i+1] = -_TestNeumann::initial[i+1]; // y
   } // for
-  const topology::Field<topology::SubMesh>& initial = bc._parameters->get("initial");
+  const topology::Field<topology::Mesh>& initial = bc._parameters->get("initial");
   _TestNeumann::_checkValues(&valuesE[0], numQuadPts*spaceDim, initial);
 
   // Check rate values.
@@ -427,7 +426,7 @@
     valuesE[i+0] = _TestNeumann::rate[i+0]; // x
     valuesE[i+1] = -_TestNeumann::rate[i+1]; // y
   } // for
-  const topology::Field<topology::SubMesh>& rate = bc._parameters->get("rate");
+  const topology::Field<topology::Mesh>& rate = bc._parameters->get("rate");
   _TestNeumann::_checkValues(&valuesE[0], numQuadPts*spaceDim, rate);
 
   // Check change values.
@@ -435,7 +434,7 @@
     valuesE[i+0] = _TestNeumann::change[i+0]; // x
     valuesE[i+1] = -_TestNeumann::change[i+1]; // y
   } // for
-  const topology::Field<topology::SubMesh>& change = bc._parameters->get("change");
+  const topology::Field<topology::Mesh>& change = bc._parameters->get("change");
   _TestNeumann::_checkValues(&valuesE[0], numQuadPts*spaceDim, change);
 
   PYLITH_METHOD_END;
@@ -475,7 +474,7 @@
   CPPUNIT_ASSERT(bc._parameters);
   
   // Check values.
-  const topology::Field<topology::SubMesh>& value = bc._parameters->get("value");
+  const topology::Field<topology::Mesh>& value = bc._parameters->get("value");
   _TestNeumann::_checkValues(_TestNeumann::initial, numQuadPts*spaceDim, value);
 
   PYLITH_METHOD_END;
@@ -515,7 +514,7 @@
   CPPUNIT_ASSERT(bc._parameters);
   
   // Check values.
-  const topology::Field<topology::SubMesh>& value = bc._parameters->get("value");
+  const topology::Field<topology::Mesh>& value = bc._parameters->get("value");
   _TestNeumann::_checkValues(_TestNeumann::valuesRate, numQuadPts*spaceDim, value);
 
   PYLITH_METHOD_END;
@@ -555,7 +554,7 @@
   CPPUNIT_ASSERT(bc._parameters);
   
   // Check values.
-  const topology::Field<topology::SubMesh>& value = bc._parameters->get("value");
+  const topology::Field<topology::Mesh>& value = bc._parameters->get("value");
   _TestNeumann::_checkValues(_TestNeumann::valuesChange, numQuadPts*spaceDim, value);
 
   PYLITH_METHOD_END;
@@ -599,7 +598,7 @@
   CPPUNIT_ASSERT(bc._parameters);
   
   // Check values.
-  const topology::Field<topology::SubMesh>& value = bc._parameters->get("value");
+  const topology::Field<topology::Mesh>& value = bc._parameters->get("value");
   _TestNeumann::_checkValues(_TestNeumann::valuesChangeTH, numQuadPts*spaceDim, value);
 
   PYLITH_METHOD_END;
@@ -665,7 +664,7 @@
       _TestNeumann::valuesRate[i] +
       _TestNeumann::valuesChangeTH[i];
   
-  const topology::Field<topology::SubMesh>& value = bc._parameters->get("value");
+  const topology::Field<topology::Mesh>& value = bc._parameters->get("value");
   _TestNeumann::_checkValues(&valuesE[0], numQuadPts*spaceDim, value);
 
   PYLITH_METHOD_END;
@@ -767,13 +766,13 @@
 void
 pylith::bc::_TestNeumann::_checkValues(const PylithScalar* valuesE,
 				       const int fiberDimE,
-				       const topology::Field<topology::SubMesh>& field)
+				       const topology::Field<topology::Mesh>& field)
 { // _checkValues
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(valuesE);
 
-  const topology::SubMesh& boundaryMesh = field.mesh();
+  const topology::Mesh& boundaryMesh = field.mesh();
   const PetscInt ncells = _TestNeumann::ncells;
 
   PetscDM subMesh = boundaryMesh.dmMesh();CPPUNIT_ASSERT(subMesh);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -110,7 +110,7 @@
 protected :
 
   NeumannData* _data; ///< Data for testing
-  feassemble::Quadrature<topology::SubMesh>* _quadrature; ///< Used in testing.
+  feassemble::Quadrature<topology::Mesh>* _quadrature; ///< Used in testing.
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "TestNeumannCases.hh" // Implementation of class methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -25,7 +25,6 @@
 #include "TestFaultMesh.hh" // USES createFaultMesh()
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Stratum.hh" // USES Stratum
@@ -258,14 +257,14 @@
   const PylithScalar originTime = 5.064;
 
   topology::Mesh mesh;
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   BruneSlipFn slipfn;
   _initialize(&mesh, &faultMesh, &slipfn, originTime);
   
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::SubMesh> slip(faultMesh);
+  topology::Field<topology::Mesh> slip(faultMesh);
   slip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slip.allocate();
 
@@ -337,7 +336,7 @@
 // Initialize BruneSlipFn.
 void
 pylith::faults::TestBruneSlipFn::_initialize(topology::Mesh* mesh,
-					     topology::SubMesh* faultMesh,
+					     topology::Mesh* faultMesh,
 					     BruneSlipFn* slipfn,
 					     const PylithScalar originTime)
 { // _initialize
@@ -423,7 +422,7 @@
   mesh.coordsys(&cs);
 
   // Create fault mesh
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   TestFaultMesh::createFaultMesh(&faultMesh, &mesh, data.faultLabel, data.faultId);
 
   // Setup databases

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "pylith/faults/faultsfwd.hh" // USES BruneSlipFn
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh
+#include "pylith/topology/topologyfwd.hh" // USES Mesh
 
 /// Namespace for pylith package
 namespace pylith {
@@ -104,7 +104,7 @@
    */
   static
   void _initialize(topology::Mesh* mesh,
-		   topology::SubMesh* faultMesh,
+		   topology::Mesh* faultMesh,
 		   BruneSlipFn* slipfn,
 		   const PylithScalar originTime);
 
@@ -115,14 +115,6 @@
   static
   void _testInitialize(const _TestBruneSlipFn::DataStruct& data);
 
-  /** Setup fault coordinates
-   *
-   * @param mesh Finite-element mesh of domain.
-   * @param faultMesh Finite-element mesh of fault.
-   */
-  static
-  void _setupFaultCoordinates(topology::Mesh *mesh, topology::SubMesh *faultMesh);
-
 }; // class TestBruneSlipFn
 
 #endif // pylith_faults_testbruneslipfn_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -25,7 +25,6 @@
 #include "TestFaultMesh.hh" // USES createFaultMesh()
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Stratum.hh" // USES Stratum
@@ -220,14 +219,14 @@
   const PylithScalar originTime = 5.064;
 
   topology::Mesh mesh;
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   ConstRateSlipFn slipfn;
   _initialize(&mesh, &faultMesh, &slipfn, originTime);
   
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::SubMesh> slip(faultMesh);
+  topology::Field<topology::Mesh> slip(faultMesh);
   slip.newSection(topology::Field<topology::Mesh>::VERTICES_FIELD, spaceDim);
   slip.allocate();
 
@@ -262,7 +261,7 @@
 // Initialize ConstRateSlipFn.
 void
 pylith::faults::TestConstRateSlipFn::_initialize(topology::Mesh* mesh,
-						 topology::SubMesh* faultMesh,
+						 topology::Mesh* faultMesh,
 					    	 ConstRateSlipFn* slipfn,
 						 const PylithScalar originTime)
 { // _initialize
@@ -341,7 +340,7 @@
   mesh.coordsys(&cs);
 
   // Create fault mesh
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   TestFaultMesh::createFaultMesh(&faultMesh, &mesh, data.faultLabel, data.faultId);
 
   // Setup databases

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "pylith/faults/faultsfwd.hh" // USES ConstRateSlipFn
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh
+#include "pylith/topology/topologyfwd.hh" // USES Mesh
 
 /// Namespace for pylith package
 namespace pylith {
@@ -96,7 +96,7 @@
    */
   static
   void _initialize(topology::Mesh* mesh,
-		   topology::SubMesh* faultMesh,
+		   topology::Mesh* faultMesh,
 		   ConstRateSlipFn* slipfn,
 		   const PylithScalar originTime);
 
@@ -107,14 +107,6 @@
   static
   void _testInitialize(const _TestConstRateSlipFn::DataStruct& data);
 
-  /** Setup fault coordinates
-   *
-   * @param mesh Finite-element mesh of domain.
-   * @param faultMesh Finite-element mesh of fault.
-   */
-  static
-  void _setupFaultCoordinates(topology::Mesh *mesh, topology::SubMesh *faultMesh);
-
 }; // class TestConstRateSlipFn
 
 #endif // pylith_faults_testconstrateslipfn_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -28,7 +28,6 @@
 #include "pylith/faults/CohesiveTopology.hh" // USES CohesiveTopology
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
@@ -93,7 +92,7 @@
   PYLITH_METHOD_BEGIN;
 
   topology::Mesh mesh;
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   EqKinSrc eqsrc;
   BruneSlipFn slipfn;
   const PylithScalar originTime = 2.45;
@@ -120,7 +119,7 @@
   const PylithScalar originTime = 2.42 / _TestEqKinSrc::timeScale;
 
   topology::Mesh mesh;
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   EqKinSrc eqsrc;
   BruneSlipFn slipfn;
   _initialize(&mesh, &faultMesh, &eqsrc, &slipfn, originTime);
@@ -128,7 +127,7 @@
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::SubMesh> slip(faultMesh);
+  topology::Field<topology::Mesh> slip(faultMesh);
   slip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slip.allocate();
 
@@ -169,7 +168,7 @@
 // Initialize EqKinSrc.
 void
 pylith::faults::TestEqKinSrc::_initialize(topology::Mesh* mesh,
-					  topology::SubMesh* faultMesh,
+					  topology::Mesh* faultMesh,
 					  EqKinSrc* eqsrc,
 					  BruneSlipFn* slipfn,
 					  const PylithScalar originTime)

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -83,19 +83,11 @@
    */
   static
   void _initialize(topology::Mesh* mesh,
-		   topology::SubMesh* faultMesh,
+		   topology::Mesh* faultMesh,
 		   EqKinSrc* eqsrc,
 		   BruneSlipFn* slipfn,
 		   const PylithScalar originTime);
 
-  /** Setup fault coordinates
-   *
-   * @param mesh Finite-element mesh of domain.
-   * @param faultMesh Finite-element mesh of fault.
-   */
-  static
-  void _setupFaultCoordinates(topology::Mesh *mesh, topology::SubMesh *faultMesh);
-
 }; // class TestEqKinSrc
 
 #endif // pylith_faults_testeqkinsrc_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,6 @@
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
@@ -54,7 +53,7 @@
   PYLITH_METHOD_BEGIN;
 
   _data = 0;
-  _quadrature = new feassemble::Quadrature<topology::SubMesh>();
+  _quadrature = new feassemble::Quadrature<topology::Mesh>();
   CPPUNIT_ASSERT(_quadrature);
   _tractPerturbation = 0;
   _dbInitialTract = 0;
@@ -533,7 +532,7 @@
   _setFieldsJacobian(&mesh, &fault, &fields, &jacobian, _data->fieldIncrStick);
 
   const int spaceDim = _data->spaceDim;
-  topology::Field<topology::SubMesh> tractions(*fault._faultMesh);
+  topology::Field<topology::Mesh> tractions(*fault._faultMesh);
   tractions.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   tractions.allocate();
   tractions.zero();

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "pylith/faults/faultsfwd.hh" // forward declarations
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh
+#include "pylith/topology/topologyfwd.hh" // USES Mesh
 #include "pylith/feassemble/feassemblefwd.hh" // HOLDSA Quadrature
 #include "pylith/friction/frictionfwd.hh" // HOLDSA FrictionModel
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // HOLDSA SpatialDB
@@ -70,7 +70,7 @@
 protected:
 
   CohesiveDynData* _data; ///< Data for testing
-  feassemble::Quadrature<topology::SubMesh>* _quadrature; ///< Fault quad.
+  feassemble::Quadrature<topology::Mesh>* _quadrature; ///< Fault quad.
   TractPerturbation* _tractPerturbation; ///< Initial tractions.
   spatialdata::spatialdb::SpatialDB* _dbInitialTract; ///< Initial tractions.
   friction::FrictionModel* _friction; ///< Friction model

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,8 +20,8 @@
 
 #include "TestFaultCohesiveDynCases.hh" // Implementation of class methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
-#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<SubMesh>
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<Mesh>
 #include "pylith/feassemble/GeometryLine2D.hh" // USES GeometryLine2D
 #include "pylith/feassemble/GeometryTri3D.hh" // USES GeometryTri3D
 #include "pylith/feassemble/GeometryQuad3D.hh" // USES GeometryQuad3D

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -26,7 +26,6 @@
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
@@ -50,7 +49,7 @@
   PYLITH_METHOD_BEGIN;
 
   _data = 0;
-  _quadrature = new feassemble::Quadrature<topology::SubMesh>();
+  _quadrature = new feassemble::Quadrature<topology::Mesh>();
   CPPUNIT_ASSERT(_quadrature);
   _dbImpulseAmp = 0;
   _flipFault = false;

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "pylith/faults/faultsfwd.hh" // forward declarations
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh
+#include "pylith/topology/topologyfwd.hh" // USES Mesh
 #include "pylith/feassemble/feassemblefwd.hh" // HOLDSA Quadrature
 #include "pylith/friction/frictionfwd.hh" // HOLDSA FrictionModel
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // HOLDSA SpatialDB
@@ -67,7 +67,7 @@
 protected:
 
   CohesiveImpulsesData* _data; ///< Data for testing
-  feassemble::Quadrature<topology::SubMesh>* _quadrature; ///< Fault quad.
+  feassemble::Quadrature<topology::Mesh>* _quadrature; ///< Fault quad.
   spatialdata::spatialdb::SpatialDB* _dbImpulseAmp; ///< Initial tractions.
   bool _flipFault; ///< If true, flip fault orientation.
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulsesCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulsesCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulsesCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,8 +20,8 @@
 
 #include "TestFaultCohesiveImpulsesCases.hh" // Implementation of class methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
-#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<SubMesh>
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<Mesh>
 
 #include "pylith/feassemble/GeometryLine2D.hh" // USES GeometryLine2D
 #include "pylith/feassemble/GeometryTri3D.hh" // USES GeometryTri3D

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -28,7 +28,6 @@
 #include "pylith/faults/BruneSlipFn.hh" // USES BruneSlipFn
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
 #include "pylith/topology/VisitorSubMesh.hh" // USES SubMeshIS
@@ -54,7 +53,7 @@
   PYLITH_METHOD_BEGIN;
 
   _data = 0;
-  _quadrature = new feassemble::Quadrature<topology::SubMesh>();
+  _quadrature = new feassemble::Quadrature<topology::Mesh>();
   CPPUNIT_ASSERT(_quadrature);
   const int nsrcs = 1;
   _eqsrcs.resize(nsrcs);
@@ -603,7 +602,7 @@
   } // setup disp
 
   CPPUNIT_ASSERT(fault._faultMesh);
-  topology::Field<topology::SubMesh> tractions(*fault._faultMesh);
+  topology::Field<topology::Mesh> tractions(*fault._faultMesh);
   tractions.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   tractions.allocate();
   tractions.zero();

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "pylith/faults/faultsfwd.hh" // forward declarations
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh
+#include "pylith/topology/topologyfwd.hh" // USES Mesh
 #include "pylith/feassemble/feassemblefwd.hh" // HOLDSA Quadrature
 
 #include <vector> // HASA std::vector
@@ -62,7 +62,7 @@
 protected :
 
   CohesiveKinData* _data; ///< Data for testing
-  feassemble::Quadrature<topology::SubMesh>* _quadrature; ///< Fault quad.
+  feassemble::Quadrature<topology::Mesh>* _quadrature; ///< Fault quad.
   std::vector<EqKinSrc*> _eqsrcs; ///< Array of Kinematic earthquake sources.
   std::vector<BruneSlipFn*> _slipfns; ///< Slip time function.
   bool _flipFault; ///< If true, flip fault orientation.

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,8 +20,8 @@
 
 #include "TestFaultCohesiveKinCases.hh" // Implementation of class methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
-#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<SubMesh>
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<Mesh>
 
 #include "pylith/feassemble/GeometryPoint1D.hh" // USES GeometryPoint1D
 #include "pylith/feassemble/GeometryLine2D.hh" // USES GeometryLine2D

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -21,8 +21,8 @@
 #include "TestFaultCohesiveKinSrcsCases.hh" // Implementation of class methods
 
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
-#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<SubMesh>
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<Mesh>
 
 #include "pylith/feassemble/GeometryPoint1D.hh" // USES GeometryPoint1D
 #include "pylith/feassemble/GeometryLine2D.hh" // USES GeometryLine2D

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTet4.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTet4.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,8 +22,8 @@
 
 #include "data/CohesiveKinSrcsDataTet4.hh" // USES CohesiveKinDataTet4
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
-#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<SubMesh>
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<Mesh>
 #include "pylith/feassemble/GeometryTri3D.hh" // USES GeometryTri3D
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,11 +22,10 @@
 
 #include "pylith/faults/CohesiveTopology.hh" // USES CohesiveTopology
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 
 // ----------------------------------------------------------------------
 void
-pylith::faults::TestFaultMesh::createFaultMesh(topology::SubMesh* faultMesh,
+pylith::faults::TestFaultMesh::createFaultMesh(topology::Mesh* faultMesh,
 					       topology::Mesh* mesh,
 					       const char* faultLabel,
 					       const int faultId)

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -34,7 +34,7 @@
   } // faults
 } // pylith
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh
+#include "pylith/topology/topologyfwd.hh" // USES Mesh
 
 /// C++ object for constructing fault mesh.
 class pylith::faults::TestFaultMesh
@@ -51,7 +51,7 @@
    * @param faultId Material id for fault.
    */
   static
-  void createFaultMesh(topology::SubMesh* faultMesh,
+  void createFaultMesh(topology::Mesh* faultMesh,
 		       topology::Mesh* mesh,
 		       const char* faultLabel,
 		       const int faultId);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -25,7 +25,6 @@
 #include "TestFaultMesh.hh" // USES createFaultMesh()
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Stratum.hh" // USES Stratum
@@ -256,14 +255,14 @@
   const PylithScalar originTime = 5.064;
 
   topology::Mesh mesh;
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   LiuCosSlipFn slipfn;
   _initialize(&mesh, &faultMesh, &slipfn, originTime);
   
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::SubMesh> slip(faultMesh);
+  topology::Field<topology::Mesh> slip(faultMesh);
   slip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slip.allocate();
 
@@ -332,7 +331,7 @@
 // Initialize LiuCosSlipFn.
 void
 pylith::faults::TestLiuCosSlipFn::_initialize(topology::Mesh* mesh,
-					      topology::SubMesh* faultMesh,
+					      topology::Mesh* faultMesh,
 					      LiuCosSlipFn* slipfn,
 					      const PylithScalar originTime)
 { // _initialize
@@ -416,7 +415,7 @@
   mesh.coordsys(&cs);
 
   // Create fault mesh
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   TestFaultMesh::createFaultMesh(&faultMesh, &mesh, data.faultLabel, data.faultId);
 
   // Setup databases

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "pylith/faults/faultsfwd.hh" // USES LiuCosSlipFn
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh
+#include "pylith/topology/topologyfwd.hh" // USES Mesh
 
 /// Namespace for pylith package
 namespace pylith {
@@ -104,7 +104,7 @@
    */
   static
   void _initialize(topology::Mesh* mesh,
-		   topology::SubMesh* faultMesh,
+		   topology::Mesh* faultMesh,
 		   LiuCosSlipFn* slipfn,
 		   const PylithScalar originTime);
 
@@ -126,14 +126,6 @@
 		 const PylithScalar finalSlip,
 		 const PylithScalar riseTime);
 
-  /** Setup fault coordinates
-   *
-   * @param mesh Finite-element mesh of domain.
-   * @param faultMesh Finite-element mesh of fault.
-   */
-  static
-  void _setupFaultCoordinates(topology::Mesh *mesh, topology::SubMesh *faultMesh);
-
 }; // class TestLiuCosSlipFn
 
 #endif // pylith_faults_testliucosslipfn_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestSlipFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestSlipFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,11 +22,10 @@
 
 #include "pylith/faults/CohesiveTopology.hh" // USES CohesiveTopology
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 
 // ----------------------------------------------------------------------
 void
-pylith::faults::TestSlipFn::_createFaultMesh(topology::SubMesh* faultMesh,
+pylith::faults::TestSlipFn::_createFaultMesh(topology::Mesh* faultMesh,
 					     topology::Mesh* mesh,
 					     const char* faultLabel,
 					     const int faultId)

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestSlipFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestSlipFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,7 @@
 #if !defined(pylith_faults_testslipfn_hh)
 #define pylith_faults_testslipfn_hh
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh
+#include "pylith/topology/topologyfwd.hh" // USES Mesh
 
 #include <cppunit/extensions/HelperMacros.h>
 
@@ -54,7 +54,7 @@
    */
   static
   void
-  _createFaultMesh(topology::SubMesh* faultMesh,
+  _createFaultMesh(topology::Mesh* faultMesh,
 		   topology::Mesh* mesh,
 		   const char* faultLabel,
 		   const int faultId);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -25,7 +25,6 @@
 #include "TestFaultMesh.hh" // USES createFaultMesh()
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Stratum.hh" // USES Stratum
@@ -219,14 +218,14 @@
   const PylithScalar originTime = 5.064;
 
   topology::Mesh mesh;
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   StepSlipFn slipfn;
   _initialize(&mesh, &faultMesh, &slipfn, originTime);
   
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::SubMesh> slip(faultMesh);
+  topology::Field<topology::Mesh> slip(faultMesh);
   slip.newSection(topology::Field<topology::Mesh>::VERTICES_FIELD, spaceDim);
   slip.allocate();
 
@@ -258,7 +257,7 @@
 // Initialize StepSlipFn.
 void
 pylith::faults::TestStepSlipFn::_initialize(topology::Mesh* mesh,
-					    topology::SubMesh* faultMesh,
+					    topology::Mesh* faultMesh,
 					    StepSlipFn* slipfn,
 					    const PylithScalar originTime)
 { // _initialize
@@ -337,7 +336,7 @@
   mesh.coordsys(&cs);
 
   // Create fault mesh
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   TestFaultMesh::createFaultMesh(&faultMesh, &mesh, data.faultLabel, data.faultId);
 
   // Setup databases

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "pylith/faults/faultsfwd.hh" // USES StepSlipFn
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh
+#include "pylith/topology/topologyfwd.hh" // USES Mesh
 
 /// Namespace for pylith package
 namespace pylith {
@@ -96,7 +96,7 @@
    */
   static
   void _initialize(topology::Mesh* mesh,
-		   topology::SubMesh* faultMesh,
+		   topology::Mesh* faultMesh,
 		   StepSlipFn* slipfn,
 		   const PylithScalar originTime);
 
@@ -107,14 +107,6 @@
   static
   void _testInitialize(const _TestStepSlipFn::DataStruct& data);
 
-  /** Setup fault coordinates
-   *
-   * @param mesh Finite-element mesh of domain.
-   * @param faultMesh Finite-element mesh of fault.
-   */
-  static
-  void _setupFaultCoordinates(topology::Mesh *mesh, topology::SubMesh *faultMesh);
-
 }; // class TestStepSlipFn
 
 #endif // pylith_faults_teststepslipfn_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -25,7 +25,6 @@
 #include "TestFaultMesh.hh" // USES createFaultMesh()
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Stratum.hh" // USES Stratum
@@ -251,7 +250,7 @@
   const PylithScalar originTime = 5.064;
 
   topology::Mesh mesh;
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   TimeHistorySlipFn slipfn;
   spatialdata::spatialdb::TimeHistory th;
   _initialize(&mesh, &faultMesh, &slipfn, &th, originTime);
@@ -259,7 +258,7 @@
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::SubMesh> slip(faultMesh);
+  topology::Field<topology::Mesh> slip(faultMesh);
   slip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slip.allocate();
 
@@ -291,7 +290,7 @@
 // Initialize TimeHistorySlipFn.
 void
 pylith::faults::TestTimeHistorySlipFn::_initialize(topology::Mesh* mesh,
-						   topology::SubMesh* faultMesh,
+						   topology::Mesh* faultMesh,
 						   TimeHistorySlipFn* slipfn,
 						   spatialdata::spatialdb::TimeHistory* th,
 						   const PylithScalar originTime)
@@ -374,7 +373,7 @@
   mesh.coordsys(&cs);
 
   // Create fault mesh
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   TestFaultMesh::createFaultMesh(&faultMesh, &mesh, data.faultLabel, data.faultId);
 
   // Setup databases

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "pylith/faults/faultsfwd.hh" // USES TimeHistorySlipFn
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh
+#include "pylith/topology/topologyfwd.hh" // USES Mesh
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // USES TimeHistory
 
 /// Namespace for pylith package
@@ -102,7 +102,7 @@
    */
   static
   void _initialize(topology::Mesh* mesh,
-		   topology::SubMesh* faultMesh,
+		   topology::Mesh* faultMesh,
 		   TimeHistorySlipFn* slipfn,
 		   spatialdata::spatialdb::TimeHistory* th,
 		   const PylithScalar originTime);
@@ -125,14 +125,6 @@
 		 const PylithScalar finalSlip,
 		 const PylithScalar riseTime);
 
-  /** Setup fault coordinates
-   *
-   * @param mesh Finite-element mesh of domain.
-   * @param faultMesh Finite-element mesh of fault.
-   */
-  static
-  void _setupFaultCoordinates(topology::Mesh *mesh, topology::SubMesh *faultMesh);
-
 }; // class TestTimeHistorySlipFn
 
 #endif // pylith_faults_testtimehistoryslipfn_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,6 @@
 #include "pylith/faults/CohesiveTopology.hh" // USES CohesiveTopology
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Stratum.hh" // USES Stratum
@@ -138,7 +137,7 @@
   PYLITH_METHOD_BEGIN;
 
   topology::Mesh mesh;
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   TractPerturbation tract;
   _initialize(&mesh, &faultMesh, &tract);
   
@@ -160,7 +159,7 @@
   };
 
   topology::Mesh mesh;
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   TractPerturbation tract;
   _initialize(&mesh, &faultMesh, &tract);
   
@@ -209,11 +208,11 @@
   CPPUNIT_ASSERT_EQUAL(fiberDimE, spaceDim+spaceDim+spaceDim+1);
 
   topology::Mesh mesh;
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   TractPerturbation tract;
   _initialize(&mesh, &faultMesh, &tract);
   
-  const topology::Fields<topology::Field<topology::SubMesh> >* parameters = tract.parameterFields();CPPUNIT_ASSERT(parameters);
+  const topology::Fields<topology::Field<topology::Mesh> >* parameters = tract.parameterFields();CPPUNIT_ASSERT(parameters);
 
   PetscDM faultDMMesh = faultMesh.dmMesh();CPPUNIT_ASSERT(faultDMMesh);
   topology::Stratum verticesStratum(faultDMMesh, topology::Stratum::DEPTH, 0);
@@ -280,11 +279,11 @@
   const char* label = "traction_change_start_time";
 
   topology::Mesh mesh;
-  topology::SubMesh faultMesh;
+  topology::Mesh faultMesh;
   TractPerturbation tract;
   _initialize(&mesh, &faultMesh, &tract);
 
-  const topology::Field<topology::SubMesh>& field = tract.vertexField(label);
+  const topology::Field<topology::Mesh>& field = tract.vertexField(label);
 
   PetscDM faultDMMesh = faultMesh.dmMesh();CPPUNIT_ASSERT(faultDMMesh);
   topology::Stratum verticesStratum(faultDMMesh, topology::Stratum::DEPTH, 0);
@@ -311,7 +310,7 @@
 // Initialize TractPerturbation.
 void
 pylith::faults::TestTractPerturbation::_initialize(topology::Mesh* mesh,
-						   topology::SubMesh* faultMesh,
+						   topology::Mesh* faultMesh,
 						   TractPerturbation* tract)
 { // _initialize
   PYLITH_METHOD_BEGIN;
@@ -366,7 +365,7 @@
   dbChange.ioHandler(&ioChange);
 
   // Setup fault orientation
-  topology::Field<topology::SubMesh> faultOrientation(*faultMesh);
+  topology::Field<topology::Mesh> faultOrientation(*faultMesh);
   faultOrientation.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim*spaceDim);
   faultOrientation.allocate();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -91,17 +91,9 @@
    */
   static
   void _initialize(topology::Mesh* mesh,
-		   topology::SubMesh* faultMesh,
+		   topology::Mesh* faultMesh,
 		   TractPerturbation* tract);
 
-  /** Setup fault coordinates
-   *
-   * @param mesh Finite-element mesh of domain.
-   * @param faultMesh Finite-element mesh of fault.
-   */
-  static
-  void _setupFaultCoordinates(topology::Mesh *mesh, topology::SubMesh *faultMesh);
-
 }; // class TestTractPerturbation
 
 #endif // pylith_faults_testtractperturbation_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,6 @@
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -29,7 +29,6 @@
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -28,7 +28,6 @@
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -28,7 +28,6 @@
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -28,7 +28,6 @@
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,6 @@
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -26,7 +26,7 @@
 #include "pylith/friction/StaticFriction.hh" // USES StaticFriction
 #include "pylith/friction/SlipWeakening.hh" // USES SlipWeakening
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
@@ -176,7 +176,7 @@
   for(PetscInt v = vStart; v < vEnd; ++v) {
     for (int i = 0; i < numProperties; ++i, ++index) {
       const materials::Metadata::ParamDescription& property = metadata.getProperty(i);
-      topology::Field<topology::SubMesh>& prop = friction._fieldsPropsStateVars->get(property.name.c_str());
+      topology::Field<topology::Mesh>& prop = friction._fieldsPropsStateVars->get(property.name.c_str());
       topology::VecVisitorMesh propVisitor(prop);
       const PetscScalar* propArray = propVisitor.localArray();CPPUNIT_ASSERT(propArray);
 
@@ -213,7 +213,7 @@
   StaticFrictionData data;
   _initialize(&mesh, &fault, &friction, &data);
 
-  const topology::Field<topology::SubMesh>& frictionField = friction.getField("friction_coefficient");
+  const topology::Field<topology::Mesh>& frictionField = friction.getField("friction_coefficient");
   topology::VecVisitorMesh frictionVisitor(frictionField);
   PetscScalar *frictionArray = frictionVisitor.localArray();CPPUNIT_ASSERT(frictionArray);
 
@@ -402,7 +402,7 @@
     CPPUNIT_ASSERT(friction._fieldsPropsStateVars);
     for(PetscInt i = 0; i < numStateVars; ++i) {
       const materials::Metadata::ParamDescription& stateVar = metadata.getStateVar(i);
-      topology::Field<topology::SubMesh>& stateVarField = friction._fieldsPropsStateVars->get(stateVar.name.c_str());
+      topology::Field<topology::Mesh>& stateVarField = friction._fieldsPropsStateVars->get(stateVar.name.c_str());
       topology::VecVisitorMesh stateVarVisitor(stateVarField);
       PetscScalar *fieldsArray = stateVarVisitor.localArray();CPPUNIT_ASSERT(fieldsArray);
 
@@ -834,7 +834,7 @@
   topology::MeshOps::nondimensionalize(mesh, normalizer);
 
   // Setup quadrature
-  feassemble::Quadrature<topology::SubMesh> quadrature;
+  feassemble::Quadrature<topology::Mesh> quadrature;
   feassemble::GeometryLine2D geometry;
   quadrature.refGeometry(&geometry);
   const int cellDim = 1;

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestCellFilterAvg.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestCellFilterAvg.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestCellFilterAvg.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -33,7 +33,6 @@
 
 // ----------------------------------------------------------------------
 typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-typedef pylith::topology::Field<pylith::topology::SubMesh> SubMeshField;
 
 // ----------------------------------------------------------------------
 // Test constructor
@@ -198,10 +197,10 @@
   iohandler.filename(filename);
   iohandler.read(&mesh);
 
-  topology::SubMesh submesh(mesh, group);
+  topology::Mesh submesh(mesh, group);
 
   // Set cell field
-  SubMeshField field(submesh);
+  MeshField field(submesh);
   field.newSection(topology::FieldBase::FACES_FIELD, fiberDim);
   field.allocate();
   field.vectorFieldType(fieldType);
@@ -223,17 +222,17 @@
     } // for
   } // for
 
-  feassemble::Quadrature<topology::SubMesh> quadrature;
+  feassemble::Quadrature<topology::Mesh> quadrature;
   quadrature.initialize(basis, numQuadPts, numBasis,
 			basisDerivRef, numQuadPts, numBasis, cellDim,
 			quadPtsRef, numQuadPts, cellDim,
 			quadWts, numQuadPts,
 			spaceDim);
 
-  CellFilterAvg<topology::SubMesh, SubMeshField> filter;
+  CellFilterAvg<topology::Mesh, MeshField> filter;
   filter.quadrature(&quadrature);
 
-  const SubMeshField& fieldF = filter.filter(field);
+  const MeshField& fieldF = filter.filter(field);
 
   CPPUNIT_ASSERT_EQUAL(fieldTypeE, fieldF.vectorFieldType());
   CPPUNIT_ASSERT_EQUAL(label, std::string(fieldF.label()));

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -36,7 +36,7 @@
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::SubMesh> SubMeshField;
+typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -100,7 +100,7 @@
     fault.adjustTopology(_mesh, &firstFaultVertex, &firstLagrangeVertex, &firstFaultCell, _flipFault);
   } // if
 
-  delete _submesh; _submesh = new topology::SubMesh(*_mesh, _data->bcLabel);CPPUNIT_ASSERT(_submesh);
+  delete _submesh; _submesh = new topology::Mesh(*_mesh, _data->bcLabel);CPPUNIT_ASSERT(_submesh);
 
   PYLITH_METHOD_END;
 } // _initialize
@@ -108,7 +108,7 @@
 // ----------------------------------------------------------------------
 // Create vertex fields.
 void
-pylith::meshio::TestDataWriterBCMesh::_createVertexFields(topology::Fields<SubMeshField>* fields) const
+pylith::meshio::TestDataWriterBCMesh::_createVertexFields(topology::Fields<MeshField>* fields) const
 { // _createVertexFields
   PYLITH_METHOD_BEGIN;
 
@@ -128,7 +128,7 @@
     const char* name = _data->vertexFieldsInfo[i].name;
     const int fiberDim = _data->vertexFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    SubMeshField& field = fields->get(name);
+    MeshField& field = fields->get(name);
     field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
     field.allocate();
     field.vectorFieldType(_data->vertexFieldsInfo[i].field_type);
@@ -152,7 +152,7 @@
 // ----------------------------------------------------------------------
 // Create cell fields.
 void
-pylith::meshio::TestDataWriterBCMesh::_createCellFields(topology::Fields<SubMeshField>* fields) const
+pylith::meshio::TestDataWriterBCMesh::_createCellFields(topology::Fields<MeshField>* fields) const
 { // _createCellFields
   PYLITH_METHOD_BEGIN;
 
@@ -174,7 +174,7 @@
     const char* name = _data->cellFieldsInfo[i].name;
     const int fiberDim = _data->cellFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    SubMeshField& field = fields->get(name);
+    MeshField& field = fields->get(name);
     field.newSection(topology::FieldBase::CELLS_FIELD, fiberDim, height);
     field.allocate();
     field.vectorFieldType(_data->cellFieldsInfo[i].field_type);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,7 @@
 #if !defined(pylith_meshio_testdatawriterbcmesh_hh)
 #define pylith_meshio_testdatawriterbcmesh_hh
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, Field
 
 /// Namespace for pylith package
 namespace pylith {
@@ -59,21 +59,21 @@
    * @param fields Vertex fields.
    */
   void
-  _createVertexFields(topology::Fields<topology::Field<topology::SubMesh> >* fields) const;
+  _createVertexFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
 
   /** Create cell fields.
    *
    * @param fields Cell fields.
    */
   void
-  _createCellFields(topology::Fields<topology::Field<topology::SubMesh> >* fields) const;
+  _createCellFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 
   DataWriterData* _data; ///< Data for testing
   topology::Mesh* _mesh; ///< Mesh for domain
-  topology::SubMesh* _submesh; ///< Mesh for subdomain.
+  topology::Mesh* _submesh; ///< Mesh for subdomain.
   bool _flipFault; ///< If true, flip fault orientation.
 
 }; // class TestDataWriterBCMesh

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -39,7 +39,7 @@
 #include <map> // USES std::map
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::SubMesh> MeshField;
+typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -50,7 +50,8 @@
 
   _data = 0;
   _mesh = new topology::Mesh();
-  _faultMesh = new topology::SubMesh();
+  const bool isSubMesh = true;
+  _faultMesh = new topology::Mesh(isSubMesh);
   _flipFault = false;
 
   PYLITH_METHOD_END;

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,7 @@
 #if !defined(pylith_meshio_testdatawriterfaultmesh_hh)
 #define pylith_meshio_testdatawriterfaultmesh_hh
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, Field
 
 /// Namespace for pylith package
 namespace pylith {
@@ -59,21 +59,21 @@
    * @param fields Vertex fields.
    */
   void
-  _createVertexFields(topology::Fields<topology::Field<topology::SubMesh> >* fields) const;
+  _createVertexFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
 
   /** Create cell fields.
    *
    * @param fields Cell fields.
    */
   void
-  _createCellFields(topology::Fields<topology::Field<topology::SubMesh> >* fields) const;
+  _createCellFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 
   DataWriterData* _data; ///< Data for testing
   topology::Mesh* _mesh; ///< Mesh for domain
-  topology::SubMesh* _faultMesh; ///< Fault mesh.
+  topology::Mesh* _faultMesh; ///< Fault mesh.
   bool _flipFault; ///< If true, flip fault orientation.
 
 }; // class TestDataWriterFaultMesh

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -33,7 +33,7 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5BCMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::SubMesh> SubMeshField;
+typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -66,7 +66,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
 
@@ -83,7 +83,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -117,9 +117,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
-  topology::Fields<SubMeshField> vertexFields(*_submesh);
+  topology::Fields<MeshField> vertexFields(*_submesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -140,7 +140,7 @@
     writer.openTimeStep(t, *_submesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    SubMeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_submesh);
   } // for
   writer.closeTimeStep();
@@ -161,9 +161,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
-  topology::Fields<SubMeshField> cellFields(*_submesh);
+  topology::Fields<MeshField> cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -178,7 +178,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -187,7 +187,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include "TestDataWriterHDF5.hh"
 #include "TestDataWriterBCMesh.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, Field
 
 #include <cppunit/extensions/HelperMacros.h>
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMeshCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMeshCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,21 +20,12 @@
 
 #include "TestDataWriterHDF5BCMeshCases.hh" // Implementation of class methods
 
-#include "data/DataWriterHDF5DataBCMeshTri3.hh"
-#include "data/DataWriterHDF5DataBCMeshQuad4.hh"
-#include "data/DataWriterHDF5DataBCMeshTet4.hh"
-#include "data/DataWriterHDF5DataBCMeshHex8.hh"
-
 #include "pylith/utils/error.h" // USES PYLITH_METHOD_BEGIN/END
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataBCMeshTri3.hh"
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5BCMeshTri3 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5BCMeshQuad4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5BCMeshTet4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5BCMeshHex8 );
 
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5BCMeshTri3::setUp(void)
@@ -51,6 +42,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataBCMeshQuad4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5BCMeshQuad4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5BCMeshQuad4::setUp(void)
@@ -67,6 +61,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataBCMeshTet4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5BCMeshTet4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5BCMeshTet4::setUp(void)
@@ -83,6 +80,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataBCMeshHex8.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5BCMeshHex8 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5BCMeshHex8::setUp(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -33,7 +33,7 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtBCMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::SubMesh> SubMeshField;
+typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -66,7 +66,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5Ext<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -81,7 +81,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -115,9 +115,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
-  topology::Fields<SubMeshField> vertexFields(*_submesh);
+  topology::Fields<MeshField> vertexFields(*_submesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -138,7 +138,7 @@
     writer.openTimeStep(t, *_submesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    SubMeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_submesh);
   } // for
   writer.closeTimeStep();
@@ -159,9 +159,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
-  topology::Fields<SubMeshField> cellFields(*_submesh);
+  topology::Fields<MeshField> cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -176,7 +176,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -185,7 +185,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include "TestDataWriterHDF5.hh"
 #include "TestDataWriterBCMesh.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, Field
 
 #include <cppunit/extensions/HelperMacros.h>
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMeshCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMeshCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,21 +20,13 @@
 
 #include "TestDataWriterHDF5ExtBCMeshCases.hh" // Implementation of class methods
 
-#include "data/DataWriterHDF5DataBCMeshTri3.hh"
-#include "data/DataWriterHDF5DataBCMeshQuad4.hh"
-#include "data/DataWriterHDF5DataBCMeshTet4.hh"
-#include "data/DataWriterHDF5DataBCMeshHex8.hh"
-
 #include "pylith/utils/error.h" // USES PYLITH_METHOD_BEGIN/END
 
+
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataBCMeshTri3.hh"
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtBCMeshTri3 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtBCMeshQuad4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtBCMeshTet4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtBCMeshHex8 );
 
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtBCMeshTri3::setUp(void)
@@ -51,6 +43,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataBCMeshQuad4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtBCMeshQuad4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtBCMeshQuad4::setUp(void)
@@ -67,6 +62,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataBCMeshTet4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtBCMeshTet4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtBCMeshTet4::setUp(void)
@@ -83,6 +81,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataBCMeshHex8.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtBCMeshHex8 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtBCMeshHex8::setUp(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -36,7 +36,7 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtFaultMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::SubMesh> MeshField;
+typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -69,7 +69,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5Ext<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -84,7 +84,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -118,7 +118,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
   topology::Fields<MeshField> vertexFields(*_faultMesh);
   _createVertexFields(&vertexFields);
@@ -162,7 +162,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
   topology::Fields<MeshField> cellFields(*_faultMesh);
   _createCellFields(&cellFields);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include "TestDataWriterHDF5.hh"
 #include "TestDataWriterFaultMesh.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, sField
 
 #include <cppunit/extensions/HelperMacros.h>
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMeshCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMeshCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,20 +20,10 @@
 
 #include "TestDataWriterHDF5ExtFaultMeshCases.hh" // Implementation of class methods
 
-#include "data/DataWriterHDF5DataFaultMeshTri3.hh"
-#include "data/DataWriterHDF5DataFaultMeshQuad4.hh"
-#include "data/DataWriterHDF5DataFaultMeshTet4.hh"
-#include "data/DataWriterHDF5DataFaultMeshHex8.hh"
-
-
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataFaultMeshTri3.hh"
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtFaultMeshTri3 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtFaultMeshQuad4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtFaultMeshTet4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtFaultMeshHex8 );
 
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtFaultMeshTri3::setUp(void)
@@ -47,6 +37,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataFaultMeshQuad4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtFaultMeshQuad4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtFaultMeshQuad4::setUp(void)
@@ -60,6 +53,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataFaultMeshTet4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtFaultMeshTet4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtFaultMeshTet4::setUp(void)
@@ -73,6 +69,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataFaultMeshHex8.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtFaultMeshHex8 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtFaultMeshHex8::setUp(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -34,7 +34,6 @@
 
 // ----------------------------------------------------------------------
 typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-typedef pylith::topology::Field<pylith::topology::SubMesh> SubMeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -67,7 +66,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5Ext<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -82,7 +81,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -113,7 +112,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
   topology::Fields<MeshField> vertexFields(*_mesh);
   _createVertexFields(&vertexFields);
@@ -157,9 +156,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
 
-  topology::Fields<SubMeshField> cellFields(*_submesh);
+  topology::Fields<MeshField> cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -174,7 +173,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -183,7 +182,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include "TestDataWriterHDF5.hh"
 #include "TestDataWriterSubMesh.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, Field
 
 #include <cppunit/extensions/HelperMacros.h>
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMeshCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMeshCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,23 +20,12 @@
 
 #include "TestDataWriterHDF5ExtSubMeshCases.hh" // Implementation of class methods
 
-#include "data/DataWriterHDF5DataSubMeshLine2.hh"
-#include "data/DataWriterHDF5DataSubMeshTri3.hh"
-#include "data/DataWriterHDF5DataSubMeshQuad4.hh"
-#include "data/DataWriterHDF5DataSubMeshTet4.hh"
-#include "data/DataWriterHDF5DataSubMeshHex8.hh"
-
 #include "pylith/utils/error.h" // USES PYLITH_METHOD_BEGIN/END
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataSubMeshLine2.hh"
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtSubMeshLine2 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtSubMeshTri3 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtSubMeshQuad4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtSubMeshTet4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtSubMeshHex8 );
 
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtSubMeshLine2::setUp(void)
@@ -53,6 +42,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataSubMeshTri3.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtSubMeshTri3 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtSubMeshTri3::setUp(void)
@@ -69,6 +61,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataSubMeshQuad4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtSubMeshQuad4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtSubMeshQuad4::setUp(void)
@@ -85,6 +80,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataSubMeshTet4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtSubMeshTet4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtSubMeshTet4::setUp(void)
@@ -101,6 +99,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataSubMeshHex8.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtSubMeshHex8 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtSubMeshHex8::setUp(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -36,7 +36,7 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5FaultMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::SubMesh> MeshField;
+typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -69,7 +69,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
 
@@ -86,7 +86,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -120,7 +120,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
   topology::Fields<MeshField> vertexFields(*_faultMesh);
   _createVertexFields(&vertexFields);
@@ -164,7 +164,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
   topology::Fields<MeshField> cellFields(*_faultMesh);
   _createCellFields(&cellFields);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include "TestDataWriterHDF5.hh"
 #include "TestDataWriterFaultMesh.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, Field
 
 #include <cppunit/extensions/HelperMacros.h>
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMeshCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMeshCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,21 +20,13 @@
 
 #include "TestDataWriterHDF5FaultMeshCases.hh" // Implementation of class methods
 
-#include "data/DataWriterHDF5DataFaultMeshTri3.hh"
-#include "data/DataWriterHDF5DataFaultMeshQuad4.hh"
-#include "data/DataWriterHDF5DataFaultMeshTet4.hh"
-#include "data/DataWriterHDF5DataFaultMeshHex8.hh"
-
 #include "pylith/utils/error.h" // USES PYLITH_METHOD_BEGIN/END
 
+
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataFaultMeshTri3.hh"
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5FaultMeshTri3 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5FaultMeshQuad4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5FaultMeshTet4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5FaultMeshHex8 );
 
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5FaultMeshTri3::setUp(void)
@@ -52,6 +44,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataFaultMeshQuad4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5FaultMeshQuad4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5FaultMeshQuad4::setUp(void)
@@ -69,6 +64,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataFaultMeshTet4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5FaultMeshTet4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5FaultMeshTet4::setUp(void)
@@ -86,6 +84,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataFaultMeshHex8.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5FaultMeshHex8 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5FaultMeshHex8::setUp(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -34,7 +34,6 @@
 
 // ----------------------------------------------------------------------
 typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-typedef pylith::topology::Field<pylith::topology::SubMesh> SubMeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -67,7 +66,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
 
@@ -84,7 +83,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -115,7 +114,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::SubMesh, MeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
   topology::Fields<MeshField> vertexFields(*_mesh);
   _createVertexFields(&vertexFields);
@@ -159,9 +158,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::SubMesh, SubMeshField> writer;
+  DataWriterHDF5<topology::Mesh, MeshField> writer;
 
-  topology::Fields<SubMeshField> cellFields(*_submesh);
+  topology::Fields<MeshField> cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -176,7 +175,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -185,7 +184,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include "TestDataWriterHDF5.hh"
 #include "TestDataWriterSubMesh.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, Field
 
 #include <cppunit/extensions/HelperMacros.h>
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMeshCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMeshCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,23 +20,13 @@
 
 #include "TestDataWriterHDF5SubMeshCases.hh" // Implementation of class methods
 
-#include "data/DataWriterHDF5DataSubMeshLine2.hh"
-#include "data/DataWriterHDF5DataSubMeshTri3.hh"
-#include "data/DataWriterHDF5DataSubMeshQuad4.hh"
-#include "data/DataWriterHDF5DataSubMeshTet4.hh"
-#include "data/DataWriterHDF5DataSubMeshHex8.hh"
-
 #include "pylith/utils/error.h" // USES PYLITH_METHOD_BEGIN/END
 
+
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataSubMeshLine2.hh"
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5SubMeshLine2 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5SubMeshTri3 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5SubMeshQuad4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5SubMeshTet4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5SubMeshHex8 );
 
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5SubMeshLine2::setUp(void)
@@ -53,6 +43,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataSubMeshTri3.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5SubMeshTri3 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5SubMeshTri3::setUp(void)
@@ -69,6 +62,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataSubMeshQuad4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5SubMeshQuad4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5SubMeshQuad4::setUp(void)
@@ -85,6 +81,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataSubMeshTet4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5SubMeshTet4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5SubMeshTet4::setUp(void)
@@ -101,6 +100,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterHDF5DataSubMeshHex8.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5SubMeshHex8 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5SubMeshHex8::setUp(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -37,7 +37,6 @@
 
 // ----------------------------------------------------------------------
 typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-typedef pylith::topology::Field<pylith::topology::SubMesh> SubMeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -102,7 +101,7 @@
   } // if
 
   CPPUNIT_ASSERT(_data->bcLabel);
-  delete _submesh; _submesh = new topology::SubMesh(*_mesh, _data->bcLabel);CPPUNIT_ASSERT(_submesh);
+  delete _submesh; _submesh = new topology::Mesh(*_mesh, _data->bcLabel);CPPUNIT_ASSERT(_submesh);
 
   PYLITH_METHOD_END;
 } // _initialize
@@ -154,7 +153,7 @@
 // ----------------------------------------------------------------------
 // Create cell fields.
 void
-pylith::meshio::TestDataWriterSubMesh::_createCellFields(topology::Fields<SubMeshField>* fields) const
+pylith::meshio::TestDataWriterSubMesh::_createCellFields(topology::Fields<MeshField>* fields) const
 { // _createCellFields
   PYLITH_METHOD_BEGIN;
 
@@ -175,7 +174,7 @@
     const char* name = _data->cellFieldsInfo[i].name;
     const int fiberDim = _data->cellFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    SubMeshField& field = fields->get(name);
+    MeshField& field = fields->get(name);
     field.newSection(topology::FieldBase::CELLS_FIELD, fiberDim, 1);
     field.allocate();
     field.vectorFieldType(_data->cellFieldsInfo[i].field_type);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -27,7 +27,7 @@
 #if !defined(pylith_meshio_testdatawritersubmesh_hh)
 #define pylith_meshio_testdatawritersubmesh_hh
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, Field
 
 /// Namespace for pylith package
 namespace pylith {
@@ -66,14 +66,14 @@
    * @param fields Cell fields.
    */
   void
-  _createCellFields(topology::Fields<topology::Field<topology::SubMesh> >* fields) const;
+  _createCellFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 
   DataWriterData* _data; ///< Data for testing
   topology::Mesh* _mesh; ///< Mesh for domain
-  topology::SubMesh* _submesh; ///< Mesh for subdomain.
+  topology::Mesh* _submesh; ///< Mesh for subdomain.
   bool _flipFault; ///< If true, flip fault orientation.
 
 }; // class TestDataWriterSubMesh

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -33,7 +33,7 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKBCMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::SubMesh> SubMeshField;
+typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -66,7 +66,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::SubMesh, SubMeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
   CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
@@ -85,7 +85,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::SubMesh, SubMeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
   writer.filename(_data->timestepFilename);
   writer.timeFormat(_data->timeFormat);
@@ -129,9 +129,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::SubMesh, SubMeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
-  topology::Fields<SubMeshField> vertexFields(*_submesh);
+  topology::Fields<MeshField> vertexFields(*_submesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -151,7 +151,7 @@
     writer.openTimeStep(t, *_submesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    SubMeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_submesh);
     CPPUNIT_ASSERT(writer._wroteVertexHeader);
     CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
@@ -176,9 +176,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::SubMesh, SubMeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
-  topology::Fields<SubMeshField> cellFields(*_submesh);
+  topology::Fields<MeshField> cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -192,7 +192,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
       CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
       CPPUNIT_ASSERT(writer._wroteCellHeader);
@@ -203,7 +203,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
       CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
       CPPUNIT_ASSERT(writer._wroteCellHeader);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include "TestDataWriterVTK.hh"
 #include "TestDataWriterBCMesh.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, Field
 
 #include <cppunit/extensions/HelperMacros.h>
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMeshCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMeshCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,20 +22,11 @@
 
 #include "pylith/utils/error.h" // USES PYLITH_METHOD_BEGIN/END
 
-#include "data/DataWriterVTKDataBCMeshTri3.hh"
-#include "data/DataWriterVTKDataBCMeshQuad4.hh"
-#include "data/DataWriterVTKDataBCMeshTet4.hh"
-#include "data/DataWriterVTKDataBCMeshHex8.hh"
 
-
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataBCMeshTri3.hh"
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKBCMeshTri3 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKBCMeshQuad4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKBCMeshTet4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKBCMeshHex8 );
 
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKBCMeshTri3::setUp(void)
@@ -52,6 +43,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataBCMeshQuad4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKBCMeshQuad4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKBCMeshQuad4::setUp(void)
@@ -68,6 +62,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataBCMeshTet4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKBCMeshTet4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKBCMeshTet4::setUp(void)
@@ -84,6 +81,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataBCMeshHex8.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKBCMeshHex8 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKBCMeshHex8::setUp(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -36,7 +36,7 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKFaultMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::SubMesh> MeshField;
+typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -69,7 +69,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::SubMesh, MeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
   CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
@@ -88,7 +88,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::SubMesh, MeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
   writer.filename(_data->timestepFilename);
   writer.timeFormat(_data->timeFormat);
@@ -132,7 +132,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::SubMesh, MeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
   topology::Fields<MeshField> vertexFields(*_faultMesh);
   _createVertexFields(&vertexFields);
@@ -179,7 +179,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::SubMesh, MeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
   topology::Fields<MeshField> cellFields(*_faultMesh);
   _createCellFields(&cellFields);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include "TestDataWriterVTK.hh"
 #include "TestDataWriterFaultMesh.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, Field
 
 #include <cppunit/extensions/HelperMacros.h>
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMeshCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMeshCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,20 +22,10 @@
 
 #include "pylith/utils/error.h" // USES PYLITH_METHOD_BEGIN/END
 
-#include "data/DataWriterVTKDataFaultMeshTri3.hh"
-#include "data/DataWriterVTKDataFaultMeshQuad4.hh"
-#include "data/DataWriterVTKDataFaultMeshTet4.hh"
-#include "data/DataWriterVTKDataFaultMeshHex8.hh"
-
-
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataFaultMeshTri3.hh"
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKFaultMeshTri3 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKFaultMeshQuad4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKFaultMeshTet4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKFaultMeshHex8 );
 
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKFaultMeshTri3::setUp(void)
@@ -53,6 +43,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataFaultMeshQuad4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKFaultMeshQuad4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKFaultMeshQuad4::setUp(void)
@@ -70,6 +63,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataFaultMeshTet4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKFaultMeshTet4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKFaultMeshTet4::setUp(void)
@@ -87,6 +83,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataFaultMeshHex8.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKFaultMeshHex8 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKFaultMeshHex8::setUp(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -34,7 +34,6 @@
 
 // ----------------------------------------------------------------------
 typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-typedef pylith::topology::Field<pylith::topology::SubMesh> SubMeshField;
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -67,7 +66,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::SubMesh, MeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
   CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
@@ -86,7 +85,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::SubMesh, MeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
   writer.filename(_data->timestepFilename);
   writer.timeFormat(_data->timeFormat);
@@ -130,7 +129,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::SubMesh, MeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
   topology::Fields<MeshField> vertexFields(*_mesh);
   _createVertexFields(&vertexFields);
@@ -177,9 +176,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::SubMesh, SubMeshField> writer;
+  DataWriterVTK<topology::Mesh, MeshField> writer;
 
-  topology::Fields<SubMeshField> cellFields(*_submesh);
+  topology::Fields<MeshField> cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -193,7 +192,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
       CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
       CPPUNIT_ASSERT(writer._wroteCellHeader);
@@ -204,7 +203,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
       CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
       CPPUNIT_ASSERT(writer._wroteCellHeader);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -30,7 +30,7 @@
 #include "TestDataWriterVTK.hh"
 #include "TestDataWriterSubMesh.hh"
 
-#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh, Field
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, Field
 
 #include <cppunit/extensions/HelperMacros.h>
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMeshCases.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMeshCases.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,22 +22,11 @@
 
 #include "pylith/utils/error.h" // USES PYLITH_METHOD_BEGIN/END
 
-#include "data/DataWriterVTKDataSubMeshLine2.hh"
-#include "data/DataWriterVTKDataSubMeshTri3.hh"
-#include "data/DataWriterVTKDataSubMeshQuad4.hh"
-#include "data/DataWriterVTKDataSubMeshTet4.hh"
-#include "data/DataWriterVTKDataSubMeshHex8.hh"
 
-
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataSubMeshLine2.hh"
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKSubMeshLine2 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKSubMeshTri3 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKSubMeshQuad4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKSubMeshTet4 );
-CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKSubMeshHex8 );
 
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKSubMeshLine2::setUp(void)
@@ -54,6 +43,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataSubMeshTri3.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKSubMeshTri3 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKSubMeshTri3::setUp(void)
@@ -70,6 +62,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataSubMeshQuad4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKSubMeshQuad4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKSubMeshQuad4::setUp(void)
@@ -86,6 +81,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataSubMeshTet4.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKSubMeshTet4 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKSubMeshTet4::setUp(void)
@@ -102,6 +100,9 @@
 
 
 // ----------------------------------------------------------------------
+#include "data/DataWriterVTKDataSubMeshHex8.hh"
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKSubMeshHex8 );
+
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKSubMeshHex8::setUp(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputSolnSubset.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputSolnSubset.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputSolnSubset.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,7 +23,6 @@
 #include "pylith/meshio/OutputSolnSubset.hh"
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -21,7 +21,7 @@
 #include "TestFieldSubMesh.hh" // Implementation of class methods
 
 #include "pylith/topology/Field.hh" // USES Field
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::createDMMesh()
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
@@ -71,10 +71,11 @@
   PYLITH_METHOD_BEGIN;
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
-  Field<SubMesh> field(submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
+  Field<Mesh> field(submesh);
+
   PYLITH_METHOD_END;
 } // testConstructor
 
@@ -86,9 +87,9 @@
   PYLITH_METHOD_BEGIN;
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
-  Field<SubMesh> field(submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
+  Field<Mesh> field(submesh);
 
   PetscSection section = field.petscSection();
   CPPUNIT_ASSERT(section);
@@ -104,11 +105,11 @@
   PYLITH_METHOD_BEGIN;
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
-  Field<SubMesh> field(submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
+  Field<Mesh> field(submesh);
 
-  const SubMesh& mesh2 = field.mesh();
+  const Mesh& mesh2 = field.mesh();
   CPPUNIT_ASSERT_EQUAL(_TestFieldSubMesh::cellDim-1, mesh2.dimension());  
 
   PYLITH_METHOD_END;
@@ -122,9 +123,9 @@
   PYLITH_METHOD_BEGIN;
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
-  Field<SubMesh> field(submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
+  Field<Mesh> field(submesh);
 
   CPPUNIT_ASSERT_EQUAL(_TestFieldSubMesh::cellDim, field.spaceDim());
 
@@ -139,9 +140,9 @@
   PYLITH_METHOD_BEGIN;
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
-  Field<SubMesh> field(submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
+  Field<Mesh> field(submesh);
 
   field.newSection();
   PetscSection section = field.petscSection();
@@ -160,10 +161,10 @@
   const int fiberDim = 2;
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<SubMesh> field(submesh);
+  Field<Mesh> field(submesh);
   field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
   field.allocate();
 
@@ -190,11 +191,11 @@
   const int fiberDim = 2;
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<SubMesh> field(submesh);
-  field.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+  Field<Mesh> field(submesh);
+  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -220,16 +221,16 @@
   const int fiberDim = 3;
     
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
   // Create field with atlas to use to create new field
-  Field<SubMesh> fieldSrc(submesh);
-  fieldSrc.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+  Field<Mesh> fieldSrc(submesh);
+  fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
   fieldSrc.allocate();
 
   const int fiberDim2 = 4;
-  Field<SubMesh> field(submesh);
+  Field<Mesh> field(submesh);
   field.newSection(fieldSrc, fiberDim2);
   field.allocate();
 
@@ -263,8 +264,8 @@
   };
     
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
   PetscErrorCode err = 0;
@@ -272,9 +273,9 @@
   err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);PYLITH_CHECK_ERROR(err);
 
   // Create field with atlas to use to create new field
-  Field<SubMesh> fieldSrc(submesh);
+  Field<Mesh> fieldSrc(submesh);
   { // Setup source field
-    fieldSrc.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+    fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
     PetscSection section = fieldSrc.petscSection();CPPUNIT_ASSERT(section);
     int iV=0;
     for(PetscInt v = vStart; v < vEnd; ++v) {
@@ -290,7 +291,7 @@
     fieldSrc.zero();
   } // Setup source field
 
-  Field<SubMesh> field(submesh);
+  Field<Mesh> field(submesh);
   field.cloneSection(fieldSrc);
   PetscSection section = field.petscSection();CPPUNIT_ASSERT(section);
   PetscVec vec = field.localVector();CPPUNIT_ASSERT(vec);
@@ -315,18 +316,18 @@
   PYLITH_METHOD_BEGIN;
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
-  Field<SubMesh> field(submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
+  Field<Mesh> field(submesh);
 
   field.scale(2.0);
-  field.vectorFieldType(Field<SubMesh>::TENSOR);
+  field.vectorFieldType(Field<Mesh>::TENSOR);
   field.addDimensionOkay(true);
   
   field.clear();
 
   CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), field._metadata["default"].scale);
-  CPPUNIT_ASSERT_EQUAL(Field<SubMesh>::OTHER, field._metadata["default"].vectorFieldType);
+  CPPUNIT_ASSERT_EQUAL(Field<Mesh>::OTHER, field._metadata["default"].vectorFieldType);
   CPPUNIT_ASSERT_EQUAL(false, field._metadata["default"].dimsOkay);
 
   PYLITH_METHOD_END;
@@ -348,11 +349,11 @@
   };
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<SubMesh> field(submesh);
-  field.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+  Field<Mesh> field(submesh);
+  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -399,11 +400,11 @@
   };
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<SubMesh> field(submesh);
-  field.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+  Field<Mesh> field(submesh);
+  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -452,17 +453,17 @@
   };
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
   Stratum depthStratum(dmMesh, Stratum::DEPTH, 0);
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<SubMesh> field(submesh);
+  Field<Mesh> field(submesh);
   { // setup field
-    field.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+    field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
     field.allocate();
     VecVisitorMesh fieldVisitor(field);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -505,17 +506,17 @@
   };
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
   Stratum depthStratum(dmMesh, Stratum::DEPTH, 0);
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<SubMesh> fieldSrc(submesh);
+  Field<Mesh> fieldSrc(submesh);
   { // setup source field
-    fieldSrc.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+    fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
     fieldSrc.allocate();
     VecVisitorMesh fieldVisitor(fieldSrc);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -527,8 +528,8 @@
     } // for
   } // setup source field
 
-  Field<SubMesh> field(submesh);
-  field.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+  Field<Mesh> field(submesh);
+  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
   field.allocate();
   field.copy(fieldSrc);
 
@@ -566,17 +567,17 @@
   };
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
   Stratum depthStratum(dmMesh, Stratum::DEPTH, 0);
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<SubMesh> fieldSrc(submesh);
+  Field<Mesh> fieldSrc(submesh);
   { // setup source field
-    fieldSrc.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+    fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
     fieldSrc.allocate();
     VecVisitorMesh fieldVisitor(fieldSrc);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -588,9 +589,9 @@
     } // for
   } // setup source field
 
-  Field<SubMesh> field(submesh);
+  Field<Mesh> field(submesh);
   { // setup destination field
-    field.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+    field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
     field.allocate();
     VecVisitorMesh fieldVisitor(field);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -633,17 +634,17 @@
   };
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
   Stratum depthStratum(dmMesh, Stratum::DEPTH, 0);
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<SubMesh> field(submesh);
+  Field<Mesh> field(submesh);
   { // setup field
-    field.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+    field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
     field.allocate();
     VecVisitorMesh fieldVisitor(field);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -688,16 +689,16 @@
   };
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
   Stratum depthStratum(dmMesh, Stratum::DEPTH, 0);
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<SubMesh> field(submesh);
-  field.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+  Field<Mesh> field(submesh);
+  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
   field.allocate();
   VecVisitorMesh fieldVisitor(field);
   PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -722,10 +723,10 @@
   const int fiberDim = 3;
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<SubMesh> field(submesh);
+  Field<Mesh> field(submesh);
   field.newSection(FieldBase::VERTICES_FIELD, fiberDim);
   field.allocate();
 
@@ -738,7 +739,7 @@
   const PetscInt vEnd = depthStratum.end();
 
   CPPUNIT_ASSERT_EQUAL(size_t(1), field._scatters.size());
-  const Field<SubMesh>::ScatterInfo& sinfo = field._getScatter("");
+  const Field<Mesh>::ScatterInfo& sinfo = field._getScatter("");
   CPPUNIT_ASSERT(sinfo.dm);
   CPPUNIT_ASSERT(sinfo.vector);
 
@@ -754,19 +755,19 @@
   // Create another scatter.
   field.createScatter(submesh, "B");
   CPPUNIT_ASSERT_EQUAL(size_t(2), field._scatters.size());
-  const Field<SubMesh>::ScatterInfo& sinfoB = field._getScatter("B");
+  const Field<Mesh>::ScatterInfo& sinfoB = field._getScatter("B");
   CPPUNIT_ASSERT(sinfoB.dm);
   CPPUNIT_ASSERT(sinfoB.vector);
 
-  Field<SubMesh> field2(submesh);
+  Field<Mesh> field2(submesh);
   field2.cloneSection(field);
   CPPUNIT_ASSERT_EQUAL(size_t(2), field2._scatters.size());
 
-  const Field<SubMesh>::ScatterInfo& sinfo2 = field2._getScatter("");
+  const Field<Mesh>::ScatterInfo& sinfo2 = field2._getScatter("");
   CPPUNIT_ASSERT(sinfo2.dm);
   CPPUNIT_ASSERT(sinfo2.vector);
 
-  const Field<SubMesh>::ScatterInfo& sinfo2B = field2._getScatter("B");
+  const Field<Mesh>::ScatterInfo& sinfo2B = field2._getScatter("B");
   CPPUNIT_ASSERT(sinfo2B.dm);
   CPPUNIT_ASSERT(sinfo2B.vector);
 
@@ -783,10 +784,10 @@
   const int fiberDim = 3;
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<SubMesh> field(submesh);
+  Field<Mesh> field(submesh);
   field.newSection(FieldBase::VERTICES_FIELD, fiberDim);
   field.allocate();
   
@@ -799,7 +800,7 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  const Field<SubMesh>::ScatterInfo& sinfo = field._getScatter("");
+  const Field<Mesh>::ScatterInfo& sinfo = field._getScatter("");
   CPPUNIT_ASSERT(sinfo.dm);
   CPPUNIT_ASSERT(sinfo.vector);
 
@@ -815,19 +816,19 @@
   // Create another scatter.
   field.createScatterWithBC(submesh, "B");
   CPPUNIT_ASSERT_EQUAL(size_t(2), field._scatters.size());
-  const Field<SubMesh>::ScatterInfo& sinfoB = field._getScatter("B");
+  const Field<Mesh>::ScatterInfo& sinfoB = field._getScatter("B");
   CPPUNIT_ASSERT(sinfoB.dm);
   CPPUNIT_ASSERT(sinfoB.vector);
 
-  Field<SubMesh> field2(submesh);
+  Field<Mesh> field2(submesh);
   field2.cloneSection(field);
   CPPUNIT_ASSERT_EQUAL(size_t(2), field2._scatters.size());
 
-  const Field<SubMesh>::ScatterInfo& sinfo2 = field2._getScatter("");
+  const Field<Mesh>::ScatterInfo& sinfo2 = field2._getScatter("");
   CPPUNIT_ASSERT(sinfo2.dm);
   CPPUNIT_ASSERT(sinfo2.vector);
 
-  const Field<SubMesh>::ScatterInfo& sinfo2B = field2._getScatter("B");
+  const Field<Mesh>::ScatterInfo& sinfo2B = field2._getScatter("B");
   CPPUNIT_ASSERT(sinfo2B.dm);
   CPPUNIT_ASSERT(sinfo2B.vector);
 
@@ -844,17 +845,17 @@
   const int fiberDim = 3;
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<SubMesh> field(submesh);
+  Field<Mesh> field(submesh);
   field.newSection(FieldBase::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   CPPUNIT_ASSERT_EQUAL(size_t(0), field._scatters.size());
   field.createScatter(submesh);
   CPPUNIT_ASSERT_EQUAL(size_t(1), field._scatters.size());
-  const Field<SubMesh>::ScatterInfo& sinfo = field._getScatter("");
+  const Field<Mesh>::ScatterInfo& sinfo = field._getScatter("");
   CPPUNIT_ASSERT(sinfo.dm);
   CPPUNIT_ASSERT(sinfo.vector);
 
@@ -888,17 +889,17 @@
   };
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
   Stratum depthStratum(dmMesh, Stratum::DEPTH, 0);
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<SubMesh> field(submesh);
+  Field<Mesh> field(submesh);
   { // setup field
-    field.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+    field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
     field.allocate();
     VecVisitorMesh fieldVisitor(field);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -946,16 +947,16 @@
   };
 
   Mesh mesh;
-  SubMesh submesh;
-  _buildMesh(&mesh, &submesh);
+  _buildMesh(&mesh);
+  Mesh submesh(mesh, _TestFieldSubMesh::label);
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
   Stratum depthStratum(dmMesh, Stratum::DEPTH, 0);
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<SubMesh> field(submesh);
-  field.newSection(Field<SubMesh>::VERTICES_FIELD, fiberDim);
+  Field<Mesh> field(submesh);
+  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
   field.allocate();
   field.createScatter(submesh, context);
 
@@ -989,13 +990,11 @@
 
 // ----------------------------------------------------------------------
 void
-pylith::topology::TestFieldSubMesh::_buildMesh(Mesh* mesh,
-					       SubMesh* submesh)
+pylith::topology::TestFieldSubMesh::_buildMesh(Mesh* mesh)
 { // _buildMesh
   PYLITH_METHOD_BEGIN;
 
   assert(mesh);
-  assert(submesh);
 
   const int cellDim = _TestFieldSubMesh::cellDim;
   const int ncells = _TestFieldSubMesh::ncells;
@@ -1064,8 +1063,6 @@
   cs.initialize();
   mesh->coordsys(&cs);
 
-  submesh->createSubMesh(*mesh, _TestFieldSubMesh::label);
-
   PYLITH_METHOD_END;
 } // _buildMesh
 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -146,11 +146,9 @@
   /** Build mesh.
    *
    * @param mesh Finite-element mesh.
-   * @param submesh Boundary mesh.
    */
   static
-  void _buildMesh(Mesh* mesh,
-		  SubMesh* submesh);
+  void _buildMesh(Mesh* mesh);
 
 }; // class TestFieldSubMesh
 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -20,7 +20,7 @@
 
 #include "TestFieldsSubMesh.hh" // Implementation of class methods
 
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/Stratum.hh" // USES Stratum
@@ -32,7 +32,7 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::topology::TestFieldsSubMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Fields<pylith::topology::Field<pylith::topology::SubMesh> > FieldsSubMesh;
+typedef pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> > FieldsMesh;
 
 // ----------------------------------------------------------------------
 void
@@ -45,7 +45,7 @@
   importer.filename("data/tri3.mesh");
   importer.read(_mesh);
 
-  _submesh = new SubMesh(*_mesh, "bc");
+  _submesh = new Mesh(*_mesh, "bc");
 
   PYLITH_METHOD_END;
 } // setUp
@@ -70,7 +70,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsSubMesh fields(*_submesh);
+  FieldsMesh fields(*_submesh);
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -83,7 +83,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsSubMesh fields(*_submesh);
+  FieldsMesh fields(*_submesh);
   
   const char* label = "field";
   fields.add(label, "displacement");
@@ -103,14 +103,14 @@
   const int fiberDim = 3;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsSubMesh fields(*_submesh);
+  FieldsMesh fields(*_submesh);
 
   const char* label = "field";
-  fields.add(label, "velocity", Field<SubMesh>::VERTICES_FIELD, fiberDim);
+  fields.add(label, "velocity", Field<Mesh>::VERTICES_FIELD, fiberDim);
   const size_t size = 1;
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
 
-  Field<SubMesh>& field = fields.get(label);
+  Field<Mesh>& field = fields.get(label);
   field.allocate();
 
   PetscDM dmMesh = _submesh->dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -134,7 +134,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsSubMesh fields(*_submesh);
+  FieldsMesh fields(*_submesh);
 
   const char* labelA = "field A";
   fields.add(labelA, "displacement");
@@ -147,7 +147,7 @@
   fields.del(labelA);
   size = 1;
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
-  const Field<SubMesh>& field = fields.get(labelB);
+  const Field<Mesh>& field = fields.get(labelB);
 
   PYLITH_METHOD_END;
 } // testDelete
@@ -160,11 +160,11 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsSubMesh fields(*_submesh);
+  FieldsMesh fields(*_submesh);
 
   const char* label = "field";
   fields.add(label, "displacement");
-  const Field<SubMesh>& field = fields.get(label);
+  const Field<Mesh>& field = fields.get(label);
 
   PYLITH_METHOD_END;
 } // testGet
@@ -177,14 +177,14 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsSubMesh fields(*_submesh);
+  FieldsMesh fields(*_submesh);
 
   const char* label = "field";
   fields.add(label, "displacement");
 
-  const FieldsSubMesh* fieldsPtr = &fields;
+  const FieldsMesh* fieldsPtr = &fields;
   CPPUNIT_ASSERT(fieldsPtr);
-  const Field<SubMesh>& field = fieldsPtr->get(label);
+  const Field<Mesh>& field = fieldsPtr->get(label);
 
   PYLITH_METHOD_END;
 } // testGetConst
@@ -197,7 +197,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsSubMesh fields(*_submesh);
+  FieldsMesh fields(*_submesh);
 
   fields.add("field A", "velocity");
   
@@ -224,21 +224,21 @@
   const int fiberDim = 3;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsSubMesh fields(*_submesh);
+  FieldsMesh fields(*_submesh);
   
   const char* labelA = "field A";
-  fields.add(labelA, "velocity", Field<SubMesh>::VERTICES_FIELD, fiberDim);
+  fields.add(labelA, "velocity", Field<Mesh>::VERTICES_FIELD, fiberDim);
 
   const char* labelB = "field B";
   fields.add(labelB, "displacement");
-  Field<SubMesh>& fieldA = fields.get(labelA);
+  Field<Mesh>& fieldA = fields.get(labelA);
   fieldA.allocate();
 
   fields.copyLayout(labelA);
 
   const size_t size = 2;
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
-  const Field<SubMesh>& field = fields.get(labelB);
+  const Field<Mesh>& field = fields.get(labelB);
 
   PetscDM dmMesh = _submesh->dmMesh();CPPUNIT_ASSERT(dmMesh);
   Stratum depthStratum(dmMesh, Stratum::DEPTH, 0);

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -35,7 +35,6 @@
     class TestFieldsSubMesh;
 
     class Mesh;
-    class SubMesh;
   } // topology
 } // pylith
 
@@ -95,7 +94,7 @@
 private :
 
   Mesh* _mesh;
-  SubMesh* _submesh;
+  Mesh* _submesh;
 
 }; // class TestFieldsSubMesh
 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,7 +23,6 @@
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 
@@ -65,8 +64,8 @@
   Field<Mesh> field(mesh);
   _initializeField(&mesh, &field);
 
-  SubMesh submesh(mesh, "bc");
-  Field<SubMesh> subfield(submesh);
+  Mesh submesh(mesh, "bc");
+  Field<Mesh> subfield(submesh);
   subfield.newSection(FieldBase::VERTICES_FIELD, submesh.dimension());
   subfield.allocate();
   subfield.zero();

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -52,7 +52,7 @@
   CPPUNIT_ASSERT(mesh2._dmMesh);
   CPPUNIT_ASSERT_EQUAL(dim, mesh2.dimension());
   MPI_Comm_compare(PETSC_COMM_WORLD, mesh2.comm(), &result);
-  CPPUNIT_ASSERT_EQUAL(int(MPI_IDENT), result);
+  CPPUNIT_ASSERT_EQUAL(int(MPI_CONGRUENT), result);
 
   dim = 1;
   Mesh mesh3(dim, PETSC_COMM_SELF);
@@ -142,11 +142,16 @@
   PYLITH_METHOD_BEGIN;
 
   Mesh mesh;
-  CPPUNIT_ASSERT_EQUAL(PETSC_COMM_WORLD, mesh.comm());
+  int result = 0;
+  MPI_Comm_compare(PETSC_COMM_WORLD, mesh.comm(), &result);
+  CPPUNIT_ASSERT_EQUAL(int(MPI_IDENT), result);
 
-  mesh.comm(PETSC_COMM_SELF);
-  CPPUNIT_ASSERT_EQUAL(PETSC_COMM_SELF, mesh.comm());
 
+  Mesh mesh2(2, PETSC_COMM_SELF);
+  result = 0;
+  MPI_Comm_compare(PETSC_COMM_SELF, mesh2.comm(), &result);
+  CPPUNIT_ASSERT_EQUAL(int(MPI_CONGRUENT), result);
+
   PYLITH_METHOD_END;
 } // testComm
 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.cc	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.cc	2013-05-13 23:33:37 UTC (rev 22058)
@@ -21,7 +21,6 @@
 #include "TestSubMesh.hh" // Implementation of class methods
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/topology/SubMesh.hh" // USES SubMesh
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::createDMMesh()
 
@@ -73,9 +72,9 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  SubMesh mesh;
-  CPPUNIT_ASSERT_EQUAL(0, mesh.dimension());
-  CPPUNIT_ASSERT_EQUAL(false, mesh.debug());
+  Mesh submesh;
+  CPPUNIT_ASSERT_EQUAL(0, submesh.dimension());
+  CPPUNIT_ASSERT_EQUAL(false, submesh.debug());
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -90,15 +89,15 @@
  Mesh mesh2D;
   _buildMesh(&mesh2D);
   
-  SubMesh mesh(mesh2D, _TestSubMesh::label);
-  CPPUNIT_ASSERT_EQUAL(_TestSubMesh::cellDim-1, mesh.dimension());
+  Mesh submesh(mesh2D, _TestSubMesh::label);
+  CPPUNIT_ASSERT_EQUAL(_TestSubMesh::cellDim-1, submesh.dimension());
 
   int result = 0;
-  MPI_Comm_compare(PETSC_COMM_WORLD, mesh.comm(), &result);
+  MPI_Comm_compare(PETSC_COMM_WORLD, submesh.comm(), &result);
   CPPUNIT_ASSERT_EQUAL(int(MPI_CONGRUENT), result);
 
   // Check vertices
-  const PetscDM dmMesh = mesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
+  const PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
   Stratum depthStratum(dmMesh, Stratum::DEPTH, 0);
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
@@ -124,50 +123,6 @@
 } // testConstructorMesh
 
 // ----------------------------------------------------------------------
-// Test createSubMesh().
-void
-pylith::topology::TestSubMesh::testCreateSubMesh(void)
-{ // testCreateSubMesh
-  PYLITH_METHOD_BEGIN;
-
-  Mesh mesh2D;
-  _buildMesh(&mesh2D);
-  
-  SubMesh mesh;
-  mesh.createSubMesh(mesh2D, _TestSubMesh::label);
-  CPPUNIT_ASSERT_EQUAL(_TestSubMesh::cellDim-1, mesh.dimension());
-
-  int result = 0;
-  MPI_Comm_compare(PETSC_COMM_WORLD, mesh.comm(), &result);
-  CPPUNIT_ASSERT_EQUAL(int(MPI_CONGRUENT), result);
-
-  // Check vertices
-  const PetscDM dmMesh = mesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
-  Stratum depthStratum(dmMesh, Stratum::DEPTH, 0);
-  const PetscInt vStart = depthStratum.begin();
-  const PetscInt vEnd = depthStratum.end();
-  
-  const PetscInt nvertices = _TestSubMesh::submeshNumVertices;
-  CPPUNIT_ASSERT_EQUAL(nvertices, depthStratum.size());
-  for (PetscInt v = vStart, iV=0; v < vEnd; ++v, ++iV) {
-    CPPUNIT_ASSERT_EQUAL(_TestSubMesh::submeshVertices[iV], v);
-  } // for
-
-  // Check cells
-  Stratum heightStratum(dmMesh, Stratum::HEIGHT, 0);
-  const PetscInt cStart = heightStratum.begin();
-  const PetscInt cEnd = heightStratum.end();
-  
-  const PetscInt ncells = _TestSubMesh::submeshNumCells;
-  CPPUNIT_ASSERT_EQUAL(ncells, heightStratum.size());
-  for (PetscInt c = cStart, iC=0; c < cEnd; ++c, ++iC) {
-    CPPUNIT_ASSERT_EQUAL(_TestSubMesh::submeshCells[iC], c);
-  } // for
-
-  PYLITH_METHOD_END;
-} // testCreateSubMesh
-
-// ----------------------------------------------------------------------
 // Test coordsys().
 void
 pylith::topology::TestSubMesh::testCoordsys(void)
@@ -177,9 +132,9 @@
   Mesh mesh2D;
   _buildMesh(&mesh2D);
 
-  SubMesh mesh(mesh2D, _TestSubMesh::label);
+  Mesh submesh(mesh2D, _TestSubMesh::label);
 
-  CPPUNIT_ASSERT_EQUAL(_TestSubMesh::cellDim, mesh.coordsys()->spaceDim());
+  CPPUNIT_ASSERT_EQUAL(_TestSubMesh::cellDim, submesh.coordsys()->spaceDim());
 
   PYLITH_METHOD_END;
 } // testCoordsys
@@ -191,12 +146,15 @@
 { // testDebug
   PYLITH_METHOD_BEGIN;
 
-  SubMesh mesh;
-  CPPUNIT_ASSERT_EQUAL(false, mesh.debug());
+  Mesh mesh2D;
+  _buildMesh(&mesh2D);
 
-  mesh.debug(true);
-  CPPUNIT_ASSERT_EQUAL(true, mesh.debug());
+  Mesh submesh(mesh2D, _TestSubMesh::label);
+  CPPUNIT_ASSERT_EQUAL(false, submesh.debug());
 
+  submesh.debug(true);
+  CPPUNIT_ASSERT_EQUAL(true, submesh.debug());
+
   PYLITH_METHOD_END;
 } // testDebug
 
@@ -207,13 +165,13 @@
 { // testDimension
   PYLITH_METHOD_BEGIN;
 
-  SubMesh mesh;
-  CPPUNIT_ASSERT_EQUAL(0, mesh.dimension());
+  Mesh submesh;
+  CPPUNIT_ASSERT_EQUAL(0, submesh.dimension());
 
   Mesh mesh2D;
   _buildMesh(&mesh2D);
-  SubMesh mesh2(mesh2D, _TestSubMesh::label);
-  CPPUNIT_ASSERT_EQUAL(_TestSubMesh::cellDim-1, mesh2.dimension());
+  Mesh submesh2(mesh2D, _TestSubMesh::label);
+  CPPUNIT_ASSERT_EQUAL(_TestSubMesh::cellDim-1, submesh2.dimension());
 
   PYLITH_METHOD_END;
 } // testDimension
@@ -228,7 +186,7 @@
   Mesh mesh;
   _buildMesh(&mesh);
 
-  SubMesh submesh(mesh, _TestSubMesh::label);
+  Mesh submesh(mesh, _TestSubMesh::label);
   CPPUNIT_ASSERT_EQUAL(_TestSubMesh::submeshNumCorners, submesh.coneSize());
 
   PYLITH_METHOD_END;
@@ -243,7 +201,7 @@
 
   Mesh mesh;
   _buildMesh(&mesh);
-  SubMesh submesh(mesh, _TestSubMesh::label);
+  Mesh submesh(mesh, _TestSubMesh::label);
   CPPUNIT_ASSERT_EQUAL(_TestSubMesh::submeshNumVertices, submesh.numVertices());
 
   PYLITH_METHOD_END;
@@ -258,7 +216,7 @@
 
   Mesh mesh;
   _buildMesh(&mesh);
-  SubMesh submesh(mesh, _TestSubMesh::label);
+  Mesh submesh(mesh, _TestSubMesh::label);
   CPPUNIT_ASSERT_EQUAL(_TestSubMesh::submeshNumCells, submesh.numCells());
 
   PYLITH_METHOD_END;
@@ -271,14 +229,13 @@
 { // testComm
   PYLITH_METHOD_BEGIN;
 
-  SubMesh mesh;
-
   Mesh mesh2D;
   _buildMesh(&mesh2D);
-  mesh.createSubMesh(mesh2D, _TestSubMesh::label);
 
+  Mesh submesh(mesh2D, _TestSubMesh::label);
+
   int result = 0;
-  MPI_Comm_compare(PETSC_COMM_WORLD, mesh.comm(), &result);
+  MPI_Comm_compare(PETSC_COMM_WORLD, submesh.comm(), &result);
   CPPUNIT_ASSERT_EQUAL(int(MPI_CONGRUENT), result);
 
   PYLITH_METHOD_END;

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.hh	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.hh	2013-05-13 23:33:37 UTC (rev 22058)
@@ -48,7 +48,6 @@
 
   CPPUNIT_TEST( testConstructor );
   CPPUNIT_TEST( testConstructorMesh );
-  CPPUNIT_TEST( testCreateSubMesh );
   CPPUNIT_TEST( testCoordsys );
   CPPUNIT_TEST( testDebug );
   CPPUNIT_TEST( testDimension );
@@ -68,9 +67,6 @@
   /// Test constructor w/mesh.
   void testConstructorMesh(void);
 
-  /// Test createSubMesh.
-  void testCreateSubMesh(void);
-
   /// Test coordsys().
   void testCoordsys(void);
 

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/TestAbsorbingDampers.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/TestAbsorbingDampers.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/TestAbsorbingDampers.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -193,8 +193,8 @@
     cell.inventory.degree = 1
     cell.inventory.order = 1
     cell._configure()
-    from pylith.feassemble.Quadrature import SubMeshQuadrature
-    quadrature = SubMeshQuadrature()
+    from pylith.feassemble.Quadrature import MeshQuadrature
+    quadrature = MeshQuadrature()
     quadrature.inventory.cell = cell
     quadrature._configure()
 

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -191,8 +191,8 @@
     cell.inventory.degree = 1
     cell.inventory.order = 1
     cell._configure()
-    from pylith.feassemble.Quadrature import SubMeshQuadrature
-    quadrature = SubMeshQuadrature()
+    from pylith.feassemble.Quadrature import MeshQuadrature
+    quadrature = MeshQuadrature()
     quadrature.inventory.cell = cell
     quadrature._configure()
     

Modified: short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -263,8 +263,8 @@
     cell.inventory.degree = 1
     cell.inventory.order = 1
     cell._configure()
-    from pylith.feassemble.Quadrature import SubMeshQuadrature
-    quadrature = SubMeshQuadrature()
+    from pylith.feassemble.Quadrature import MeshQuadrature
+    quadrature = MeshQuadrature()
     quadrature.inventory.cell = cell
     quadrature._configure()
 

Modified: short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveImpulses.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveImpulses.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveImpulses.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -277,8 +277,8 @@
     cell.inventory.degree = 1
     cell.inventory.order = 1
     cell._configure()
-    from pylith.feassemble.Quadrature import SubMeshQuadrature
-    quadrature = SubMeshQuadrature()
+    from pylith.feassemble.Quadrature import MeshQuadrature
+    quadrature = MeshQuadrature()
     quadrature.inventory.cell = cell
     quadrature._configure()
 

Modified: short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -277,8 +277,8 @@
     cell.inventory.degree = 1
     cell.inventory.order = 1
     cell._configure()
-    from pylith.feassemble.Quadrature import SubMeshQuadrature
-    quadrature = SubMeshQuadrature()
+    from pylith.feassemble.Quadrature import MeshQuadrature
+    quadrature = MeshQuadrature()
     quadrature.inventory.cell = cell
     quadrature._configure()
 

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/Makefile.am	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/Makefile.am	2013-05-13 23:33:37 UTC (rev 22058)
@@ -31,7 +31,6 @@
 	TestFIATSimplex.py \
 	TestCellGeometry.py \
 	TestMeshQuadrature.py \
-	TestSubMeshQuadrature.py \
 	TestElasticityExplicit.py \
 	TestElasticityImplicit.py \
 	TestElasticityExplicitLgDeform.py \

Deleted: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestSubMeshQuadrature.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestSubMeshQuadrature.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestSubMeshQuadrature.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -1,234 +0,0 @@
-#!/usr/bin/env python
-#
-# ======================================================================
-#
-# Brad T. Aagaard, U.S. Geological Survey
-# Charles A. Williams, GNS Science
-# Matthew G. Knepley, University of Chicago
-#
-# This code was developed as part of the Computational Infrastructure
-# for Geodynamics (http://geodynamics.org).
-#
-# Copyright (c) 2010-2013 University of California, Davis
-#
-# See COPYING for license information.
-#
-# ======================================================================
-#
-
-## @file unittests/pytests/feassemble/TestSubMeshQuadrature.py
-
-## @brief Unit testing of Python SubMeshQuadrature object.
-
-import unittest
-import numpy
-
-from pylith.feassemble.Quadrature import SubMeshQuadrature
-from pylith.feassemble.FIATSimplex import FIATSimplex
-from pylith.feassemble.FIATLagrange import FIATLagrange
-
-# ----------------------------------------------------------------------
-def N0(p):
-  return -0.5*p*(1.0-p)
-
-def N0p(p):
-  return -0.5*(1.0-p) + 0.5*p
-
-def N1(p):
-  return 0.5*p*(1.0+p)
-
-def N1p(p):
-  return +0.5*(1.0+p) + 0.5*p
-
-def N2(p):
-  return (1.0-p**2)
-
-def N2p(p):
-  return -2.0*p
-
-# ----------------------------------------------------------------------
-class TestSubMeshQuadrature(unittest.TestCase):
-  """
-  Unit testing of Python SubMeshQuadrature object.
-  """
-
-  def test_minJacobian(self):
-    """
-    Test minJacobian().
-    """
-    minJacobian = 4.0e-02;
-    q = SubMeshQuadrature()
-    q.minJacobian(minJacobian)
-    self.assertAlmostEqual(minJacobian, q.minJacobian(), places=5)
-    return
-    
-
-  def test_checkConditioning(self):
-    """
-    Test checkConditioning().
-    """
-    q = SubMeshQuadrature()
-
-    flag = False # default
-    self.assertEqual(flag, q.checkConditioning())
-
-    flag = True
-    q.checkConditioning(flag)
-    self.assertEqual(flag, q.checkConditioning())
-    
-    flag = False
-    q.checkConditioning(flag)
-    self.assertEqual(flag, q.checkConditioning())
-    
-    return
-    
-
-  def test_initialize(self):
-    """
-    Test initialize().
-    """
-    cell = FIATSimplex()
-    cell.inventory.dimension = 1
-    cell.inventory.degree = 2
-    cell.inventory.order = 2
-    cell._configure()
-
-    scalarType = None
-    from pylith.utils.utils import sizeofPylithScalar
-    if 8 == sizeofPylithScalar():
-      scalarType = numpy.float64
-    elif 4 == sizeofPylithScalar():
-      scalarType = numpy.float32
-    else:
-      raise ValueError("Unknown size for PylithScalar.")
-
-    verticesE = numpy.array([ [-1.0], [1.0], [0.0] ])
-    quadPtsE = numpy.array( [[-1.0/3**0.5],
-                             [+1.0/3**0.5]],
-                            dtype=scalarType )
-    quadWtsE = numpy.array( [1.0, 1.0], dtype=scalarType )
-
-    # Compute basis functions and derivatives at quadrature points
-    basisE = numpy.zeros( (2, 3), dtype=scalarType)
-    basisDerivE = numpy.zeros( (2, 3, 1), dtype=scalarType)
-    iQuad = 0
-    for q in quadPtsE:
-      basisE[iQuad] = numpy.array([N0(q), N1(q), N2(q)],
-                                  dtype=scalarType).reshape( (3,) )
-      deriv = numpy.array([[N0p(q)], [N1p(q)], [N2p(q)]],
-                          dtype=scalarType)      
-      basisDerivE[iQuad] = deriv.reshape((3, 1))
-      iQuad += 1
-
-    quadrature = SubMeshQuadrature()
-    quadrature.inventory.cell = cell
-    quadrature._configure()
-
-    quadrature.preinitialize(spaceDim=2)
-    quadrature.initialize()
-
-    self.assertEqual(1, quadrature.cellDim())
-    self.assertEqual(2, quadrature.spaceDim())
-    self.assertEqual(3, quadrature.numBasis())
-    self.assertEqual(2, quadrature.numQuadPts())
-
-    from pylith.utils.utils import TestArray_checkScalar
-
-    self.failUnless(TestArray_checkScalar(basisE.ravel(),
-                                          quadrature.basis()))
-    self.failUnless(TestArray_checkScalar(basisDerivE.ravel(),
-                                          quadrature.basisDerivRef()))
-    self.failUnless(TestArray_checkScalar(quadPtsE.ravel(),
-                                          quadrature.quadPtsRef()))
-    self.failUnless(TestArray_checkScalar(quadWtsE.ravel(),
-                                          quadrature.quadWts()))
-
-    quadrature.initializeGeometry()
-    return
-
-
-  def test_simplex1D(self):
-    """
-    Test setup of quadrature for simplex cells for a 1-D problem in 2-D space.
-    """
-    spaceDim = 2
-
-    cell = FIATSimplex()
-    cell.inventory.dimension = 1
-    cell._configure()
-    
-    quadrature = SubMeshQuadrature()
-    quadrature.inventory.cell = cell
-    quadrature._configure()
-
-    quadrature.preinitialize(spaceDim)
-    self.assertEqual(1, quadrature.cellDim())
-    self.assertEqual(spaceDim, quadrature.spaceDim())
-    self.assertEqual(2, quadrature.numBasis())
-    return
-
-
-  def test_simplex2D(self):
-    """
-    Test setup of quadrature for simplex cells for a 2-D problem in 3-D space.
-    """
-    spaceDim = 3
-
-    cell = FIATSimplex()
-    cell.inventory.dimension = 2
-    cell._configure()
-    
-    quadrature = SubMeshQuadrature()
-    quadrature.inventory.cell = cell
-    quadrature._configure()
-
-    quadrature.preinitialize(spaceDim)
-    self.assertEqual(2, quadrature.cellDim())
-    self.assertEqual(spaceDim, quadrature.spaceDim())
-    self.assertEqual(3, quadrature.numBasis())
-    return
-
-
-  def test_lagrange1D(self):
-    """
-    Test setup of quadrature for Lagrange cells for a 1-D problem in 2-D space.
-    """
-    spaceDim = 2
-
-    cell = FIATLagrange()
-    cell.inventory.dimension = 1
-    cell._configure()
-    
-    quadrature = SubMeshQuadrature()
-    quadrature.inventory.cell = cell
-    quadrature._configure()
-
-    quadrature.preinitialize(spaceDim)
-    self.assertEqual(1, quadrature.cellDim())
-    self.assertEqual(spaceDim, quadrature.spaceDim())
-    self.assertEqual(2, quadrature.numBasis())
-    return
-
-
-  def test_lagrange2D(self):
-    """
-    Test setup of quadrature for Lagrange cells for a 2-D problem in 3-D space.
-    """
-    spaceDim = 3
-
-    cell = FIATLagrange()
-    cell.inventory.dimension = 2
-    cell._configure()
-    
-    quadrature = SubMeshQuadrature()
-    quadrature.inventory.cell = cell
-    quadrature._configure()
-
-    quadrature.preinitialize(spaceDim)
-    self.assertEqual(2, quadrature.cellDim())
-    self.assertEqual(spaceDim, quadrature.spaceDim())
-    self.assertEqual(4, quadrature.numBasis())
-    return
-
-
-# End of file 

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -75,9 +75,6 @@
     from TestMeshQuadrature import TestMeshQuadrature
     suite.addTest(unittest.makeSuite(TestMeshQuadrature))
 
-    from TestSubMeshQuadrature import TestSubMeshQuadrature
-    suite.addTest(unittest.makeSuite(TestSubMeshQuadrature))
-
     from TestElasticityImplicit import TestElasticityImplicit
     suite.addTest(unittest.makeSuite(TestElasticityImplicit))
 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestCellFilterAvg.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestCellFilterAvg.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestCellFilterAvg.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,7 +23,6 @@
 import unittest
 
 from pylith.meshio.CellFilterAvgMesh import CellFilterAvgMesh
-from pylith.meshio.CellFilterAvgSubMesh import CellFilterAvgSubMesh
 
 # ----------------------------------------------------------------------
 class TestCellFilterAvgMesh(unittest.TestCase):
@@ -76,54 +75,4 @@
     return
 
 
-# ----------------------------------------------------------------------
-class TestCellFilterAvgSubMesh(unittest.TestCase):
-  """
-  Unit testing of Python CellFilterAvg object.
-  """
-
-  def test_constructor(self):
-    """
-    Test constructor.
-    """
-    filter = CellFilterAvgSubMesh()
-    filter._configure()
-    return
-
-
-  def test_initialize(self):
-    """
-    Test constructor.
-    """
-    spaceDim = 2
-    
-    from pylith.feassemble.FIATSimplex import FIATSimplex
-    cell = FIATSimplex()
-    cell.inventory.dimension = 1
-    cell.inventory.degree = 2
-    cell.inventory.order = 2
-    cell._configure()
-
-    from pylith.feassemble.Quadrature import SubMeshQuadrature
-    quadrature = SubMeshQuadrature()
-    quadrature.inventory.cell = cell
-    quadrature._configure()
-    quadrature.preinitialize(spaceDim)
-    quadrature.initialize()
-
-    filter = CellFilterAvgSubMesh()
-    filter._configure()
-    filter.initialize(quadrature)
-    return
-
-
-  def test_factory(self):
-    """
-    Test factory method.
-    """
-    from pylith.meshio.CellFilterAvgSubMesh import output_cell_filter
-    filter = output_cell_filter()
-    return
-
-
 # End of file 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,8 +23,6 @@
 import unittest
 
 from pylith.meshio.DataWriterHDF5Mesh import DataWriterHDF5Mesh
-from pylith.meshio.DataWriterHDF5SubMesh import DataWriterHDF5SubMesh
-from pylith.meshio.DataWriterHDF5SubSubMesh import DataWriterHDF5SubSubMesh
 
 # ----------------------------------------------------------------------
 class TestDataWriterHDF5Mesh(unittest.TestCase):
@@ -63,78 +61,4 @@
     return
 
 
-# ----------------------------------------------------------------------
-class TestDataWriterHDF5SubMesh(unittest.TestCase):
-  """
-  Unit testing of Python DataWriterHDF5 object.
-  """
-
-  def test_constructor(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterHDF5SubMesh()
-    filter._configure()
-    return
-
-
-  def test_initialize(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterHDF5SubMesh()
-    filter._configure()
-
-    from spatialdata.units.Nondimensional import Nondimensional
-    normalizer = Nondimensional()
-    filter.initialize(normalizer)
-    return
-
-
-  def test_factory(self):
-    """
-    Test factory method.
-    """
-    from pylith.meshio.DataWriterHDF5SubMesh import data_writer
-    filter = data_writer()
-    return
-
-
-# ----------------------------------------------------------------------
-class TestDataWriterHDF5SubSubMesh(unittest.TestCase):
-  """
-  Unit testing of Python DataWriterHDF5 object.
-  """
-
-  def test_constructor(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterHDF5SubSubMesh()
-    filter._configure()
-    return
-
-
-  def test_initialize(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterHDF5SubSubMesh()
-    filter._configure()
-
-    from spatialdata.units.Nondimensional import Nondimensional
-    normalizer = Nondimensional()
-    filter.initialize(normalizer)
-    return
-
-
-  def test_factory(self):
-    """
-    Test factory method.
-    """
-    from pylith.meshio.DataWriterHDF5SubSubMesh import data_writer
-    filter = data_writer()
-    return
-
-
 # End of file 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5Ext.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5Ext.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5Ext.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,8 +23,6 @@
 import unittest
 
 from pylith.meshio.DataWriterHDF5ExtMesh import DataWriterHDF5ExtMesh
-from pylith.meshio.DataWriterHDF5ExtSubMesh import DataWriterHDF5ExtSubMesh
-from pylith.meshio.DataWriterHDF5ExtSubSubMesh import DataWriterHDF5ExtSubSubMesh
 
 # ----------------------------------------------------------------------
 class TestDataWriterHDF5ExtMesh(unittest.TestCase):
@@ -63,78 +61,4 @@
     return
 
 
-# ----------------------------------------------------------------------
-class TestDataWriterHDF5ExtSubMesh(unittest.TestCase):
-  """
-  Unit testing of Python DataWriterHDF5Ext object.
-  """
-
-  def test_constructor(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterHDF5ExtSubMesh()
-    filter._configure()
-    return
-
-
-  def test_initialize(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterHDF5ExtSubMesh()
-    filter._configure()
-
-    from spatialdata.units.Nondimensional import Nondimensional
-    normalizer = Nondimensional()
-    filter.initialize(normalizer)
-    return
-
-
-  def test_factory(self):
-    """
-    Test factory method.
-    """
-    from pylith.meshio.DataWriterHDF5ExtSubMesh import data_writer
-    filter = data_writer()
-    return
-
-
-# ----------------------------------------------------------------------
-class TestDataWriterHDF5ExtSubSubMesh(unittest.TestCase):
-  """
-  Unit testing of Python DataWriterHDF5Ext object.
-  """
-
-  def test_constructor(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterHDF5ExtSubSubMesh()
-    filter._configure()
-    return
-
-
-  def test_initialize(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterHDF5ExtSubSubMesh()
-    filter._configure()
-
-    from spatialdata.units.Nondimensional import Nondimensional
-    normalizer = Nondimensional()
-    filter.initialize(normalizer)
-    return
-
-
-  def test_factory(self):
-    """
-    Test factory method.
-    """
-    from pylith.meshio.DataWriterHDF5ExtSubSubMesh import data_writer
-    filter = data_writer()
-    return
-
-
 # End of file 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterVTK.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterVTK.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterVTK.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,8 +23,6 @@
 import unittest
 
 from pylith.meshio.DataWriterVTKMesh import DataWriterVTKMesh
-from pylith.meshio.DataWriterVTKSubMesh import DataWriterVTKSubMesh
-from pylith.meshio.DataWriterVTKSubSubMesh import DataWriterVTKSubSubMesh
 
 # ----------------------------------------------------------------------
 class TestDataWriterVTKMesh(unittest.TestCase):
@@ -63,78 +61,4 @@
     return
 
 
-# ----------------------------------------------------------------------
-class TestDataWriterVTKSubMesh(unittest.TestCase):
-  """
-  Unit testing of Python DataWriterVTK object.
-  """
-
-  def test_constructor(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterVTKSubMesh()
-    filter._configure()
-    return
-
-
-  def test_initialize(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterVTKSubMesh()
-    filter._configure()
-
-    from spatialdata.units.Nondimensional import Nondimensional
-    normalizer = Nondimensional()
-    filter.initialize(normalizer)
-    return
-
-
-  def test_factory(self):
-    """
-    Test factory method.
-    """
-    from pylith.meshio.DataWriterVTKSubMesh import data_writer
-    filter = data_writer()
-    return
-
-
-# ----------------------------------------------------------------------
-class TestDataWriterVTKSubSubMesh(unittest.TestCase):
-  """
-  Unit testing of Python DataWriterVTK object.
-  """
-
-  def test_constructor(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterVTKSubSubMesh()
-    filter._configure()
-    return
-
-
-  def test_initialize(self):
-    """
-    Test constructor.
-    """
-    filter = DataWriterVTKSubSubMesh()
-    filter._configure()
-
-    from spatialdata.units.Nondimensional import Nondimensional
-    normalizer = Nondimensional()
-    filter.initialize(normalizer)
-    return
-
-
-  def test_factory(self):
-    """
-    Test factory method.
-    """
-    from pylith.meshio.DataWriterVTKSubSubMesh import data_writer
-    filter = data_writer()
-    return
-
-
 # End of file 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestOutputManagerSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestOutputManagerSubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestOutputManagerSubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,7 +22,7 @@
 
 import unittest
 
-from pylith.meshio.OutputManagerSubMesh import OutputManagerSubMesh
+from pylith.meshio.OutputManagerMesh import OutputManagerMesh
 
 # ----------------------------------------------------------------------
 class TestProvider(object):
@@ -54,11 +54,11 @@
     normalizer._configure()
     mesh = iohandler.read(debug=False, interpolate=False)
 
-    from pylith.topology.SubMesh import SubMesh
-    submesh = SubMesh(mesh, "4")
+    from pylith.topology.Mesh import Mesh
+    submesh = Mesh(mesh=mesh, label="4")
 
-    from pylith.topology.Fields import SubMeshFields
-    fields = SubMeshFields(submesh)
+    from pylith.topology.Fields import MeshFields
+    fields = MeshFields(submesh)
     
     self.mesh = mesh
     self.submesh = submesh
@@ -139,7 +139,7 @@
     """
     Test constructor.
     """
-    output = OutputManagerSubMesh()
+    output = OutputManagerMesh()
     output.inventory.writer._configure()
     output._configure()
     return
@@ -150,7 +150,7 @@
     Test preinitialize().
     """
     dataProvider = TestProvider()
-    output = OutputManagerSubMesh()
+    output = OutputManagerMesh()
     output.preinitialize(dataProvider)
     
     self.failIf(output.dataProvider is None)
@@ -162,7 +162,7 @@
     Test verifyConfiguration().
     """
     dataProvider = TestProvider()
-    output = OutputManagerSubMesh()
+    output = OutputManagerMesh()
     output.preinitialize(dataProvider)
 
     output.vertexInfoFields = ["vertex info"]
@@ -178,7 +178,7 @@
     Test initialize().
     """
     # No quadrature
-    output = OutputManagerSubMesh()
+    output = OutputManagerMesh()
     output.inventory.writer.inventory.filename = "test.vtk"
     output.inventory.writer._configure()
     output._configure()
@@ -188,18 +188,18 @@
 
     # With quadrature
     from pylith.feassemble.FIATLagrange import FIATLagrange
-    from pylith.feassemble.Quadrature import SubMeshQuadrature
+    from pylith.feassemble.Quadrature import MeshQuadrature
     cell = FIATLagrange()
     cell.inventory.dimension = 2
     cell.inventory.degree = 2
     cell.inventory.order = 2
     cell._configure()
 
-    quadrature = SubMeshQuadrature()
+    quadrature = MeshQuadrature()
     quadrature.inventory.cell = cell
     quadrature._configure()
     
-    output = OutputManagerSubMesh()
+    output = OutputManagerMesh()
     output.inventory.writer.inventory.filename = "test.vtk"
     output.inventory.writer._configure()
     output._configure()
@@ -213,7 +213,7 @@
     """
     Test open() and close().
     """
-    output = OutputManagerSubMesh()
+    output = OutputManagerMesh()
     output.inventory.writer.inventory.filename = "output.vtk"
     output.inventory.writer._configure()
     output._configure()
@@ -230,7 +230,7 @@
     """
     Test writeInfo().
     """
-    output = OutputManagerSubMesh()
+    output = OutputManagerMesh()
     output.inventory.writer.inventory.filename = "output.vtk"
     output.inventory.writer._configure()
     output.inventory.vertexInfoFields = ["vertex info"]
@@ -251,7 +251,7 @@
     """
     Test writeData().
     """
-    output = OutputManagerSubMesh()
+    output = OutputManagerMesh()
     output.inventory.writer.inventory.filename = "output.vtk"
     output.inventory.writer.inventory.timeFormat = "%3.1f"
     output.inventory.writer._configure()
@@ -277,7 +277,7 @@
     dataProvider = TestProvider()
 
     # Default values should be true
-    output = OutputManagerSubMesh()
+    output = OutputManagerMesh()
     output.inventory.writer._configure()
     output._configure()
     output.preinitialize(dataProvider)
@@ -286,7 +286,7 @@
     self.assertEqual(True, output._checkWrite(3.234e+8))
 
     # Check writing based on time
-    output = OutputManagerSubMesh()
+    output = OutputManagerMesh()
     output.inventory.writer._configure()
     output._configure()
     output.preinitialize(dataProvider)
@@ -304,7 +304,7 @@
     self.assertEqual(True, output._checkWrite(t))
     
     # Check writing based on number of steps
-    output = OutputManagerSubMesh()
+    output = OutputManagerMesh()
     output.inventory.writer._configure()
     output.inventory.outputFreq = "skip"
     output.inventory.skip = 1
@@ -333,7 +333,7 @@
     """
     Test factory method.
     """
-    from pylith.meshio.OutputManagerSubMesh import output_manager
+    from pylith.meshio.OutputManagerMesh import output_manager
     o = output_manager()
     return
 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestVertexFilterVecNorm.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestVertexFilterVecNorm.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestVertexFilterVecNorm.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -23,7 +23,6 @@
 import unittest
 
 from pylith.meshio.VertexFilterVecNormMesh import VertexFilterVecNormMesh
-from pylith.meshio.VertexFilterVecNormSubMesh import VertexFilterVecNormSubMesh
 
 # ----------------------------------------------------------------------
 class TestVertexFilterVecNormMesh(unittest.TestCase):
@@ -60,38 +59,4 @@
     return
 
 
-# ----------------------------------------------------------------------
-class TestVertexFilterVecNormSubMesh(unittest.TestCase):
-  """
-  Unit testing of Python VertexFilterVecNorm object.
-  """
-
-  def test_constructor(self):
-    """
-    Test constructor.
-    """
-    filter = VertexFilterVecNormSubMesh()
-    filter._configure()
-    return
-
-
-  def test_initialize(self):
-    """
-    Test constructor.
-    """
-    filter = VertexFilterVecNormSubMesh()
-    filter._configure()
-    filter.initialize()
-    return
-
-
-  def test_factory(self):
-    """
-    Test factory method.
-    """
-    from pylith.meshio.VertexFilterVecNormSubMesh import output_vertex_filter
-    filter = output_vertex_filter()
-    return
-
-
 # End of file 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/testhdf5.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/testhdf5.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/testhdf5.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -66,21 +66,9 @@
     from TestDataWriterHDF5 import TestDataWriterHDF5Mesh
     suite.addTest(unittest.makeSuite(TestDataWriterHDF5Mesh))
 
-    from TestDataWriterHDF5 import TestDataWriterHDF5SubMesh
-    suite.addTest(unittest.makeSuite(TestDataWriterHDF5SubMesh))
-
-    from TestDataWriterHDF5 import TestDataWriterHDF5SubSubMesh
-    suite.addTest(unittest.makeSuite(TestDataWriterHDF5SubSubMesh))
-
     from TestDataWriterHDF5Ext import TestDataWriterHDF5ExtMesh
     suite.addTest(unittest.makeSuite(TestDataWriterHDF5ExtMesh))
 
-    from TestDataWriterHDF5Ext import TestDataWriterHDF5ExtSubMesh
-    suite.addTest(unittest.makeSuite(TestDataWriterHDF5ExtSubMesh))
-
-    from TestDataWriterHDF5Ext import TestDataWriterHDF5ExtSubSubMesh
-    suite.addTest(unittest.makeSuite(TestDataWriterHDF5ExtSubSubMesh))
-
     from TestXdmf import TestXdmf
     suite.addTest(unittest.makeSuite(TestXdmf))
 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/testmeshio.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/testmeshio.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/testmeshio.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -72,24 +72,12 @@
     from TestVertexFilterVecNorm import TestVertexFilterVecNormMesh
     suite.addTest(unittest.makeSuite(TestVertexFilterVecNormMesh))
 
-    from TestVertexFilterVecNorm import TestVertexFilterVecNormSubMesh
-    suite.addTest(unittest.makeSuite(TestVertexFilterVecNormSubMesh))
-
     from TestCellFilterAvg import TestCellFilterAvgMesh
     suite.addTest(unittest.makeSuite(TestCellFilterAvgMesh))
 
-    from TestCellFilterAvg import TestCellFilterAvgSubMesh
-    suite.addTest(unittest.makeSuite(TestCellFilterAvgSubMesh))
-
     from TestDataWriterVTK import TestDataWriterVTKMesh
     suite.addTest(unittest.makeSuite(TestDataWriterVTKMesh))
 
-    from TestDataWriterVTK import TestDataWriterVTKSubMesh
-    suite.addTest(unittest.makeSuite(TestDataWriterVTKSubMesh))
-
-    from TestDataWriterVTK import TestDataWriterVTKSubSubMesh
-    suite.addTest(unittest.makeSuite(TestDataWriterVTKSubSubMesh))
-
     from TestOutputManagerMesh import TestOutputManagerMesh
     suite.addTest(unittest.makeSuite(TestOutputManagerMesh))
 

Modified: short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepAdapt.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepAdapt.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepAdapt.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -93,9 +93,7 @@
                    Integrator(0.5)]
 
     from pylith.topology.Mesh import Mesh
-    from pylith.mpi.Communicator import petsc_comm_world
     mesh = Mesh()
-    mesh.setComm(petsc_comm_world())
 
     # Set time step
     dt = 0.5 / 2.0
@@ -151,9 +149,7 @@
                    Integrator(2.4)]
 
     from pylith.topology.Mesh import Mesh
-    from pylith.mpi.Communicator import petsc_comm_world
     mesh = Mesh()
-    mesh.setComm(petsc_comm_world())
 
     dt = 2.4 / 2.0
     tstep.timeStep(mesh, integrators)

Modified: short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepUniform.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepUniform.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepUniform.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -85,9 +85,7 @@
                    Integrator(8.0)]
 
     from pylith.topology.Mesh import Mesh
-    from pylith.mpi.Communicator import petsc_comm_world
     mesh = Mesh()
-    mesh.setComm(petsc_comm_world())
 
     self.assertEqual(1.0, tstep.timeStep(mesh, integrators))
 

Modified: short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepUser.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepUser.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/problems/TestTimeStepUser.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -110,9 +110,7 @@
                    Integrator(80.0)]
 
     from pylith.topology.Mesh import Mesh
-    from pylith.mpi.Communicator import petsc_comm_world
     mesh = Mesh()
-    #mesh.setComm(petsc_comm_world())
 
     self.assertEqual(step1, tstep.timeStep(mesh, integrators))
     self.assertEqual(step2, tstep.timeStep(mesh, integrators))

Modified: short/3D/PyLith/trunk/unittests/pytests/topology/TestJacobian.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/topology/TestJacobian.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/topology/TestJacobian.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -144,11 +144,8 @@
     self.jacobian = Jacobian(self.fields.solution(), "aij")
     self.jacobian.assemble("final_assembly")
 
-    from pylith.mpi.Communicator import Communicator
-    comm = Communicator(self.mesh.comm())
+    self.jacobian.write("jacobian.mat", self.mesh.comm())
 
-    self.jacobian.write("jacobian.mat", comm)
-
     # No testing of result.
     return
 

Modified: short/3D/PyLith/trunk/unittests/pytests/topology/TestMesh.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/topology/TestMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/topology/TestMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -105,9 +105,8 @@
     Test comm().
     """
     from pylith.mpi.Communicator import petsc_comm_self
-    mesh = Mesh()
-    mesh.setComm(petsc_comm_self())
-    comm = mesh.getComm()
+    mesh = Mesh(dim=3, comm=petsc_comm_self())
+    comm = mesh.comm()
     self.assertEqual(0, comm.rank)
     self.assertEqual(1, comm.size)
     return

Modified: short/3D/PyLith/trunk/unittests/pytests/topology/TestSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/topology/TestSubMesh.py	2013-05-13 18:43:34 UTC (rev 22057)
+++ short/3D/PyLith/trunk/unittests/pytests/topology/TestSubMesh.py	2013-05-13 23:33:37 UTC (rev 22058)
@@ -22,19 +22,19 @@
 
 import unittest
 
-from pylith.topology.SubMesh import SubMesh
+from pylith.topology.Mesh import Mesh
 
 # ----------------------------------------------------------------------
 class TestSubMesh(unittest.TestCase):
   """
-  Unit testing of SubMesh object.
+  Unit testing of Mesh object.
   """
 
   def test_constructorA(self):
     """
     Test constructor.
     """
-    mesh = SubMesh()
+    mesh = Mesh()
     self.assertEqual(0, mesh.dimension())
     self.assertEqual(False, mesh.debug())
     return
@@ -45,29 +45,18 @@
     Test constructor.
     """
     mesh = self._getMesh()
-    submesh = SubMesh(mesh, "bc")
+    submesh = Mesh(mesh=mesh, label="bc")
     self.assertEqual(1, submesh.dimension())
     self.assertEqual(False, mesh.debug())
     return
 
 
-  def test_createSubMesh(self):
-    """
-    Test createSeiveMesh().
-    """
-    mesh = self._getMesh()
-    submesh = SubMesh()
-    submesh.createSubMesh(mesh, "bc")
-    self.assertEqual(1, submesh.dimension())
-    return
-
-
   def test_coordsys(self):
     """
     Test coordsys().
     """
     mesh = self._getMesh()
-    submesh = SubMesh(mesh, "bc")
+    submesh = Mesh(mesh=mesh, label="bc")
     self.assertEqual(2, submesh.coordsys().spaceDim())
     return
 
@@ -77,7 +66,7 @@
     Test debug().
     """
     mesh = self._getMesh()
-    submesh = SubMesh(mesh, "bc")
+    submesh = Mesh(mesh=mesh, label="bc")
 
     self.assertEqual(False, submesh.debug())
 
@@ -91,7 +80,7 @@
     Test debug().
     """
     mesh = self._getMesh()
-    submesh = SubMesh(mesh, "bc")
+    submesh = Mesh(mesh=mesh, label="bc")
 
     self.assertEqual(1, submesh.dimension())
     return
@@ -102,7 +91,7 @@
     Test comm().
     """
     mesh = self._getMesh()
-    submesh = SubMesh(mesh, "bc")
+    submesh = Mesh(mesh=mesh, label="bc")
 
     comm = submesh.comm()
     self.assertEqual(0, comm.rank)



More information about the CIG-COMMITS mailing list