[cig-commits] r22061 - in short/3D/PyLith/trunk: examples/2d/greensfns/reverse examples/2d/greensfns/strikeslip examples/2d/subduction examples/3d/hex8 examples/3d/tet4 examples/bar_shearwave/hex8 examples/bar_shearwave/quad4 examples/bar_shearwave/tet4 examples/bar_shearwave/tri3 examples/greensfns/hex8 examples/twocells/twohex27-cubit examples/twocells/twohex8 examples/twocells/twoquad4 examples/twocells/twotet4 libsrc/pylith libsrc/pylith/bc libsrc/pylith/faults libsrc/pylith/feassemble libsrc/pylith/friction libsrc/pylith/materials libsrc/pylith/meshio libsrc/pylith/problems libsrc/pylith/topology libsrc/pylith/utils modulesrc/bc modulesrc/faults modulesrc/feassemble modulesrc/friction modulesrc/materials modulesrc/meshio modulesrc/problems modulesrc/topology modulesrc/utils pylith pylith/meshio pylith/problems pylith/topology tests_auto/1d/line2 tests_auto/1d/line3 tests_auto/2d/quad4 tests_auto/2d/tri3 unittests/libtests/bc unittests/libtests/faults unittests/libtests/feassemble unittests/libtests/friction unittests/libtests/materials unittests/libtests/meshio unittests/libtests/topology unittests/pytests/bc unittests/pytests/feassemble unittests/pytests/meshio unittests/pytests/topology

brad at geodynamics.org brad at geodynamics.org
Tue May 14 12:55:50 PDT 2013


Author: brad
Date: 2013-05-14 12:55:48 -0700 (Tue, 14 May 2013)
New Revision: 22061

Added:
   short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.cc
   short/3D/PyLith/trunk/pylith/meshio/CellFilterAvg.py
   short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNorm.py
Removed:
   short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.icc
   short/3D/PyLith/trunk/libsrc/pylith/utils/sievefwd.hh
   short/3D/PyLith/trunk/libsrc/pylith/utils/sievetypes.hh
   short/3D/PyLith/trunk/pylith/meshio/CellFilterAvgMesh.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtMesh.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5Mesh.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKMesh.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKPoints.py
   short/3D/PyLith/trunk/pylith/meshio/OutputManagerMesh.py
   short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNormMesh.py
Modified:
   short/3D/PyLith/trunk/examples/2d/greensfns/reverse/pylithapp.cfg
   short/3D/PyLith/trunk/examples/2d/greensfns/strikeslip/pylithapp.cfg
   short/3D/PyLith/trunk/examples/2d/subduction/pylithapp.cfg
   short/3D/PyLith/trunk/examples/2d/subduction/step01.cfg
   short/3D/PyLith/trunk/examples/2d/subduction/step02.cfg
   short/3D/PyLith/trunk/examples/2d/subduction/step03.cfg
   short/3D/PyLith/trunk/examples/2d/subduction/step04.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step01.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step02.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step03.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step04.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step05.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step08.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step09.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step10.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step11.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step13.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step14.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step15.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step16.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step17.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step18.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step19.cfg
   short/3D/PyLith/trunk/examples/3d/hex8/step20.cfg
   short/3D/PyLith/trunk/examples/3d/tet4/step01.cfg
   short/3D/PyLith/trunk/examples/3d/tet4/step02.cfg
   short/3D/PyLith/trunk/examples/3d/tet4/step03.cfg
   short/3D/PyLith/trunk/examples/3d/tet4/step04.cfg
   short/3D/PyLith/trunk/examples/bar_shearwave/hex8/pylithapp.cfg
   short/3D/PyLith/trunk/examples/bar_shearwave/quad4/pylithapp.cfg
   short/3D/PyLith/trunk/examples/bar_shearwave/tet4/pylithapp.cfg
   short/3D/PyLith/trunk/examples/bar_shearwave/tri3/pylithapp.cfg
   short/3D/PyLith/trunk/examples/greensfns/hex8/gfoutput.cfg
   short/3D/PyLith/trunk/examples/greensfns/hex8/initial-run.cfg
   short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/axialdisp.cfg
   short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/dislocation.cfg
   short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/sheardisp.cfg
   short/3D/PyLith/trunk/examples/twocells/twohex8/axialdisp.cfg
   short/3D/PyLith/trunk/examples/twocells/twohex8/dislocation.cfg
   short/3D/PyLith/trunk/examples/twocells/twohex8/sheardisp.cfg
   short/3D/PyLith/trunk/examples/twocells/twoquad4/axialdisp.cfg
   short/3D/PyLith/trunk/examples/twocells/twoquad4/axialtract.cfg
   short/3D/PyLith/trunk/examples/twocells/twoquad4/dislocation.cfg
   short/3D/PyLith/trunk/examples/twocells/twotet4/axialdisp.cfg
   short/3D/PyLith/trunk/libsrc/pylith/Makefile.am
   short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc
   short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.hh
   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/BoundaryConditionPoints.cc
   short/3D/PyLith/trunk/libsrc/pylith/bc/BoundaryConditionPoints.hh
   short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.cc
   short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.hh
   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/Neumann.cc
   short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.hh
   short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.cc
   short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.hh
   short/3D/PyLith/trunk/libsrc/pylith/bc/TimeDependentPoints.cc
   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/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.hh
   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/TractPerturbation.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Constraint.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Constraint.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.icc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.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/materials/ElasticIsotropic3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.icc
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/Material.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilter.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilter.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.icc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.icc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.icc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/Makefile.am
   short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.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/meshio/VertexFilter.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilter.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/meshiofwd.hh
   short/3D/PyLith/trunk/libsrc/pylith/problems/Explicit.cc
   short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.cc
   short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.hh
   short/3D/PyLith/trunk/libsrc/pylith/problems/Implicit.cc
   short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.cc
   short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.hh
   short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLinear.cc
   short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLinear.hh
   short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.cc
   short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.hh
   short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.cc
   short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/Distributor.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/Distributor.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/Field.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/Field.icc
   short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.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/SolutionFields.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/SolutionFields.hh
   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/libsrc/pylith/utils/Makefile.am
   short/3D/PyLith/trunk/modulesrc/bc/AbsorbingDampers.i
   short/3D/PyLith/trunk/modulesrc/bc/BCIntegratorSubMesh.i
   short/3D/PyLith/trunk/modulesrc/bc/BoundaryConditionPoints.i
   short/3D/PyLith/trunk/modulesrc/bc/DirichletBC.i
   short/3D/PyLith/trunk/modulesrc/bc/DirichletBoundary.i
   short/3D/PyLith/trunk/modulesrc/bc/Neumann.i
   short/3D/PyLith/trunk/modulesrc/bc/PointForce.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/FaultCohesiveLagrange.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i
   short/3D/PyLith/trunk/modulesrc/faults/LiuCosSlipFn.i
   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/feassemble/Constraint.i
   short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicit.i
   short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitLgDeform.i
   short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTet4.i
   short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTri3.i
   short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicit.i
   short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i
   short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i
   short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i
   short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i
   short/3D/PyLith/trunk/modulesrc/friction/friction.i
   short/3D/PyLith/trunk/modulesrc/materials/ElasticMaterial.i
   short/3D/PyLith/trunk/modulesrc/materials/Material.i
   short/3D/PyLith/trunk/modulesrc/materials/materials.i
   short/3D/PyLith/trunk/modulesrc/meshio/CellFilter.i
   short/3D/PyLith/trunk/modulesrc/meshio/CellFilterAvg.i
   short/3D/PyLith/trunk/modulesrc/meshio/DataWriter.i
   short/3D/PyLith/trunk/modulesrc/meshio/DataWriterHDF5.i
   short/3D/PyLith/trunk/modulesrc/meshio/DataWriterHDF5Ext.i
   short/3D/PyLith/trunk/modulesrc/meshio/DataWriterVTK.i
   short/3D/PyLith/trunk/modulesrc/meshio/OutputManager.i
   short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnPoints.i
   short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnSubset.i
   short/3D/PyLith/trunk/modulesrc/meshio/VertexFilter.i
   short/3D/PyLith/trunk/modulesrc/meshio/VertexFilterVecNorm.i
   short/3D/PyLith/trunk/modulesrc/meshio/meshio.i
   short/3D/PyLith/trunk/modulesrc/problems/Formulation.i
   short/3D/PyLith/trunk/modulesrc/problems/SolverLinear.i
   short/3D/PyLith/trunk/modulesrc/problems/SolverLumped.i
   short/3D/PyLith/trunk/modulesrc/problems/SolverNonlinear.i
   short/3D/PyLith/trunk/modulesrc/problems/problems.i
   short/3D/PyLith/trunk/modulesrc/topology/Distributor.i
   short/3D/PyLith/trunk/modulesrc/topology/Field.i
   short/3D/PyLith/trunk/modulesrc/topology/Fields.i
   short/3D/PyLith/trunk/modulesrc/topology/Jacobian.i
   short/3D/PyLith/trunk/modulesrc/topology/SolutionFields.i
   short/3D/PyLith/trunk/modulesrc/topology/topology.i
   short/3D/PyLith/trunk/modulesrc/utils/utils.i
   short/3D/PyLith/trunk/pylith/Makefile.am
   short/3D/PyLith/trunk/pylith/meshio/CellFilter.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5Ext.py
   short/3D/PyLith/trunk/pylith/meshio/DataWriterVTK.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/OutputManager.py
   short/3D/PyLith/trunk/pylith/meshio/OutputMatElastic.py
   short/3D/PyLith/trunk/pylith/meshio/OutputNeumann.py
   short/3D/PyLith/trunk/pylith/meshio/OutputSoln.py
   short/3D/PyLith/trunk/pylith/meshio/OutputSolnPoints.py
   short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py
   short/3D/PyLith/trunk/pylith/meshio/__init__.py
   short/3D/PyLith/trunk/pylith/problems/Explicit.py
   short/3D/PyLith/trunk/pylith/problems/Formulation.py
   short/3D/PyLith/trunk/pylith/problems/Implicit.py
   short/3D/PyLith/trunk/pylith/topology/Distributor.py
   short/3D/PyLith/trunk/pylith/topology/Field.py
   short/3D/PyLith/trunk/pylith/topology/Fields.py
   short/3D/PyLith/trunk/tests_auto/1d/line2/dislocation.cfg
   short/3D/PyLith/trunk/tests_auto/1d/line2/extensiondisp.cfg
   short/3D/PyLith/trunk/tests_auto/1d/line2/extensiondisp_np2.cfg
   short/3D/PyLith/trunk/tests_auto/1d/line2/extensionforce.cfg
   short/3D/PyLith/trunk/tests_auto/1d/line2/lgdeformtranslation.cfg
   short/3D/PyLith/trunk/tests_auto/1d/line3/axialextension.cfg
   short/3D/PyLith/trunk/tests_auto/1d/line3/dislocation.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/axialdisp.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/dislocation.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/dislocation2.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/fourcells_twofaults.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_compression.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_opening.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_shear_sliding.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_shear_stick.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/lgdeformrigidbody.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/lgdeformtraction.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/sheardisp.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_compression.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_opening.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg
   short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_stick.cfg
   short/3D/PyLith/trunk/tests_auto/2d/tri3/axialdisp.cfg
   short/3D/PyLith/trunk/tests_auto/2d/tri3/sheardisp.cfg
   short/3D/PyLith/trunk/tests_auto/2d/tri3/sheardisp_refine.cfg
   short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestBoundaryMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBC.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBCMulti.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestPointForce.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestTimeDependentPoints.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc
   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/feassemble/TestIntegrator.cc
   short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.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/TestDataWriterHDF5ExtBCMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5Mesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterMesh.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterPoints.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterPoints.hh
   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/TestDataWriterVTKFaultMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKPoints.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputManager.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputSolnPoints.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestVertexFilterVecNorm.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/TestSolutionFields.cc
   short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichletBC.py
   short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichletBoundary.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicit.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.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/TestOutputManagerMesh.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/topology/TestMeshField.py
   short/3D/PyLith/trunk/unittests/pytests/topology/TestMeshFields.py
Log:
Field, Fields, OutputManager, DataWriter, CellFilter, VertexFilter, etc. are no longer templates.

Modified: short/3D/PyLith/trunk/examples/2d/greensfns/reverse/pylithapp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/2d/greensfns/reverse/pylithapp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/2d/greensfns/reverse/pylithapp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -121,26 +121,26 @@
 output.groundsurf = pylith.meshio.OutputSolnSubset
 
 [pylithapp.problem.formulation.output.domain]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 
 [pylithapp.problem.formulation.output.groundsurf]
 label = face_ypos
-writer = pylith.meshio.DataWriterHDF5SubMesh
+writer = pylith.meshio.DataWriterHDF5
 
 [pylithapp.problem.formulation.output.points]
 coordsys.space_dim = 2
 coordsys.units = km
 
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 reader.filename = output_points.txt
 
 [pylithapp.problem.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 
 [pylithapp.problem.materials.elastic.output]
 cell_info_fields = []
 cell_data_fields = []
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 
 # ----------------------------------------------------------------------
 # PETSc

Modified: short/3D/PyLith/trunk/examples/2d/greensfns/strikeslip/pylithapp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/2d/greensfns/strikeslip/pylithapp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/2d/greensfns/strikeslip/pylithapp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -126,22 +126,22 @@
 output.points = pylith.meshio.OutputSolnPoints
 
 [pylithapp.problem.formulation.output.domain]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 
 [pylithapp.problem.formulation.output.points]
 coordsys.space_dim = 2
 coordsys.units = km
 
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 reader.filename = output_points.txt
 
 [pylithapp.problem.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 
 [pylithapp.problem.materials.elastic.output]
 cell_info_fields = []
 cell_data_fields = []
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 
 # ----------------------------------------------------------------------
 # PETSc

Modified: short/3D/PyLith/trunk/examples/2d/subduction/pylithapp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/2d/subduction/pylithapp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/2d/subduction/pylithapp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -141,37 +141,37 @@
 [pylithapp.problem.formulation.output.domain]
 output_freq = time_step
 time_step = 9.99999*year
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 
 # Ground surface
 [pylithapp.problem.formulation.output.subdomain]
 label = groundsurf ; Name of CUBIT nodeset for ground surface.
-writer = pylith.meshio.DataWriterHDF5SubMesh
+writer = pylith.meshio.DataWriterHDF5
 
 # Materials
 [pylithapp.timedependent.materials.continent_crust.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 9.99999*year
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 
 [pylithapp.timedependent.materials.continent_mantle.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 9.99999*year
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 
 [pylithapp.timedependent.materials.ocean_crust.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 9.99999*year
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 
 [pylithapp.timedependent.materials.ocean_mantle.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 9.99999*year
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 
 # ----------------------------------------------------------------------
 # PETSc

Modified: short/3D/PyLith/trunk/examples/2d/subduction/step01.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/2d/subduction/step01.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/2d/subduction/step01.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -117,7 +117,7 @@
 
 # Fault
 [pylithapp.problem.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step01-fault.h5
 
 # Materials

Modified: short/3D/PyLith/trunk/examples/2d/subduction/step02.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/2d/subduction/step02.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/2d/subduction/step02.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -144,11 +144,11 @@
 
 # Faults
 [pylithapp.problem.interfaces.fault_slabtop.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step02-fault-slabtop.h5
 
 [pylithapp.problem.interfaces.fault_slabbot.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step02-fault-slabbot.h5
 
 # Materials

Modified: short/3D/PyLith/trunk/examples/2d/subduction/step03.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/2d/subduction/step03.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/2d/subduction/step03.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -161,11 +161,11 @@
 
 # Faults
 [pylithapp.problem.interfaces.fault_slabtop.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step03-fault-slabtop.h5
 
 [pylithapp.problem.interfaces.fault_slabbot.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step03-fault-slabbot.h5
 
 # Materials

Modified: short/3D/PyLith/trunk/examples/2d/subduction/step04.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/2d/subduction/step04.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/2d/subduction/step04.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -132,7 +132,7 @@
 
 # Fault
 [pylithapp.problem.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step04-fault.h5
 
 # Materials

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step01.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step01.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step01.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -108,11 +108,11 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step01-upper_crust.vtk
 
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step01-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step02.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step02.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step02.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -85,7 +85,7 @@
 
 output.cell_info_fields = [initial_value]
 output.writer.filename = output/step02-traction.vtk
-output.cell_filter = pylith.meshio.CellFilterAvgSubMesh
+output.cell_filter = pylith.meshio.CellFilterAvg
 
 # We must specify quadrature information for the cell faces.
 quadrature.cell = pylith.feassemble.FIATLagrange
@@ -118,10 +118,10 @@
 
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step02-upper_crust.vtk
 
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step02-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step03.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step03.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step03.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -130,10 +130,10 @@
 
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step03-upper_crust.vtk
 
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step03-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step04.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step04.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step04.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -141,7 +141,7 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 40.0*year
 writer.filename = output/step04-upper_crust.vtk
@@ -151,7 +151,7 @@
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 40.0*year
 writer.filename = output/step04-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step05.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step05.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step05.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -167,7 +167,7 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 40.0*year
 writer.filename = output/step05-upper_crust.vtk
@@ -177,7 +177,7 @@
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 40.0*year
 writer.filename = output/step05-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step06.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -184,7 +184,7 @@
 time_step = 50.0*year
 
 # We are using HDF5 output so we must change the default writer.
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step06.h5
 
 # Give basename for output of solution over ground surface.
@@ -197,7 +197,7 @@
 # We again switch the writer to produce HDF5 output.
 # Note that we specifically ask for a submesh writer.
 skip = 0
-writer = pylith.meshio.DataWriterHDF5SubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step06-groundsurf.h5
 
 # Give basename for fault rupture output.
@@ -207,23 +207,23 @@
 # We again switch the writer to produce HDF5 output.
 # Note that we specifically ask for a subsubmesh writer.
 skip = 0
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step06-fault.h5
 
 # Give basename for output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 50.0*year
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step06-upper_crust.h5
 
 # Give basename for output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 50.0*year
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step06-lower_crust.h5

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step07.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -199,7 +199,7 @@
 time_step = 50.0*year
 
 # We are using HDF5 output so we must change the default writer.
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step07.h5
 
 # Give basename for output of solution over ground surface.
@@ -215,7 +215,7 @@
 
 # We again switch the writer to produce HDF5 output.
 # Note that we specifically ask for a submesh writer.
-writer = pylith.meshio.DataWriterHDF5SubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step07-groundsurf.h5
 
 # Give basename for fault rupture output.
@@ -226,13 +226,13 @@
 
 # We again switch the writer to produce HDF5 output.
 # Note that we specifically ask for a subsubmesh writer.
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step07-fault.h5
 
 # Give basename for output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 
 # We specify that output occurs in terms of a given time frequency, and
 # ask for output every 50 years.
@@ -240,13 +240,13 @@
 time_step = 50.0*year
 
 # We again switch the writer to produce HDF5 output.
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step07-upper_crust.h5
 
 # Give basename for output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 
 # We specify that output occurs in terms of a given time frequency, and
 # ask for output every 50 years.
@@ -254,5 +254,5 @@
 time_step = 50.0*year
 
 # We again switch the writer to produce HDF5 output.
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step07-lower_crust.h5

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step08.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step08.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step08.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -218,7 +218,7 @@
 time_step = 50.0*year
 
 # We are using HDF5 output so we must change the default writer.
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step08.h5
 
 # Give basename for output of solution over ground surface.
@@ -232,7 +232,7 @@
 
 # We again switch the writer to produce HDF5 output.
 # Note that we specifically ask for a submesh writer.
-writer = pylith.meshio.DataWriterHDF5SubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step08-groundsurf.h5
 
 # Give basename for fault rupture output.
@@ -243,13 +243,13 @@
 
 # We again switch the writer to produce HDF5 output.
 # Note that we specifically ask for a subsubmesh writer.
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step08-fault.h5
 
 # Give basename for output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 
 # We specify that output occurs in terms of a given time frequency, and
 # ask for output every 50 years.
@@ -257,13 +257,13 @@
 time_step = 50.0*year
 
 # We again switch the writer to produce HDF5 output.
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step08-upper_crust.h5
 
 # Give basename for output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 
 # We specify that output occurs in terms of a given time frequency, and
 # ask for output every 50 years.
@@ -271,7 +271,7 @@
 time_step = 50.0*year
 
 # We again switch the writer to produce HDF5 output.
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step08-lower_crust.h5
 
 # ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step09.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step09.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step09.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -224,7 +224,7 @@
 time_step = 50.0*year
 
 # We are using HDF5 output so we must change the default writer.
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step09.h5
 
 # Give basename for output of solution over ground surface.
@@ -238,7 +238,7 @@
 
 # We again switch the writer to produce HDF5 output.
 # Note that we specifically ask for a submesh writer.
-writer = pylith.meshio.DataWriterHDF5SubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step09-groundsurf.h5
 
 # Give basename for fault rupture output.
@@ -249,13 +249,13 @@
 
 # We again switch the writer to produce HDF5 output.
 # Note that we specifically ask for a subsubmesh writer.
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step09-fault.h5
 
 # Give basename for output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 
 # We specify that output occurs in terms of a given time frequency, and
 # ask for output every 50 years.
@@ -263,13 +263,13 @@
 time_step = 50.0*year
 
 # We again switch the writer to produce HDF5 output.
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step09-upper_crust.h5
 
 # Give basename for output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 
 # We specify that output occurs in terms of a given time frequency, and
 # ask for output every 50 years.
@@ -277,7 +277,7 @@
 time_step = 50.0*year
 
 # We again switch the writer to produce HDF5 output.
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = output/step09-lower_crust.h5
 
 # ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step10.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step10.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step10.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -167,11 +167,11 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step10-upper_crust.vtk
 
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step10-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step11.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step11.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step11.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -167,11 +167,11 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step11-upper_crust.vtk
 
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step11-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step12.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -193,7 +193,7 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 20.0*year
 writer.filename = output/step12-upper_crust.vtk
@@ -203,7 +203,7 @@
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 20.0*year
 writer.filename = output/step12-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step13.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step13.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step13.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -196,7 +196,7 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 20.0*year
 writer.filename = output/step13-upper_crust.vtk
@@ -206,7 +206,7 @@
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 20.0*year
 writer.filename = output/step13-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step14.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step14.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step14.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -216,7 +216,7 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 20.0*year
 writer.filename = output/step14-upper_crust.vtk
@@ -226,7 +226,7 @@
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 20.0*year
 writer.filename = output/step14-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step15.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step15.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step15.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -144,7 +144,7 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 40.0*year
 writer.filename = output/step15-upper_crust.vtk
@@ -154,7 +154,7 @@
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 40.0*year
 writer.filename = output/step15-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step16.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step16.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step16.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -161,7 +161,7 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 40.0*year
 writer.filename = output/step16-upper_crust.vtk
@@ -171,7 +171,7 @@
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 40.0*year
 writer.filename = output/step16-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step17.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step17.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step17.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -141,7 +141,7 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 40.0*year
 writer.filename = output/step17-upper_crust.vtk
@@ -151,7 +151,7 @@
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 output_freq = time_step
 time_step = 40.0*year
 writer.filename = output/step17-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step18.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step18.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step18.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -106,7 +106,7 @@
 
 output.cell_info_fields = [initial_value]
 output.writer.filename = output/step18-traction.vtk
-output.cell_filter = pylith.meshio.CellFilterAvgSubMesh
+output.cell_filter = pylith.meshio.CellFilterAvg
 
 # We must specify quadrature information for the cell faces.
 quadrature.cell = pylith.feassemble.FIATLagrange
@@ -134,10 +134,10 @@
 
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step18-upper_crust.vtk
 
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step18-lower_crust.vtk

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step19.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step19.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step19.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -114,7 +114,7 @@
 
 output.cell_info_fields = [change_in_value,change_start_time]
 output.writer.filename = output/step19-traction.vtk
-output.cell_filter = pylith.meshio.CellFilterAvgSubMesh
+output.cell_filter = pylith.meshio.CellFilterAvg
 
 # We must specify quadrature information for the cell faces.
 quadrature.cell = pylith.feassemble.FIATLagrange
@@ -157,14 +157,14 @@
 
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step19-upper_crust.vtk
 writer.time_constant = 1.0*year
 writer.time_format = %04.0f
 
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step19-lower_crust.vtk
 writer.time_constant = 1.0*year
 writer.time_format = %04.0f

Modified: short/3D/PyLith/trunk/examples/3d/hex8/step20.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/hex8/step20.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/hex8/step20.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -144,13 +144,13 @@
 # Give basename for VTK output of upper_crust state variables.
 [pylithapp.timedependent.materials.upper_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step20-upper_crust.vtk
 
 # Give basename for VTK output of lower_crust state variables.
 [pylithapp.timedependent.materials.lower_crust.output]
 # Average values over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step20-lower_crust.vtk
 
 

Modified: short/3D/PyLith/trunk/examples/3d/tet4/step01.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/tet4/step01.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/tet4/step01.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -74,9 +74,9 @@
 
 # Give basename for VTK output of state variables.
 [pylithapp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step01-elastic.vtk
 
 [pylithapp.timedependent.materials.viscoelastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step01-viscoelastic.vtk

Modified: short/3D/PyLith/trunk/examples/3d/tet4/step02.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/tet4/step02.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/tet4/step02.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -81,11 +81,11 @@
 
 # Give basename for VTK output of state variables.
 [pylithapp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step02-elastic.vtk
 
 [pylithapp.timedependent.materials.viscoelastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step02-viscoelastic.vtk
 
 # ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/examples/3d/tet4/step03.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/tet4/step03.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/tet4/step03.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -93,9 +93,9 @@
 
 # Give basename for VTK output of state variables.
 [pylithapp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step03-elastic.vtk
 
 [pylithapp.timedependent.materials.viscoelastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step03-viscoelastic.vtk

Modified: short/3D/PyLith/trunk/examples/3d/tet4/step04.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/3d/tet4/step04.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/3d/tet4/step04.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -100,11 +100,11 @@
 
 # Give basename for VTK output of state variables.
 [pylithapp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step04-elastic.vtk
 
 [pylithapp.timedependent.materials.viscoelastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = output/step04-viscoelastic.vtk
 
 # ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/examples/bar_shearwave/hex8/pylithapp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/bar_shearwave/hex8/pylithapp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/bar_shearwave/hex8/pylithapp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -223,4 +223,4 @@
 writer.time_format = %05.2f
 
 # Averate state variables over cell
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg

Modified: short/3D/PyLith/trunk/examples/bar_shearwave/quad4/pylithapp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/bar_shearwave/quad4/pylithapp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/bar_shearwave/quad4/pylithapp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -192,4 +192,4 @@
 writer.time_format = %05.2f
 
 # Averate state variables over quadrature points.
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg

Modified: short/3D/PyLith/trunk/examples/bar_shearwave/tet4/pylithapp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/bar_shearwave/tet4/pylithapp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/bar_shearwave/tet4/pylithapp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -244,7 +244,7 @@
 writer.time_format = %05.2f
 
 # Averate state variables over cell
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 
 # Give basename for VTK output of state variables.
 [pylithapp.timedependent.materials.neg.output]
@@ -253,4 +253,4 @@
 writer.time_format = %05.2f
 
 # Averate state variables over cell
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg

Modified: short/3D/PyLith/trunk/examples/bar_shearwave/tri3/pylithapp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/bar_shearwave/tri3/pylithapp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/bar_shearwave/tri3/pylithapp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -229,4 +229,4 @@
 writer.time_format = %05.2f
 
 # Averate state variables over cell
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg

Modified: short/3D/PyLith/trunk/examples/greensfns/hex8/gfoutput.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/greensfns/hex8/gfoutput.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/greensfns/hex8/gfoutput.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -38,14 +38,14 @@
 # Give basename for VTK output of state variables.
 [pylithapp.timedependent.materials.elastic_upper.output]
 skip = 2000
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = gftest-elastic_upper.vtk
 writer.time_format = %04.0f
 writer.time_constant = 1.0*year
 
 [pylithapp.timedependent.materials.elastic_lower.output]
 skip = 2000
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = gftest-elastic_lower.vtk
 writer.time_format = %04.0f
 writer.time_constant = 1.0*year

Modified: short/3D/PyLith/trunk/examples/greensfns/hex8/initial-run.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/greensfns/hex8/initial-run.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/greensfns/hex8/initial-run.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -54,13 +54,13 @@
 
 # Give basename for VTK output of state variables.
 [pylithapp.timedependent.materials.elastic_upper.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = gftest-initial-elastic_upper.vtk
 writer.time_format = %04.0f
 writer.time_constant = 1.0*year
 
 [pylithapp.timedependent.materials.elastic_lower.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = gftest-initial-elastic_lower.vtk
 writer.time_format = %04.0f
 writer.time_constant = 1.0*year

Modified: short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/axialdisp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/axialdisp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/axialdisp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -86,7 +86,7 @@
 [pylithapp.timedependent.materials.material.output]
 cell_data_fields = [total_strain,viscous_strain,stress]
 cell_info_fields = [mu,lambda,density,maxwell_time]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = axialdisp-statevars.vtk
 writer.time_format = %04.1f ; Time stamp will be xxx.x with the "." removed.
 writer.time_constant = 1.0*year ; Normalize time stamp by years

Modified: short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/dislocation.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/dislocation.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/dislocation.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -110,7 +110,7 @@
 [pylithapp.timedependent.materials.material.output]
 cell_data_fields = [total_strain,viscous_strain,stress]
 cell_info_fields = [mu,lambda,density,maxwell_time]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = dislocation-statevars.vtk
 writer.time_format = %04.1f ; Time stamp will be xxx.x with the "." removed.
 writer.time_constant = 1.0*year ; Normalize time stamp by years

Modified: short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/sheardisp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/sheardisp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/twocells/twohex27-cubit/sheardisp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -85,7 +85,7 @@
 [pylithapp.timedependent.materials.material.output]
 cell_data_fields = [total_strain,viscous_strain,stress]
 cell_info_fields = [mu,lambda,density,maxwell_time]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = sheardisp-statevars.vtk
 writer.time_format = %04.1f ; Time stamp will be xxx.x with the "." removed.
 writer.time_constant = 1.0*year ; Normalize time stamp by years

Modified: short/3D/PyLith/trunk/examples/twocells/twohex8/axialdisp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twocells/twohex8/axialdisp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/twocells/twohex8/axialdisp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -86,7 +86,7 @@
 [pylithapp.timedependent.materials.material.output]
 cell_data_fields = [total_strain,viscous_strain,stress]
 cell_info_fields = [mu,lambda,density,maxwell_time]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = axialdisp-statevars.vtk
 writer.time_format = %04.1f ; Time stamp will be xxx.x with the "." removed.
 writer.time_constant = 1.0*year ; Normalize time stamp by years

Modified: short/3D/PyLith/trunk/examples/twocells/twohex8/dislocation.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twocells/twohex8/dislocation.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/twocells/twohex8/dislocation.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -125,7 +125,7 @@
 [pylithapp.timedependent.materials.material.output]
 cell_data_fields = [total_strain,viscous_strain,stress]
 cell_info_fields = [mu,lambda,density,maxwell_time]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = dislocation-statevars.vtk
 writer.time_format = %04.1f ; Time stamp will be xxx.x with the "." removed.
 writer.time_constant = 1.0*year ; Normalize time stamp by years

Modified: short/3D/PyLith/trunk/examples/twocells/twohex8/sheardisp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twocells/twohex8/sheardisp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/twocells/twohex8/sheardisp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -85,7 +85,7 @@
 [pylithapp.timedependent.materials.material.output]
 cell_data_fields = [total_strain,viscous_strain,stress]
 cell_info_fields = [mu,lambda,density,maxwell_time]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = sheardisp-statevars.vtk
 writer.time_format = %04.1f ; Time stamp will be xxx.x with the "." removed.
 writer.time_constant = 1.0*year ; Normalize time stamp by years

Modified: short/3D/PyLith/trunk/examples/twocells/twoquad4/axialdisp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twocells/twoquad4/axialdisp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/twocells/twoquad4/axialdisp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -115,5 +115,5 @@
 
 # Give basename for VTK output of state variables.
 [pylithapp.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = axialdisp-statevars.vtk

Modified: short/3D/PyLith/trunk/examples/twocells/twoquad4/axialtract.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twocells/twoquad4/axialtract.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/twocells/twoquad4/axialtract.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -164,7 +164,7 @@
 
 # Give basename for VTK output of state variables.
 [pylithapp.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = axialtract-statevars.vtk
 
 # Give basename for VTK output of traction BC information.

Modified: short/3D/PyLith/trunk/examples/twocells/twoquad4/dislocation.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twocells/twoquad4/dislocation.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/twocells/twoquad4/dislocation.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -120,7 +120,7 @@
 
 # Give basename for VTK output of state variables.
 [pylithapp.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = dislocation-statevars.vtk
 
 # ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/examples/twocells/twotet4/axialdisp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twocells/twotet4/axialdisp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/examples/twocells/twotet4/axialdisp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -60,5 +60,5 @@
 
 # Give basename for VTK output of state variables.
 [pylithapp.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = axialdisp-statevars.vtk

Modified: short/3D/PyLith/trunk/libsrc/pylith/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/Makefile.am	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/Makefile.am	2013-05-14 19:55:48 UTC (rev 22061)
@@ -140,6 +140,13 @@
 	meshio/PsetFileBinary.cc \
 	meshio/OutputSolnSubset.cc \
 	meshio/OutputSolnPoints.cc \
+	meshio/CellFilter.cc \
+	meshio/CellFilterAvg.cc \
+	meshio/VertexFilter.cc \
+	meshio/VertexFilterVecNorm.cc \
+	meshio/DataWriter.cc \
+	meshio/DataWriterVTK.cc \
+	meshio/OutputManager.cc \
 	problems/Formulation.cc \
 	problems/Explicit.cc \
 	problems/Implicit.cc \
@@ -151,6 +158,8 @@
 	topology/Jacobian.cc \
 	topology/Mesh.cc \
 	topology/MeshOps.cc \
+	topology/Field.cc \
+	topology/Fields.cc \
 	topology/SolutionFields.cc \
 	topology/Distributor.cc \
 	topology/ReverseCuthillMcKee.cc \
@@ -188,6 +197,8 @@
 if ENABLE_HDF5
   libpylith_la_SOURCES += \
 	meshio/HDF5.cc \
+	meshio/DataWriterHDF5.cc \
+	meshio/DataWriterHDF5Ext.cc \
 	meshio/Xdmf.cc
   libpylith_la_LIBADD += -lhdf5
 endif

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -109,7 +109,7 @@
   const int fiberDim = numQuadPts * spaceDim;
 
   delete _parameters;
-  _parameters = new topology::Fields<topology::Field<topology::Mesh> >(*_boundaryMesh);
+  _parameters = new topology::Fields(*_boundaryMesh);
   assert(_parameters);
   _parameters->add("damping constants", "damping_constants", topology::FieldBase::FACES_FIELD, fiberDim);
   _parameters->get("damping constants").allocate();
@@ -140,7 +140,7 @@
 
   // Container for damping constants for current cell
   scalar_array dampingConstsLocal(spaceDim);
-  topology::Field<topology::Mesh>& dampingConsts = _parameters->get("damping constants");
+  topology::Field& dampingConsts = _parameters->get("damping constants");
   topology::VecVisitorMesh dampingConstsVisitor(dampingConsts);
 
   topology::CoordsVisitor coordsVisitor(dmSubMesh);
@@ -225,7 +225,7 @@
 // ----------------------------------------------------------------------
 // Integrate contributions to residual term (r) for operator.
 void
-pylith::bc::AbsorbingDampers::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::bc::AbsorbingDampers::integrateResidual(const topology::Field& residual,
 						const PylithScalar t,
 						topology::SolutionFields* const fields)
 { // integrateResidual
@@ -256,7 +256,7 @@
   _initCellVector();
 
   // Get sections
-  topology::Field<topology::Mesh>& dampingConsts = _parameters->get("damping constants");
+  topology::Field& dampingConsts = _parameters->get("damping constants");
   topology::VecVisitorMesh dampingConstsVisitor(dampingConsts);
   PetscScalar* dampingConstsArray = dampingConstsVisitor.localArray();
 
@@ -360,7 +360,7 @@
 // ----------------------------------------------------------------------
 // Integrate contributions to residual term (r) for operator.
 void
-pylith::bc::AbsorbingDampers::integrateResidualLumped(const topology::Field<topology::Mesh>& residual,
+pylith::bc::AbsorbingDampers::integrateResidualLumped(const topology::Field& residual,
 						      const PylithScalar t,
 						      topology::SolutionFields* const fields)
 { // integrateResidualLumped
@@ -397,7 +397,7 @@
   const PetscInt cEnd = cellsStratum.end();
 
   // Get sections
-  topology::Field<topology::Mesh>& dampingConsts = _parameters->get("damping constants");
+  topology::Field& dampingConsts = _parameters->get("damping constants");
   topology::VecVisitorMesh dampingConstsVisitor(dampingConsts);
   PetscScalar* dampingConstsArray = dampingConstsVisitor.localArray();
 
@@ -529,12 +529,12 @@
   const PetscInt cEnd = cellsStratum.end();
 
   // Get sections
-  topology::Field<topology::Mesh>& dampingConsts = _parameters->get("damping constants");
+  topology::Field& dampingConsts = _parameters->get("damping constants");
   topology::VecVisitorMesh dampingConstsVisitor(dampingConsts);
   PetscScalar* dampingConstsArray = dampingConstsVisitor.localArray();
 
   // Get sparse matrix
-  const topology::Field<topology::Mesh>& solution = fields->solution();
+  const topology::Field& solution = fields->solution();
   topology::SubMeshIS submeshIS(*_boundaryMesh);
   const PetscMat jacobianMat = jacobian->matrix();assert(jacobianMat);
   topology::MatVisitorSubMesh jacobianVisitor(jacobianMat, solution, submeshIS);
@@ -629,7 +629,7 @@
 // ----------------------------------------------------------------------
 // Integrate contributions to Jacobian matrix (A) associated with
 void
-pylith::bc::AbsorbingDampers::integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+pylith::bc::AbsorbingDampers::integrateJacobian(topology::Field* jacobian,
 						const PylithScalar t,
 						topology::SolutionFields* const fields)
 { // integrateJacobian
@@ -671,7 +671,7 @@
   _initCellVector();
 
   // Get sections
-  topology::Field<topology::Mesh>& dampingConsts = _parameters->get("damping constants");
+  topology::Field& dampingConsts = _parameters->get("damping constants");
   topology::VecVisitorMesh dampingConstsVisitor(dampingConsts);
   PetscScalar* dampingConstsArray = dampingConstsVisitor.localArray();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -98,7 +98,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -108,7 +108,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidualLumped(const topology::Field<topology::Mesh>& residual,
+  void integrateResidualLumped(const topology::Field& residual,
 			       const PylithScalar t,
 			       topology::SolutionFields* const fields);
 
@@ -130,7 +130,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+  void integrateJacobian(topology::Field* jacobian,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -61,8 +61,7 @@
    *
    * @returns Parameter fields.
    */
-  const topology::Fields<topology::Field<topology::Mesh> >*
-  parameterFields(void) const;
+  const topology::Fields* parameterFields(void) const;
 
   /** Get boundary mesh.
    *
@@ -88,7 +87,7 @@
   topology::Mesh* _boundaryMesh; ///< Boundary mesh.
 
   /// Parameters for boundary condition.
-  topology::Fields<topology::Field<topology::Mesh> >* _parameters;
+  topology::Fields* _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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/BCIntegratorSubMesh.icc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -24,7 +24,7 @@
 
 // Get parameter fields.
 inline
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
+const pylith::topology::Fields*
 pylith::bc::BCIntegratorSubMesh::parameterFields(void) const {
   return _parameters;
 } // parameterFields

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/BoundaryConditionPoints.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/BoundaryConditionPoints.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/BoundaryConditionPoints.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -55,7 +55,7 @@
   
 // ----------------------------------------------------------------------
 // Get parameter fields.
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
+const pylith::topology::Fields*
 pylith::bc::BoundaryConditionPoints::parameterFields(void) const
 { // parameterFields
   return _parameters;

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/BoundaryConditionPoints.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/BoundaryConditionPoints.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/BoundaryConditionPoints.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -59,7 +59,7 @@
    *
    * @returns Parameter fields.
    */
-  const topology::Fields<topology::Field<topology::Mesh> >* parameterFields(void) const;
+  const topology::Fields* parameterFields(void) const;
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
@@ -74,7 +74,7 @@
 protected :
 
   /// Parameters for boundary condition.
-  topology::Fields<topology::Field<topology::Mesh> >* _parameters;
+  topology::Fields* _parameters;
 
   int_array _points; ///< Points for boundary condition.
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -81,7 +81,7 @@
 // ----------------------------------------------------------------------
 // Set number of degrees of freedom that are constrained at points in field.
 void
-pylith::bc::DirichletBC::setConstraintSizes(const topology::Field<topology::Mesh>& field)
+pylith::bc::DirichletBC::setConstraintSizes(const topology::Field& field)
 { // setConstraintSizes
   PYLITH_METHOD_BEGIN;
 
@@ -125,7 +125,7 @@
 // ----------------------------------------------------------------------
 // Set which degrees of freedom are constrained at points in field.
 void
-pylith::bc::DirichletBC::setConstraints(const topology::Field<topology::Mesh>& field)
+pylith::bc::DirichletBC::setConstraints(const topology::Field& field)
 { // setConstraints
   PYLITH_METHOD_BEGIN;
 
@@ -193,7 +193,7 @@
 // Set values in field.
 void
 pylith::bc::DirichletBC::setField(const PylithScalar t,
-				  const topology::Field<topology::Mesh>& field)
+				  const topology::Field& field)
 { // setField
   PYLITH_METHOD_BEGIN;
 
@@ -206,7 +206,7 @@
 
   // Get sections
   assert(_parameters);
-  topology::Field<topology::Mesh>& valueField = _parameters->get("value");
+  topology::Field& valueField = _parameters->get("value");
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
 
@@ -235,7 +235,7 @@
 void
 pylith::bc::DirichletBC::setFieldIncr(const PylithScalar t0,
 				      const PylithScalar t1,
-				      const topology::Field<topology::Mesh>& field)
+				      const topology::Field& field)
 { // setFieldIncr
   PYLITH_METHOD_BEGIN;
 
@@ -248,7 +248,7 @@
 
   // Get sections
   assert(_parameters);
-  topology::Field<topology::Mesh>& valueField = _parameters->get("value");
+  topology::Field& valueField = _parameters->get("value");
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -71,13 +71,13 @@
    *
    * @param field Solution field
    */
-  void setConstraintSizes(const topology::Field<topology::Mesh>& field);
+  void setConstraintSizes(const topology::Field& field);
 
   /** Set which degrees of freedom are constrained at points in field.
    *
    * @param field Solution field
    */
-  void setConstraints(const topology::Field<topology::Mesh>& field);
+  void setConstraints(const topology::Field& field);
 
   /** Set values in field.
    *
@@ -85,7 +85,7 @@
    * @param field Solution field
    */
   void setField(const PylithScalar t,
-		const topology::Field<topology::Mesh>& field);
+		const topology::Field& field);
 
   /** Set increment in values from t0 to t1 in field.
    *
@@ -95,7 +95,7 @@
    */
   void setFieldIncr(const PylithScalar t0,
 		    const PylithScalar t1,
-		    const topology::Field<topology::Mesh>& field);
+		    const topology::Field& field);
 
   /** Verify configuration is acceptable.
    *

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -80,7 +80,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field of BC initial or rate of change of values.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::bc::DirichletBoundary::vertexField(const char* name,
 					   const topology::SolutionFields& fields)
 { // getVertexField
@@ -97,17 +97,17 @@
   const int spaceDim = cs->spaceDim();
 
   if (!_outputFields) {
-    _outputFields = new topology::Fields<topology::Field<topology::Mesh> >(*_boundaryMesh);
+    _outputFields = new topology::Fields(*_boundaryMesh);
   } // if
   assert(_outputFields);
   _outputFields->add("buffer (vector)", "buffer_vector", topology::FieldBase::FACES_FIELD, spaceDim);
-  topology::Field<topology::Mesh>& bufferVector = _outputFields->get("buffer (vector)");
+  topology::Field& 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::Mesh>& bufferScalar = _outputFields->get("buffer (scalar)");
+  topology::Field& bufferScalar = _outputFields->get("buffer (scalar)");
   bufferScalar.vectorFieldType(topology::FieldBase::SCALAR);
   bufferScalar.scale(timeScale);
   bufferScalar.allocate();
@@ -137,7 +137,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex vector field with BC information.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::bc::DirichletBoundary::_bufferVector(const char* name,
 					     const char* label,
 					     const PylithScalar scale)
@@ -156,11 +156,11 @@
   } // if
   
   assert(_outputFields->hasField("buffer (vector)"));
-  topology::Field<topology::Mesh>& buffer = _outputFields->get("buffer (vector)");
+  topology::Field& buffer = _outputFields->get("buffer (vector)");
   topology::VecVisitorMesh bufferVisitor(buffer);
   PetscScalar* bufferArray = bufferVisitor.localArray();
 
-  topology::Field<topology::Mesh>& field = _parameters->get(name);
+  topology::Field& field = _parameters->get(name);
   topology::VecVisitorMesh fieldVisitor(field);
   PetscScalar* fieldArray = fieldVisitor.localArray();
 
@@ -190,7 +190,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex scalar field with BC information.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::bc::DirichletBoundary::_bufferScalar(const char* name,
 					     const char* label,
 					     const PylithScalar scale)
@@ -209,11 +209,11 @@
   } // if
   
   assert(_outputFields->hasField("buffer (scalar)"));
-  topology::Field<topology::Mesh>& buffer = _outputFields->get("buffer (scalar)");
+  topology::Field& buffer = _outputFields->get("buffer (scalar)");
   topology::VecVisitorMesh bufferVisitor(buffer);
   PetscScalar* bufferArray = bufferVisitor.localArray();
 
-  topology::Field<topology::Mesh>& field = _parameters->get(name);
+  topology::Field& field = _parameters->get(name);
   topology::VecVisitorMesh fieldVisitor(field);
   PetscScalar* fieldArray = fieldVisitor.localArray();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -68,9 +68,8 @@
    *
    * @returns Field over vertices.
    */
-  const topology::Field<topology::Mesh>&
-  vertexField(const char* name,
-	      const topology::SolutionFields& fields);
+  const topology::Field& vertexField(const char* name,
+				     const topology::SolutionFields& fields);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
 private :
@@ -83,10 +82,9 @@
    *
    * @returns Field over vertices.
    */
-  const topology::Field<topology::Mesh>&
-  _bufferVector(const char* name,
-		const char* label,
-		const PylithScalar scale);
+  const topology::Field& _bufferVector(const char* name,
+				       const char* label,
+				       const PylithScalar scale);
 
   /** Get vertex scalar field with BC information.
    *
@@ -96,10 +94,9 @@
    *
    * @returns Field over vertices.
    */
-  const topology::Field<topology::Mesh>&
-  _bufferScalar(const char* name,
-		const char* label,
-		const PylithScalar scale);
+  const topology::Field& _bufferScalar(const char* name,
+				       const char* label,
+				       const PylithScalar scale);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
@@ -107,7 +104,7 @@
   topology::Mesh* _boundaryMesh; ///< Boundary mesh.
 
   /// Fields manager (holds temporary field for output).
-  topology::Fields<topology::Field<topology::Mesh> >* _outputFields;
+  topology::Fields* _outputFields;
 
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -85,7 +85,7 @@
 // ----------------------------------------------------------------------
 // Integrate contributions to residual term (r) for operator.
 void
-pylith::bc::Neumann::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::bc::Neumann::integrateResidual(const topology::Field& residual,
 				       const PylithScalar t,
 				       topology::SolutionFields* const fields)
 { // integrateResidual
@@ -114,7 +114,7 @@
 
   // Get sections
   _calculateValue(t);
-  topology::Field<topology::Mesh>& valueField = _parameters->get("value");
+  topology::Field& valueField = _parameters->get("value");
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
 
@@ -183,7 +183,7 @@
 
 // ----------------------------------------------------------------------
 // Get cell field for tractions.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::bc::Neumann::cellField(const char* name,
 			       topology::SolutionFields* const fields)
 { // cellField
@@ -235,42 +235,41 @@
   const int spaceDim = _quadrature->spaceDim();
   const int numQuadPts = _quadrature->numQuadPts();
 
-  delete _parameters; 
-  _parameters = new topology::Fields<topology::Field<topology::Mesh> >(*_boundaryMesh);
+  delete _parameters; _parameters = new topology::Fields(*_boundaryMesh);assert(_parameters);
 
   // Create section to hold time dependent values
   _parameters->add("value", "traction", topology::FieldBase::FACES_FIELD, numQuadPts*spaceDim);
-  topology::Field<topology::Mesh>& value = _parameters->get("value");
+  topology::Field& 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::Mesh>& initial = _parameters->get("initial");
+    topology::Field& 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::Mesh>& rate = _parameters->get("rate");
+    topology::Field& 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::Mesh>& rateTime = _parameters->get("rate time");
+    topology::Field& 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::Mesh>& change = _parameters->get("change");
+    topology::Field& 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::Mesh>& changeTime = _parameters->get("change time");
+    topology::Field& changeTime = _parameters->get("change time");
     changeTime.vectorFieldType(topology::FieldBase::MULTI_VECTOR);
     changeTime.scale(timeScale);
     changeTime.allocate();
@@ -414,7 +413,7 @@
   scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get sections.
-  topology::Field<topology::Mesh>& valueField = _parameters->get(name);
+  topology::Field& valueField = _parameters->get(name);
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
 
@@ -514,15 +513,15 @@
   // Get sections
   scalar_array tmpLocal(spaceDim);
   
-  topology::Field<topology::Mesh>* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
+  topology::Field* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
   topology::VecVisitorMesh* initialVisitor = (initialField) ? new topology::VecVisitorMesh(*initialField) : 0;
   PetscScalar* initialArray = (initialVisitor) ? initialVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
+  topology::Field* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
   topology::VecVisitorMesh* rateVisitor = (rateField) ? new topology::VecVisitorMesh(*rateField) : 0;
   PetscScalar* rateArray = (rateVisitor) ? rateVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* changeField = (_dbChange) ? &_parameters->get("change") : 0;
+  topology::Field* changeField = (_dbChange) ? &_parameters->get("change") : 0;
   topology::VecVisitorMesh* changeVisitor = (changeField) ? new topology::VecVisitorMesh(*changeField) : 0;
   PetscScalar* changeArray = (changeVisitor) ? changeVisitor->localArray() : NULL;
 
@@ -623,27 +622,27 @@
   const int numQuadPts = _quadrature->numQuadPts();
 
   // Get sections
-  topology::Field<topology::Mesh>& valueField = _parameters->get("value");
+  topology::Field& valueField = _parameters->get("value");
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
   
-  topology::Field<topology::Mesh>* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
+  topology::Field* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
   topology::VecVisitorMesh* initialVisitor = (initialField) ? new topology::VecVisitorMesh(*initialField) : 0;
   PetscScalar* initialArray = (initialVisitor) ? initialVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
+  topology::Field* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
   topology::VecVisitorMesh* rateVisitor = (rateField) ? new topology::VecVisitorMesh(*rateField) : 0;
   PetscScalar* rateArray = (rateVisitor) ? rateVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* rateTimeField = (_dbRate) ? &_parameters->get("rate time") : 0;
+  topology::Field* 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::Mesh>* changeField = (_dbChange) ? &_parameters->get("change") : 0;
+  topology::Field* changeField = (_dbChange) ? &_parameters->get("change") : 0;
   topology::VecVisitorMesh* changeVisitor = (changeField) ? new topology::VecVisitorMesh(*changeField) : 0;
   PetscScalar* changeArray = (changeVisitor) ? changeVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* changeTimeField = (_dbChange) ? &_parameters->get("change time") : 0;
+  topology::Field* 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -64,7 +64,7 @@
    * @param t Current time.
    * @param fields Solution fields.
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -81,9 +81,8 @@
    *
    * @returns Traction vector at integration points.
    */
-  const topology::Field<topology::Mesh>&
-  cellField(const char* name,
-	    topology::SolutionFields* const fields =0);
+  const topology::Field& cellField(const char* name,
+				   topology::SolutionFields* const fields =0);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -84,7 +84,7 @@
 // ----------------------------------------------------------------------
 // Integrate contributions to residual term (r) for operator.
 void
-pylith::bc::PointForce::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::bc::PointForce::integrateResidual(const topology::Field& residual,
 					  const PylithScalar t,
 					  topology::SolutionFields* const fields)
 { // integrateResidualAssembled
@@ -104,7 +104,7 @@
   topology::VecVisitorMesh residualVisitor(residual);
   PetscScalar* residualArray = residualVisitor.localArray();
 
-  topology::Field<topology::Mesh>& valueField = _parameters->get("value");
+  topology::Field& valueField = _parameters->get("value");
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -61,7 +61,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/TimeDependentPoints.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/TimeDependentPoints.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/TimeDependentPoints.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -120,13 +120,12 @@
     strcpy(rateNames[i], name.c_str());
   } // for
 
-  delete _parameters;
-  _parameters = new topology::Fields<topology::Field<topology::Mesh> >(mesh);
+  delete _parameters; _parameters = new topology::Fields(mesh);assert(_parameters);
 
   PetscErrorCode err = 0;
 
   _parameters->add("value", "value", topology::FieldBase::VERTICES_FIELD, numBCDOF);
-  topology::Field<topology::Mesh>& value = _parameters->get("value");
+  topology::Field& value = _parameters->get("value");
   value.vectorFieldType(topology::FieldBase::OTHER);
   value.scale(valueScale);
   value.allocate();
@@ -136,7 +135,7 @@
   if (_dbInitial) {
     const std::string& fieldLabel = std::string("initial_") + std::string(fieldName);
     _parameters->add("initial", fieldLabel.c_str(), topology::FieldBase::VERTICES_FIELD, numBCDOF);
-    topology::Field<topology::Mesh>& initial = _parameters->get("initial");
+    topology::Field& initial = _parameters->get("initial");
     initial.vectorFieldType(topology::FieldBase::OTHER);
     initial.scale(valueScale);
     initial.allocate();
@@ -146,7 +145,7 @@
   if (_dbRate) {
     const std::string& fieldLabel = std::string("rate_") + std::string(fieldName);
     _parameters->add("rate", fieldLabel.c_str(), topology::FieldBase::VERTICES_FIELD, numBCDOF);
-    topology::Field<topology::Mesh>& rate = _parameters->get("rate");
+    topology::Field& rate = _parameters->get("rate");
     rate.vectorFieldType(topology::FieldBase::OTHER);
     rate.scale(rateScale);
     rate.allocate();
@@ -154,7 +153,7 @@
     err = VecSet(rateVec, 0.0);PYLITH_CHECK_ERROR(err);
     const std::string& timeLabel = std::string("rate_time_") + std::string(fieldName);    
     _parameters->add("rate time", timeLabel.c_str(), topology::FieldBase::VERTICES_FIELD, 1);
-    topology::Field<topology::Mesh>& rateTime = _parameters->get("rate time");
+    topology::Field& rateTime = _parameters->get("rate time");
     rateTime.vectorFieldType(topology::FieldBase::SCALAR);
     rateTime.scale(timeScale);
     rateTime.allocate();
@@ -164,7 +163,7 @@
   if (_dbChange) {
     const std::string& fieldLabel = std::string("change_") + std::string(fieldName);
     _parameters->add("change", fieldLabel.c_str(), topology::FieldBase::VERTICES_FIELD, numBCDOF);
-    topology::Field<topology::Mesh>& change = _parameters->get("change");
+    topology::Field& change = _parameters->get("change");
     change.vectorFieldType(topology::FieldBase::OTHER);
     change.scale(valueScale);
     change.allocate();
@@ -172,7 +171,7 @@
     err = VecSet(changeVec, 0.0);PYLITH_CHECK_ERROR(err);
     const std::string& timeLabel = std::string("change_time_") + std::string(fieldName);
     _parameters->add("change time", timeLabel.c_str(), topology::FieldBase::VERTICES_FIELD, 1);
-    topology::Field<topology::Mesh>& changeTime = _parameters->get("change time");
+    topology::Field& changeTime = _parameters->get("change time");
     changeTime.vectorFieldType(topology::FieldBase::SCALAR);
     changeTime.scale(timeScale);
     changeTime.allocate();
@@ -249,7 +248,7 @@
   topology::CoordsVisitor coordsVisitor(dmMesh);
   PetscScalar *coordArray = coordsVisitor.localArray();
 
-  topology::Field<topology::Mesh>& parametersField = _parameters->get(name);
+  topology::Field& parametersField = _parameters->get(name);
   topology::VecVisitorMesh parametersVisitor(parametersField);
   PetscScalar* parametersArray = parametersVisitor.localArray();
 
@@ -297,27 +296,27 @@
 
   const PylithScalar timeScale = _getNormalizer().timeScale();
 
-  topology::Field<topology::Mesh>& valueField = _parameters->get("value");
+  topology::Field& valueField = _parameters->get("value");
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
   
-  topology::Field<topology::Mesh>* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
+  topology::Field* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
   topology::VecVisitorMesh* initialVisitor = (initialField) ? new topology::VecVisitorMesh(*initialField) : 0;
   PetscScalar* initialArray = (initialVisitor) ? initialVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
+  topology::Field* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
   topology::VecVisitorMesh* rateVisitor = (rateField) ? new topology::VecVisitorMesh(*rateField) : 0;
   PetscScalar* rateArray = (rateVisitor) ? rateVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* rateTimeField = (_dbRate) ? &_parameters->get("rate time") : 0;
+  topology::Field* 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::Mesh>* changeField = (_dbChange) ? &_parameters->get("change") : 0;
+  topology::Field* changeField = (_dbChange) ? &_parameters->get("change") : 0;
   topology::VecVisitorMesh* changeVisitor = (changeField) ? new topology::VecVisitorMesh(*changeField) : 0;
   PetscScalar* changeArray = (changeVisitor) ? changeVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* changeTimeField = (_dbChange) ? &_parameters->get("change time") : 0;
+  topology::Field* changeTimeField = (_dbChange) ? &_parameters->get("change time") : 0;
   topology::VecVisitorMesh* changeTimeVisitor = (changeTimeField) ? new topology::VecVisitorMesh(*changeTimeField) : 0;
   PetscScalar* changeTimeArray = (changeTimeVisitor) ? changeTimeVisitor->localArray() : NULL;
 
@@ -410,27 +409,27 @@
 
   const PylithScalar timeScale = _getNormalizer().timeScale();
 
-  topology::Field<topology::Mesh>& valueField = _parameters->get("value");
+  topology::Field& valueField = _parameters->get("value");
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
   
-  topology::Field<topology::Mesh>* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
+  topology::Field* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
   topology::VecVisitorMesh* initialVisitor = (initialField) ? new topology::VecVisitorMesh(*initialField) : 0;
   PetscScalar* initialArray = (initialVisitor) ? initialVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
+  topology::Field* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
   topology::VecVisitorMesh* rateVisitor = (rateField) ? new topology::VecVisitorMesh(*rateField) : 0;
   PetscScalar* rateArray = (rateVisitor) ? rateVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* rateTimeField = (_dbRate) ? &_parameters->get("rate time") : 0;
+  topology::Field* 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::Mesh>* changeField = (_dbChange) ? &_parameters->get("change") : 0;
+  topology::Field* changeField = (_dbChange) ? &_parameters->get("change") : 0;
   topology::VecVisitorMesh* changeVisitor = (changeField) ? new topology::VecVisitorMesh(*changeField) : 0;
   PetscScalar* changeArray = (changeVisitor) ? changeVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* changeTimeField = (_dbChange) ? &_parameters->get("change time") : 0;
+  topology::Field* 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/faults/BruneSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -94,10 +94,9 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
-  assert(_parameters);
+  delete _parameters; _parameters = new topology::Fields(faultMesh);assert(_parameters);
   _parameters->add("final slip", "final_slip");
-  topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
+  topology::Field& finalSlip = _parameters->get("final slip");
   finalSlip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   finalSlip.allocate();
   finalSlip.scale(lengthScale);
@@ -106,7 +105,7 @@
   PetscScalar* finalSlipArray = finalSlipVisitor.localArray();
 
   _parameters->add("slip time", "slip_time");
-  topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
+  topology::Field& slipTime = _parameters->get("slip time");
   slipTime.newSection(finalSlip, 1);
   slipTime.allocate();
   slipTime.scale(timeScale);
@@ -115,7 +114,7 @@
   PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
   _parameters->add("rise time", "rise_time");
-  topology::Field<topology::Mesh>& riseTime = _parameters->get("rise time");
+  topology::Field& riseTime = _parameters->get("rise time");
   riseTime.newSection(finalSlip, 1);
   riseTime.allocate();
   riseTime.scale(timeScale);
@@ -234,7 +233,7 @@
 // ----------------------------------------------------------------------
 // Get slip on fault surface at time t.
 void
-pylith::faults::BruneSlipFn::slip(topology::Field<topology::Mesh>* slip,
+pylith::faults::BruneSlipFn::slip(topology::Field* slip,
 				  const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -249,15 +248,15 @@
   const PetscInt vEnd = verticesStratum.end();
 
   // Get sections
-  const topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
+  const topology::Field& finalSlip = _parameters->get("final slip");
   topology::VecVisitorMesh finalSlipVisitor(finalSlip);
   const PetscScalar* finalSlipArray = finalSlipVisitor.localArray();
 
-  const topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
+  const topology::Field& slipTime = _parameters->get("slip time");
   topology::VecVisitorMesh slipTimeVisitor(slipTime);
   const PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
-  const topology::Field<topology::Mesh>& riseTime = _parameters->get("rise time");
+  const topology::Field& riseTime = _parameters->get("rise time");
   topology::VecVisitorMesh riseTimeVisitor(riseTime);
   const PetscScalar* riseTimeArray = riseTimeVisitor.localArray();
 
@@ -297,7 +296,7 @@
 
 // ----------------------------------------------------------------------
 // Get final slip.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::faults::BruneSlipFn::finalSlip(void)
 { // finalSlip
   PYLITH_METHOD_BEGIN;
@@ -307,7 +306,7 @@
 
 // ----------------------------------------------------------------------
 // Get time when slip begins at each point.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -95,20 +95,20 @@
    *
    * @returns Slip vector as left-lateral/reverse/normal.
    */
-  void slip(topology::Field<topology::Mesh>* const slipField,
+  void slip(topology::Field* const slipField,
 	    const PylithScalar t);
   
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::Mesh>& finalSlip(void);
+  const topology::Field& finalSlip(void);
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::Mesh>& slipTime(void);
+  const topology::Field& slipTime(void);
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -91,10 +91,10 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
-  assert(_parameters);
+  delete _parameters; _parameters = new topology::Fields(faultMesh);assert(_parameters);
+
   _parameters->add("slip rate", "slip_rate");
-  topology::Field<topology::Mesh>& slipRate = _parameters->get("slip rate");
+  topology::Field& slipRate = _parameters->get("slip rate");
   slipRate.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slipRate.allocate();
   slipRate.scale(velocityScale);
@@ -103,7 +103,7 @@
   PetscScalar* slipRateArray = slipRateVisitor.localArray();
 
   _parameters->add("slip time", "slip_time");
-  topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
+  topology::Field& slipTime = _parameters->get("slip time");
   slipTime.newSection(slipRate, 1);
   slipTime.allocate();
   slipTime.scale(timeScale);
@@ -202,7 +202,7 @@
 // ----------------------------------------------------------------------
 // Get slip on fault surface at time t.
 void
-pylith::faults::ConstRateSlipFn::slip(topology::Field<topology::Mesh>* slip,
+pylith::faults::ConstRateSlipFn::slip(topology::Field* slip,
 				      const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -217,11 +217,11 @@
   const PetscInt vEnd = verticesStratum.end();
 
   // Get sections
-  const topology::Field<topology::Mesh>& slipRate = _parameters->get("slip rate");
+  const topology::Field& slipRate = _parameters->get("slip rate");
   topology::VecVisitorMesh slipRateVisitor(slipRate);
   const PetscScalar* slipRateArray = slipRateVisitor.localArray();
 
-  const topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
+  const topology::Field& 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::Mesh>&
+const pylith::topology::Field&
 pylith::faults::ConstRateSlipFn::finalSlip(void)
 { // finalSlip
   PYLITH_METHOD_BEGIN;
@@ -264,7 +264,7 @@
 
 // ----------------------------------------------------------------------
 // Get time when slip begins at each point.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -87,20 +87,20 @@
    *
    * @returns Slip vector as left-lateral/reverse/normal.
    */
-  void slip(topology::Field<topology::Mesh>* const slipField,
+  void slip(topology::Field* const slipField,
 	    const PylithScalar t);
   
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::Mesh>& finalSlip(void);
+  const topology::Field& finalSlip(void);
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::Mesh>& slipTime(void);
+  const topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -94,7 +94,7 @@
 // ----------------------------------------------------------------------
 // Get slip on fault surface at time t.
 void
-pylith::faults::EqKinSrc::slip(topology::Field<topology::Mesh>* const slipField,
+pylith::faults::EqKinSrc::slip(topology::Field* const slipField,
 			       const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -107,7 +107,7 @@
 
 // ----------------------------------------------------------------------
 // Get final slip.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 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::Mesh>&
+const pylith::topology::Field&
 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -86,20 +86,20 @@
    * @param slipField Slip field over fault mesh.
    * @param t Time t.
    */
-  void slip(topology::Field<topology::Mesh>* const slipField,
+  void slip(topology::Field* const slipField,
 	    const PylithScalar t);
 
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::Mesh>& finalSlip(void) const;
+  const topology::Field& finalSlip(void) const;
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::Mesh>& slipTime(void) const;
+  const topology::Field& slipTime(void) const;
 
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -26,7 +26,7 @@
 // Include directives ---------------------------------------------------
 #include "faultsfwd.hh" // forward declarations
 
-#include "pylith/topology/topologyfwd.hh" // USES Field<Mesh>, Mesh
+#include "pylith/topology/topologyfwd.hh" // USES Field
 #include "pylith/utils/arrayfwd.hh" // USES scalar_array
 
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // USES SpatialDB
@@ -155,9 +155,8 @@
    * @returns Vertex field.
    */
   virtual
-  const topology::Field<topology::Mesh>&
-  vertexField(const char* name,
-	      const topology::SolutionFields* fields =0) = 0;
+  const topology::Field& vertexField(const char* name,
+				     const topology::SolutionFields* fields =0) = 0;
 
   /** Get cell field associated with integrator.
    *
@@ -166,9 +165,8 @@
    * @returns Cell field.
    */
   virtual
-  const topology::Field<topology::Mesh>&
-  cellField(const char* name,
-	    const topology::SolutionFields* fields =0) = 0;
+  const topology::Field& cellField(const char* name,
+				   const topology::SolutionFields* fields =0) = 0;
 
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -100,14 +100,13 @@
    *
    * @returns Fields associated with fault.
    */
-  const topology::Fields<topology::Field<topology::Mesh> >*
-  fields(void) const;
+  const topology::Fields* fields(void) const;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 
   /// Fields for fault information.
-  topology::Fields<topology::Field<topology::Mesh> >* _fields;
+  topology::Fields* _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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.icc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -29,7 +29,7 @@
 
 // Get fields associated with fault.
 inline
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
+const pylith::topology::Fields*
 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -150,7 +150,7 @@
 
   // Get initial tractions using a spatial database.
   if (_tractPerturbation) {
-    const topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
+    const topology::Field& orientation = _fields->get("orientation");
     _tractPerturbation->initialize(*_faultMesh, orientation, *_normalizer);
   } // if
 
@@ -166,8 +166,8 @@
 
   // Create field for relative velocity associated with Lagrange vertex k
   _fields->add("relative velocity", "relative_velocity");
-  topology::Field<topology::Mesh>& velRel = _fields->get("relative velocity");
-  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+  topology::Field& velRel = _fields->get("relative velocity");
+  topology::Field& dispRel = _fields->get("relative disp");
   velRel.cloneSection(dispRel);
   velRel.vectorFieldType(topology::FieldBase::VECTOR);
   velRel.scale(_normalizer->lengthScale() / _normalizer->timeScale());
@@ -178,7 +178,7 @@
 // ----------------------------------------------------------------------
 // Integrate contributions to residual term (r) for operator.
 void
-pylith::faults::FaultCohesiveDyn::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::faults::FaultCohesiveDyn::integrateResidual(const topology::Field& residual,
 						    const PylithScalar t,
 						    topology::SolutionFields* const fields)
 { // integrateResidual
@@ -216,11 +216,11 @@
   topology::VecVisitorMesh residualVisitor(residual);
   PetscScalar* residualArray = residualVisitor.localArray();
 
-  topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
+  topology::Field& dispT = fields->get("disp(t)");
   topology::VecVisitorMesh dispTVisitor(dispT);
   const PetscScalar* dispTArray = dispTVisitor.localArray();
 
-  topology::Field<topology::Mesh>& dispTIncr = fields->get("dispIncr(t->t+dt)");
+  topology::Field& dispTIncr = fields->get("dispIncr(t->t+dt)");
   topology::VecVisitorMesh dispTIncrVisitor(dispTIncr);
   const PetscScalar* dispTIncrArray = dispTIncrVisitor.localArray();
 
@@ -230,18 +230,18 @@
   if (_tractPerturbation) {
     _tractPerturbation->calculate(t);
     
-    const topology::Fields<topology::Field<topology::Mesh> >* params = _tractPerturbation->parameterFields();assert(params);
-    const topology::Field<topology::Mesh>& tractions = params->get("value");
+    const topology::Fields* params = _tractPerturbation->parameterFields();assert(params);
+    const topology::Field& tractions = params->get("value");
 
     tractionsVisitor = new topology::VecVisitorMesh(tractions);
     tractionsArray = tractionsVisitor->localArray();
   } // if
 
-  topology::Field<topology::Mesh>& area = _fields->get("area");
+  topology::Field& area = _fields->get("area");
   topology::VecVisitorMesh areaVisitor(area);
   const PetscScalar* areaArray = areaVisitor.localArray();
 
-  topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
+  topology::Field& orientation = _fields->get("orientation");
   topology::VecVisitorMesh orientationVisitor(orientation);
   const PetscScalar* orientationArray = orientationVisitor.localArray();
 
@@ -383,25 +383,25 @@
   scalar_array tractionTpdtVertex(spaceDim); // Fault coordinate system
 
   // Get fields.
-  topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
+  topology::Field& dispT = fields->get("disp(t)");
   topology::VecVisitorMesh dispTVisitor(dispT);
   const PetscScalar* dispTArray = dispTVisitor.localArray();
 
-  topology::Field<topology::Mesh>& dispTIncr = fields->get("dispIncr(t->t+dt)");
+  topology::Field& dispTIncr = fields->get("dispIncr(t->t+dt)");
   topology::VecVisitorMesh dispTIncrVisitor(dispTIncr);
   const PetscScalar* dispTIncrArray = dispTIncrVisitor.localArray();
 
   scalar_array slipVertex(spaceDim);
-  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+  topology::Field& dispRel = _fields->get("relative disp");
   topology::VecVisitorMesh dispRelVisitor(dispRel);
   const PetscScalar* dispRelArray = dispRelVisitor.localArray();
 
   scalar_array slipRateVertex(spaceDim);
-  topology::Field<topology::Mesh>& velRel = _fields->get("relative velocity");
+  topology::Field& velRel = _fields->get("relative velocity");
   topology::VecVisitorMesh velRelVisitor(velRel);
   const PetscScalar* velRelArray = velRelVisitor.localArray();
 
-  topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
+  topology::Field& orientation = _fields->get("orientation");
   topology::VecVisitorMesh orientationVisitor(orientation);
   const PetscScalar* orientationArray = orientationVisitor.localArray();
 
@@ -1008,7 +1008,7 @@
 void
 pylith::faults::FaultCohesiveDyn::adjustSolnLumped(topology::SolutionFields* const fields,
 						   const PylithScalar t,
-						   const topology::Field<topology::Mesh>& jacobian)
+						   const topology::Field& jacobian)
 { // adjustSolnLumped
   PYLITH_METHOD_BEGIN;
 
@@ -1324,7 +1324,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field associated with integrator.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::faults::FaultCohesiveDyn::vertexField(const char* name,
 					      const topology::SolutionFields* fields)
 { // vertexField
@@ -1339,23 +1339,23 @@
   const int cohesiveDim = _faultMesh->dimension();
   const int spaceDim = _quadrature->spaceDim();
 
-  const topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
+  const topology::Field& orientation = _fields->get("orientation");
 
   PylithScalar scale = 0.0;
   int fiberDim = 0;
   if (0 == strcasecmp("slip", name)) {
-    const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+    const topology::Field& dispRel = _fields->get("relative disp");
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer =  _fields->get("buffer (vector)");
+    topology::Field& 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::Mesh>& velRel = _fields->get("relative velocity");
+    const topology::Field& velRel = _fields->get("relative velocity");
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(velRel);
     buffer.label("slip_rate");
     FaultCohesiveLagrange::globalToFault(&buffer, orientation);
@@ -1365,7 +1365,7 @@
     PetscSection orientationSection = _fields->get("orientation").petscSection();assert(orientationSection);
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 0, PETSC_DETERMINE, orientationVec);
     buffer.label("strike_dir");
     buffer.scale(1.0);
@@ -1375,7 +1375,7 @@
     PetscSection orientationSection = _fields->get("orientation").petscSection();assert(orientationSection);
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 1, PETSC_DETERMINE, orientationVec);
     buffer.label("dip_dir");
     buffer.scale(1.0);
@@ -1385,7 +1385,7 @@
     PetscSection orientationSection = _fields->get("orientation").petscSection();assert(orientationSection);
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, cohesiveDim, PETSC_DETERMINE, orientationVec);
     buffer.label("normal_dir");
     buffer.scale(1.0);
@@ -1393,9 +1393,9 @@
 
   } else if (0 == strcasecmp("traction", name)) {
     assert(fields);
-    const topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
+    const topology::Field& dispT = fields->get("disp(t)");
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     _calcTractions(&buffer, dispT);
     PYLITH_METHOD_RETURN(buffer);
 
@@ -1403,10 +1403,10 @@
     PYLITH_METHOD_RETURN(_friction->getField(name));
 
   } else if (_tractPerturbation && _tractPerturbation->hasParameter(name)) {
-    const topology::Field<topology::Mesh>& param = _tractPerturbation->vertexField(name, fields);
+    const topology::Field& param = _tractPerturbation->vertexField(name, fields);
     if (param.vectorFieldType() == topology::FieldBase::VECTOR) {
       _allocateBufferVectorField();
-      topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+      topology::Field& buffer = _fields->get("buffer (vector)");
       buffer.copy(param);
       FaultCohesiveLagrange::globalToFault(&buffer, orientation);
       PYLITH_METHOD_RETURN(buffer);
@@ -1426,7 +1426,7 @@
 
   // Satisfy return values
   assert(_fields);
-  const topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+  const topology::Field& buffer = _fields->get("buffer (vector)");
 
   PYLITH_METHOD_RETURN(buffer);
 } // vertexField
@@ -1434,8 +1434,8 @@
 // ----------------------------------------------------------------------
 // Compute tractions on fault surface using solution.
 void
-pylith::faults::FaultCohesiveDyn::_calcTractions(topology::Field<topology::Mesh>* tractions,
-						 const topology::Field<topology::Mesh>& dispT)
+pylith::faults::FaultCohesiveDyn::_calcTractions(topology::Field* tractions,
+						 const topology::Field& dispT)
 { // _calcTractions
   PYLITH_METHOD_BEGIN;
 
@@ -1456,7 +1456,7 @@
 
   // Allocate buffer for tractions field (if necessary).
   if (!tractions->petscSection()) {
-    const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+    const topology::Field& dispRel = _fields->get("relative disp");
     tractions->cloneSection(dispRel);
   } // if
   const PylithScalar pressureScale = _normalizer->pressureScale();
@@ -1590,34 +1590,34 @@
   // Setup fields involved in sensitivity solve.
   if (!_fields->hasField("sensitivity solution")) {
     _fields->add("sensitivity solution", "sensitivity_soln");
-    topology::Field<topology::Mesh>& solution = _fields->get("sensitivity solution");
-    const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+    topology::Field& solution = _fields->get("sensitivity solution");
+    const topology::Field& dispRel = _fields->get("relative disp");
     solution.cloneSection(dispRel);
     solution.createScatter(solution.mesh());
   } // if
-  const topology::Field<topology::Mesh>& solution = _fields->get("sensitivity solution");
+  const topology::Field& solution = _fields->get("sensitivity solution");
 
   if (!_fields->hasField("sensitivity residual")) {
     _fields->add("sensitivity residual", "sensitivity_residual");
-    topology::Field<topology::Mesh>& residual = _fields->get("sensitivity residual");
+    topology::Field& 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::Mesh>& dispRel = _fields->get("sensitivity relative disp");
+    topology::Field& dispRel = _fields->get("sensitivity relative disp");
     dispRel.cloneSection(solution);
   } // if
-  topology::Field<topology::Mesh>& dispRel = _fields->get("sensitivity relative disp");
+  topology::Field& dispRel = _fields->get("sensitivity relative disp");
   dispRel.zero();
 
   if (!_fields->hasField("sensitivity dLagrange")) {
     _fields->add("sensitivity dLagrange", "sensitivity_dlagrange");
-    topology::Field<topology::Mesh>& dLagrange = _fields->get("sensitivity dLagrange");
+    topology::Field& dLagrange = _fields->get("sensitivity dLagrange");
     dLagrange.cloneSection(solution);
   } // if
-  topology::Field<topology::Mesh>& dLagrange = _fields->get("sensitivity dLagrange");
+  topology::Field& dLagrange = _fields->get("sensitivity dLagrange");
   dLagrange.zero();
 
   // Setup Jacobian sparse matrix for sensitivity solve.
@@ -1673,7 +1673,7 @@
   PetscErrorCode err = 0;
 
   // Get solution field
-  const topology::Field<topology::Mesh>& solutionDomain = fields.solution();
+  const topology::Field& solutionDomain = fields.solution();
   PetscDM solutionDomainDM = solutionDomain.dmMesh();assert(solutionDomainDM);
   PetscSection solutionDomainSection = solutionDomain.petscSection();assert(solutionDomainSection);
   PetscVec solutionDomainVec = solutionDomain.localVector();assert(solutionDomainVec);
@@ -1826,7 +1826,7 @@
   topology::VecVisitorMesh dLagrangeVisitor(_fields->get("sensitivity dLagrange"));
 
   scalar_array residualCell(numBasis*spaceDim);
-  topology::Field<topology::Mesh>& residual = _fields->get("sensitivity residual");
+  topology::Field& residual = _fields->get("sensitivity residual");
   topology::VecVisitorMesh residualVisitor(residual);
   residual.zero();
 
@@ -1894,8 +1894,8 @@
   assert(_jacobian);
   assert(_ksp);
 
-  topology::Field<topology::Mesh>& residual = _fields->get("sensitivity residual");
-  topology::Field<topology::Mesh>& solution = _fields->get("sensitivity solution");
+  topology::Field& residual = _fields->get("sensitivity residual");
+  topology::Field& solution = _fields->get("sensitivity solution");
 
   // Assemble residual over processors.
   residual.complete();
@@ -2046,7 +2046,7 @@
   topology::VecVisitorMesh dispTVisitor(fields->get("disp(t)"));
   const PetscScalar* dispTArray = dispTVisitor.localArray();
 
-  topology::Field<topology::Mesh>& dispTIncr = fields->get("dispIncr(t->t+dt)");
+  topology::Field& dispTIncr = fields->get("dispIncr(t->t+dt)");
   topology::VecVisitorMesh dispTIncrVisitor(dispTIncr);
   const PetscScalar* dispTIncrArray = dispTIncrVisitor.localArray();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -105,7 +105,7 @@
    * @param fields Solution fields
    */
   virtual
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -137,7 +137,7 @@
    */
   void adjustSolnLumped(topology::SolutionFields* fields,
 			const PylithScalar t,
-			const topology::Field<topology::Mesh>& jacobian);
+			const topology::Field& jacobian);
 
   /** Get vertex field associated with integrator.
    *
@@ -145,9 +145,8 @@
    * @param fields Solution fields.
    * @returns Vertex field.
    */
-  const topology::Field<topology::Mesh>&
-  vertexField(const char* name,
-	      const topology::SolutionFields* fields =0);
+  const topology::Field& vertexField(const char* name,
+				     const topology::SolutionFields* fields =0);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
 private :
@@ -157,8 +156,8 @@
    * @param tractions Field for tractions.
    * @param solution Solution over domain
    */
-  void _calcTractions(topology::Field<topology::Mesh>* tractions,
-          const topology::Field<topology::Mesh>& solution);
+  void _calcTractions(topology::Field* tractions,
+          const topology::Field& solution);
 
   /** Update relative displacement and velocity associated with
    * Lagrange vertex k corresponding to diffential velocity between

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -37,6 +37,7 @@
 
 #include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
 #include "spatialdata/spatialdb/SpatialDB.hh" // USES SpatialDB
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 #include <cmath> // USES pow(), sqrt()
 #include <strings.h> // USES strcasecmp()
@@ -46,7 +47,6 @@
 #include <sstream> // USES std::ostringstream
 #include <stdexcept> // USES std::runtime_error
 
-//#define PRECOMPUTE_GEOMETRY
 //#define DETAILED_EVENT_LOGGING
 
 // ----------------------------------------------------------------------
@@ -155,7 +155,7 @@
 // Integrate contribution of cohesive cells to residual term that do
 // not require assembly across cells, vertices, or processors.
 void
-pylith::faults::FaultCohesiveImpulses::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::faults::FaultCohesiveImpulses::integrateResidual(const topology::Field& residual,
 							 const PylithScalar t,
 							 topology::SolutionFields* const fields)
 { // integrateResidual
@@ -168,14 +168,14 @@
   const int setupEvent = _logger->eventId("FaIR setup");
   _logger->eventBegin(setupEvent);
 
-  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+  topology::Field& 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::Mesh>& orientation = _fields->get("orientation");
+  const topology::Field& orientation = _fields->get("orientation");
   FaultCohesiveLagrange::faultToGlobal(&dispRel, orientation);
 
   _logger->eventEnd(setupEvent);
@@ -187,7 +187,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field associated with integrator.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::faults::FaultCohesiveImpulses::vertexField(const char* name,
 						   const topology::SolutionFields* fields)
 { // vertexField
@@ -201,14 +201,14 @@
   const int cohesiveDim = _faultMesh->dimension();
   const int spaceDim = _quadrature->spaceDim();
 
-  const topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
+  const topology::Field& orientation = _fields->get("orientation");
 
   PylithScalar scale = 0.0;
   int fiberDim = 0;
   if (0 == strcasecmp("slip", name)) {
-    const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+    const topology::Field& dispRel = _fields->get("relative disp");
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(dispRel);
     buffer.label("slip");
     FaultCohesiveLagrange::globalToFault(&buffer, orientation);
@@ -218,7 +218,7 @@
     PetscSection orientationSection = _fields->get("orientation").petscSection();assert(orientationSection);
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 0, PETSC_DETERMINE, orientationVec);
     buffer.label("strike_dir");
     buffer.scale(1.0);
@@ -229,7 +229,7 @@
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     assert(orientationSection);assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 1, PETSC_DETERMINE, orientationVec);
     buffer.label("dip_dir");
     buffer.scale(1.0);
@@ -240,25 +240,25 @@
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     assert(orientationSection);assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& 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::Mesh>& amplitude = _fields->get("impulse amplitude");
+    topology::Field& amplitude = _fields->get("impulse amplitude");
     PYLITH_METHOD_RETURN(amplitude);
 
   } else if (0 == strcasecmp("area", name)) {
-    topology::Field<topology::Mesh>& area = _fields->get("area");
+    topology::Field& 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)");
+    const topology::Field& dispT = fields->get("disp(t)");
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     _calcTractionsChange(&buffer, dispT);
     PYLITH_METHOD_RETURN(buffer);
 
@@ -275,7 +275,7 @@
 
   // Satisfy return values
   assert(_fields);
-  const topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+  const topology::Field& buffer = _fields->get("buffer (vector)");
   PYLITH_METHOD_RETURN(buffer);
 } // vertexField
 
@@ -299,8 +299,8 @@
 
   // Create section to hold amplitudes of impulses.
   _fields->add("impulse amplitude", "impulse_amplitude");
-  topology::Field<topology::Mesh>& amplitude = _fields->get("impulse amplitude");
-  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+  topology::Field& amplitude = _fields->get("impulse amplitude");
+  topology::Field& dispRel = _fields->get("relative disp");
   const int fiberDim = 1;
   amplitude.newSection(dispRel, fiberDim);
   amplitude.allocate();
@@ -433,7 +433,7 @@
 // ----------------------------------------------------------------------
 // Set relative displacemet associated with impulse.
 void
-pylith::faults::FaultCohesiveImpulses::_setRelativeDisp(const topology::Field<topology::Mesh>& dispRel,
+pylith::faults::FaultCohesiveImpulses::_setRelativeDisp(const topology::Field& dispRel,
 							const int impulse)
 { // _setRelativeDisp
   PYLITH_METHOD_BEGIN;
@@ -447,7 +447,7 @@
   const spatialdata::geocoords::CoordSys* cs = _faultMesh->coordsys();assert(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::Mesh>& amplitude = _fields->get("impulse amplitude");
+  topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -106,7 +106,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -116,9 +116,8 @@
    * @param fields Solution fields.
    * @returns Vertex field.
    */
-  const topology::Field<topology::Mesh>&
-  vertexField(const char* name,
-	      const topology::SolutionFields* fields =0);
+  const topology::Field& vertexField(const char* name,
+				     const topology::SolutionFields* fields =0);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
 private :
@@ -137,7 +136,7 @@
    * @param dispRel Relative displacement field.
    * @parm impulse Index of impulse.
    */
-  void _setRelativeDisp(const topology::Field<topology::Mesh>& dispRel,
+  void _setRelativeDisp(const topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -121,7 +121,7 @@
 // Integrate contribution of cohesive cells to residual term that do
 // not require assembly across cells, vertices, or processors.
 void
-pylith::faults::FaultCohesiveKin::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::faults::FaultCohesiveKin::integrateResidual(const topology::Field& residual,
 						    const PylithScalar t,
 						    topology::SolutionFields* const fields)
 { // integrateResidual
@@ -134,7 +134,7 @@
   const int setupEvent = _logger->eventId("FaIR setup");
   _logger->eventBegin(setupEvent);
 
-  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+  topology::Field& dispRel = _fields->get("relative disp");
   dispRel.zero();
   // Compute slip field at current time step
   const srcs_type::const_iterator srcsEnd = _eqSrcs.end();
@@ -147,7 +147,7 @@
 
   // Transform slip from local (fault) coordinate system to relative
   // displacement field in global coordinate system
-  const topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
+  const topology::Field& orientation = _fields->get("orientation");
   FaultCohesiveLagrange::faultToGlobal(&dispRel, orientation);
 
   _logger->eventEnd(setupEvent);
@@ -160,7 +160,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field associated with integrator.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::faults::FaultCohesiveKin::vertexField(const char* name,
                                               const topology::SolutionFields* fields)
 { // vertexField
@@ -174,7 +174,7 @@
   const int cohesiveDim = _faultMesh->dimension();
   const int spaceDim = _quadrature->spaceDim();
 
-  const topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
+  const topology::Field& orientation = _fields->get("orientation");
 
   const int slipStrLen = strlen("final_slip");
   const int timeStrLen = strlen("slip_time");
@@ -182,9 +182,9 @@
   PylithScalar scale = 0.0;
   int fiberDim = 0;
   if (0 == strcasecmp("slip", name)) {
-    const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+    const topology::Field& dispRel = _fields->get("relative disp");
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(dispRel);
     buffer.label("slip");
     FaultCohesiveLagrange::globalToFault(&buffer, orientation);
@@ -194,7 +194,7 @@
     PetscSection orientationSection = _fields->get("orientation").petscSection();assert(orientationSection);
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 0, PETSC_DETERMINE, orientationVec);
     buffer.label("strike_dir");
     buffer.scale(1.0);
@@ -205,7 +205,7 @@
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     assert(orientationSection);assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, 1, PETSC_DETERMINE, orientationVec);
     buffer.label("dip_dir");
     buffer.scale(1.0);
@@ -216,7 +216,7 @@
     PetscVec orientationVec = _fields->get("orientation").localVector();assert(orientationVec);
     assert(orientationSection);assert(orientationVec);
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(orientationSection, cohesiveDim, PETSC_DETERMINE, orientationVec);
     buffer.label("normal_dir");
     buffer.scale(1.0);
@@ -230,7 +230,7 @@
     // Need to append name of rupture to final slip label. Because
     // Field is const, we use a buffer.
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     buffer.copy(s_iter->second->finalSlip());
     assert(value.length() > 0);
     const std::string& label = (_eqSrcs.size() > 1) ? 
@@ -247,7 +247,7 @@
     // Need to append name of rupture to final slip label. Because
     // Field is const, we use a buffer.
     _allocateBufferScalarField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (scalar)");
+    topology::Field& buffer = _fields->get("buffer (scalar)");
     buffer.copy(s_iter->second->slipTime());
     assert(value.length() > 0);
     const std::string& label = (_eqSrcs.size() > 1) ? 
@@ -257,9 +257,9 @@
 
   } else if (0 == strcasecmp("traction_change", name)) {
     assert(fields);
-    const topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
+    const topology::Field& dispT = fields->get("disp(t)");
     _allocateBufferVectorField();
-    topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+    topology::Field& buffer = _fields->get("buffer (vector)");
     _calcTractionsChange(&buffer, dispT);
     PYLITH_METHOD_RETURN(buffer);
 
@@ -276,7 +276,7 @@
 
   // Satisfy return values
   assert(_fields);
-  const topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+  const topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -82,7 +82,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -92,9 +92,8 @@
    * @param fields Solution fields.
    * @returns Vertex field.
    */
-  const topology::Field<topology::Mesh>&
-  vertexField(const char* name,
-	      const topology::SolutionFields* fields =0);
+  const topology::Field& vertexField(const char* name,
+				     const topology::SolutionFields* fields =0);
 
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -39,6 +39,7 @@
 
 #include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
 #include "spatialdata/spatialdb/SpatialDB.hh" // USES SpatialDB
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 #include <cmath> // USES pow(), sqrt()
 #include <strings.h> // USES strcasecmp()
@@ -97,12 +98,11 @@
   CohesiveTopology::createFaultParallel(_faultMesh, mesh, id(), label(), _useLagrangeConstraints);
   _initializeCohesiveInfo(mesh);
 
-  delete _fields;
-  _fields = new topology::Fields<topology::Field<topology::Mesh> >(*_faultMesh);
+  delete _fields; _fields = new topology::Fields(*_faultMesh);assert(_fields);
 
   // Allocate dispRel field
   _fields->add("relative disp", "relative_disp");
-  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+  topology::Field& dispRel = _fields->get("relative disp");
   dispRel.newSection(topology::FieldBase::VERTICES_FIELD, cs->spaceDim());
   dispRel.allocate();
   dispRel.vectorFieldType(topology::FieldBase::VECTOR);
@@ -121,7 +121,7 @@
 
 // ----------------------------------------------------------------------
 void
-pylith::faults::FaultCohesiveLagrange::splitField(topology::Field<topology::Mesh>* field)
+pylith::faults::FaultCohesiveLagrange::splitField(topology::Field* field)
 { // splitField
   PYLITH_METHOD_BEGIN;
 
@@ -165,7 +165,7 @@
 // ----------------------------------------------------------------------
 // Integrate contribution of cohesive cells to residual term.
 void
-pylith::faults::FaultCohesiveLagrange::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::faults::FaultCohesiveLagrange::integrateResidual(const topology::Field& residual,
 							 const PylithScalar t,
 							 topology::SolutionFields* const fields)
 { // integrateResidual
@@ -204,19 +204,19 @@
   topology::VecVisitorMesh residualVisitor(residual);
   PetscScalar* residualArray = residualVisitor.localArray();
 
-  topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
+  topology::Field& dispT = fields->get("disp(t)");
   topology::VecVisitorMesh dispTVisitor(dispT);
   PetscScalar* dispTArray = dispTVisitor.localArray();
 
-  topology::Field<topology::Mesh>& dispTIncr = fields->get("dispIncr(t->t+dt)");
+  topology::Field& dispTIncr = fields->get("dispIncr(t->t+dt)");
   topology::VecVisitorMesh dispTIncrVisitor(dispTIncr);
   PetscScalar* dispTIncrArray = dispTIncrVisitor.localArray();
 
-  topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+  topology::Field& dispRel = _fields->get("relative disp");
   topology::VecVisitorMesh dispRelVisitor(dispRel);
   PetscScalar* dispRelArray = dispRelVisitor.localArray();
 
-  topology::Field<topology::Mesh>& area = _fields->get("area");
+  topology::Field& area = _fields->get("area");
   topology::VecVisitorMesh areaVisitor(area);
   PetscScalar* areaArray = areaVisitor.localArray();
 
@@ -339,7 +339,7 @@
   const int spaceDim = _quadrature->spaceDim();
 
   // Get fields.
-  topology::Field<topology::Mesh>& area = _fields->get("area");
+  topology::Field& area = _fields->get("area");
   topology::VecVisitorMesh areaVisitor(area);
   const PetscScalar* areaArray = areaVisitor.localArray();
   
@@ -473,7 +473,7 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian matrix (A) associated with operator.
 void
-pylith::faults::FaultCohesiveLagrange::integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+pylith::faults::FaultCohesiveLagrange::integrateJacobian(topology::Field* jacobian,
 							 const PylithScalar t,
 							 topology::SolutionFields* const fields)
 { // integrateJacobian
@@ -602,7 +602,7 @@
   } // for
 
   // Get fields
-  topology::Field<topology::Mesh>& area = _fields->get("area");
+  topology::Field& area = _fields->get("area");
   topology::VecVisitorMesh areaVisitor(area);
   const PetscScalar* areaArray = areaVisitor.localArray();
 
@@ -717,7 +717,7 @@
 void
 pylith::faults::FaultCohesiveLagrange::adjustSolnLumped(topology::SolutionFields* const fields,
 							const PylithScalar t,
-                                                        const topology::Field<topology::Mesh>& jacobian)
+                                                        const topology::Field& jacobian)
 { // adjustSolnLumped
   PYLITH_METHOD_BEGIN;
 
@@ -754,22 +754,22 @@
   const int spaceDim = _quadrature->spaceDim();
 
   // Get fields
-  topology::Field<topology::Mesh>& area = _fields->get("area");
+  topology::Field& area = _fields->get("area");
   topology::VecVisitorMesh areaVisitor(area);
   const PetscScalar* areaArray = areaVisitor.localArray();
 
   topology::VecVisitorMesh jacobianVisitor(jacobian);
   const PetscScalar* jacobianArray = jacobianVisitor.localArray();
 
-  topology::Field<topology::Mesh>& residual = fields->get("residual");
+  topology::Field& residual = fields->get("residual");
   topology::VecVisitorMesh residualVisitor(residual);
   const PetscScalar* residualArray = residualVisitor.localArray();
 
-  topology::Field<topology::Mesh>& dispTIncr = fields->get("dispIncr(t->t+dt)");
+  topology::Field& dispTIncr = fields->get("dispIncr(t->t+dt)");
   topology::VecVisitorMesh dispTIncrVisitor(dispTIncr);
   PetscScalar* dispTIncrArray = dispTIncrVisitor.localArray();
 
-  topology::Field<topology::Mesh>& dispTIncrAdj = fields->get("dispIncr adjust");
+  topology::Field& dispTIncrAdj = fields->get("dispIncr adjust");
   topology::VecVisitorMesh dispTIncrAdjVisitor(dispTIncrAdj);
   PetscScalar* dispTIncrAdjArray = dispTIncrAdjVisitor.localArray();
 
@@ -964,7 +964,7 @@
 // ----------------------------------------------------------------------
 // Verify constraints are acceptable.
 void
-pylith::faults::FaultCohesiveLagrange::checkConstraints(const topology::Field<topology::Mesh>& solution) const
+pylith::faults::FaultCohesiveLagrange::checkConstraints(const topology::Field& solution) const
 { // checkConstraints
   PYLITH_METHOD_BEGIN;
 
@@ -1143,8 +1143,8 @@
 // Transform field from local (fault) coordinate system to
 // global coordinate system.
 void
-pylith::faults::FaultCohesiveLagrange::faultToGlobal(topology::Field<topology::Mesh>* field,
-						     const topology::Field<topology::Mesh>& faultOrientation)
+pylith::faults::FaultCohesiveLagrange::faultToGlobal(topology::Field* field,
+						     const topology::Field& faultOrientation)
 { // faultToGlobal
   PYLITH_METHOD_BEGIN;
 
@@ -1198,8 +1198,8 @@
 // Transform field from global coordinate system to local (fault)
 // coordinate system.
 void
-pylith::faults::FaultCohesiveLagrange::globalToFault(topology::Field<topology::Mesh>* field,
-						     const topology::Field<topology::Mesh>& faultOrientation)
+pylith::faults::FaultCohesiveLagrange::globalToFault(topology::Field* field,
+						     const topology::Field& faultOrientation)
 { // globalToFault
   PYLITH_METHOD_BEGIN;
 
@@ -1293,8 +1293,8 @@
   // Allocate orientation field.
   scalar_array orientationVertex(orientationSize);
   _fields->add("orientation", "orientation");
-  topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
-  const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+  topology::Field& orientation = _fields->get("orientation");
+  const topology::Field& 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);
@@ -1551,8 +1551,8 @@
 
   // Allocate area field.
   _fields->add("area", "area");
-  topology::Field<topology::Mesh>& area = _fields->get("area");
-  const topology::Field<topology::Mesh>& dispRel = _fields->get("relative disp");
+  topology::Field& area = _fields->get("area");
+  const topology::Field& dispRel = _fields->get("relative disp");
   area.newSection(dispRel, 1);
   area.allocate();
   area.vectorFieldType(topology::FieldBase::SCALAR);
@@ -1605,8 +1605,8 @@
 // ----------------------------------------------------------------------
 // Compute change in tractions on fault surface using solution.
 void
-pylith::faults::FaultCohesiveLagrange::_calcTractionsChange(topology::Field<topology::Mesh>* tractions,
-							    const topology::Field<topology::Mesh>& dispT)
+pylith::faults::FaultCohesiveLagrange::_calcTractionsChange(topology::Field* tractions,
+							    const topology::Field& dispT)
 { // _calcTractionsChange
   PYLITH_METHOD_BEGIN;
 
@@ -1625,13 +1625,13 @@
   topology::VecVisitorMesh dispTVisitor(dispT);
   const PetscScalar* dispTArray = dispTVisitor.localArray();
 
-  topology::Field<topology::Mesh>& orientation = _fields->get("orientation");
+  topology::Field& 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::Mesh>& dispRel = _fields->get("relative disp");
+    const topology::Field& dispRel = _fields->get("relative disp");
     tractions->cloneSection(dispRel);
   } // if
   tractions->zero();
@@ -1687,8 +1687,8 @@
   // displacement field.
   assert(_faultMesh);
   _fields->add("buffer (vector)", "buffer");
-  topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
-  const topology::Field<topology::Mesh>& dispRel = 
+  topology::Field& buffer = _fields->get("buffer (vector)");
+  const topology::Field& dispRel = 
     _fields->get("relative disp");
   buffer.cloneSection(dispRel);
   buffer.zero();
@@ -1711,7 +1711,7 @@
   // Create vector field; use same shape/chart as area field.
   assert(_faultMesh);
   _fields->add("buffer (scalar)", "buffer");
-  topology::Field<topology::Mesh>& buffer = _fields->get("buffer (scalar)");
+  topology::Field& buffer = _fields->get("buffer (scalar)");
   buffer.newSection(topology::FieldBase::VERTICES_FIELD, 1);
   buffer.allocate();
   buffer.vectorFieldType(topology::FieldBase::SCALAR);
@@ -1822,7 +1822,7 @@
 
 // ----------------------------------------------------------------------
 // Get cell field associated with integrator.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::faults::FaultCohesiveLagrange::cellField(const char* name,
                                                  const topology::SolutionFields* fields)
 { // cellField
@@ -1837,7 +1837,7 @@
 
     const int fiberDim = 1;
     _fields->add("partition", "partition", pylith::topology::FieldBase::CELLS_FIELD, fiberDim);
-    topology::Field<topology::Mesh>& partition = _fields->get("partition");
+    topology::Field& partition = _fields->get("partition");
     partition.allocate();
     topology::VecVisitorMesh partitionVisitor(partition);
     PetscScalar* partitionArray = partitionVisitor.localArray();
@@ -1861,7 +1861,7 @@
 
   // Satisfy return values
   assert(_fields);
-  const topology::Field<topology::Mesh>& buffer = _fields->get("buffer (vector)");
+  const topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -116,7 +116,7 @@
    *
    * @param field Solution field.
    */
-  void splitField(topology::Field<topology::Mesh>* field);
+  void splitField(topology::Field* field);
 
   /** Integrate contributions to residual term (r) for operator that
    * require assembly processors.
@@ -126,9 +126,9 @@
    * @param fields Solution fields
    */
   virtual
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
-				  const PylithScalar t,
-				  topology::SolutionFields* const fields);
+  void integrateResidual(const topology::Field& residual,
+			 const PylithScalar t,
+			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
    * operator that require assembly across processors.
@@ -139,8 +139,8 @@
    */
   virtual
   void integrateJacobian(topology::Jacobian* jacobian,
-				  const PylithScalar t,
-				  topology::SolutionFields* const fields);
+			 const PylithScalar t,
+			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
    * operator that require assembly processors.
@@ -150,9 +150,9 @@
    * @param fields Solution fields
    */
   virtual
-  void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
-				  const PylithScalar t,
-				  topology::SolutionFields* const fields);
+  void integrateJacobian(topology::Field* jacobian,
+			 const PylithScalar t,
+			 topology::SolutionFields* const fields);
 
   /** Compute custom fault precoditioner using Schur complement.
    *
@@ -180,7 +180,7 @@
   virtual
   void adjustSolnLumped(topology::SolutionFields* fields,
 			const PylithScalar t,
-			const topology::Field<topology::Mesh>& jacobian);
+			const topology::Field& jacobian);
 
   /** Verify configuration is acceptable.
    *
@@ -194,7 +194,7 @@
    * @param field Solution field.
    */
   virtual
-  void checkConstraints(const topology::Field<topology::Mesh>& solution) const;
+  void checkConstraints(const topology::Field& solution) const;
 
   /** Get cell field associated with integrator.
    *
@@ -202,7 +202,7 @@
    * @param fields Solution fields.
    * @returns Cell field.
    */
-  const topology::Field<topology::Mesh>&
+  const topology::Field&
   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::Mesh>* field,
-		     const topology::Field<topology::Mesh>& faultOrientation);
+  void faultToGlobal(topology::Field* field,
+		     const topology::Field& 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::Mesh>* field,
-		     const topology::Field<topology::Mesh>& faultOrientation);
+  void globalToFault(topology::Field* field,
+		     const topology::Field& faultOrientation);
 
   // PROTECTED STRUCTS //////////////////////////////////////////////////
 protected :
@@ -253,8 +253,8 @@
    * @param tractions Field for tractions.
    * @param solution Solution over domain
    */
-  void _calcTractionsChange(topology::Field<topology::Mesh>* tractions,
-          const topology::Field<topology::Mesh>& solution);
+  void _calcTractionsChange(topology::Field* tractions,
+			    const topology::Field& solution);
 
   /// Allocate buffer for vector field.
   void _allocateBufferVectorField(void);

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -72,9 +72,7 @@
   CohesiveTopology::createFaultParallel(_faultMesh, mesh, id(), label(), useLagrangeConstraints());
 
   // Reset fields.
-  delete _fields; 
-  _fields = 
-    new topology::Fields<topology::Field<topology::Mesh> >(*_faultMesh);
+  delete _fields; _fields = new topology::Fields(*_faultMesh);assert(_fields);
 
   // Initialize quadrature geometry.
   _quadrature->initializeGeometry();
@@ -85,7 +83,7 @@
 // ----------------------------------------------------------------------
 // Integrate contribution of cohesive cells to residual term.
 void
-pylith::faults::FaultCohesiveTract::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::faults::FaultCohesiveTract::integrateResidual(const topology::Field& residual,
 						      const PylithScalar t,
 						      topology::SolutionFields* const fields)
 { // integrateResidual
@@ -158,7 +156,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field associated with integrator.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::faults::FaultCohesiveTract::vertexField(const char* name,
 						const topology::SolutionFields* fields)
 { // vertexField
@@ -167,7 +165,7 @@
 
 // ----------------------------------------------------------------------
 // Get cell field associated with integrator.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -68,7 +68,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -96,9 +96,8 @@
    *
    * @returns Vertex field.
    */
-  const topology::Field<topology::Mesh>&
-  vertexField(const char* name,
-	      const topology::SolutionFields* fields =0);
+  const topology::Field& vertexField(const char* name,
+				     const topology::SolutionFields* fields =0);
   
   /** Get cell field associated with integrator.
    *
@@ -107,9 +106,8 @@
    *
    * @returns Cell field.
    */
-  const topology::Field<topology::Mesh>&
-  cellField(const char* name,
-	    const topology::SolutionFields* fields =0);
+  const topology::Field& cellField(const char* name,
+				   const topology::SolutionFields* fields =0);
 
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -94,10 +94,10 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
-  assert(_parameters);
+  delete _parameters; _parameters = new topology::Fields(faultMesh);assert(_parameters);
+
   _parameters->add("final slip", "final_slip");
-  topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
+  topology::Field& 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::Mesh>& slipTime = _parameters->get("slip time");
+  topology::Field& 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::Mesh>& riseTime = _parameters->get("rise time");
+  topology::Field& 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::Mesh>* slip,
+pylith::faults::LiuCosSlipFn::slip(topology::Field* slip,
 				   const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -249,15 +249,15 @@
   const PetscInt vEnd = verticesStratum.end();
 
   // Get sections
-  const topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
+  const topology::Field& finalSlip = _parameters->get("final slip");
   topology::VecVisitorMesh finalSlipVisitor(finalSlip);
   const PetscScalar* finalSlipArray = finalSlipVisitor.localArray();
 
-  const topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
+  const topology::Field& slipTime = _parameters->get("slip time");
   topology::VecVisitorMesh slipTimeVisitor(slipTime);
   const PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
-  const topology::Field<topology::Mesh>& riseTime = _parameters->get("rise time");
+  const topology::Field& 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::Mesh>&
+const pylith::topology::Field&
 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::Mesh>&
+const pylith::topology::Field&
 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -95,20 +95,20 @@
    *
    * @returns Slip vector as left-lateral/reverse/normal.
    */
-  void slip(topology::Field<topology::Mesh>* const slipField,
+  void slip(topology::Field* const slipField,
 	    const PylithScalar t);
   
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::Mesh>& finalSlip(void);
+  const topology::Field& finalSlip(void);
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::Mesh>& slipTime(void);
+  const topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -52,7 +52,7 @@
   
 // ----------------------------------------------------------------------
 // Get parameter fields.
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
+const pylith::topology::Fields*
 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -72,7 +72,7 @@
    * @param t Time t.
    */
   virtual
-  void slip(topology::Field<topology::Mesh>* const slipField,
+  void slip(topology::Field* const slipField,
 	    const PylithScalar t) = 0;
   
   /** Get final slip.
@@ -80,27 +80,25 @@
    * @returns Final slip.
    */
   virtual
-  const topology::Field<topology::Mesh>& finalSlip(void) = 0;
+  const topology::Field& finalSlip(void) = 0;
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
   virtual
-  const topology::Field<topology::Mesh>& slipTime(void) = 0;
+  const topology::Field& slipTime(void) = 0;
 
   /** Get parameter fields.
    *
    * @returns Parameter fields.
    */
-  const topology::Fields<topology::Field<topology::Mesh> >*
-  parameterFields(void) const;
+  const topology::Fields* parameterFields(void) const;
 
 // PROTECTED MEMBERS ////////////////////////////////////////////////////
 protected :
 
-  /// Parameters for slip time function.
-  topology::Fields<topology::Field<topology::Mesh> >* _parameters;
+  topology::Fields* _parameters; ///< Parameters for slip time function.
 
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -90,11 +90,10 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
-  assert(_parameters);
+  delete _parameters; _parameters = new topology::Fields(faultMesh);assert(_parameters);
 
   _parameters->add("final slip", "final_slip");
-  topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
+  topology::Field& finalSlip = _parameters->get("final slip");
   finalSlip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   finalSlip.allocate();
   finalSlip.scale(lengthScale);
@@ -103,7 +102,7 @@
   PetscScalar* finalSlipArray = finalSlipVisitor.localArray();
 
   _parameters->add("slip time", "slip_time");
-  topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
+  topology::Field& slipTime = _parameters->get("slip time");
   slipTime.newSection(finalSlip, 1);
   slipTime.allocate();
   slipTime.scale(timeScale);
@@ -202,7 +201,7 @@
 // ----------------------------------------------------------------------
 // Get slip on fault surface at time t.
 void
-pylith::faults::StepSlipFn::slip(topology::Field<topology::Mesh>* slip,
+pylith::faults::StepSlipFn::slip(topology::Field* slip,
 				 const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -217,11 +216,11 @@
   const PetscInt vEnd = verticesStratum.end();
 
   // Get sections
-  const topology::Field<topology::Mesh>& finalSlip = _parameters->get("final slip");
+  const topology::Field& finalSlip = _parameters->get("final slip");
   topology::VecVisitorMesh finalSlipVisitor(finalSlip);
   const PetscScalar* finalSlipArray = finalSlipVisitor.localArray();
 
-  const topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
+  const topology::Field& slipTime = _parameters->get("slip time");
   topology::VecVisitorMesh slipTimeVisitor(slipTime);
   const PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
@@ -253,7 +252,7 @@
 
 // ----------------------------------------------------------------------
 // Get final slip.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::faults::StepSlipFn::finalSlip(void)
 { // finalSlip
   PYLITH_METHOD_BEGIN;
@@ -263,7 +262,7 @@
 
 // ----------------------------------------------------------------------
 // Get time when slip begins at each point.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -86,20 +86,20 @@
    *
    * @returns Slip vector as left-lateral/reverse/normal.
    */
-  void slip(topology::Field<topology::Mesh>* const slipField,
+  void slip(topology::Field* const slipField,
 	    const PylithScalar t);
   
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::Mesh>& finalSlip(void);
+  const topology::Field& finalSlip(void);
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::Mesh>& slipTime(void);
+  const topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -96,11 +96,10 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  delete _parameters; _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
-  assert(_parameters);
-  _parameters->add("slip amplitude", "slip_amplitude");
+  delete _parameters; _parameters = new topology::Fields(faultMesh);assert(_parameters);
 
-  topology::Field<topology::Mesh>& slipAmplitude = _parameters->get("slip amplitude");
+  _parameters->add("slip amplitude", "slip_amplitude");
+  topology::Field& slipAmplitude = _parameters->get("slip amplitude");
   slipAmplitude.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slipAmplitude.allocate();
   slipAmplitude.scale(lengthScale);
@@ -109,7 +108,7 @@
   PetscScalar* slipAmplitudeArray = slipAmplitudeVisitor.localArray();
 
   _parameters->add("slip time", "slip_time");
-  topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
+  topology::Field& slipTime = _parameters->get("slip time");
   slipTime.newSection(slipAmplitude, 1);
   slipTime.allocate();
   slipTime.scale(timeScale);
@@ -212,7 +211,7 @@
 // ----------------------------------------------------------------------
 // Get slip on fault surface at time t.
 void
-pylith::faults::TimeHistorySlipFn::slip(topology::Field<topology::Mesh>* slip,
+pylith::faults::TimeHistorySlipFn::slip(topology::Field* slip,
 					const PylithScalar t)
 { // slip
   PYLITH_METHOD_BEGIN;
@@ -228,11 +227,11 @@
   const PetscInt vEnd = verticesStratum.end();
 
   // Get sections
-  const topology::Field<topology::Mesh>& slipAmplitude = _parameters->get("slip amplitude");
+  const topology::Field& slipAmplitude = _parameters->get("slip amplitude");
   topology::VecVisitorMesh slipAmplitudeVisitor(slipAmplitude);
   const PetscScalar* slipAmplitudeArray = slipAmplitudeVisitor.localArray();
 
-  const topology::Field<topology::Mesh>& slipTime = _parameters->get("slip time");
+  const topology::Field& slipTime = _parameters->get("slip time");
   topology::VecVisitorMesh slipTimeVisitor(slipTime);
   const PetscScalar* slipTimeArray = slipTimeVisitor.localArray();
 
@@ -275,7 +274,7 @@
 
 // ----------------------------------------------------------------------
 // Get final slip.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::faults::TimeHistorySlipFn::finalSlip(void)
 { // finalSlip
   PYLITH_METHOD_BEGIN;
@@ -285,7 +284,7 @@
 
 // ----------------------------------------------------------------------
 // Get time when slip begins at each point.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -92,20 +92,20 @@
    *
    * @returns Slip vector as left-lateral/reverse/normal.
    */
-  void slip(topology::Field<topology::Mesh>* const slipField,
+  void slip(topology::Field* const slipField,
 	    const PylithScalar t);
   
   /** Get final slip.
    *
    * @returns Final slip.
    */
-  const topology::Field<topology::Mesh>& finalSlip(void);
+  const topology::Field& finalSlip(void);
 
   /** Get time when slip begins at each point.
    *
    * @returns Time when slip begins.
    */
-  const topology::Field<topology::Mesh>& slipTime(void);
+  const topology::Field& slipTime(void);
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -78,7 +78,7 @@
 
 // ----------------------------------------------------------------------
 // Get parameter fields.
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
+const pylith::topology::Fields*
 pylith::faults::TractPerturbation::parameterFields(void) const
 { // parameterFields
   return _parameters;
@@ -88,7 +88,7 @@
 // Initialize traction perturbation function.
 void
 pylith::faults::TractPerturbation::initialize(const topology::Mesh& faultMesh,
-					      const topology::Field<topology::Mesh>& faultOrientation, 
+					      const topology::Field& faultOrientation, 
 					      const spatialdata::units::Nondimensional& normalizer)
 { // initialize
   PYLITH_METHOD_BEGIN;
@@ -101,42 +101,41 @@
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();assert(cs);
   const int spaceDim = cs->spaceDim();
 
-  delete _parameters; 
-  _parameters = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
+  delete _parameters; _parameters = new topology::Fields(faultMesh);assert(_parameters);
 
   // Create section to hold time dependent values
   _parameters->add("value", "traction", topology::FieldBase::VERTICES_FIELD, spaceDim);
-  topology::Field<topology::Mesh>& value = _parameters->get("value");
+  topology::Field& 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::Mesh>& initial = _parameters->get("initial");
+    topology::Field& 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::Mesh>& rate = _parameters->get("rate");
+    topology::Field& 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::Mesh>& rateTime = _parameters->get("rate time");
+    topology::Field& 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::Mesh>& change = _parameters->get("change");
+    topology::Field& 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::Mesh>& changeTime = _parameters->get("change time");
+    topology::Field& changeTime = _parameters->get("change time");
     changeTime.vectorFieldType(topology::FieldBase::SCALAR);
     changeTime.scale(timeScale);
     changeTime.allocate();
@@ -170,7 +169,7 @@
       } // switch
     _queryDB("initial", _dbInitial, spaceDim, pressureScale, normalizer);
     _dbInitial->close();
-    pylith::topology::Field<pylith::topology::Mesh>& initial = _parameters->get("initial");
+    pylith::topology::Field& initial = _parameters->get("initial");
     FaultCohesiveLagrange::faultToGlobal(&initial, faultOrientation);
   } // if
 
@@ -207,7 +206,7 @@
     _dbRate->queryVals(timeNames, 1);
     _queryDB("rate time", _dbRate, 1, timeScale, normalizer);
     _dbRate->close();
-    pylith::topology::Field<pylith::topology::Mesh>& rate = _parameters->get("rate");
+    topology::Field& rate = _parameters->get("rate");
     FaultCohesiveLagrange::faultToGlobal(&rate, faultOrientation);
   } // if
 
@@ -243,7 +242,7 @@
     _dbChange->queryVals(timeNames, 1);
     _queryDB("change time", _dbChange, 1, timeScale, normalizer);
     _dbChange->close();
-    pylith::topology::Field<pylith::topology::Mesh>& change = _parameters->get("change");
+    topology::Field& change = _parameters->get("change");
     FaultCohesiveLagrange::faultToGlobal(&change, faultOrientation);
 
     if (_dbTimeHistory)
@@ -273,27 +272,27 @@
   const spatialdata::geocoords::CoordSys* cs = _parameters->mesh().coordsys();assert(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::Mesh>& valueField = _parameters->get("value");
+  topology::Field& valueField = _parameters->get("value");
   topology::VecVisitorMesh valueVisitor(valueField);
   PetscScalar* valueArray = valueVisitor.localArray();
   
-  topology::Field<topology::Mesh>* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
+  topology::Field* initialField = (_dbInitial) ? &_parameters->get("initial") : 0;
   topology::VecVisitorMesh* initialVisitor = (initialField) ? new topology::VecVisitorMesh(*initialField) : 0;
   PetscScalar* initialArray = (initialVisitor) ? initialVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
+  topology::Field* rateField = (_dbRate) ? &_parameters->get("rate") : 0;
   topology::VecVisitorMesh* rateVisitor = (rateField) ? new topology::VecVisitorMesh(*rateField) : 0;
   PetscScalar* rateArray = (rateVisitor) ? rateVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* rateTimeField = (_dbRate) ? &_parameters->get("rate time") : 0;
+  topology::Field* 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::Mesh>* changeField = (_dbChange) ? &_parameters->get("change") : 0;
+  topology::Field* changeField = (_dbChange) ? &_parameters->get("change") : 0;
   topology::VecVisitorMesh* changeVisitor = (changeField) ? new topology::VecVisitorMesh(*changeField) : 0;
   PetscScalar* changeArray = (changeVisitor) ? changeVisitor->localArray() : NULL;
 
-  topology::Field<topology::Mesh>* changeTimeField = (_dbChange) ? &_parameters->get("change time") : 0;
+  topology::Field* changeTimeField = (_dbChange) ? &_parameters->get("change time") : 0;
   topology::VecVisitorMesh* changeTimeVisitor = (changeTimeField) ? new topology::VecVisitorMesh(*changeTimeField) : 0;
   PetscScalar* changeTimeArray = (changeTimeVisitor) ? changeTimeVisitor->localArray() : NULL;
 
@@ -390,7 +389,7 @@
 
 // ----------------------------------------------------------------------
 // Get vertex field with traction perturbation information.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::faults::TractPerturbation::vertexField(const char* name,
 					       const topology::SolutionFields* const fields)
 { // vertexField
@@ -462,7 +461,7 @@
   topology::CoordsVisitor coordsVisitor(dmMesh);
   PetscScalar *coordArray = coordsVisitor.localArray();
 
-  topology::Field<topology::Mesh>& parametersField = _parameters->get(name);
+  topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TractPerturbation.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -64,7 +64,7 @@
    *
    * @returns Parameter fields.
    */
-  const topology::Fields<topology::Field<topology::Mesh> >* parameterFields(void) const;
+  const topology::Fields* parameterFields(void) const;
   
   /** Initialize slip time function.
    *
@@ -73,7 +73,7 @@
    * @param normalizer Nondimensionalization of scales.
    */
   void initialize(const topology::Mesh& faultMesh,
-		  const topology::Field<topology::Mesh>& faultOrientation,
+		  const topology::Field& faultOrientation,
 		  const spatialdata::units::Nondimensional& normalizer);
 
   /** Calculate spatial and temporal variation of value.
@@ -96,10 +96,9 @@
    *
    * @returns Traction vector field.
    */
-  const topology::Field<topology::Mesh>&
-  vertexField(const char* name,
-	      const topology::SolutionFields* const fields =0);
-
+  const topology::Field& vertexField(const char* name,
+				     const topology::SolutionFields* const fields =0);
+  
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
 
@@ -126,8 +125,8 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
   
-  /// Parameters for perturbations.
-  topology::Fields<topology::Field<topology::Mesh> >* _parameters;
+  
+  topology::Fields* _parameters; ///< Parameters for perturbations.
 
   /// Time scale for current time.
   PylithScalar _timeScale;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Constraint.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Constraint.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Constraint.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -49,7 +49,7 @@
 void
 pylith::feassemble::Constraint::normalizer(const spatialdata::units::Nondimensional& dim)
 { // normalizer
-  if (0 == _normalizer)
+  if (!_normalizer)
     _normalizer = new spatialdata::units::Nondimensional(dim);
   else
     *_normalizer = dim;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Constraint.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Constraint.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Constraint.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -71,14 +71,14 @@
    * @param field Solution field
    */
   virtual
-  void setConstraintSizes(const topology::Field<topology::Mesh>& field) = 0;
+  void setConstraintSizes(const topology::Field& field) = 0;
 
   /** Set which degrees of freedom are constrained at points in field.
    *
    * @param field Solution field
    */
   virtual
-  void setConstraints(const topology::Field<topology::Mesh>& field) = 0;
+  void setConstraints(const topology::Field& field) = 0;
 
   /** Set values in field.
    *
@@ -87,7 +87,7 @@
    */
   virtual
   void setField(const PylithScalar t,
-		const topology::Field<topology::Mesh>& field) = 0;
+		const topology::Field& field) = 0;
 
   /** Set increment in values from t0 to t1 in field.
    *
@@ -98,7 +98,7 @@
   virtual
   void setFieldIncr(const PylithScalar t0,
 		    const PylithScalar t1,
-		    const topology::Field<topology::Mesh>& field) = 0;
+		    const topology::Field& field) = 0;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -130,7 +130,7 @@
 // ----------------------------------------------------------------------
 // Integrate constributions to residual term (r) for operator.
 void
-pylith::feassemble::ElasticityExplicit::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::feassemble::ElasticityExplicit::integrateResidual(const topology::Field& residual,
 							  const PylithScalar t,
 							  topology::SolutionFields* const fields)
 { // integrateResidual
@@ -404,7 +404,7 @@
 // ----------------------------------------------------------------------
 // Compute matrix associated with operator.
 void
-pylith::feassemble::ElasticityExplicit::integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+pylith::feassemble::ElasticityExplicit::integrateJacobian(topology::Field* jacobian,
 							  const PylithScalar t,
 							  topology::SolutionFields* fields)
 { // integrateJacobian

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -111,7 +111,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -122,7 +122,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+  void integrateJacobian(topology::Field* jacobian,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -125,7 +125,7 @@
 // ----------------------------------------------------------------------
 // Integrate constributions to residual term (r) for operator.
 void
-pylith::feassemble::ElasticityExplicitLgDeform::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::feassemble::ElasticityExplicitLgDeform::integrateResidual(const topology::Field& residual,
 								  const PylithScalar t,
 								  topology::SolutionFields* const fields)
 { // integrateResidualLumped
@@ -354,7 +354,7 @@
 // ----------------------------------------------------------------------
 // Compute matrix associated with operator.
 void
-pylith::feassemble::ElasticityExplicitLgDeform::integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+pylith::feassemble::ElasticityExplicitLgDeform::integrateJacobian(topology::Field* jacobian,
 								  const PylithScalar t,
 								  topology::SolutionFields* fields)
 { // integrateJacobian

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -112,7 +112,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -123,7 +123,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+  void integrateJacobian(topology::Field* jacobian,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -135,7 +135,7 @@
 // Integrate constributions to residual term (r) for operator.
 void
 pylith::feassemble::ElasticityExplicitTet4::integrateResidual(
-        const topology::Field<topology::Mesh>& residual,
+        const topology::Field& residual,
         const PylithScalar t,
         topology::SolutionFields* const fields)
 { // integrateResidual
@@ -447,7 +447,7 @@
 // ----------------------------------------------------------------------
 // Compute matrix associated with operator.
 void
-pylith::feassemble::ElasticityExplicitTet4::integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+pylith::feassemble::ElasticityExplicitTet4::integrateJacobian(topology::Field* jacobian,
 							      const PylithScalar t,
 							      topology::SolutionFields* fields)
 { // integrateJacobian

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -111,7 +111,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -122,7 +122,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+  void integrateJacobian(topology::Field* jacobian,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -134,7 +134,7 @@
 // ----------------------------------------------------------------------
 // Integrate constributions to residual term (r) for operator.
 void
-pylith::feassemble::ElasticityExplicitTri3::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::feassemble::ElasticityExplicitTri3::integrateResidual(const topology::Field& residual,
 							      const PylithScalar t,
 							      topology::SolutionFields* const fields)
 { // integrateResidual
@@ -409,7 +409,7 @@
 // Compute matrix associated with operator.
 void
 pylith::feassemble::ElasticityExplicitTri3::integrateJacobian(
-			    topology::Field<topology::Mesh>* jacobian,
+			    topology::Field* jacobian,
 			    const PylithScalar t,
 			    topology::SolutionFields* fields)
 { // integrateJacobian

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -111,7 +111,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -122,7 +122,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+  void integrateJacobian(topology::Field* jacobian,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -107,7 +107,7 @@
 
 // ----------------------------------------------------------------------
 void
-pylith::feassemble::ElasticityImplicit::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::feassemble::ElasticityImplicit::integrateResidual(const topology::Field& residual,
 							  const PylithScalar t,
 							  topology::SolutionFields* const fields)
 { // integrateResidual

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -102,12 +102,9 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
-  void integrateResidualOld(const topology::Field<topology::Mesh>& residual,
-			 const PylithScalar t,
-			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
    * operator.

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -104,7 +104,7 @@
 // Integrate constributions to residual term (r) for operator.
 void
 pylith::feassemble::ElasticityImplicitLgDeform::integrateResidual(
-			  const topology::Field<topology::Mesh>& residual,
+			  const topology::Field& residual,
 			  const PylithScalar t,
 			  topology::SolutionFields* const fields)
 { // integrateResidual

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -103,7 +103,7 @@
    * @param t Current time
    * @param fields Solution fields
    */
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -133,7 +133,7 @@
    * @param field Solution field.
    */
   virtual
-  void splitField(topology::Field<topology::Mesh>* field);
+  void splitField(topology::Field* field);
 
   /** Integrate contributions to residual term (r) for operator.
    *
@@ -142,7 +142,7 @@
    * @param fields Solution fields
    */
   virtual 
-  void integrateResidual(const topology::Field<topology::Mesh>& residual,
+  void integrateResidual(const topology::Field& residual,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -153,7 +153,7 @@
    * @param fields Solution fields
    */
   virtual
-  void integrateResidualLumped(const topology::Field<topology::Mesh>& residual,
+  void integrateResidualLumped(const topology::Field& residual,
        const PylithScalar t,
        topology::SolutionFields* const fields);
 
@@ -177,7 +177,7 @@
    * @param fields Solution fields
    */
   virtual
-  void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+  void integrateJacobian(topology::Field* jacobian,
 			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
@@ -224,7 +224,7 @@
   virtual
   void adjustSolnLumped(topology::SolutionFields* fields,
 			const PylithScalar t,
-			const topology::Field<topology::Mesh>& jacobian);
+			const topology::Field& jacobian);
 
   /** Verify configuration is acceptable.
    *
@@ -238,7 +238,7 @@
    * @param field Solution field.
    */
   virtual
-  void checkConstraints(const topology::Field<topology::Mesh>& solution) const;
+  void checkConstraints(const topology::Field& solution) const;
 
 // PROTECTED METHODS ////////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.icc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.icc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -50,13 +50,13 @@
 // Split solution field for separate preconditioning.
 inline
 void
-pylith::feassemble::Integrator::splitField(topology::Field<topology::Mesh>* field) {
+pylith::feassemble::Integrator::splitField(topology::Field* field) {
 } // splitField
   
 // Integrate contributions to residual term (r) for operator.
 inline
 void
-pylith::feassemble::Integrator::integrateResidual(const topology::Field<topology::Mesh>& residual,
+pylith::feassemble::Integrator::integrateResidual(const topology::Field& residual,
 						  const PylithScalar t,
 						  topology::SolutionFields* const fields) {
 } // integrateResidual
@@ -64,7 +64,7 @@
 // Integrate contributions to residual term (r) for operator.
 inline
 void
-pylith::feassemble::Integrator::integrateResidualLumped(const topology::Field<topology::Mesh>& residual,
+pylith::feassemble::Integrator::integrateResidualLumped(const topology::Field& residual,
 							const PylithScalar t,
 							topology::SolutionFields* const fields) {
   integrateResidual(residual, t, fields);
@@ -84,7 +84,7 @@
 // operator.
 inline
 void
-pylith::feassemble::Integrator::integrateJacobian(topology::Field<topology::Mesh>* jacobian,
+pylith::feassemble::Integrator::integrateJacobian(topology::Field* jacobian,
 						  const PylithScalar t,
 						  topology::SolutionFields* const fields) {
   _needNewJacobian = false;
@@ -120,13 +120,13 @@
 void
 pylith::feassemble::Integrator::adjustSolnLumped(topology::SolutionFields* fields,
 						 const PylithScalar t,
-						 const topology::Field<topology::Mesh>& jacobian) {
+						 const topology::Field& jacobian) {
 } // adjustSolnLumped
 
 // Verify constraints are acceptable.
 inline
 void
-pylith::feassemble::Integrator::checkConstraints(const topology::Field<topology::Mesh>& solution) const {
+pylith::feassemble::Integrator::checkConstraints(const topology::Field& solution) const {
 } // checkConstraints
 
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -282,7 +282,7 @@
 
 // ----------------------------------------------------------------------
 // Get cell field associated with integrator.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::feassemble::IntegratorElasticity::cellField(const char* name,
 						    const topology::Mesh& mesh,
 						    topology::SolutionFields* fields)
@@ -293,7 +293,7 @@
   assert(_normalizer);
 
   if (!_outputFields) {
-    _outputFields = new topology::Fields<topology::Field<topology::Mesh> >(mesh);assert(_outputFields);
+    _outputFields = new topology::Fields(mesh);assert(_outputFields);
   } // if
   
   if (0 == strcasecmp(name, "total_strain")) {
@@ -302,7 +302,7 @@
       // total strain is available as a state variable
       assert(fields);
       _allocateTensorField(mesh);
-      topology::Field<topology::Mesh>& buffer = _outputFields->get("buffer (tensor)");    
+      topology::Field& buffer = _outputFields->get("buffer (tensor)");    
       _material->getField(&buffer, "total_strain");
       buffer.addDimensionOkay(true);
       PYLITH_METHOD_RETURN(buffer);
@@ -310,7 +310,7 @@
     } else { // must calculate total strain
       assert(fields);
       _allocateTensorField(mesh);
-      topology::Field<topology::Mesh>& buffer = _outputFields->get("buffer (tensor)");
+      topology::Field& buffer = _outputFields->get("buffer (tensor)");
       buffer.label("total_strain");
       buffer.scale(1.0);
       buffer.addDimensionOkay(true);
@@ -324,7 +324,7 @@
       // stress is available as a state variable
       assert(fields);
       _allocateTensorField(mesh);
-      topology::Field<topology::Mesh>& buffer = _outputFields->get("buffer (tensor)");    
+      topology::Field& buffer = _outputFields->get("buffer (tensor)");    
       _material->getField(&buffer, "stress");
       buffer.addDimensionOkay(true);
       PYLITH_METHOD_RETURN(buffer);
@@ -334,7 +334,7 @@
 	// total strain is available as a state variable
 	assert(fields);
 	_allocateTensorField(mesh);
-	topology::Field<topology::Mesh>& buffer = 
+	topology::Field& buffer = 
 	  _outputFields->get("buffer (tensor)");    
 	_material->getField(&buffer, "total_strain");
 	buffer.label(name);
@@ -346,7 +346,7 @@
       } else { // must calculate strain 
 	assert(fields);
 	_allocateTensorField(mesh);
-	topology::Field<topology::Mesh>& buffer = 
+	topology::Field& buffer = 
 	  _outputFields->get("buffer (tensor)");
 	buffer.label("stress");
 	buffer.scale(_normalizer->pressureScale());
@@ -361,7 +361,7 @@
   } else if (0 == strcasecmp(name, "stable_dt_implicit")) {
     if (!_outputFields->hasField("buffer (other)"))
       _outputFields->add("buffer (other)", "buffer");
-    topology::Field<topology::Mesh>& buffer = _outputFields->get("buffer (other)");
+    topology::Field& buffer = _outputFields->get("buffer (other)");
     _material->stableTimeStepImplicit(mesh, &buffer);
     buffer.addDimensionOkay(true);
     PYLITH_METHOD_RETURN(buffer);
@@ -369,7 +369,7 @@
   } else if (0 == strcasecmp(name, "stable_dt_explicit")) {
     if (!_outputFields->hasField("buffer (other)"))
       _outputFields->add("buffer (other)", "buffer");
-    topology::Field<topology::Mesh>& buffer = _outputFields->get("buffer (other)");
+    topology::Field& buffer = _outputFields->get("buffer (other)");
     _material->stableTimeStepExplicit(mesh, _quadrature, &buffer);
     buffer.addDimensionOkay(true);
     PYLITH_METHOD_RETURN(buffer);
@@ -377,7 +377,7 @@
   } else {
     if (!_outputFields->hasField("buffer (other)"))
       _outputFields->add("buffer (other)", "buffer");
-    topology::Field<topology::Mesh>& buffer =
+    topology::Field& buffer =
       _outputFields->get("buffer (other)");
     _material->getField(&buffer, name);
     buffer.addDimensionOkay(true);
@@ -389,15 +389,14 @@
   // Return tensor section to satisfy member function definition. Code
   // should never get here.
   throw std::logic_error("Internal error.");
-  topology::Field<topology::Mesh>& buffer = 
-    _outputFields->get("buffer (tensor)");    
+  topology::Field& buffer = _outputFields->get("buffer (tensor)");    
 
   PYLITH_METHOD_RETURN(buffer);
 } // cellField
 
 // ----------------------------------------------------------------------
 // Get output fields.
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
+const pylith::topology::Fields*
 pylith::feassemble::IntegratorElasticity::outputFields(void) const
 { // outputFields
   return _outputFields;
@@ -458,7 +457,7 @@
   
   if (!_outputFields->hasField("buffer (tensor)")) {
     _outputFields->add("buffer (tensor)", "buffer");
-    topology::Field<topology::Mesh>& buffer = _outputFields->get("buffer (tensor)");
+    topology::Field& buffer = _outputFields->get("buffer (tensor)");
     buffer.newSection(cellsTmp, numQuadPts*tensorSize);
     buffer.allocate();
     buffer.vectorFieldType(topology::FieldBase::MULTI_TENSOR);
@@ -470,7 +469,7 @@
 
 // ----------------------------------------------------------------------
 void
-pylith::feassemble::IntegratorElasticity::_calcStrainStressField(topology::Field<topology::Mesh>* field,
+pylith::feassemble::IntegratorElasticity::_calcStrainStressField(topology::Field* field,
 								 const char* name,
 								 topology::SolutionFields* const fields)
 { // _calcStrainStressField
@@ -564,7 +563,7 @@
 
 // ----------------------------------------------------------------------
 void
-pylith::feassemble::IntegratorElasticity::_calcStressFromStrain(topology::Field<topology::Mesh>* field)
+pylith::feassemble::IntegratorElasticity::_calcStressFromStrain(topology::Field* field)
 { // _calcStressFromStrain
   PYLITH_METHOD_BEGIN;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -107,8 +107,7 @@
    *
    * @returns Output (buffer) fields.
    */
-  const topology::Fields<topology::Field<topology::Mesh> >*
-  outputFields(void) const;
+  const topology::Fields* outputFields(void) const;
 
   /** Get cell field associated with integrator.
    *
@@ -117,10 +116,9 @@
    * @param fields Fields manager.
    * @returns Cell field.
    */
-  const topology::Field<topology::Mesh>&
-  cellField(const char* name,
-	    const topology::Mesh& mesh,
-	    topology::SolutionFields* const fields =0);
+  const topology::Field& cellField(const char* name,
+				   const topology::Mesh& mesh,
+				   topology::SolutionFields* const fields =0);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////
 protected :
@@ -141,7 +139,7 @@
    * @param fields Manager for solution fields.
    */
   virtual
-  void _calcStrainStressField(topology::Field<topology::Mesh>* field,
+  void _calcStrainStressField(topology::Field* field,
 			      const char* name,
 			      topology::SolutionFields* const fields);
 
@@ -151,7 +149,7 @@
    * @param field Field in which to store stress.
    */
   virtual
-  void _calcStressFromStrain(topology::Field<topology::Mesh>* field);
+  void _calcStressFromStrain(topology::Field* field);
 			      
 
   /** Integrate elasticity term in residual for 1-D cells.
@@ -247,8 +245,8 @@
   /// Elastic material associated with integrator
   materials::ElasticMaterial* _material;
 
-  /// Buffers for output.
-  topology::Fields<topology::Field<topology::Mesh> >* _outputFields;
+  
+  topology::Fields* _outputFields; ///< Buffers for output.
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -146,7 +146,7 @@
 
 // ----------------------------------------------------------------------
 void
-pylith::feassemble::IntegratorElasticityLgDeform::_calcStrainStressField(topology::Field<topology::Mesh>* field,
+pylith::feassemble::IntegratorElasticityLgDeform::_calcStrainStressField(topology::Field* field,
 									 const char* name,
 									 topology::SolutionFields* const fields)
 { // _calcStrainStressField

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -81,7 +81,7 @@
    * @param name Name of field to compute ('total-strain' or 'stress')
    * @param fields Manager for solution fields.
    */
-  void _calcStrainStressField(topology::Field<topology::Mesh>* field,
+  void _calcStrainStressField(topology::Field* field,
 			      const char* name,
 			      topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -30,6 +30,7 @@
 #include "pylith/utils/array.hh" // USES scalar_array, std::vector
 
 #include "spatialdata/spatialdb/SpatialDB.hh" // USES SpatialDB
+#include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 #include <strings.h> // USES strcasecmp()
@@ -124,9 +125,7 @@
   // Query database for properties
 
   // Create fields to hold physical properties and state variables.
-  delete _fieldsPropsStateVars; 
-  _fieldsPropsStateVars = new topology::Fields<topology::Field<topology::Mesh> >(faultMesh);
-  assert(_fieldsPropsStateVars);
+  delete _fieldsPropsStateVars; _fieldsPropsStateVars = new topology::Fields(faultMesh);assert(_fieldsPropsStateVars);
   _setupPropsStateVars();
 
   // Create arrays for querying.
@@ -169,7 +168,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::Mesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+      topology::Field& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
       topology::VecVisitorMesh propertyVisitor(propertyField);
       PetscScalar* propertyArray = propertyVisitor.localArray();
       const PetscInt off = propertyVisitor.sectionOffset(v);
@@ -222,7 +221,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::Mesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+        topology::Field& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
 	topology::VecVisitorMesh stateVarVisitor(stateVarField);
 	PetscScalar* stateVarArray = stateVarVisitor.localArray();
 	const PetscInt off = stateVarVisitor.sectionOffset(v);
@@ -247,7 +246,7 @@
 
 // ----------------------------------------------------------------------
 // Get the field with all properties and state variables.
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >&
+const pylith::topology::Fields&
 pylith::friction::FrictionModel::fieldsPropsStateVars(void) const
 { // fieldsPropsStateVars
   PYLITH_METHOD_BEGIN;
@@ -290,7 +289,7 @@
   
 // ----------------------------------------------------------------------
 // Get physical property or state variable field.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::friction::FrictionModel::getField(const char* name)
 { // getField
   PYLITH_METHOD_BEGIN;
@@ -314,7 +313,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::Mesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+    topology::Field& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
     topology::VecVisitorMesh propertyVisitor(propertyField);
     PetscScalar* propertyArray = propertyVisitor.localArray();
     const PetscInt off = propertyVisitor.sectionOffset(point);
@@ -326,7 +325,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::Mesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+    topology::Field& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
     topology::VecVisitorMesh stateVarVisitor(stateVarField);
     PetscScalar* stateVarArray = stateVarVisitor.localArray();
     const PetscInt off = stateVarVisitor.sectionOffset(point);
@@ -391,7 +390,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::Mesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+    topology::Field& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
     topology::VecVisitorMesh propertyVisitor(propertyField);
     PetscScalar* propertyArray = propertyVisitor.localArray();
     const PetscInt off = propertyVisitor.sectionOffset(vertex);
@@ -403,7 +402,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::Mesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+    topology::Field& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
     topology::VecVisitorMesh stateVarVisitor(stateVarField);
     PetscScalar* stateVarArray = stateVarVisitor.localArray();
     const PetscInt off = stateVarVisitor.sectionOffset(vertex);
@@ -472,7 +471,7 @@
     const materials::Metadata::ParamDescription& property = 
       _metadata.getProperty(i);
     _fieldsPropsStateVars->add(property.name.c_str(), property.name.c_str());
-    topology::Field<topology::Mesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+    topology::Field& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
     propertyField.newSection(topology::FieldBase::VERTICES_FIELD, property.fiberDim);
     propertyField.allocate();
     propertyField.vectorFieldType(property.fieldType);
@@ -485,7 +484,7 @@
     const materials::Metadata::ParamDescription& stateVar = 
       _metadata.getStateVar(i);
     _fieldsPropsStateVars->add(stateVar.name.c_str(), stateVar.name.c_str());
-    topology::Field<topology::Mesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+    topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -143,13 +143,13 @@
    * @param name Name of field to retrieve.
    * @returns Field over fault interface cells.
    */
-  const topology::Field<topology::Mesh>& getField(const char* name);
+  const topology::Field& getField(const char* name);
 
   /** Get the field with all properties and state variables.
    *
    * @returns Properties field.
    */
-  const topology::Fields<topology::Field<topology::Mesh> >& fieldsPropsStateVars() const;
+  const topology::Fields& 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::Mesh> >* _fieldsPropsStateVars;
+  topology::Fields* _fieldsPropsStateVars;
 
   /// Buffer for properties and state variables at vertex.
   scalar_array _propsStateVarsVertex;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -326,7 +326,7 @@
 // Get stable time step for implicit time integration.
 PylithScalar
 pylith::materials::ElasticIsotropic3D::stableTimeStepImplicit(const topology::Mesh& mesh,
-							      topology::Field<topology::Mesh>* field) {
+							      topology::Field* field) {
   return ElasticMaterial::_stableTimeStepImplicitMax(mesh, field);
 } // stableTimeStepImplicitMax
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -64,7 +64,7 @@
    * @returns Time step
    */
   PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh,
-				      topology::Field<topology::Mesh>* field =0);
+				      topology::Field* field =0);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -93,7 +93,7 @@
 
   if (_dbInitialStress || _dbInitialStrain) {
     delete _initialFields; 
-    _initialFields = new topology::Fields<topology::Field<topology::Mesh> >(mesh);
+    _initialFields = new topology::Fields(mesh);assert(_initialFields);
   } // if
   _initializeInitialStress(mesh, quadrature);
   _initializeInitialStrain(mesh, quadrature);
@@ -141,7 +141,7 @@
     if (_initialFields->hasField("initial stress")) {
       const int stressSize = _numQuadPts*_tensorSize;
       assert(_initialStressCell.size() == stressSize);
-      topology::Field<topology::Mesh>& stressField = _initialFields->get("initial stress");
+      topology::Field& stressField = _initialFields->get("initial stress");
       topology::VecVisitorMesh stressVisitor(stressField);
       PetscScalar* stressArray = stressVisitor.localArray();
       const PetscInt ioff = stressVisitor.sectionOffset(cell);
@@ -153,7 +153,7 @@
     if (_initialFields->hasField("initial strain")) {
       const int strainSize = _numQuadPts*_tensorSize;
       assert(_initialStrainCell.size() == strainSize);
-      topology::Field<topology::Mesh>& strainField = _initialFields->get("initial strain");
+      topology::Field& strainField = _initialFields->get("initial strain");
       topology::VecVisitorMesh strainVisitor(strainField);
       PetscScalar* strainArray = strainVisitor.localArray();
       const PetscInt ioff = strainVisitor.sectionOffset(cell);
@@ -271,7 +271,7 @@
 // Get stable time step for implicit time integration.
 PylithScalar
 pylith::materials::ElasticMaterial::stableTimeStepImplicit(const topology::Mesh& mesh,
-							   topology::Field<topology::Mesh>* field)
+							   topology::Field* field)
 { // stableTimeStepImplicit
   PYLITH_METHOD_BEGIN;
 
@@ -358,7 +358,7 @@
 PylithScalar
 pylith::materials::ElasticMaterial::stableTimeStepExplicit(const topology::Mesh& mesh,
 							   feassemble::Quadrature* quadrature,
-							   topology::Field<topology::Mesh>* field)
+							   topology::Field* field)
 { // stableTimeStepImplicit
   PYLITH_METHOD_BEGIN;
 
@@ -457,7 +457,7 @@
 // Get stable time step for implicit time integration (return large value).
 PylithScalar
 pylith::materials::ElasticMaterial::_stableTimeStepImplicitMax(const topology::Mesh& mesh,
-							       topology::Field<topology::Mesh>* field)
+							       topology::Field* field)
 { // _stableTimeStepImplicitMax
   PYLITH_METHOD_BEGIN;
 
@@ -564,7 +564,7 @@
 
   assert(_initialFields);
   _initialFields->add("initial stress", "initial_stress");
-  topology::Field<topology::Mesh>& initialStress = _initialFields->get("initial stress");
+  topology::Field& initialStress = _initialFields->get("initial stress");
 
   assert(_dbInitialStress);
   assert(quadrature);
@@ -697,7 +697,7 @@
 
   assert(_initialFields);
   _initialFields->add("initial strain", "initial_strain");
-  topology::Field<topology::Mesh>& initialStrain = _initialFields->get("initial strain");
+  topology::Field& initialStrain = _initialFields->get("initial strain");
 
   assert(_dbInitialStrain);
   assert(quadrature);

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -181,7 +181,7 @@
    */
   virtual
   PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh,
-				      topology::Field<topology::Mesh>* field =0);
+				      topology::Field* field =0);
 
   /** Get stable time step for explicit time integration.
    *
@@ -196,7 +196,7 @@
   virtual
   PylithScalar stableTimeStepExplicit(const topology::Mesh& mesh,
 				      feassemble::Quadrature* quadrature,
-				      topology::Field<topology::Mesh>* field =0);
+				      topology::Field* field =0);
 
   /** Set whether elastic or inelastic constitutive relations are used.
    *
@@ -209,7 +209,7 @@
    *
    * @returns Initial stress field.
    */
-  const topology::Fields<topology::Field<topology::Mesh> >* initialFields(void) const;
+  const topology::Fields* initialFields(void) const;
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
@@ -363,7 +363,7 @@
    * @returns PYLITH::MAX_SCALAR;
    */
   PylithScalar _stableTimeStepImplicitMax(const topology::Mesh& mesh,
-					  topology::Field<topology::Mesh>* field =0);
+					  topology::Field* field =0);
 
   /** Compute 2D deviatoric stress/strain from vector and mean value.
    *
@@ -461,7 +461,7 @@
   spatialdata::spatialdb::SpatialDB* _dbInitialStrain;
 
   /// Initial stress/strain fields.
-  topology::Fields<topology::Field<topology::Mesh> >* _initialFields;
+  topology::Fields* _initialFields;
   
   /** Properties at quadrature points for current cell.
    *

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.icc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.icc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -52,7 +52,7 @@
 
 // Get initial stress/strain fields.
 inline
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
+const pylith::topology::Fields*
 pylith::materials::ElasticMaterial::initialFields(void) const {
   return _initialFields;
 } // initialFields
@@ -61,10 +61,9 @@
 // 2 FLOPs per call
 inline
 void
-pylith::materials::ElasticMaterial::calcDeviatoric2D(
-					PylithScalar* const deviatoric,
-					const PylithScalar* vec,
-					const PylithScalar vecMean)
+pylith::materials::ElasticMaterial::calcDeviatoric2D(PylithScalar* const deviatoric,
+						     const PylithScalar* vec,
+						     const PylithScalar vecMean)
 {
   deviatoric[0] = vec[0] - vecMean;
   deviatoric[1] = vec[1] - vecMean;
@@ -76,10 +75,9 @@
 // 3 FLOPs per call
 inline
 void
-pylith::materials::ElasticMaterial::calcDeviatoric2DPS(
-					PylithScalar* const deviatoric,
-					const PylithScalar* vec,
-					const PylithScalar vecMean)
+pylith::materials::ElasticMaterial::calcDeviatoric2DPS(PylithScalar* const deviatoric,
+						       const PylithScalar* vec,
+						       const PylithScalar vecMean)
 {
   deviatoric[0] = vec[0] - vecMean;
   deviatoric[1] = vec[1] - vecMean;
@@ -126,9 +124,8 @@
 // 8 FLOPs per call.
 inline
 PylithScalar
-pylith::materials::ElasticMaterial::scalarProduct2DPS(
-						 const PylithScalar* tensor1,
-						 const PylithScalar* tensor2)
+pylith::materials::ElasticMaterial::scalarProduct2DPS(const PylithScalar* tensor1,
+						      const PylithScalar* tensor2)
 { // scalarProduct2DPS
   const PylithScalar scalarProduct = 
     tensor1[0] * tensor2[0] +

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -312,7 +312,7 @@
 // Get stable time step for implicit time integration.
 PylithScalar
 pylith::materials::ElasticPlaneStrain::stableTimeStepImplicit(const topology::Mesh& mesh,
-							      topology::Field<topology::Mesh>* field) {
+							      topology::Field* field) {
   return ElasticMaterial::_stableTimeStepImplicitMax(mesh, field);
 }
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -64,7 +64,7 @@
    * @returns Time step
    */
   PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh,
-				      topology::Field<topology::Mesh>* field =0);
+				      topology::Field* field =0);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -315,7 +315,7 @@
 // Get stable time step for implicit time integration.
 PylithScalar
 pylith::materials::ElasticPlaneStress::stableTimeStepImplicit(const topology::Mesh& mesh,
-							      topology::Field<topology::Mesh>* field) {
+							      topology::Field* field) {
   return ElasticMaterial::_stableTimeStepImplicitMax(mesh, field);
 }
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -66,7 +66,7 @@
    * @returns Time step
    */
   PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh,
-				      topology::Field<topology::Mesh>* field =0);
+				      topology::Field* field =0);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -291,7 +291,7 @@
 // Get stable time step for implicit time integration.
 PylithScalar
 pylith::materials::ElasticStrain1D::stableTimeStepImplicit(const topology::Mesh& mesh,
-							   topology::Field<topology::Mesh>* field) {
+							   topology::Field* field) {
   return ElasticMaterial::_stableTimeStepImplicitMax(mesh, field);
 }
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -65,7 +65,7 @@
    * @returns Time step
    */
   PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh,
-				      topology::Field<topology::Mesh>* field =0);
+				      topology::Field* field =0);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -292,7 +292,7 @@
 // Get stable time step for implicit time integration.
 PylithScalar
 pylith::materials::ElasticStress1D::stableTimeStepImplicit(const topology::Mesh& mesh,
-							   topology::Field<topology::Mesh>* field) {
+							   topology::Field* field) {
   return ElasticMaterial::_stableTimeStepImplicitMax(mesh, field);
 }
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -66,7 +66,7 @@
    * @returns Time step
    */
   PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh,
-				      topology::Field<topology::Mesh>* field =0);
+				      topology::Field* field =0);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -132,7 +132,7 @@
   const spatialdata::geocoords::CoordSys* cs = mesh.coordsys();assert(cs);
 
   // Create field to hold physical properties.
-  delete _properties; _properties = new topology::Field<topology::Mesh>(mesh);assert(_properties);
+  delete _properties; _properties = new topology::Field(mesh);assert(_properties);
   _properties->label("properties");
   const int propsFiberDim = numQuadPts * _numPropsQuadPt;
   int_array cellsTmp(cells, numCells);
@@ -160,7 +160,7 @@
   // Create field to hold state variables. We create the field even
   // if there is no initial state, because this we will use this field
   // to hold the state variables.
-  delete _stateVars; _stateVars = new topology::Field<topology::Mesh>(mesh);assert(_stateVars);
+  delete _stateVars; _stateVars = new topology::Field(mesh);assert(_stateVars);
   _stateVars->label("state variables");
   const int stateVarsFiberDim = numQuadPts * _numVarsQuadPt;
   topology::VecVisitorMesh* stateVarsVisitor = 0;
@@ -268,7 +268,7 @@
 
 // ----------------------------------------------------------------------
 // Get the properties field.
-const pylith::topology::Field<pylith::topology::Mesh>*
+const pylith::topology::Field*
 pylith::materials::Material::propertiesField() const
 { // propertiesField
   return _properties;
@@ -276,7 +276,7 @@
 
 // ----------------------------------------------------------------------
 // Get the state variables field.
-const pylith::topology::Field<pylith::topology::Mesh>*
+const pylith::topology::Field*
 pylith::materials::Material::stateVarsField() const
 { // stateVarsField
   return _stateVars;
@@ -313,7 +313,7 @@
 // ----------------------------------------------------------------------
 // Get physical property or state variable field.
 void
-pylith::materials::Material::getField(topology::Field<topology::Mesh> *field,
+pylith::materials::Material::getField(topology::Field *field,
 				      const char* name) const
 { // getField
   PYLITH_METHOD_BEGIN;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/Material.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/Material.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/Material.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -195,20 +195,20 @@
    * @param field Field over material cells.
    * @param name Name of field to retrieve.
    */
-  void getField(topology::Field<topology::Mesh> *field,
+  void getField(topology::Field *field,
 		const char* name) const;
 
   /** Get the field with all properties.
    *
    * @returns Properties field.
    */
-  const topology::Field<topology::Mesh>* propertiesField() const;
+  const topology::Field* propertiesField() const;
 
   /** Get the field with all of the state variables.
    *
    * @returns State variables field.
    */
-  const topology::Field<topology::Mesh>* stateVarsField() const;
+  const topology::Field* stateVarsField() const;
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
@@ -275,10 +275,10 @@
   PylithScalar _dt; ///< Current time step
 
   /// Field containing physical properties of material.
-  topology::Field<topology::Mesh> *_properties;
+  topology::Field *_properties;
 
   /// Field containing the state variables for the material.
-  topology::Field<topology::Mesh> *_stateVars;
+  topology::Field *_stateVars;
 
   spatialdata::units::Nondimensional* _normalizer; ///< Nondimensionalizer
   

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilter.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilter.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilter.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,30 +18,29 @@
 
 #include <portinfo>
 
+#include "CellFilter.hh" // Implementation of class methods
+
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 
 #include "pylith/utils/error.h" // USES PYLITH_METHOD_BEGIN/END
 
 // ----------------------------------------------------------------------
 // Constructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::CellFilter<mesh_type, field_type>::CellFilter(void) :
+pylith::meshio::CellFilter::CellFilter(void) :
   _quadrature(0)
 { // constructor
 } // constructor
 
 // ----------------------------------------------------------------------
 // Destructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::CellFilter<mesh_type, field_type>::~CellFilter(void)
+pylith::meshio::CellFilter::~CellFilter(void)
 { // destructor
   deallocate();
 } // destructor  
 
 // ----------------------------------------------------------------------
 // Copy constructor.
-template<typename mesh_type, typename field_type>
-pylith::meshio::CellFilter<mesh_type, field_type>::CellFilter(const CellFilter& f) :
+pylith::meshio::CellFilter::CellFilter(const CellFilter& f) :
   _quadrature(0)
 { // copy constructor
   PYLITH_METHOD_BEGIN;
@@ -54,18 +53,16 @@
 
 // ----------------------------------------------------------------------
 // Deallocate PETSc and local data structures.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::CellFilter<mesh_type, field_type>::deallocate(void)
+pylith::meshio::CellFilter::deallocate(void)
 { // deallocate
   delete _quadrature; _quadrature = 0;
 } // deallocate
   
 // ----------------------------------------------------------------------
 // Set quadrature associated with cells.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::CellFilter<mesh_type, field_type>::quadrature(const feassemble::Quadrature* q)
+pylith::meshio::CellFilter::quadrature(const feassemble::Quadrature* q)
 { // quadrature
   PYLITH_METHOD_BEGIN;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilter.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilter.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilter.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -30,12 +30,12 @@
 #include "meshiofwd.hh" // forward declarations
 
 #include "pylith/feassemble/feassemblefwd.hh" // HOLDSA Quadrature
+#include "pylith/topology/topologyfwd.hh" // USES Field
 
 // CellFilter -----------------------------------------------------------
 /** @brief C++ object for filtering cell fields when outputing
  * finite-element data.
  */
-template<typename mesh_type, typename field_type>
 class pylith::meshio::CellFilter
 { // CellFilter
 
@@ -75,8 +75,8 @@
    * @returns Averaged field.
    */
   virtual
-  field_type&
-  filter(const field_type& fieldIn,
+  topology::Field&
+  filter(const topology::Field& fieldIn,
 	 const char* label =0,
 	 const int labelId =0) = 0;
 
@@ -104,8 +104,6 @@
 
 }; // CellFilter
 
-#include "CellFilter.cc" // template definitions
-
 #endif // pylith_meshio_cellfilter_hh
 
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,6 +18,8 @@
 
 #include <portinfo>
 
+#include "CellFilterAvg.hh" // Implementation of class methods
+
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 
 #include "pylith/topology/Field.hh" // USES Field
@@ -27,74 +29,66 @@
 
 // ----------------------------------------------------------------------
 // Constructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::CellFilterAvg<mesh_type, field_type>::CellFilterAvg(void) :
+pylith::meshio::CellFilterAvg::CellFilterAvg(void) :
   _fieldAvg(0)
 { // constructor
 } // constructor
 
 // ----------------------------------------------------------------------
 // Destructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::CellFilterAvg<mesh_type, field_type>::~CellFilterAvg(void)
+pylith::meshio::CellFilterAvg::~CellFilterAvg(void)
 { // destructor
   deallocate();
 } // destructor  
 
 // ----------------------------------------------------------------------
 // Deallocate PETSc and local data structures.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::CellFilterAvg<mesh_type, field_type>::deallocate(void)
+pylith::meshio::CellFilterAvg::deallocate(void)
 { // deallocate
-  CellFilter<mesh_type, field_type>::deallocate();
+  CellFilter::deallocate();
 
   delete _fieldAvg; _fieldAvg = 0;
 } // deallocate
   
 // ----------------------------------------------------------------------
 // Copy constructor.
-template<typename mesh_type, typename field_type>
-pylith::meshio::CellFilterAvg<mesh_type, field_type>::CellFilterAvg(
-					       const CellFilterAvg& f) :
-  CellFilter<mesh_type, field_type>(f),
+pylith::meshio::CellFilterAvg::CellFilterAvg(const CellFilterAvg& f) :
+  CellFilter(f),
   _fieldAvg(0)
 { // copy constructor
 } // copy constructor
 
 // ----------------------------------------------------------------------
 // Create copy of filter.
-template<typename mesh_type, typename field_type>
-pylith::meshio::CellFilter<mesh_type, field_type>*
-pylith::meshio::CellFilterAvg<mesh_type, field_type>::clone(void) const
+pylith::meshio::CellFilter*
+pylith::meshio::CellFilterAvg::clone(void) const
 { // clone
   PYLITH_METHOD_BEGIN;
   
-  pylith::meshio::CellFilter<mesh_type, field_type>* field = new CellFilterAvg<mesh_type,field_type>(*this);
+  pylith::meshio::CellFilter* f = new CellFilterAvg(*this);
 
-  PYLITH_METHOD_RETURN(field);
+  PYLITH_METHOD_RETURN(f);
 } // clone
 
 // ----------------------------------------------------------------------
 // Get averaged field buffer.
-template<typename mesh_type, typename field_type>
-const field_type*
-pylith::meshio::CellFilterAvg<mesh_type, field_type>::fieldAvg(void) const
+const pylith::topology::Field*
+pylith::meshio::CellFilterAvg::fieldAvg(void) const
 { // fieldAvg
   return _fieldAvg;
 } // fieldAvg
   
 // ----------------------------------------------------------------------
 // Filter field.
-template<typename mesh_type, typename field_type>
-field_type&
-pylith::meshio::CellFilterAvg<mesh_type,field_type>::filter(const field_type& fieldIn,
-							    const char* label,
-							    const int labelId)
+pylith::topology::Field&
+pylith::meshio::CellFilterAvg::filter(const topology::Field& fieldIn,
+				      const char* label,
+				      const int labelId)
 { // filter
   PYLITH_METHOD_BEGIN;
 
-  const feassemble::Quadrature* quadrature = CellFilter<mesh_type, field_type>::_quadrature;assert(quadrature);
+  const feassemble::Quadrature* quadrature = CellFilter::_quadrature;assert(quadrature);
 
   const int numQuadPts = quadrature->numQuadPts();
   const scalar_array& wts = quadrature->quadWts();
@@ -129,7 +123,7 @@
   assert(fiberDim * numQuadPts == totalFiberDim);
   // Allocate field if necessary
   if (!_fieldAvg) {
-    _fieldAvg = new field_type(fieldIn.mesh());assert(_fieldAvg);
+    _fieldAvg = new topology::Field(fieldIn.mesh());assert(_fieldAvg);
     _fieldAvg->newSection(fieldIn, fiberDim);
     _fieldAvg->allocate();
   } else if (_fieldAvg->sectionSize() != numCells*fiberDim) {

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,8 +33,7 @@
 /** @brief C++ object for averaging cell fields over quadrature points
  * when outputing finite-element data.
  */
-template<typename mesh_type, typename field_type>
-class pylith::meshio::CellFilterAvg : public CellFilter<mesh_type, field_type>
+class pylith::meshio::CellFilterAvg : public CellFilter
 { // CellFilterAvg
 
 // PUBLIC METHODS ///////////////////////////////////////////////////////
@@ -50,7 +49,7 @@
    *
    * @returns Copy of filter.
    */
-  CellFilter<mesh_type,field_type>* clone(void) const;
+  CellFilter* clone(void) const;
 
   /// Deallocate PETSc and local data structures.
   void deallocate(void);
@@ -59,7 +58,7 @@
    *
    * @returns Field associated with averaged values.
    */
-  const field_type* fieldAvg(void) const;
+  const topology::Field* fieldAvg(void) const;
   
   /** Filter field over cells.
    *
@@ -69,8 +68,8 @@
    *
    * @returns Averaged field.
    */
-  field_type&
-  filter(const field_type& fieldIn,
+  topology::Field&
+  filter(const topology::Field& fieldIn,
 	 const char* label =0,
 	 const int labelId =0);
 
@@ -93,11 +92,10 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  field_type* _fieldAvg; ///< Averaged cell field
+  topology::Field* _fieldAvg; ///< Averaged cell field
 
 }; // CellFilterAvg
 
-#include "CellFilterAvg.cc" // template definitions
 
 #endif // pylith_meshio_cellfilteravg_hh
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,10 +18,15 @@
 
 #include <portinfo>
 
+#include "DataWriter.hh" // Implementation of class methods
+
+#include "pylith/topology/Mesh.hh" // USES Mesh
+
+#include "pylith/utils/error.h" // USES PYLITH_METHOD_BEGIN/END
+
 // ----------------------------------------------------------------------
 // Constructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriter<mesh_type, field_type>::DataWriter(void) :
+pylith::meshio::DataWriter::DataWriter(void) :
   _timeScale(1.0),
   _numTimeSteps(0),
   _context("")
@@ -30,26 +35,23 @@
 
 // ----------------------------------------------------------------------
 // Destructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriter<mesh_type, field_type>::~DataWriter(void)
+pylith::meshio::DataWriter::~DataWriter(void)
 { // destructor
   deallocate();
 } // destructor  
 
 // ----------------------------------------------------------------------
 // Deallocate PETSc and local data structures.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriter<mesh_type, field_type>::deallocate(void)
+pylith::meshio::DataWriter::deallocate(void)
 { // deallocate
 } // deallocate
   
 
 // ----------------------------------------------------------------------
 // Set time scale for simulation time.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriter<mesh_type, field_type>::timeScale(const PylithScalar value)
+pylith::meshio::DataWriter::timeScale(const PylithScalar value)
 { // timeScale
   PYLITH_METHOD_BEGIN;
 
@@ -66,12 +68,11 @@
   
 // ----------------------------------------------------------------------
 // Prepare for writing files.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriter<mesh_type, field_type>::open(const mesh_type& mesh,
-							const int numTimeSteps,
-							const char* label,
-							const int labelId)
+pylith::meshio::DataWriter::open(const topology::Mesh& mesh,
+				 const int numTimeSteps,
+				 const char* label,
+				 const int labelId)
 { // open
   PYLITH_METHOD_BEGIN;
 
@@ -93,36 +94,32 @@
 
 // ----------------------------------------------------------------------
 // Close output files.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriter<mesh_type, field_type>::close(void)
+pylith::meshio::DataWriter::close(void)
 { // close
   _context = "";
 } // close
 
 // ----------------------------------------------------------------------
 // Prepare file for data at a new time step.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriter<mesh_type, field_type>::openTimeStep(const PylithScalar t,
-								const mesh_type& mesh,
-								const char* label,
-								const int labelId)
+pylith::meshio::DataWriter::openTimeStep(const PylithScalar t,
+					 const topology::Mesh& mesh,
+					 const char* label,
+					 const int labelId)
 { // openTimeStep
 } // openTimeStep
 
 // ----------------------------------------------------------------------
 // Cleanup after writing data for a time step.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriter<mesh_type, field_type>::closeTimeStep(void)
+pylith::meshio::DataWriter::closeTimeStep(void)
 { // closeTimeStep
 } // closeTimeStep
 
 // ----------------------------------------------------------------------
 // Copy constructor.
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriter<mesh_type, field_type>::DataWriter(const DataWriter& w) :
+pylith::meshio::DataWriter::DataWriter(const DataWriter& w) :
   _numTimeSteps(w._numTimeSteps),
   _context(w._context)
 { // copy constructor

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,7 +33,6 @@
 
 // DataWriter -----------------------------------------------------------
 /// Abstract base class for writing finite-element data to file.
-template<typename mesh_type, typename field_type>
 class pylith::meshio::DataWriter
 { // DataWriter
 
@@ -73,7 +72,7 @@
    * @param labelId Value of label defining which cells to include.
    */
   virtual
-  void open(const mesh_type& mesh,
+  void open(const topology::Mesh& mesh,
 	    const int numTimeSteps,
 	    const char* label =0,
 	    const int labelId =0);
@@ -92,7 +91,7 @@
    */
   virtual
   void openTimeStep(const PylithScalar t,
-		    const mesh_type& mesh,
+		    const topology::Mesh& mesh,
 		    const char* label =0,
 		    const int labelId =0);
 
@@ -108,8 +107,8 @@
   */
   virtual
   void writeVertexField(const PylithScalar t,
-			field_type& field,
-			const mesh_type& mesh) = 0;
+			topology::Field& field,
+			const topology::Mesh& mesh) = 0;
 
   /** Write field over cells to file.
    *
@@ -121,7 +120,7 @@
    */
   virtual
   void writeCellField(const PylithScalar t,
-		      field_type& field,
+		      topology::Field& field,
 		      const char* label =0,
 		      const int labelId =0) = 0;
 
@@ -148,8 +147,6 @@
 
 }; // DataWriter
 
-#include "DataWriter.cc" // template methods
-
 #endif // pylith_meshio_datawriter_hh
 
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,8 +18,14 @@
 
 #include <portinfo>
 
+#include "DataWriterHDF5.hh" // Implementation of class methods
+
 #include "HDF5.hh" // USES HDF5
 #include "Xdmf.hh" // USES Xdmf
+
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/Field.hh" // USES Field
+
 #include "petscviewerhdf5.h"
 
 #include <cassert> // USES assert()
@@ -28,8 +34,7 @@
 
 // ----------------------------------------------------------------------
 // Constructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriterHDF5<mesh_type,field_type>::DataWriterHDF5(void) :
+pylith::meshio::DataWriterHDF5::DataWriterHDF5(void) :
   _filename("output.h5"),
   _viewer(0),
   _tstamp(0),
@@ -39,21 +44,19 @@
 
 // ----------------------------------------------------------------------
 // Destructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriterHDF5<mesh_type,field_type>::~DataWriterHDF5(void)
+pylith::meshio::DataWriterHDF5::~DataWriterHDF5(void)
 { // destructor
   deallocate();
 } // destructor  
 
 // ----------------------------------------------------------------------
 // Deallocate PETSc and local data structures.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5<mesh_type, field_type>::deallocate(void)
+pylith::meshio::DataWriterHDF5::deallocate(void)
 { // deallocate
   PYLITH_METHOD_BEGIN;
 
-  DataWriter<mesh_type, field_type>::deallocate();
+  DataWriter::deallocate();
 
   PetscErrorCode err = 0;
   err = PetscViewerDestroy(&_viewer); PYLITH_CHECK_ERROR(err);
@@ -64,9 +67,8 @@
   
 // ----------------------------------------------------------------------
 // Copy constructor.
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriterHDF5<mesh_type,field_type>::DataWriterHDF5(const DataWriterHDF5<mesh_type, field_type>& w) :
-  DataWriter<mesh_type, field_type>(w),
+pylith::meshio::DataWriterHDF5::DataWriterHDF5(const DataWriterHDF5& w) :
+  DataWriter(w),
   _filename(w._filename),
   _viewer(0),
   _tstamp(0),
@@ -76,16 +78,15 @@
 
 // ----------------------------------------------------------------------
 // Prepare file for data at a new time step.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5<mesh_type,field_type>::open(const mesh_type& mesh,
-							   const int numTimeSteps,
+pylith::meshio::DataWriterHDF5::open(const topology::Mesh& mesh,
+				     const int numTimeSteps,
 							   const char* label,
 							   const int labelId)
 { // open
   PYLITH_METHOD_BEGIN;
 
-  DataWriter<mesh_type, field_type>::open(mesh, numTimeSteps, label, labelId);
+  DataWriter::open(mesh, numTimeSteps, label, labelId);
 
   try {
     PetscErrorCode err = 0;
@@ -107,7 +108,7 @@
 
     const spatialdata::geocoords::CoordSys* cs = mesh.coordsys();assert(cs);
 
-    const char *context = DataWriter<mesh_type, field_type>::_context.c_str();
+    const char *context = DataWriter::_context.c_str();
     PetscDM dmMesh = mesh.dmMesh();assert(dmMesh);
     PetscDM dmCoord = NULL;
     PetscVec coordinates = NULL; 
@@ -120,7 +121,7 @@
     err = DMGetCoordinateDM(dmMesh, &dmCoord);PYLITH_CHECK_ERROR(err);assert(dmCoord);
     err = PetscObjectReference((PetscObject) dmCoord);PYLITH_CHECK_ERROR(err);
     err = DMGetCoordinatesLocal(dmMesh, &coordinates);PYLITH_CHECK_ERROR(err);
-    topology::Field<mesh_type> coordinatesField(mesh, dmCoord, coordinates, metadata);
+    topology::Field coordinatesField(mesh, dmCoord, coordinates, metadata);
     coordinatesField.createScatterWithBC(mesh, "", 0, metadata.label.c_str());
     coordinatesField.scatterSectionToVector(metadata.label.c_str());
     PetscVec coordVector = coordinatesField.vector(metadata.label.c_str());assert(coordVector);
@@ -228,9 +229,8 @@
 
 // ----------------------------------------------------------------------
 // Close output files.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5<mesh_type,field_type>::close(void)
+pylith::meshio::DataWriterHDF5::close(void)
 { // close
   PYLITH_METHOD_BEGIN;
 
@@ -256,11 +256,10 @@
 
 // ----------------------------------------------------------------------
 // Write field over vertices to file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5<mesh_type,field_type>::writeVertexField(const PylithScalar t,
-								       field_type& field,
-								       const mesh_type& mesh)
+pylith::meshio::DataWriterHDF5::writeVertexField(const PylithScalar t,
+						 topology::Field& field,
+						 const topology::Mesh& mesh)
 { // writeVertexField
   PYLITH_METHOD_BEGIN;
 
@@ -269,7 +268,7 @@
   try {
     PetscErrorCode err;
 
-    const char* context  = DataWriter<mesh_type, field_type>::_context.c_str();
+    const char* context  = DataWriter::_context.c_str();
 
     field.createScatterWithBC(mesh, "", 0, context);
     field.scatterSectionToVector(context);
@@ -341,19 +340,18 @@
 
 // ----------------------------------------------------------------------
 // Write field over cells to file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5<mesh_type,field_type>::writeCellField(const PylithScalar t,
-								     field_type& field,
-								     const char* label,
-								     const int labelId)
+pylith::meshio::DataWriterHDF5::writeCellField(const PylithScalar t,
+					       topology::Field& field,
+					       const char* label,
+					       const int labelId)
 { // writeCellField
   PYLITH_METHOD_BEGIN;
 
   assert(_viewer);
   
   try {
-    const char* context = DataWriter<mesh_type, field_type>::_context.c_str();
+    const char* context = DataWriter::_context.c_str();
     PetscErrorCode err = 0;
 
     field.createScatterWithBC(field.mesh(), label ? label : "", labelId, context);
@@ -401,15 +399,14 @@
 
 // ----------------------------------------------------------------------
 // Generate filename for HDF5 file.
-template<typename mesh_type, typename field_type>
 std::string
-pylith::meshio::DataWriterHDF5<mesh_type,field_type>::_hdf5Filename(void) const
+pylith::meshio::DataWriterHDF5::_hdf5Filename(void) const
 { // _hdf5Filename
   PYLITH_METHOD_BEGIN;
 
   std::ostringstream filename;
   const int indexExt = _filename.find(".h5");
-  const int numTimeSteps = DataWriter<mesh_type, field_type>::_numTimeSteps;
+  const int numTimeSteps = DataWriter::_numTimeSteps;
   if (0 == numTimeSteps) {
     filename << std::string(_filename, 0, indexExt) << "_info.h5";
   } else {
@@ -422,16 +419,15 @@
 
 // ----------------------------------------------------------------------
 // Write time stamp to file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5<mesh_type,field_type>::_writeTimeStamp(const PylithScalar t,
+pylith::meshio::DataWriterHDF5::_writeTimeStamp(const PylithScalar t,
 								      const int commRank)
 { // _writeTimeStamp
   assert(_tstamp);
   PetscErrorCode err = 0;
 
   if (0 == commRank) {
-    const PylithScalar tDim = t * DataWriter<mesh_type, field_type>::_timeScale;
+    const PylithScalar tDim = t * DataWriter::_timeScale;
     err = VecSetValue(_tstamp, 0, tDim, INSERT_VALUES); PYLITH_CHECK_ERROR(err);
   } // if
   err = VecAssemblyBegin(_tstamp); PYLITH_CHECK_ERROR(err);

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -44,13 +44,14 @@
 // Include directives ---------------------------------------------------
 #include "DataWriter.hh" // ISA DataWriter
 
+#include "pylith/utils/petscfwd.h" // HASA PetscVec
+
 #include <string> // USES std::string
 #include <map> // HASA std::map
 
 // DataWriterHDF5 --------------------------------------------------------
 /// Object for writing finite-element data to HDF5 file.
-template<typename mesh_type, typename field_type>
-class pylith::meshio::DataWriterHDF5 : public DataWriter<mesh_type,field_type>
+class pylith::meshio::DataWriterHDF5 : public DataWriter
 { // DataWriterHDF5
   friend class TestDataWriterHDF5Mesh; // unit testing
   friend class TestDataWriterHDF5SubMesh; // unit testing
@@ -70,7 +71,7 @@
    *
    * @returns Copy of this.
    */
-  DataWriter<mesh_type, field_type>* clone(void) const;
+  DataWriter* clone(void) const;
 
   /// Deallocate PETSc and local data structures.
   void deallocate(void);
@@ -89,7 +90,7 @@
    *   (=0 means use all cells in mesh).
    * @param labelId Value of label defining which cells to include.
    */
-  void open(const mesh_type& mesh,
+  void open(const topology::Mesh& mesh,
 	    const int numTimeSteps,
 	    const char* label =0,
 	    const int labelId =0);
@@ -104,8 +105,8 @@
    * @param mesh Mesh associated with output.
    */
   void writeVertexField(const PylithScalar t,
-			field_type& field,
-			const mesh_type& mesh);
+			topology::Field& field,
+			const topology::Mesh& mesh);
 
   /** Write field over cells to file.
    *
@@ -116,7 +117,7 @@
    * @param labelId Value of label defining which cells to include.
    */
   void writeCellField(const PylithScalar t,
-		      field_type& field,
+		      topology::Field& field,
 		      const char* label =0,
 		      const int labelId =0);
 
@@ -158,7 +159,6 @@
 }; // DataWriterHDF5
 
 #include "DataWriterHDF5.icc" // inline methods
-#include "DataWriterHDF5.cc" // template definitions
 
 #endif // pylith_meshio_datawriterhdf5_hh
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.icc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.icc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -21,18 +21,16 @@
 #else
 
 // Make copy of this object.
-template<typename mesh_type, typename field_type>
 inline
-pylith::meshio::DataWriter<mesh_type, field_type>*
-pylith::meshio::DataWriterHDF5<mesh_type,field_type>::clone(void) const {
+pylith::meshio::DataWriter*
+pylith::meshio::DataWriterHDF5::clone(void) const {
   return new DataWriterHDF5(*this);
 }
 
 // Set filename for HDF5 file.
-template<typename mesh_type, typename field_type>
 inline
 void
-pylith::meshio::DataWriterHDF5<mesh_type,field_type>::filename(const char* filename) {
+pylith::meshio::DataWriterHDF5::filename(const char* filename) {
   _filename = filename;
 }
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,17 +18,23 @@
 
 #include <portinfo>
 
+#include "DataWriterHDF5Ext.hh" // Implementation of class methods
+
 #include "HDF5.hh" // USES HDF5
 #include "Xdmf.hh" // USES Xdmf
 
+#include "pylith/topology/Mesh.hh" /// USES Mesh
+#include "pylith/topology/Field.hh" /// USES Field
+
+#include "spatialdata/geocoords/CoordSys.hh" /// USES CoordSys
+
 #include <cassert> // USES assert()
 #include <sstream> // USES std::ostringstream
 #include <stdexcept> // USES std::runtime_error
 
 // ----------------------------------------------------------------------
 // Constructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::DataWriterHDF5Ext(void) :
+pylith::meshio::DataWriterHDF5Ext::DataWriterHDF5Ext(void) :
   _filename("output.h5"),
   _h5(new HDF5),
   _tstampIndex(0)
@@ -37,8 +43,7 @@
 
 // ----------------------------------------------------------------------
 // Destructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::~DataWriterHDF5Ext(void)
+pylith::meshio::DataWriterHDF5Ext::~DataWriterHDF5Ext(void)
 { // destructor
   delete _h5; _h5 = 0;
   deallocate();
@@ -46,13 +51,12 @@
 
 // ----------------------------------------------------------------------
 // Deallocate PETSc and local data structures.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::deallocate(void)
+pylith::meshio::DataWriterHDF5Ext::deallocate(void)
 { // deallocate
   PYLITH_METHOD_BEGIN;
 
-  DataWriter<mesh_type, field_type>::deallocate();
+  DataWriter::deallocate();
 
   PetscErrorCode err = 0;
   const typename dataset_type::const_iterator& dEnd = _datasets.end();
@@ -67,9 +71,8 @@
   
 // ----------------------------------------------------------------------
 // Copy constructor.
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::DataWriterHDF5Ext(const DataWriterHDF5Ext<mesh_type, field_type>& w) :
-  DataWriter<mesh_type, field_type>(w),
+pylith::meshio::DataWriterHDF5Ext::DataWriterHDF5Ext(const DataWriterHDF5Ext& w) :
+  DataWriter(w),
   _filename(w._filename),
   _h5(new HDF5),
   _tstampIndex(0)
@@ -78,9 +81,8 @@
 
 // ----------------------------------------------------------------------
 // Prepare for writing files.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::open(const mesh_type& mesh,
+pylith::meshio::DataWriterHDF5Ext::open(const topology::Mesh& mesh,
 							      const int numTimeSteps,
 							      const char* label,
 							      const int labelId)
@@ -91,8 +93,8 @@
   _datasets.clear();
 
   try {
-    DataWriter<mesh_type, field_type>::open(mesh, numTimeSteps, label, labelId);
-    const char* context = DataWriter<mesh_type, field_type>::_context.c_str();
+    DataWriter::open(mesh, numTimeSteps, label, labelId);
+    const char* context = DataWriter::_context.c_str();
 
     PetscDM dmMesh = mesh.dmMesh();assert(dmMesh);
     MPI_Comm comm;
@@ -284,13 +286,12 @@
 
 // ----------------------------------------------------------------------
 // Close output files.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::close(void)
+pylith::meshio::DataWriterHDF5Ext::close(void)
 { // close
   PYLITH_METHOD_BEGIN;
 
-  DataWriter<mesh_type, field_type>::_context = "";
+  DataWriter::_context = "";
 
   if (_h5->isOpen()) {
     _h5->close();
@@ -313,18 +314,17 @@
 
 // ----------------------------------------------------------------------
 // Write field over vertices to file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::writeVertexField(const PylithScalar t,
-									  field_type& field,
-									  const mesh_type& mesh)
+pylith::meshio::DataWriterHDF5Ext::writeVertexField(const PylithScalar t,
+						    topology::Field& field,
+						    const topology::Mesh& mesh)
 { // writeVertexField
   PYLITH_METHOD_BEGIN;
   
   assert(_h5);
 
   try {
-    const char* context = DataWriter<mesh_type, field_type>::_context.c_str();
+    const char* context = DataWriter::_context.c_str();
 
     PetscDM dmMesh = mesh.dmMesh();assert(dmMesh);
     MPI_Comm comm;
@@ -389,7 +389,7 @@
     if (!commRank) {
       if (createdExternalDataset) {
         // Add new external dataset to HDF5 file.
-        const int numTimeSteps = DataWriter<mesh_type, field_type>::_numTimeSteps;
+        const int numTimeSteps = DataWriter::_numTimeSteps;
         const hsize_t ndims = (numTimeSteps > 0) ? 3 : 2;
         hsize_t maxDims[3];
         if (3 == ndims) {
@@ -410,7 +410,7 @@
       } else {
         // Update number of time steps in external dataset info in HDF5 file.
         const int totalNumTimeSteps = 
-          DataWriter<mesh_type, field_type>::_numTimeSteps;
+          DataWriter::_numTimeSteps;
         assert(totalNumTimeSteps > 0);
         const int numTimeSteps = _datasets[field.label()].numTimeSteps;
 	
@@ -443,19 +443,18 @@
 
 // ----------------------------------------------------------------------
 // Write field over cells to file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::writeCellField(const PylithScalar t,
-									field_type& field,
-									const char* label,
-									const int labelId)
+pylith::meshio::DataWriterHDF5Ext::writeCellField(const PylithScalar t,
+						  topology::Field& field,
+						  const char* label,
+						  const int labelId)
 { // writeCellField
   PYLITH_METHOD_BEGIN;
 
   assert(_h5);
 
   try {
-    const char* context = DataWriter<mesh_type, field_type>::_context.c_str();
+    const char* context = DataWriter::_context.c_str();
 
     PetscDM dmMesh = field.mesh().dmMesh();assert(dmMesh);
     MPI_Comm comm;
@@ -538,7 +537,7 @@
       // Add new external dataset to HDF5 file.
 
         const int numTimeSteps =
-          DataWriter<mesh_type, field_type>::_numTimeSteps;
+          DataWriter::_numTimeSteps;
         const hsize_t ndims = (numTimeSteps > 0) ? 3 : 2;
         hsize_t maxDims[3];
         if (3 == ndims) {
@@ -560,7 +559,7 @@
       } else {
         // Update number of time steps in external dataset info in HDF5 file.
         const int totalNumTimeSteps = 
-          DataWriter<mesh_type, field_type>::_numTimeSteps;
+          DataWriter::_numTimeSteps;
         assert(totalNumTimeSteps > 0);
         const int numTimeSteps = _datasets[field.label()].numTimeSteps;
 	
@@ -593,15 +592,14 @@
 
 // ----------------------------------------------------------------------
 // Generate filename for HDF5 file.
-template<typename mesh_type, typename field_type>
 std::string
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::_hdf5Filename(void) const
+pylith::meshio::DataWriterHDF5Ext::_hdf5Filename(void) const
 { // _hdf5Filename
   PYLITH_METHOD_BEGIN;
 
   std::ostringstream filename;
   const int indexExt = _filename.find(".h5");
-  const int numTimeSteps = DataWriter<mesh_type, field_type>::_numTimeSteps;
+  const int numTimeSteps = DataWriter::_numTimeSteps;
   if (0 == numTimeSteps) {
     filename << std::string(_filename, 0, indexExt) << "_info.h5";
   } else {
@@ -613,9 +611,8 @@
 
 // ----------------------------------------------------------------------
 // Generate filename for external dataset file.
-template<typename mesh_type, typename field_type>
 std::string
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::_datasetFilename(const char* field) const
+pylith::meshio::DataWriterHDF5Ext::_datasetFilename(const char* field) const
 { // _datasetFilename
   PYLITH_METHOD_BEGIN;
 
@@ -629,9 +626,8 @@
 
 // ----------------------------------------------------------------------
 // Write time stamp to file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::_writeTimeStamp(
+pylith::meshio::DataWriterHDF5Ext::_writeTimeStamp(
 						  const PylithScalar t)
 { // _writeTimeStamp
   PYLITH_METHOD_BEGIN;
@@ -663,7 +659,7 @@
   dims[0] = _tstampIndex+1;
   dims[1] = 1;
   dims[2] = 1;
-  const PylithScalar tDim = t * DataWriter<mesh_type, field_type>::_timeScale;
+  const PylithScalar tDim = t * DataWriter::_timeScale;
   _h5->writeDatasetChunk("/", "time", &tDim, dims, dimsChunk, ndims, _tstampIndex, scalartype);
   
   _tstampIndex++;

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -50,8 +50,7 @@
 
 // DataWriterHDF5Ext ----------------------------------------------------
 /// Object for writing finite-element data to HDF5 file.
-template<typename mesh_type, typename field_type>
-class pylith::meshio::DataWriterHDF5Ext : public DataWriter<mesh_type,field_type>
+class pylith::meshio::DataWriterHDF5Ext : public DataWriter
 { // DataWriterHDF5Ext
   friend class TestDataWriterHDF5ExtMesh; // unit testing
   friend class TestDataWriterHDF5ExtSubMesh; // unit testing
@@ -71,7 +70,7 @@
    *
    * @returns Copy of this.
    */
-  DataWriter<mesh_type, field_type>* clone(void) const;
+  DataWriter* clone(void) const;
 
   /// Deallocate PETSc and local data structures.
   void deallocate(void);
@@ -90,7 +89,7 @@
    *   (=0 means use all cells in mesh).
    * @param labelId Value of label defining which cells to include.
    */
-  void open(const mesh_type& mesh,
+  void open(const topology::Mesh& mesh,
 	    const int numTimeSteps,
 	    const char* label =0,
 	    const int labelId =0);
@@ -105,8 +104,8 @@
    * @param mesh Mesh associated with output.
    */
   void writeVertexField(const PylithScalar t,
-			field_type& field,
-			const mesh_type& mesh);
+			topology::Field& field,
+			const topology::Mesh& mesh);
 
   /** Write field over cells to file.
    *
@@ -117,7 +116,7 @@
    * @param labelId Value of label defining which cells to include.
    */
   void writeCellField(const PylithScalar t,
-		      field_type& field,
+		      topology::Field& field,
 		      const char* label =0,
 		      const int labelId =0);
 
@@ -167,7 +166,6 @@
 }; // DataWriterHDF5Ext
 
 #include "DataWriterHDF5Ext.icc" // inline methods
-#include "DataWriterHDF5Ext.cc" // template definitions
 
 #endif // pylith_meshio_datawriterhdf5ext_hh
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.icc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.icc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -21,18 +21,16 @@
 #else
 
 // Make copy of this object.
-template<typename mesh_type, typename field_type>
 inline
-pylith::meshio::DataWriter<mesh_type, field_type>*
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::clone(void) const {
+pylith::meshio::DataWriter*
+pylith::meshio::DataWriterHDF5Ext::clone(void) const {
   return new DataWriterHDF5Ext(*this);
 }
 
 // Set filename for HDF5 file.
-template<typename mesh_type, typename field_type>
 inline
 void
-pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::filename(const char* filename) {
+pylith::meshio::DataWriterHDF5Ext::filename(const char* filename) {
   _filename = filename;
 }
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,6 +18,10 @@
 
 #include <portinfo>
 
+#include "DataWriterVTK.hh" // Implementation of class methods
+
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Stratum.hh" // USES StratumIS
 
 #include <petscdmmesh_viewers.hh> // USES VTKViewer
@@ -27,12 +31,13 @@
 #include <sstream> // USES std::ostringstream
 #include <stdexcept> // USES std::runtime_error
 
-extern PetscErrorCode DMPlexVTKWriteAll(PetscObject odm, PetscViewer viewer);
+extern
+PetscErrorCode DMPlexVTKWriteAll(PetscObject odm, 
+				 PetscViewer viewer);
 
 // ----------------------------------------------------------------------
 // Constructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::DataWriterVTK(void) :
+pylith::meshio::DataWriterVTK::DataWriterVTK(void) :
   _timeConstant(1.0),
   _filename("output.vtk"),
   _timeFormat("%f"),
@@ -48,32 +53,29 @@
 
 // ----------------------------------------------------------------------
 // Destructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::~DataWriterVTK(void)
+pylith::meshio::DataWriterVTK::~DataWriterVTK(void)
 { // destructor
   deallocate();
 } // destructor  
 
 // ----------------------------------------------------------------------
 // Deallocate PETSc and local data structures.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterVTK<mesh_type, field_type>::deallocate(void)
+pylith::meshio::DataWriterVTK::deallocate(void)
 { // deallocate
   PYLITH_METHOD_BEGIN;
 
   closeTimeStep(); // Insure time step is closed.
   close(); // Insure clean up.
-  DataWriter<mesh_type, field_type>::deallocate();
+  DataWriter::deallocate();
 
   PYLITH_METHOD_END;
 } // deallocate
   
 // ----------------------------------------------------------------------
 // Copy constructor.
-template<typename mesh_type, typename field_type>
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::DataWriterVTK(const DataWriterVTK<mesh_type, field_type>& w) :
-  DataWriter<mesh_type, field_type>(w),
+pylith::meshio::DataWriterVTK::DataWriterVTK(const DataWriterVTK& w) :
+  DataWriter(w),
   _timeConstant(w._timeConstant),
   _filename(w._filename),
   _timeFormat(w._timeFormat),
@@ -88,9 +90,8 @@
 
 // ----------------------------------------------------------------------
 // Set value used to normalize time stamp in name of VTK file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::timeConstant(const PylithScalar value)
+pylith::meshio::DataWriterVTK::timeConstant(const PylithScalar value)
 { // timeConstant
   PYLITH_METHOD_BEGIN;
 
@@ -107,9 +108,8 @@
 
 // ----------------------------------------------------------------------
 // Set precision of floating point values in output.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::precision(const int value)
+pylith::meshio::DataWriterVTK::precision(const int value)
 { // precision
   PYLITH_METHOD_BEGIN;
 
@@ -126,16 +126,15 @@
 
 // ----------------------------------------------------------------------
 // Prepare for writing files.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::open(const mesh_type& mesh,
-							  const int numTimeSteps,
-							  const char* label,
-							  const int labelId)
+pylith::meshio::DataWriterVTK::open(const topology::Mesh& mesh,
+				    const int numTimeSteps,
+				    const char* label,
+				    const int labelId)
 { // open
   PYLITH_METHOD_BEGIN;
 
-  DataWriter<mesh_type, field_type>::open(mesh, numTimeSteps, label, labelId);
+  DataWriter::open(mesh, numTimeSteps, label, labelId);
 
   // Save handle for actions required in closeTimeStep() and close();
   PetscErrorCode err = 0;
@@ -162,9 +161,8 @@
 
 // ----------------------------------------------------------------------
 // Close output files.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::close(void)
+pylith::meshio::DataWriterVTK::close(void)
 { // close
   PYLITH_METHOD_BEGIN;
 
@@ -180,19 +178,18 @@
   } // if
   _isOpen = false;
 
-  DataWriter<mesh_type, field_type>::close();
+  DataWriter::close();
 
   PYLITH_METHOD_END;
 } // close
 
 // ----------------------------------------------------------------------
 // Prepare file for data at a new time step.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::openTimeStep(const PylithScalar t,
-								  const mesh_type& mesh,
-								  const char* label,
-								  const int labelId)
+pylith::meshio::DataWriterVTK::openTimeStep(const PylithScalar t,
+					    const topology::Mesh& mesh,
+					    const char* label,
+					    const int labelId)
 { // openTimeStep
   PYLITH_METHOD_BEGIN;
 
@@ -219,9 +216,8 @@
 
 // ----------------------------------------------------------------------
 /// Cleanup after writing data for a time step.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::closeTimeStep(void)
+pylith::meshio::DataWriterVTK::closeTimeStep(void)
 { // closeTimeStep
   PYLITH_METHOD_BEGIN;
 
@@ -241,11 +237,10 @@
 
 // ----------------------------------------------------------------------
 // Write field over vertices to file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::writeVertexField(const PylithScalar t,
-								      field_type& field,
-								      const mesh_type& mesh)
+pylith::meshio::DataWriterVTK::writeVertexField(const PylithScalar t,
+						topology::Field& field,
+						const topology::Mesh& mesh)
 { // writeVertexField
   PYLITH_METHOD_BEGIN;
 
@@ -270,12 +265,11 @@
 
 // ----------------------------------------------------------------------
 // Write field over cells to file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::writeCellField(const PylithScalar t,
-								    field_type& field,
-								    const char* label,
-								    const int labelId)
+pylith::meshio::DataWriterVTK::writeCellField(const PylithScalar t,
+					      topology::Field& field,
+					      const char* label,
+					      const int labelId)
 { // writeCellField
   PYLITH_METHOD_BEGIN;
 
@@ -298,15 +292,14 @@
 
 // ----------------------------------------------------------------------
 // Generate filename for VTK file.
-template<typename mesh_type, typename field_type>
 std::string
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::_vtkFilename(const PylithScalar t) const
+pylith::meshio::DataWriterVTK::_vtkFilename(const PylithScalar t) const
 { // _vtkFilename
   PYLITH_METHOD_BEGIN;
 
   std::ostringstream filename;
   const int indexExt = _filename.find(".vtk");
-  const int numTimeSteps = DataWriter<mesh_type, field_type>::_numTimeSteps;
+  const int numTimeSteps = DataWriter::_numTimeSteps;
   if (numTimeSteps > 0) {
     // If data with multiple time steps, then add time stamp to filename
     char sbuffer[256];

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -28,10 +28,11 @@
 // Include directives ---------------------------------------------------
 #include "DataWriter.hh" // ISA DataWriter
 
+#include "pylith/utils/petscfwd.h" // HASA PetscDM
+
 // DataWriterVTK --------------------------------------------------------
 /// Object for writing finite-element data to VTK file.
-template<typename mesh_type, typename field_type>
-class pylith::meshio::DataWriterVTK : public DataWriter<mesh_type,field_type>
+class pylith::meshio::DataWriterVTK : public DataWriter
 { // DataWriterVTK
   friend class TestDataWriterVTKMesh; // unit testing
   friend class TestDataWriterVTKSubMesh; // unit testing
@@ -52,7 +53,7 @@
    *
    * @returns Copy of this.
    */
-  DataWriter<mesh_type, field_type>* clone(void) const;
+  DataWriter* clone(void) const;
 
   /// Deallocate PETSc and local data structures.
   void deallocate(void);
@@ -92,7 +93,7 @@
    *   (=0 means use all cells in mesh).
    * @param labelId Value of label defining which cells to include.
    */
-  void open(const mesh_type& mesh,
+  void open(const topology::Mesh& mesh,
 	    const int numTimeSteps,
 	    const char* label =0,
 	    const int labelId =0);
@@ -109,7 +110,7 @@
    * @param labelId Value of label defining which cells to include.
    */
   void openTimeStep(const PylithScalar t,
-		    const mesh_type& mesh,
+		    const topology::Mesh& mesh,
 		    const char* label =0,
 		    const int labelId =0);
 
@@ -123,8 +124,8 @@
    * @param mesh Mesh associated with output.
    */
   void writeVertexField(const PylithScalar t,
-			field_type& field,
-			const mesh_type& mesh);
+			topology::Field& field,
+			const topology::Mesh& mesh);
 
   /** Write field over cells to file.
    *
@@ -135,7 +136,7 @@
    * @param labelId Value of label defining which cells to include.
    */
   void writeCellField(const PylithScalar t,
-		      field_type& field,
+		      topology::Field& field,
 		      const char* label =0,
 		      const int labelId =0);
 
@@ -181,7 +182,6 @@
 }; // DataWriterVTK
 
 #include "DataWriterVTK.icc" // inline methods
-#include "DataWriterVTK.cc" // template definitions
 
 #endif // pylith_meshio_datawritervtk_hh
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.icc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.icc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -21,26 +21,23 @@
 #else
 
 // Make copy of this object.
-template<typename mesh_type, typename field_type>
 inline
-pylith::meshio::DataWriter<mesh_type, field_type>*
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::clone(void) const {
+pylith::meshio::DataWriter*
+pylith::meshio::DataWriterVTK::clone(void) const {
   return new DataWriterVTK(*this);
 }
 
 // Set filename for VTK file.
-template<typename mesh_type, typename field_type>
 inline
 void
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::filename(const char* filename) {
+pylith::meshio::DataWriterVTK::filename(const char* filename) {
   _filename = filename;
 }
 
 // Set time format for time stamp in name of VTK file.
-template<typename mesh_type, typename field_type>
 inline
 void
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::timeFormat(const char* format) {
+pylith::meshio::DataWriterVTK::timeFormat(const char* format) {
   _timeFormat = format;
 }
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/Makefile.am	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/Makefile.am	2013-05-14 19:55:48 UTC (rev 22061)
@@ -21,14 +21,10 @@
 
 subpkginclude_HEADERS = \
 	CellFilter.hh \
-	CellFilter.cc \
 	CellFilterAvg.hh \
-	CellFilterAvg.cc \
 	DataWriter.hh \
-	DataWriter.cc \
 	DataWriterVTK.hh \
 	DataWriterVTK.icc \
-	DataWriterVTK.cc \
 	MeshBuilder.hh \
 	MeshIO.hh \
 	MeshIO.icc \
@@ -37,13 +33,10 @@
 	MeshIOLagrit.hh \
 	MeshIOLagrit.icc \
 	OutputManager.hh \
-	OutputManager.cc \
 	OutputSolnSubset.hh \
 	OutputSolnPoints.hh \
 	VertexFilter.hh \
-	VertexFilter.cc \
 	VertexFilterVecNorm.hh \
-	VertexFilterVecNorm.cc \
 	meshiofwd.hh
 
 if ENABLE_HDF5
@@ -52,10 +45,8 @@
 	Xdmf.hh \
 	DataWriterHDF5.hh \
 	DataWriterHDF5.icc \
-	DataWriterHDF5.cc \
 	DataWriterHDF5Ext.hh \
-	DataWriterHDF5Ext.icc \
-	DataWriterHDF5Ext.cc
+	DataWriterHDF5Ext.icc
 endif
 
 if ENABLE_CUBIT

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,18 +18,20 @@
 
 #include <portinfo>
 
+#include "OutputManager.hh" // Implementation of class methods
+
 #include "DataWriter.hh" // USES DataWriter
 #include "VertexFilter.hh" // USES VertexFilter
 #include "CellFilter.hh" // USES CellFilter
 
+#include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
 
 #include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
 
 // ----------------------------------------------------------------------
 // Constructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::OutputManager<mesh_type, field_type>::OutputManager(void) :
+pylith::meshio::OutputManager::OutputManager(void) :
   _coordsys(0),
   _writer(0),
   _vertexFilter(0),
@@ -40,17 +42,15 @@
 
 // ----------------------------------------------------------------------
 // Destructor
-template<typename mesh_type, typename field_type>
-pylith::meshio::OutputManager<mesh_type, field_type>::~OutputManager(void)
+pylith::meshio::OutputManager::~OutputManager(void)
 { // destructor
   deallocate();
 } // destructor  
 
 // ----------------------------------------------------------------------
 // Deallocate PETSc and local data structures.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::OutputManager<mesh_type, field_type>::deallocate(void)
+pylith::meshio::OutputManager::deallocate(void)
 { // deallocate
   _writer = 0; // :TODO: Use shared pointer
   _vertexFilter = 0; // :TODO: Use shared pointer
@@ -61,9 +61,8 @@
   
 // ----------------------------------------------------------------------
 // Set coordinate system in output. The vertex fields in the output
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::OutputManager<mesh_type, field_type>::coordsys(const spatialdata::geocoords::CoordSys* cs)
+pylith::meshio::OutputManager::coordsys(const spatialdata::geocoords::CoordSys* cs)
 { // coordsys
   PYLITH_METHOD_BEGIN;
 
@@ -74,9 +73,8 @@
 
 // ----------------------------------------------------------------------
 // Set writer to write data to file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::OutputManager<mesh_type, field_type>::writer(DataWriter<mesh_type, field_type>* const datawriter)
+pylith::meshio::OutputManager::writer(DataWriter* const datawriter)
 { // writer
   PYLITH_METHOD_BEGIN;
 
@@ -87,9 +85,8 @@
 
 // ----------------------------------------------------------------------
 // Set filter for vertex data.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::OutputManager<mesh_type, field_type>::vertexFilter(VertexFilter<field_type>* const filter)
+pylith::meshio::OutputManager::vertexFilter(VertexFilter* const filter)
 { // vertexFilter
   PYLITH_METHOD_BEGIN;
 
@@ -100,9 +97,8 @@
 
 // ----------------------------------------------------------------------
 // Set filter for cell data.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::OutputManager<mesh_type, field_type>::cellFilter(CellFilter<mesh_type, field_type>* const filter)
+pylith::meshio::OutputManager::cellFilter(CellFilter* const filter)
 { // cellFilter
   PYLITH_METHOD_BEGIN;
 
@@ -113,9 +109,8 @@
 
 // ----------------------------------------------------------------------
 // Get fields used in output.
-template<typename mesh_type, typename field_type>
-const pylith::topology::Fields<field_type>*
-pylith::meshio::OutputManager<mesh_type, field_type>::fields(void) const
+const pylith::topology::Fields*
+pylith::meshio::OutputManager::fields(void) const
 { // fields
   PYLITH_METHOD_BEGIN;
 
@@ -124,12 +119,11 @@
 
 // ----------------------------------------------------------------------
 // Prepare for output.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::OutputManager<mesh_type, field_type>::open(const mesh_type& mesh,
-							   const int numTimeSteps,
-							   const char* label,
-							   const int labelId)
+pylith::meshio::OutputManager::open(const topology::Mesh& mesh,
+				    const int numTimeSteps,
+				    const char* label,
+				    const int labelId)
 { // open
   PYLITH_METHOD_BEGIN;
 
@@ -151,9 +145,8 @@
 
 // ----------------------------------------------------------------------
 /// Close output files.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::OutputManager<mesh_type, field_type>::close(void)
+pylith::meshio::OutputManager::close(void)
 { // close
   PYLITH_METHOD_BEGIN;
 
@@ -165,12 +158,11 @@
 
 // ----------------------------------------------------------------------
 // Setup file for writing fields at time step.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::OutputManager<mesh_type, field_type>::openTimeStep(const PylithScalar t,
-								   const mesh_type& mesh,
-								   const char* label,
-								   const int labelId)
+pylith::meshio::OutputManager::openTimeStep(const PylithScalar t,
+					    const topology::Mesh& mesh,
+					    const char* label,
+					    const int labelId)
 { // openTimeStep
   PYLITH_METHOD_BEGIN;
 
@@ -182,9 +174,8 @@
 
 // ----------------------------------------------------------------------
 // End writing fields at time step.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::OutputManager<mesh_type, field_type>::closeTimeStep(void)
+pylith::meshio::OutputManager::closeTimeStep(void)
 { // closeTimeStep
   PYLITH_METHOD_BEGIN;
 
@@ -196,16 +187,15 @@
 
 // ----------------------------------------------------------------------
 // Append finite-element vertex field to file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::OutputManager<mesh_type, field_type>::appendVertexField(const PylithScalar t,
-									field_type& field,
-									const mesh_type& mesh)
+pylith::meshio::OutputManager::appendVertexField(const PylithScalar t,
+						 topology::Field& field,
+						 const topology::Mesh& mesh)
 { // appendVertexField
   PYLITH_METHOD_BEGIN;
 
-  field_type& fieldFiltered = (!_vertexFilter) ? field : _vertexFilter->filter(field);
-  field_type& fieldDimensioned = _dimension(fieldFiltered);
+  topology::Field& fieldFiltered = (!_vertexFilter) ? field : _vertexFilter->filter(field);
+  topology::Field& fieldDimensioned = _dimension(fieldFiltered);
   
   _writer->writeVertexField(t, fieldDimensioned, mesh);
 
@@ -214,17 +204,16 @@
 
 // ----------------------------------------------------------------------
 // Append finite-element cell field to file.
-template<typename mesh_type, typename field_type>
 void
-pylith::meshio::OutputManager<mesh_type, field_type>::appendCellField(const PylithScalar t,
-								      field_type& field,
-								      const char* label,
-								      const int labelId)
+pylith::meshio::OutputManager::appendCellField(const PylithScalar t,
+					       topology::Field& field,
+					       const char* label,
+					       const int labelId)
 { // appendCellField
   PYLITH_METHOD_BEGIN;
 
-  field_type& fieldFiltered = (!_cellFilter) ? field : _cellFilter->filter(field, label, labelId);
-  field_type& fieldDimensioned = _dimension(fieldFiltered);
+  topology::Field& fieldFiltered = (!_cellFilter) ? field : _cellFilter->filter(field, label, labelId);
+  topology::Field& fieldDimensioned = _dimension(fieldFiltered);
 
   try {
     _writer->writeCellField(t, fieldDimensioned, label, labelId);
@@ -237,9 +226,8 @@
 
 // ----------------------------------------------------------------------
 // Dimension field.
-template<typename mesh_type, typename field_type>
-field_type&
-pylith::meshio::OutputManager<mesh_type, field_type>::_dimension(field_type& fieldIn)
+pylith::topology::Field&
+pylith::meshio::OutputManager::_dimension(topology::Field& fieldIn)
 { // _dimension
   PYLITH_METHOD_BEGIN;
 
@@ -287,17 +275,17 @@
       } // switch
     
     if (!_fields) {
-      _fields = new topology::Fields<field_type>(fieldIn.mesh());assert(_fields);
+      _fields = new topology::Fields(fieldIn.mesh());assert(_fields);
     } // if
     
     if (!_fields->hasField(fieldName.c_str())) {
       _fields->add(fieldName.c_str(), fieldIn.label());
-      field_type& fieldOut = _fields->get(fieldName.c_str());
+      topology::Field& fieldOut = _fields->get(fieldName.c_str());
       fieldOut.cloneSection(fieldIn);
       fieldOut.vectorFieldType(fieldIn.vectorFieldType());
       fieldOut.scale(fieldIn.scale());
     } // if
-    field_type& fieldOut = _fields->get(fieldName.c_str());
+    topology::Field& fieldOut = _fields->get(fieldName.c_str());
     fieldOut.copy(fieldIn);
     fieldOut.addDimensionOkay(true);
     fieldOut.dimensionalize();

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,7 +33,6 @@
 
 // OutputManager --------------------------------------------------------
 /// Manager for output of finite-element data.
-template<typename mesh_type, typename field_type>
 class pylith::meshio::OutputManager
 { // OutputManager
   friend class TestOutputManager; // unit testing
@@ -63,25 +62,25 @@
    *
    * @param datawriter Writer for data.
    */
-  void writer(DataWriter<mesh_type, field_type>* const datawriter);
+  void writer(DataWriter* const datawriter);
 
   /** Set filter for vertex data.
    *
    * @param filter Filter to apply to vertex data before writing.
    */
-  void vertexFilter(VertexFilter<field_type>* const filter);
+  void vertexFilter(VertexFilter* const filter);
 
   /** Set filter for cell data.
    *
    * @param filter Filter to apply to cell data before writing.
    */
-  void cellFilter(CellFilter<mesh_type, field_type>* const filter);
+  void cellFilter(CellFilter* const filter);
 
   /** Get fields used in output.
    *
    * @returns Fields associated with output.
    */
-  const topology::Fields<field_type>* fields(void) const;
+  const topology::Fields* fields(void) const;
 
   /** Prepare for output.
    *
@@ -92,7 +91,7 @@
    * @param labelId Value of label defining which cells to include.
    */
   virtual
-  void open(const mesh_type& mesh,
+  void open(const topology::Mesh& mesh,
 	    const int numTimeSteps,
 	    const char* label =0,
 	    const int labelId =0);
@@ -111,7 +110,7 @@
    */
   virtual
   void openTimeStep(const PylithScalar t,
-		    const mesh_type& mesh,
+		    const topology::Mesh& mesh,
 		    const char* label =0,
 		    const int labelId =0);
 
@@ -127,8 +126,8 @@
    */
   virtual
   void appendVertexField(const PylithScalar t,
-			 field_type& field,
-			 const mesh_type& mesh);
+			 topology::Field& field,
+			 const topology::Mesh& mesh);
 
   /** Append finite-element cell field to file.
    *
@@ -140,7 +139,7 @@
    */
   virtual
   void appendCellField(const PylithScalar t,
-		       field_type& field,
+		       topology::Field& field,
 		       const char* label =0,
 		       const int labelId =0);
 
@@ -151,12 +150,12 @@
    *
    * @param fieldIn Field to dimensionalize.
    */
-  field_type& _dimension(field_type& fieldIn);
+  topology::Field& _dimension(topology::Field& fieldIn);
 
 // PROTECTED MEMBERS ////////////////////////////////////////////////////
 protected :
 
-  topology::Fields<field_type>* _fields; ///< Buffer fields.
+  topology::Fields* _fields; ///< Buffer fields.
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :
@@ -170,14 +169,12 @@
   /// Coordinate system for output.
   spatialdata::geocoords::CoordSys* _coordsys;
 
-  DataWriter<mesh_type, field_type>* _writer; ///< Writer for data.
-  VertexFilter<field_type>* _vertexFilter; ///< Filter applied to vertex data.
-  CellFilter<mesh_type, field_type>* _cellFilter; ///< Filter applied to cell data.
+  DataWriter* _writer; ///< Writer for data.
+  VertexFilter* _vertexFilter; ///< Filter applied to vertex data.
+  CellFilter* _cellFilter; ///< Filter applied to cell data.
 
 }; // OutputManager
 
-#include "OutputManager.cc" // template methods
-
 #endif // pylith_meshio_outputmanager_hh
 
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -20,13 +20,16 @@
 
 #include "OutputSolnPoints.hh" // implementation of class methods
 
+#include "MeshBuilder.hh" // USES MeshBuilder
+
 #include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/Fields.hh" // USES Fields
 #include "pylith/topology/MeshOps.hh" // USES MeshOps::nondimensionalize()
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
-#include "MeshBuilder.hh" // USES MeshBuilder
 
 #include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 // ----------------------------------------------------------------------
 // Constructor
@@ -51,7 +54,7 @@
 { // deallocate
   PYLITH_METHOD_BEGIN;
 
-  OutputManager<topology::Mesh, topology::Field<topology::Mesh> >::deallocate();
+  OutputManager::deallocate();
 
   if (_interpolator) {
     PetscErrorCode err = err = DMInterpolationDestroy(&_interpolator);PYLITH_CHECK_ERROR(err);
@@ -158,7 +161,7 @@
 #endif
 
   if (!_fields) {
-    _fields = new topology::Fields<topology::Field<topology::Mesh> >(*_pointsMesh);assert(_fields);
+    _fields = new topology::Fields(*_pointsMesh);assert(_fields);
   } // if
 
   PYLITH_METHOD_END;
@@ -179,7 +182,7 @@
   assert(!labelId);
 
   assert(_pointsMesh);
-  OutputManager<topology::Mesh, topology::Field<topology::Mesh> >::open(*_pointsMesh, numTimeSteps, label, labelId);
+  OutputManager::open(*_pointsMesh, numTimeSteps, label, labelId);
 
   PYLITH_METHOD_END;
 } // open
@@ -199,7 +202,7 @@
   assert(!labelId);
 
   assert(_pointsMesh);
-  OutputManager<topology::Mesh, topology::Field<topology::Mesh> >::openTimeStep(t, *_pointsMesh, label, labelId);
+  OutputManager::openTimeStep(t, *_pointsMesh, label, labelId);
 
   PYLITH_METHOD_END;
 } // openTimeStep
@@ -209,7 +212,7 @@
 // Append finite-element vertex field to file.
 void
 pylith::meshio::OutputSolnPoints::appendVertexField(const PylithScalar t,
-						    topology::Field<topology::Mesh>& field,
+						    topology::Field& field,
 						    const topology::Mesh& mesh)
 { // appendVertexField
   PYLITH_METHOD_BEGIN;
@@ -248,7 +251,7 @@
   } // if
   _fields->add(fieldName.str().c_str(), field.label());
   
-  topology::Field<topology::Mesh>& fieldInterp = _fields->get(fieldName.str().c_str());
+  topology::Field& fieldInterp = _fields->get(fieldName.str().c_str());
   fieldInterp.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
   fieldInterp.allocate();
   fieldInterp.zero();
@@ -265,7 +268,7 @@
 
   fieldInterp.scatterVectorToSection(context);
 
-  OutputManager<topology::Mesh, topology::Field<topology::Mesh> >::appendVertexField(t, fieldInterp, *_pointsMesh);
+  OutputManager::appendVertexField(t, fieldInterp, *_pointsMesh);
 
   PYLITH_METHOD_END;
 } // appendVertexField
@@ -275,7 +278,7 @@
 // Append finite-element cell field to file.
 void
 pylith::meshio::OutputSolnPoints::appendCellField(const PylithScalar t,
-						  topology::Field<topology::Mesh>& field,
+						  topology::Field& field,
 						  const char* label,
 						  const int labelId)
 { // appendCellField

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -30,6 +30,8 @@
 #include "meshiofwd.hh" // forward declarations
 #include "pylith/utils/petscfwd.h"
 
+#include "spatialdata/units/unitsfwd.hh" // USES Nondimensional
+
 #include "pylith/topology/Mesh.hh" // ISA OutputManager<Mesh>
 #include "pylith/topology/Field.hh" // ISA OutputManager<Field<Mesh>>
 #include "OutputManager.hh" // ISA OutputManager
@@ -38,7 +40,7 @@
 /** @brief C++ object for managing output of finite-element data over
  * a subdomain.
  */
-class pylith::meshio::OutputSolnPoints : public OutputManager<topology::Mesh, topology::Field<topology::Mesh> >
+class pylith::meshio::OutputSolnPoints : public OutputManager
 { // OutputSolnPoints
   friend class TestOutputSolnPoints; // unit testing
 
@@ -107,7 +109,7 @@
    * @param mesh Mesh for output.
    */
   void appendVertexField(const PylithScalar t,
-			 topology::Field<topology::Mesh>& field,
+			 topology::Field& field,
 			 const topology::Mesh& mesh);
 
   /** Append finite-element cell field to file.
@@ -119,7 +121,7 @@
    * @param labelId Value of label defining which cells to include.
    */
   void appendCellField(const PylithScalar t,
-		       topology::Field<topology::Mesh>& field,
+		       topology::Field& field,
 		       const char* label =0,
 		       const int labelId =0);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -44,7 +44,7 @@
 { // deallocate
   PYLITH_METHOD_BEGIN;
 
-  OutputManager<topology::Mesh, topology::Field<topology::Mesh> >::deallocate();
+  OutputManager::deallocate();
 
   delete _submesh; _submesh = 0;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnSubset.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -39,8 +39,7 @@
 /** @brief C++ object for managing output of finite-element data over
  * a subdomain.
  */
-class pylith::meshio::OutputSolnSubset : 
-  public OutputManager<topology::Mesh, topology::Field<topology::Mesh> >
+class pylith::meshio::OutputSolnSubset : public OutputManager
 { // OutputSolnSubset
   friend class TestOutputSolnSubset; // unit testing
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilter.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilter.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilter.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,41 +18,38 @@
 
 #include <portinfo>
 
+#include "VertexFilter.hh" // Implementation of class methods
+
 // ----------------------------------------------------------------------
 // Constructor
-template<typename field_type>
-pylith::meshio::VertexFilter<field_type>::VertexFilter(void)
+pylith::meshio::VertexFilter::VertexFilter(void)
 { // constructor
 } // constructor
 
 // ----------------------------------------------------------------------
 // Destructor
-template<typename field_type>
-pylith::meshio::VertexFilter<field_type>::~VertexFilter(void)
+pylith::meshio::VertexFilter::~VertexFilter(void)
 { // destructor
   deallocate();
 } // destructor  
 
 // ----------------------------------------------------------------------
 // Deallocate PETSc and local data structures.
-template<typename field_type>
 void
-pylith::meshio::VertexFilter<field_type>::deallocate(void)
+pylith::meshio::VertexFilter::deallocate(void)
 { // deallocate
 } // deallocate
   
 // ----------------------------------------------------------------------
 // Copy constructor.
-template<typename field_type>
-pylith::meshio::VertexFilter<field_type>::VertexFilter(const VertexFilter& f)
+pylith::meshio::VertexFilter::VertexFilter(const VertexFilter& f)
 { // copy constructor
 } // copy constructor
 
 // ----------------------------------------------------------------------
 // operator=.
-template<typename field_type>
-const pylith::meshio::VertexFilter<field_type>&
-pylith::meshio::VertexFilter<field_type>::operator=(const VertexFilter& f)
+const pylith::meshio::VertexFilter&
+pylith::meshio::VertexFilter::operator=(const VertexFilter& f)
 { // operator=
 } // operator=
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilter.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilter.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilter.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -35,7 +35,6 @@
 /** @brief C++ object for filtering vertex fields when outputing
  * finite-element data.
  */
-template<typename field_type>
 class pylith::meshio::VertexFilter
 { // VertexFilter
 
@@ -65,8 +64,8 @@
    * @param fieldIn Field to filter.
    */
   virtual
-  field_type&
-  filter(const field_type& fieldIn) = 0;
+  topology::Field&
+  filter(const topology::Field& fieldIn) = 0;
 
 // PROTECTED METHODS ////////////////////////////////////////////////////
 protected :
@@ -88,8 +87,6 @@
 
 }; // VertexFilter
 
-#include "VertexFilter.cc" // template definitions
-
 #endif // pylith_meshio_vertexfilter_hh
 
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,35 +18,34 @@
 
 #include <portinfo>
 
+#include "VertexFilterVecNorm.hh" // Implementation of class methods
+
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
 
 // ----------------------------------------------------------------------
 // Constructor
-template<typename field_type>
-pylith::meshio::VertexFilterVecNorm<field_type>::VertexFilterVecNorm(void) :
+pylith::meshio::VertexFilterVecNorm::VertexFilterVecNorm(void) :
   _fieldVecNorm(0)
 { // constructor
 } // constructor
 
 // ----------------------------------------------------------------------
 // Destructor
-template<typename field_type>
-pylith::meshio::VertexFilterVecNorm<field_type>::~VertexFilterVecNorm(void)
+pylith::meshio::VertexFilterVecNorm::~VertexFilterVecNorm(void)
 { // destructor
   deallocate();
 } // destructor  
 
 // ----------------------------------------------------------------------
 // Deallocate PETSc and local data structures.
-template<typename field_type>
 void
-pylith::meshio::VertexFilterVecNorm<field_type>::deallocate(void)
+pylith::meshio::VertexFilterVecNorm::deallocate(void)
 { // deallocate
   PYLITH_METHOD_BEGIN;
 
-  VertexFilter<field_type>::deallocate();  
+  VertexFilter::deallocate();  
 
   delete _fieldVecNorm; _fieldVecNorm = 0;
 
@@ -55,27 +54,24 @@
   
 // ----------------------------------------------------------------------
 // Copy constructor.
-template<typename field_type>
-pylith::meshio::VertexFilterVecNorm<field_type>::VertexFilterVecNorm(const VertexFilterVecNorm& f) :
-  VertexFilter<field_type>(f),
+pylith::meshio::VertexFilterVecNorm::VertexFilterVecNorm(const VertexFilterVecNorm& f) :
+  VertexFilter(f),
   _fieldVecNorm(0)
 { // copy constructor
 } // copy constructor
 
 // ----------------------------------------------------------------------
 // Create copy of filter.
-template<typename field_type>
-pylith::meshio::VertexFilter<field_type>*
-pylith::meshio::VertexFilterVecNorm<field_type>::clone(void) const
+pylith::meshio::VertexFilter*
+pylith::meshio::VertexFilterVecNorm::clone(void) const
 { // clone
   return new VertexFilterVecNorm(*this);
 } // clone
 
 // ----------------------------------------------------------------------
 // Filter field.
-template<typename field_type>
-field_type&
-pylith::meshio::VertexFilterVecNorm<field_type>::filter(const field_type& fieldIn)
+pylith::topology::Field&
+pylith::meshio::VertexFilterVecNorm::filter(const topology::Field& fieldIn)
 { // filter
   PYLITH_METHOD_BEGIN;
 
@@ -92,7 +88,7 @@
 
   // Allocate field if necessary
   if (!_fieldVecNorm) {
-    _fieldVecNorm = new field_type(fieldIn.mesh());
+    _fieldVecNorm = new topology::Field(fieldIn.mesh());
     _fieldVecNorm->label("vector norm");
     _fieldVecNorm->newSection(fieldIn, fiberDimNorm);
     _fieldVecNorm->allocate();

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,8 +33,7 @@
 /** @brief C++ object for computing vector norms for fields over
  * vertices when outputing finite-element data.
  */
-template<typename field_type>
-class pylith::meshio::VertexFilterVecNorm : public VertexFilter<field_type>
+class pylith::meshio::VertexFilterVecNorm : public VertexFilter
 { // VertexFilterVecNorm
 
 // PUBLIC METHODS ///////////////////////////////////////////////////////
@@ -50,7 +49,7 @@
    *
    * @returns Copy of filter.
    */
-  VertexFilter<field_type>* clone(void) const;
+  VertexFilter* clone(void) const;
 
   /// Deallocate PETSc and local data structures.
   void deallocate(void);
@@ -59,8 +58,8 @@
    *
    * @param fieldIn Field to filter.
    */
-  field_type&
-  filter(const field_type& fieldIn);
+  topology::Field&
+  filter(const topology::Field& fieldIn);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////
 protected :
@@ -81,12 +80,10 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  field_type* _fieldVecNorm; ///< Filtered vertex field
+  topology::Field* _fieldVecNorm; ///< Filtered vertex field
 
 }; // VertexFilterVecNorm
 
-#include "VertexFilterVecNorm.cc" // template definitions
-
 #endif // pylith_meshio_cellfiltervecnorm_hh
 
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/meshiofwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/meshiofwd.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/meshiofwd.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -46,15 +46,15 @@
     class PsetFileBinary;
     class ExodusII;
     
-    template<typename mesh_type, typename field_type> class OutputManager;
-    template<typename mesh_type, typename field_type> class DataWriter;
-    template<typename mesh_type, typename field_type> class DataWriterVTK;
-    template<typename mesh_type, typename field_type> class DataWriterHDF5;
-    template<typename mesh_type, typename field_type> class DataWriterHDF5Ext;
-    template<typename mesh_type, typename field_type> class CellFilter;
-    template<typename mesh_type, typename field_type> class CellFilterAvg;
-    template<typename field_type> class VertexFilter;
-    template<typename field_type> class VertexFilterVecNorm;
+    class OutputManager;
+    class DataWriter;
+    class DataWriterVTK;
+    class DataWriterHDF5;
+    class DataWriterHDF5Ext;
+    class CellFilter;
+    class CellFilterAvg;
+    class VertexFilter;
+    class VertexFilterVecNorm;
     class OutputSolnSubset;
     class OutputSolnPoints;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Explicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Explicit.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Explicit.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -24,6 +24,8 @@
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
 
+#include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
+
 // ----------------------------------------------------------------------
 // Constructor
 pylith::problems::Explicit::Explicit(void)
@@ -55,7 +57,7 @@
   const PylithScalar dt2 = dt*dt;
   const PylithScalar twodt = 2.0*dt;
 
-  topology::Field<topology::Mesh>& dispIncr = _fields->get("dispIncr(t->t+dt)");
+  topology::Field& dispIncr = _fields->get("dispIncr(t->t+dt)");
   const spatialdata::geocoords::CoordSys* cs = dispIncr.mesh().coordsys();assert(cs);
   const int spaceDim = cs->spaceDim();
 
@@ -63,19 +65,19 @@
   topology::VecVisitorMesh dispIncrVisitor(dispIncr);
   PetscScalar* dispIncrArray = dispIncrVisitor.localArray();
 
-  topology::Field<topology::Mesh>& dispT = _fields->get("disp");
+  topology::Field& dispT = _fields->get("disp");
   topology::VecVisitorMesh dispTVisitor(dispT);
   PetscScalar* dispTArray = dispTVisitor.localArray();
 
-  topology::Field<topology::Mesh>& dispTmdt = _fields->get("disp(t-dt)");
+  topology::Field& dispTmdt = _fields->get("disp(t-dt)");
   topology::VecVisitorMesh dispTmdtVisitor(dispTmdt);
   PetscScalar* dispTmdtArray = dispTmdtVisitor.localArray();
 
-  topology::Field<topology::Mesh>& velocity = _fields->get("velocity(t)");
+  topology::Field& velocity = _fields->get("velocity(t)");
   topology::VecVisitorMesh velVisitor(velocity);
   PetscScalar* velArray = velVisitor.localArray();
 
-  topology::Field<topology::Mesh>& acceleration = _fields->get("acceleration(t)");
+  topology::Field& acceleration = _fields->get("acceleration(t)");
   topology::VecVisitorMesh accVisitor(acceleration);
   PetscScalar* accArray = accVisitor.localArray();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -20,7 +20,9 @@
 
 #include "Formulation.hh" // implementation of class methods
 
-#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/Field.hh" // USES Field
+
 #include "pylith/feassemble/Integrator.hh" // USES Integrator
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
@@ -187,7 +189,7 @@
 // Update handles and parameters for reforming the Jacobian and
 // residual.
 void
-pylith::problems::Formulation::updateSettings(topology::Field<topology::Mesh>* jacobian,
+pylith::problems::Formulation::updateSettings(topology::Field* jacobian,
 					      topology::SolutionFields* fields,
 					      const PylithScalar t,
 					      const PylithScalar dt)
@@ -214,7 +216,7 @@
 
   // Update section view of field.
   if (tmpSolutionVec) {
-    topology::Field<topology::Mesh>& solution = _fields->solution();
+    topology::Field& solution = _fields->solution();
     solution.scatterVectorToSection(*tmpSolutionVec);
   } // if
 
@@ -222,7 +224,7 @@
   calcRateFields();  
 
   // Set residual to zero.
-  topology::Field<topology::Mesh>& residual = _fields->get("residual");
+  topology::Field& residual = _fields->get("residual");
   residual.zero();
 
   // Add in contributions that require assembly.
@@ -261,7 +263,7 @@
 
   // Update section view of field.
   if (tmpSolutionVec) {
-    topology::Field<topology::Mesh>& solution = _fields->solution();
+    topology::Field& solution = _fields->solution();
     solution.scatterVectorToSection(*tmpSolutionVec);
   } // if
 
@@ -330,14 +332,14 @@
   assert(tmpSolutionVec);
   assert(_fields);
 
-  topology::Field<topology::Mesh>& solution = _fields->solution();
+  topology::Field& solution = _fields->solution();
 
   if (!_fields->hasField("dispIncr adjust")) {
     _fields->add("dispIncr adjust", "dispIncr_adjust");
-    topology::Field<topology::Mesh>& adjust = _fields->get("dispIncr adjust");
+    topology::Field& adjust = _fields->get("dispIncr adjust");
     adjust.cloneSection(solution);
   } // for
-  topology::Field<topology::Mesh>& adjust = _fields->get("dispIncr adjust");
+  topology::Field& adjust = _fields->get("dispIncr adjust");
   adjust.zero();
 
   // Update section view of field.
@@ -371,14 +373,14 @@
 { // adjustSolnLumped
   PYLITH_METHOD_BEGIN;
 
-  topology::Field<topology::Mesh>& solution = _fields->solution();
+  topology::Field& solution = _fields->solution();
 
   if (!_fields->hasField("dispIncr adjust")) {
     _fields->add("dispIncr adjust", "dispIncr_adjust");
-    topology::Field<topology::Mesh>& adjust = _fields->get("dispIncr adjust");
+    topology::Field& adjust = _fields->get("dispIncr adjust");
     adjust.cloneSection(solution);
   } // for
-  topology::Field<topology::Mesh>& adjust = _fields->get("dispIncr adjust");
+  topology::Field& adjust = _fields->get("dispIncr adjust");
   adjust.zero();
 
   const int numIntegrators = _integrators.size();
@@ -404,7 +406,7 @@
   assert(residualVec);
   assert(searchDirVec);
 
-  meshio::DataWriterHDF5<topology::Mesh,topology::Field<topology::Mesh> > writer;
+  meshio::DataWriterHDF5 writer;
 
   const topology::Mesh& mesh = _fields->mesh();
 
@@ -412,7 +414,7 @@
   const int numTimeSteps = 1;
   writer.open(mesh, numTimeSteps);
    
-  topology::Field<topology::Mesh>& solution = _fields->solution();
+  topology::Field& solution = _fields->solution();
   solution.scatterVectorToSection(*solutionVec);
   writer.writeVertexField(0.0, solution, mesh);
   solution.view("DIVERGED_SOLUTION");
@@ -424,7 +426,7 @@
   solution.view("DIVERGED_SOLUTION0");
   solution.label(label);
 
-  topology::Field<topology::Mesh>& residual = _fields->get("residual");
+  topology::Field& residual = _fields->get("residual");
   residual.scatterVectorToSection(*residualVec);
   writer.writeVertexField(0.0, residual, mesh);
   residual.view("DIVERGED_RESIDUAL");

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -138,7 +138,7 @@
    * @param t Current time (nondimensional).
    * @param dt Time step (nondimension).
    */
-  void updateSettings(topology::Field<topology::Mesh>* jacobian,
+  void updateSettings(topology::Field* jacobian,
 		      topology::SolutionFields* fields,
 		      const PylithScalar t,
 		      const PylithScalar dt);
@@ -189,7 +189,7 @@
   PylithScalar _dt; ///< Current time step (nondimensional).
   topology::Jacobian* _jacobian; ///< Handle to Jacobian of system.
   PetscMat _customConstraintPCMat; ///< Custom PETSc preconditioning matrix for constraints.
-  topology::Field<topology::Mesh>* _jacobianLumped; ///< Handle to lumped Jacobian of system.
+  topology::Field* _jacobianLumped; ///< Handle to lumped Jacobian of system.
   topology::SolutionFields* _fields; ///< Handle to solution fields for system.
 
   std::vector<feassemble::Integrator*> _integrators; ///< Array of integrators.

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Implicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Implicit.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Implicit.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -24,6 +24,8 @@
 #include "pylith/topology/Stratum.hh" // USES Stratum
 #include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
 
+#include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
+
 // ----------------------------------------------------------------------
 // Constructor
 pylith::problems::Implicit::Implicit(void)
@@ -49,7 +51,7 @@
   //        = dispIncr(t+dt) / dt
   const PylithScalar dt = _dt;
 
-  topology::Field<topology::Mesh>& dispIncr = _fields->get("dispIncr(t->t+dt)");
+  topology::Field& dispIncr = _fields->get("dispIncr(t->t+dt)");
   const spatialdata::geocoords::CoordSys* cs = dispIncr.mesh().coordsys();assert(cs);
   const int spaceDim = cs->spaceDim();
 
@@ -57,7 +59,7 @@
   topology::VecVisitorMesh dispIncrVisitor(dispIncr);
   PetscScalar* dispIncrArray = dispIncrVisitor.localArray();
 
-  topology::Field<topology::Mesh>& velocity = _fields->get("velocity(t)");
+  topology::Field& velocity = _fields->get("velocity(t)");
   topology::VecVisitorMesh velVisitor(velocity);
   PetscScalar* velArray = velVisitor.localArray();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -22,6 +22,8 @@
 
 #include "Formulation.hh" // USES Formulation
 
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -95,8 +95,8 @@
    */
   static
   int _epsilon(int i,
-	   int j,
-	   int k);
+	       int j,
+	       int k);
 
 // PROTECTED MEMBERS ////////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLinear.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLinear.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLinear.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -20,9 +20,13 @@
 
 #include "SolverLinear.hh" // implementation of class methods
 
+#include "Formulation.hh" // USES Formulation
+
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
-#include "pylith/problems/Formulation.hh" // USES Formulation
+
 #include "pylith/utils/EventLogger.hh" // USES EventLogger
 
 #include <petscksp.h> // USES PetscKSP
@@ -89,9 +93,9 @@
 // ----------------------------------------------------------------------
 // Solve the system.
 void
-pylith::problems::SolverLinear::solve(topology::Field<topology::Mesh>* solution,
+pylith::problems::SolverLinear::solve(topology::Field* solution,
 				      topology::Jacobian* jacobian,
-				      const topology::Field<topology::Mesh>& residual)
+				      const topology::Field& residual)
 { // solve
   PYLITH_METHOD_BEGIN;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLinear.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLinear.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLinear.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -71,9 +71,9 @@
    * @param jacobian Jacobian of the system.
    * @param residual Residual field.
    */
-  void solve(topology::Field<topology::Mesh>* solution,
+  void solve(topology::Field* solution,
 	     topology::Jacobian* jacobian,
-	     const topology::Field<topology::Mesh>& residual);
+	     const topology::Field& residual);
 
 // PRIVATE METHODS //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -28,6 +28,8 @@
 
 #include "pylith/utils/EventLogger.hh" // USES EventLogger
 
+#include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
+
 // ----------------------------------------------------------------------
 // Constructor
 pylith::problems::SolverLumped::SolverLumped(void)
@@ -57,7 +59,7 @@
 // Initialize solver.
 void
 pylith::problems::SolverLumped::initialize(const topology::SolutionFields& fields,
-					   const topology::Field<topology::Mesh>& jacobian,
+					   const topology::Field& jacobian,
 					   Formulation* formulation)
 { // initialize
   PYLITH_METHOD_BEGIN;
@@ -74,9 +76,9 @@
 // ----------------------------------------------------------------------
 // Solve the system.
 void
-pylith::problems::SolverLumped::solve(topology::Field<topology::Mesh>* solution,
-				      const topology::Field<topology::Mesh>& jacobian,
-				      const topology::Field<topology::Mesh>& residual)
+pylith::problems::SolverLumped::solve(topology::Field* solution,
+				      const topology::Field& jacobian,
+				      const topology::Field& residual)
 { // solve
   PYLITH_METHOD_BEGIN;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -58,7 +58,7 @@
    */
   void
   initialize(const topology::SolutionFields& fields,
-	     const topology::Field<topology::Mesh>& jacobian,
+	     const topology::Field& jacobian,
 	     Formulation* const formulation);
 
   /** Solve the system.
@@ -67,9 +67,9 @@
    * @param jacobian Jacobian of the system.
    * @param residual Residual field.
    */
-  void solve(topology::Field<topology::Mesh>* solution,
-	     const topology::Field<topology::Mesh>& jacobian,
-	     const topology::Field<topology::Mesh>& residual);
+  void solve(topology::Field* solution,
+	     const topology::Field& jacobian,
+	     const topology::Field& residual);
 
 // PRIVATE METHODS //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -21,15 +21,18 @@
 #include "SolverNonlinear.hh" // implementation of class methods
 
 #include "Formulation.hh" // USES Formulation
+
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
+
 #include "pylith/utils/constdefs.h" // USES PYLITH_MAXSCALAR
 #include "pylith/utils/EventLogger.hh" // USES EventLogger
+#include "pylith/utils/error.h" // USES PYLITH_CHECK_ERROR
 
 #include <petscsnes.h> // USES PetscSNES
 
-#include "pylith/utils/error.h" // USES PYLITH_CHECK_ERROR
-
 // KLUDGE, Fixes issue with PetscIsInfOrNanReal and include cmath
 // instead of math.h.
 #define isnan std::isnan // TEMPORARY
@@ -95,7 +98,7 @@
   } // if    
   err = SNESCreate(fields.mesh().comm(), &_snes); PYLITH_CHECK_ERROR(err);
 
-  const topology::Field<topology::Mesh>& residual = fields.get("residual");
+  const topology::Field& residual = fields.get("residual");
   const PetscVec residualVec = residual.globalVector();
   err = SNESSetFunction(_snes, residualVec, reformResidual, (void*) formulation);
   PYLITH_CHECK_ERROR(err);
@@ -127,9 +130,9 @@
 // ----------------------------------------------------------------------
 // Solve the system.
 void
-pylith::problems::SolverNonlinear::solve(topology::Field<topology::Mesh>* solution,
+pylith::problems::SolverNonlinear::solve(topology::Field* solution,
 					 topology::Jacobian* jacobian,
-					 const topology::Field<topology::Mesh>& residual)
+					 const topology::Field& residual)
 { // solve
   PYLITH_METHOD_BEGIN;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -72,9 +72,9 @@
    * @param jacobian Jacobian of the system.
    * @param residual Residual field.
    */
-  void solve(topology::Field<topology::Mesh>* solveSoln,
+  void solve(topology::Field* solveSoln,
 	     topology::Jacobian* jacobian,
-	     const topology::Field<topology::Mesh>& residual);
+	     const topology::Field& residual);
 
   /** Generic C interface for reformResidual for integration with
    * PETSc SNES solvers.

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Distributor.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Distributor.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Distributor.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -69,7 +69,7 @@
 // ----------------------------------------------------------------------
 // Write partitioning info for distributed mesh.
 void
-pylith::topology::Distributor::write(meshio::DataWriter<topology::Mesh, topology::Field<topology::Mesh> >* const writer,
+pylith::topology::Distributor::write(meshio::DataWriter* const writer,
 				     const topology::Mesh& mesh)
 { // write
   PYLITH_METHOD_BEGIN;
@@ -84,7 +84,7 @@
 
   // Setup and allocate field
   const int fiberDim = 1;
-  topology::Field<topology::Mesh> partition(mesh);
+  topology::Field partition(mesh);
   partition.newSection(topology::FieldBase::CELLS_FIELD, fiberDim);
   partition.allocate();
   partition.scale(1.0);

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Distributor.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Distributor.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Distributor.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -63,7 +63,7 @@
    * @param cs Coordinate system for mesh.
    */
   static
-  void write(meshio::DataWriter<topology::Mesh, topology::Field<topology::Mesh> >* const writer,
+  void write(meshio::DataWriter* const writer,
 	     const topology::Mesh& mesh);
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -20,20 +20,24 @@
 
 #include "Field.hh" // implementation of class methods
 
+#include "Mesh.hh" // USES Mesh
+
 #include "pylith/utils/array.hh" // USES scalar_array
 
 #include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 #include "pylith/utils/error.h" // USES PYLITH_CHECK_ERROR
+
+#include <petscdmmesh.hh>
+
 #include <stdexcept> // USES std::runtime_error
 #include <sstream> // USES std::ostringstream
 #include <cassert> // USES assert()
 
 // ----------------------------------------------------------------------
 // Default constructor.
-template<typename mesh_type>
-pylith::topology::Field<mesh_type>::Field(const mesh_type& mesh) :
+pylith::topology::Field::Field(const Mesh& mesh) :
   _mesh(mesh),
   _dm(NULL),
   _globalVec(NULL),
@@ -76,8 +80,7 @@
 
 // ----------------------------------------------------------------------
 // Constructor with mesh, DM, and metadata
-template<typename mesh_type>
-pylith::topology::Field<mesh_type>::Field(const mesh_type& mesh,
+pylith::topology::Field::Field(const Mesh& mesh,
 					  PetscDM dm,
 					  const Metadata& metadata) :
   _mesh(mesh),
@@ -101,11 +104,10 @@
 
 // ----------------------------------------------------------------------
 // Constructor with mesh, DM, local data, and metadata
-template<typename mesh_type>
-pylith::topology::Field<mesh_type>::Field(const mesh_type& mesh,
-					  PetscDM dm,
-					  PetscVec localVec,
-					  const Metadata& metadata) :
+pylith::topology::Field::Field(const Mesh& mesh,
+			       PetscDM dm,
+			       PetscVec localVec,
+			       const Metadata& metadata) :
   _mesh(mesh),
   _dm(dm),
   _globalVec(NULL),
@@ -129,63 +131,16 @@
 } // constructor
 
 // ----------------------------------------------------------------------
-// Constructor with field and subfields
-template<typename mesh_type>
-pylith::topology::Field<mesh_type>::Field(const Field& src,
-					  const int fields[],
-					  int numFields) :
-  _mesh(src._mesh),
-  _dm(NULL),
-  _globalVec(NULL),
-  _localVec(NULL)
-{ // constructor
-  PYLITH_METHOD_BEGIN;
-
-  PetscDM dm = mesh.dmMesh(), coordDM=NULL, newCoordDM=NULL;
-  PetscSection coordSection=NULL, newCoordSection=NULL;
-  PetscVec coordVec=NULL;
-  PetscSection s=NULL;
-  PetscErrorCode err;
-
-  assert(dm);
-  assert(src._dm);
-
-  _metadata["default"] = src._metadata["default"];
-  err = DMGetDefaultSection(src._dm, &s);PYLITH_CHECK_ERROR(err);
-  for(PetscInt f = 0; f < numFields; ++f) {
-    const char *name;
-
-    err = PetscSectionGetFieldName(s, fields[f], &name);PYLITH_CHECK_ERROR(err);
-    _metadata[name] = src._metadata[name];
-  } // for
-  err = DMCreateSubDM(dm, numFields, fields, NULL, &_dm);PYLITH_CHECK_ERROR(err);
-  err = DMGetCoordinatesLocal(dm, &coordVec);PYLITH_CHECK_ERROR(err);
-  if (coordVec) {
-    err = DMGetCoordinateDM(dm, &coordDM);PYLITH_CHECK_ERROR(err);
-    err = DMGetCoordinateDM(_dm, &newCoordDM);PYLITH_CHECK_ERROR(err);
-    err = DMGetDefaultSection(coordDM, &coordSection);PYLITH_CHECK_ERROR(err);
-    err = PetscSectionClone(coordSection, &newCoordSection);PYLITH_CHECK_ERROR(err);
-    err = DMSetDefaultSection(newCoordDM, newCoordSection);PYLITH_CHECK_ERROR(err);
-    err = PetscSectionDestroy(&newCoordSection);PYLITH_CHECK_ERROR(err);
-    err = DMSetCoordinatesLocal(_dm, coordVec);PYLITH_CHECK_ERROR(err);
-  } // if
-
-  PYLITH_METHOD_END;
-} // constructor
-
-// ----------------------------------------------------------------------
 // Destructor.
-template<typename mesh_type>
-pylith::topology::Field<mesh_type>::~Field(void)
+pylith::topology::Field::~Field(void)
 { // destructor
   deallocate();
 } // destructor
 
 // ----------------------------------------------------------------------
 // Deallocate PETSc and local data structures.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::deallocate(void)
+pylith::topology::Field::deallocate(void)
 { // deallocate
   PYLITH_METHOD_BEGIN;
 
@@ -197,9 +152,8 @@
 
 // ----------------------------------------------------------------------
 // Set label for field.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::label(const char* value)
+pylith::topology::Field::label(const char* value)
 { // label
   PYLITH_METHOD_BEGIN;
 
@@ -223,9 +177,8 @@
 
 // ----------------------------------------------------------------------
 // Get spatial dimension of domain.
-template<typename mesh_type>
 int
-pylith::topology::Field<mesh_type>::spaceDim(void) const
+pylith::topology::Field::spaceDim(void) const
 { // spaceDim
   const spatialdata::geocoords::CoordSys* cs = _mesh.coordsys();
   return (cs) ? cs->spaceDim() : 0;
@@ -233,9 +186,8 @@
 
 // ----------------------------------------------------------------------
 // Get the chart size.
-template<typename mesh_type>
 int
-pylith::topology::Field<mesh_type>::chartSize(void) const
+pylith::topology::Field::chartSize(void) const
 { // chartSize
   PYLITH_METHOD_BEGIN;
 
@@ -252,9 +204,8 @@
 
 // ----------------------------------------------------------------------
 // Get the number of degrees of freedom.
-template<typename mesh_type>
 int
-pylith::topology::Field<mesh_type>::sectionSize(void) const
+pylith::topology::Field::sectionSize(void) const
 { // sectionSize
   PYLITH_METHOD_BEGIN;
 
@@ -273,9 +224,8 @@
 
 // ----------------------------------------------------------------------
 // Create seive section.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::newSection(void)
+pylith::topology::Field::newSection(void)
 { // newSection
   // Clear memory
   clear();
@@ -284,10 +234,9 @@
 // ----------------------------------------------------------------------
 // Create PETSc section and set chart and fiber dimesion for a list of
 // points.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::newSection(const int_array& points,
-                                               const int fiberDim)
+pylith::topology::Field::newSection(const int_array& points,
+				    const int fiberDim)
 { // newSection
   PYLITH_METHOD_BEGIN;
 
@@ -333,9 +282,8 @@
 // ----------------------------------------------------------------------
 // Create PETSc section and set chart and fiber dimesion for a list of
 // points.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::newSection(const PetscInt *points, 
+pylith::topology::Field::newSection(const PetscInt *points, 
 					       const PetscInt num,
                                                const int fiberDim)
 { // newSection
@@ -380,11 +328,10 @@
 
 // ----------------------------------------------------------------------
 // Create PETSc section and set chart and fiber dimesion.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::newSection(const DomainEnum domain,
-                                               const int fiberDim,
-                                               const int stratum)
+pylith::topology::Field::newSection(const DomainEnum domain,
+				    const int fiberDim,
+				    const int stratum)
 { // newSection
   PYLITH_METHOD_BEGIN;
 
@@ -418,11 +365,10 @@
 
 // ----------------------------------------------------------------------
 // Create PETSc section and set chart and fiber dimesion.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::newSection(const PetscInt pStart, 
-					       const PetscInt pEnd,
-                                               const int fiberDim)
+pylith::topology::Field::newSection(const PetscInt pStart, 
+				    const PetscInt pEnd,
+				    const int fiberDim)
 { // newSection
   PYLITH_METHOD_BEGIN;
 
@@ -444,10 +390,9 @@
 
 // ----------------------------------------------------------------------
 // Create section given chart.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::newSection(const Field& src,
-                                               const int fiberDim)
+pylith::topology::Field::newSection(const Field& src,
+				    const int fiberDim)
 { // newSection
   PYLITH_METHOD_BEGIN;
 
@@ -481,9 +426,8 @@
 
 // ----------------------------------------------------------------------
 // Create section with same layout as another section.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::cloneSection(const Field& src)
+pylith::topology::Field::cloneSection(const Field& src)
 { // cloneSection
   PYLITH_METHOD_BEGIN;
 
@@ -568,9 +512,8 @@
 
 // ----------------------------------------------------------------------
 // Clear variables associated with section.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::clear(void)
+pylith::topology::Field::clear(void)
 { // clear
   PYLITH_METHOD_BEGIN;
 
@@ -604,9 +547,8 @@
 
 // ----------------------------------------------------------------------
 // Allocate PETSc section.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::allocate(void)
+pylith::topology::Field::allocate(void)
 { // allocate
   PYLITH_METHOD_BEGIN;
 
@@ -632,9 +574,8 @@
 
 // ----------------------------------------------------------------------
 // Zero section values (excluding constrained DOF).
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::zero(void)
+pylith::topology::Field::zero(void)
 { // zero
   PYLITH_METHOD_BEGIN;
 
@@ -664,9 +605,8 @@
 
 // ----------------------------------------------------------------------
 // Zero section values (including constrained DOF).
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::zeroAll(void)
+pylith::topology::Field::zeroAll(void)
 { // zeroAll
   PYLITH_METHOD_BEGIN;
 
@@ -678,9 +618,8 @@
 
 // ----------------------------------------------------------------------
 // Complete section by assembling across processors.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::complete(void)
+pylith::topology::Field::complete(void)
 { // complete
   PYLITH_METHOD_BEGIN;
 
@@ -699,9 +638,8 @@
 
 // ----------------------------------------------------------------------
 // Copy field values and metadata.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::copy(const Field& field)
+pylith::topology::Field::copy(const Field& field)
 { // copy
   PYLITH_METHOD_BEGIN;
 
@@ -738,12 +676,12 @@
   PYLITH_METHOD_END;
 } // copy
 
-template<typename mesh_type>
+// ----------------------------------------------------------------------
 void
-pylith::topology::Field<mesh_type>::copy(PetscSection osection,
-					 PetscInt field,
-					 PetscInt component,
-					 PetscVec ovec)
+pylith::topology::Field::copy(PetscSection osection,
+			      PetscInt field,
+			      PetscInt component,
+			      PetscVec ovec)
 { // copy
   PYLITH_METHOD_BEGIN;
 
@@ -822,9 +760,8 @@
 
 // ----------------------------------------------------------------------
 // Add two fields, storing the result in one of the fields.
-template<typename mesh_type>
-pylith::topology::Field<mesh_type>&
-pylith::topology::Field<mesh_type>::operator+=(const Field& field)
+pylith::topology::Field&
+pylith::topology::Field::operator+=(const Field& field)
 { // operator+=
   PYLITH_METHOD_BEGIN;
 
@@ -860,9 +797,8 @@
 
 // ----------------------------------------------------------------------
 // Dimensionalize field.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::dimensionalize(void) const
+pylith::topology::Field::dimensionalize(void) const
 { // dimensionalize
   PYLITH_METHOD_BEGIN;
 
@@ -900,9 +836,8 @@
 
 // ----------------------------------------------------------------------
 // Print field to standard out.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::view(const char* label) const
+pylith::topology::Field::view(const char* label) const
 { // view
   PYLITH_METHOD_BEGIN;
 
@@ -961,11 +896,9 @@
 // Create PETSc vector scatter for field. This is used to transfer
 // information from the "global" PETSc vector view to the "local"
 // PETSc section view.
-template<typename mesh_type>
-template<typename scatter_mesh_type>
 void
-pylith::topology::Field<mesh_type>::createScatter(const scatter_mesh_type& mesh,
-						  const char* context)
+pylith::topology::Field::createScatter(const Mesh& mesh,
+				       const char* context)
 { // createScatter
   PYLITH_METHOD_BEGIN;
 
@@ -1004,10 +937,8 @@
 // PETSc section view. The PETSc vector does not contain constrained
 // DOF. Use createScatterWithBC() to include the constrained DOF in
 // the PETSc vector.
-template<typename mesh_type>
-template<typename scatter_mesh_type>
 void
-pylith::topology::Field<mesh_type>::createScatterWithBC(const scatter_mesh_type& mesh,
+pylith::topology::Field::createScatterWithBC(const Mesh& mesh,
 							const char* context)
 { // createScatterWithBC
   PYLITH_METHOD_BEGIN;
@@ -1055,13 +986,11 @@
 // PETSc section view. The PETSc vector includes constrained DOF. Use
 // createScatter() if constrained DOF should be omitted from the PETSc
 // vector.
-template<typename mesh_type>
-template<typename scatter_mesh_type>
 void
-pylith::topology::Field<mesh_type>::createScatterWithBC(const scatter_mesh_type& mesh,
-							const std::string& labelName,
-							PetscInt labelValue,
-							const char* context)
+pylith::topology::Field::createScatterWithBC(const Mesh& mesh,
+					     const std::string& labelName,
+					     PetscInt labelValue,
+					     const char* context)
 { // createScatterWithBC
   PYLITH_METHOD_BEGIN;
 
@@ -1174,9 +1103,8 @@
 
 // ----------------------------------------------------------------------
 // Get PETSc vector associated with field.
-template<typename mesh_type>
 PetscVec
-pylith::topology::Field<mesh_type>::vector(const char* context)
+pylith::topology::Field::vector(const char* context)
 { // vector
   PYLITH_METHOD_BEGIN;
 
@@ -1187,9 +1115,8 @@
 
 // ----------------------------------------------------------------------
 // Get PETSc vector associated with field.
-template<typename mesh_type>
 const PetscVec
-pylith::topology::Field<mesh_type>::vector(const char* context) const
+pylith::topology::Field::vector(const char* context) const
 { // vector
   PYLITH_METHOD_BEGIN;
 
@@ -1201,9 +1128,8 @@
 // ----------------------------------------------------------------------
 // Scatter section information across processors to update the
 //  PETSc vector view of the field.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::scatterSectionToVector(const char* context) const
+pylith::topology::Field::scatterSectionToVector(const char* context) const
 { // scatterSectionToVector
   PYLITH_METHOD_BEGIN;
 
@@ -1217,9 +1143,8 @@
 // ----------------------------------------------------------------------
 // Scatter section information across processors to update the
 //  PETSc vector view of the field.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::scatterSectionToVector(const PetscVec vector,
+pylith::topology::Field::scatterSectionToVector(const PetscVec vector,
 							   const char* context) const
 { // scatterSectionToVector
   PYLITH_METHOD_BEGIN;
@@ -1247,9 +1172,8 @@
 // ----------------------------------------------------------------------
 // Scatter PETSc vector information across processors to update the
 // section view of the field.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::scatterVectorToSection(const char* context) const
+pylith::topology::Field::scatterVectorToSection(const char* context) const
 { // scatterVectorToSection
   PYLITH_METHOD_BEGIN;
 
@@ -1264,10 +1188,9 @@
 // ----------------------------------------------------------------------
 // Scatter PETSc vector information across processors to update the
 // section view of the field.
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::scatterVectorToSection(const PetscVec vector,
-									 const char* context) const
+pylith::topology::Field::scatterVectorToSection(const PetscVec vector,
+						const char* context) const
 { // scatterVectorToSection
   PYLITH_METHOD_BEGIN;
 
@@ -1295,9 +1218,8 @@
 // ----------------------------------------------------------------------
 // Get fiber dimension associated with section (only works if fiber
 // dimension is uniform).
-template<typename mesh_type>
 int
-pylith::topology::Field<mesh_type>::_getFiberDim(void)
+pylith::topology::Field::_getFiberDim(void)
 { // _getFiberDim
   PYLITH_METHOD_BEGIN;
 
@@ -1318,10 +1240,9 @@
 
 // ----------------------------------------------------------------------
 // Get scatter for given context.
-template<typename mesh_type>
-typename pylith::topology::Field<mesh_type>::ScatterInfo&
-pylith::topology::Field<mesh_type>::_getScatter(const char* context,
-						const bool createOk)
+pylith::topology::Field::ScatterInfo&
+pylith::topology::Field::_getScatter(const char* context,
+				     const bool createOk)
 { // _getScatter
   PYLITH_METHOD_BEGIN;
 
@@ -1367,9 +1288,8 @@
 
 // ----------------------------------------------------------------------
 // Get scatter for given context.
-template<typename mesh_type>
-const typename pylith::topology::Field<mesh_type>::ScatterInfo&
-pylith::topology::Field<mesh_type>::_getScatter(const char* context) const
+const pylith::topology::Field::ScatterInfo&
+pylith::topology::Field::_getScatter(const char* context) const
 { // _getScatter
   PYLITH_METHOD_BEGIN;
 
@@ -1388,9 +1308,8 @@
 
 // ----------------------------------------------------------------------
 // Experimental
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::addField(const char *name,
+pylith::topology::Field::addField(const char *name,
 					     int numComponents)
 { // addField
   PYLITH_METHOD_BEGIN;
@@ -1403,9 +1322,8 @@
 } // addField
 
 // ----------------------------------------------------------------------
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::setupFields(void)
+pylith::topology::Field::setupFields(void)
 { // setupFields
   PYLITH_METHOD_BEGIN;
 
@@ -1432,11 +1350,10 @@
 } // setupFields
 
 // ----------------------------------------------------------------------
-template<typename mesh_type>
 void
-pylith::topology::Field<mesh_type>::updateDof(const char *name,
-					      const DomainEnum domain,
-					      int fiberDim)
+pylith::topology::Field::updateDof(const char *name,
+				   const DomainEnum domain,
+				   int fiberDim)
 { // updateDof
   PYLITH_METHOD_BEGIN;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Field.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Field.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Field.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -32,8 +32,6 @@
 #include "pylith/utils/arrayfwd.hh" // HASA int_array
 #include "pylith/utils/petscfwd.h" // HASA PetscVec
 
-#include <petscdmmesh.hh>
-
 #include <map> // USES std::map
 #include <string> // USES std::string
 
@@ -43,21 +41,11 @@
  *
  * Extends PETSc section and vector by adding metadata.
  */
-template<typename mesh_type>
 class pylith::topology::Field : public FieldBase
 { // Field
   friend class TestFieldMesh; // unit testing
   friend class TestFieldSubMesh; // unit testing
 
-// PUBLIC TYPEDEFS //////////////////////////////////////////////////////
-public:
-
-  // Convenience typedefs
-  typedef mesh_type Mesh;
-
-// PRIVATE TYPEDEFS /////////////////////////////////////////////////////
-private:
-
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////
 public :
 
@@ -65,7 +53,7 @@
    *
    * @param mesh Finite-element mesh.
    */
-  Field(const mesh_type& mesh);
+  Field(const Mesh& mesh);
 
   /** Constructor with mesh, DM, and metadata
    *
@@ -73,7 +61,7 @@
    * @param dm PETSc dm for field.
    * @param meteadata Field metadata.
    */
-  Field(const mesh_type& mesh, 
+  Field(const Mesh& mesh, 
 	PetscDM dm,
 	const Metadata& metadata);
 
@@ -84,21 +72,11 @@
    * @param localVec PETSc Vec with local data for field.
    * @param meteadata Field metadata.
    */
-  Field(const mesh_type& mesh, 
+  Field(const Mesh& mesh, 
 	PetscDM dm,
 	PetscVec localVec,
 	const Metadata& metadata);
 
-  /** Constructor with field and subfield information.
-   *
-   * @param mesh Finite-element mesh.
-   * @param fields Array of indices for fields to extract.
-   * @param numFields Size of array.
-   */
-  Field(const Field& src,
-	const int fields[],
-	int numFields);
-
   /// Destructor.
   ~Field(void);
 
@@ -109,7 +87,7 @@
    *
    * @returns Finite-element mesh.
    */
-  const mesh_type& mesh(void) const;
+  const Mesh& mesh(void) const;
 
   /** Get PETSc DM associated with field.
    *
@@ -372,8 +350,7 @@
    * @param mesh Mesh associated with scatter.
    * @param context Label for context associated with vector.
    */
-  template<typename scatter_mesh_type>
-  void createScatter(const scatter_mesh_type& mesh,
+  void createScatter(const Mesh& mesh,
 		     const char* context ="");
 
 
@@ -386,8 +363,7 @@
    * @param mesh Mesh associated with scatter.
    * @param context Label for context associated with vector.
    */
-  template<typename scatter_mesh_type>
-  void createScatterWithBC(const scatter_mesh_type& mesh,
+  void createScatterWithBC(const Mesh& mesh,
 			   const char* context ="");
 
 
@@ -402,8 +378,7 @@
    * @param labelValue The label stratum defining the point set
    * @param context Label for context associated with vector.
    */
-  template<typename scatter_mesh_type>
-  void createScatterWithBC(const scatter_mesh_type& mesh,
+  void createScatterWithBC(const Mesh& mesh,
                            const std::string& labelName,
                            PetscInt labelValue,
                            const char* context ="");
@@ -501,8 +476,7 @@
 
   map_type _metadata;
 
-  /* Old construction */
-  const mesh_type& _mesh; ///< Mesh associated with section.
+  const Mesh& _mesh; ///< Mesh associated with section.
   scatter_map_type _scatters; ///< Collection of scatters.
 
   /* New construction */
@@ -519,8 +493,7 @@
 
 }; // Field
 
-#include "Field.icc"
-#include "Field.cc"
+#include "Field.icc" // inline methods
 
 #endif // pylith_topology_field_hh
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Field.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Field.icc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Field.icc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -23,10 +23,9 @@
 #include "pylith/utils/error.h" // USES PYLITH_CHECK_ERROR
 
 // Get PetscSection.
-template<typename mesh_type>
 inline
 PetscSection
-pylith::topology::Field<mesh_type>::petscSection(void) const {
+pylith::topology::Field::petscSection(void) const {
   PetscSection s = PETSC_NULL;
   if (_dm) {
     PetscErrorCode err = DMGetDefaultSection(_dm, &s);PYLITH_CHECK_ERROR(err);
@@ -35,114 +34,101 @@
 }
 
 // Get local vector.
-template<typename mesh_type>
 inline
 PetscVec
-pylith::topology::Field<mesh_type>::localVector(void) const {
+pylith::topology::Field::localVector(void) const {
   return _localVec;
 }
 
 // Get global vector.
-template<typename mesh_type>
 inline
 PetscVec
-pylith::topology::Field<mesh_type>::globalVector(void) const {
+pylith::topology::Field::globalVector(void) const {
   return _globalVec;
 }
 
 // Get mesh associated with field.
-template<typename mesh_type>
 inline
 const
-mesh_type&
-pylith::topology::Field<mesh_type>::mesh(void) const {
+pylith::topology::Mesh&
+pylith::topology::Field::mesh(void) const {
   return _mesh;
 }
 
-template<typename mesh_type>
 inline
 PetscDM
-pylith::topology::Field<mesh_type>::dmMesh(void) const {
+pylith::topology::Field::dmMesh(void) const {
   return _dm;
 }
 
 // Get label for field.
-template<typename mesh_type>
 inline
 const char*
-pylith::topology::Field<mesh_type>::label(void) const {
+pylith::topology::Field::label(void) const {
   return const_cast<Field*>(this)->_metadata["default"].label.c_str();
 }
 
 // Set vector field type
-template<typename mesh_type>
 inline
 void
-pylith::topology::Field<mesh_type>::vectorFieldType(const VectorFieldEnum value) {
+pylith::topology::Field::vectorFieldType(const VectorFieldEnum value) {
   _metadata["default"].vectorFieldType = value;
 }
 
 // Set vector field type
-template<typename mesh_type>
 inline
 void
-pylith::topology::Field<mesh_type>::vectorFieldType(const std::string& name, const VectorFieldEnum value) {
+pylith::topology::Field::vectorFieldType(const std::string& name, const VectorFieldEnum value) {
   const_cast<Field *>(this)->_metadata[name].vectorFieldType = value;
 }
 
 // Get vector field type
-template<typename mesh_type>
 inline
-typename pylith::topology::Field<mesh_type>::VectorFieldEnum
-pylith::topology::Field<mesh_type>::vectorFieldType(void) const {
-  return const_cast<Field *>(this)->_metadata["default"].vectorFieldType;
+pylith::topology::Field::VectorFieldEnum
+pylith::topology::Field::vectorFieldType(void) const {
+  return const_cast<Field*>(this)->_metadata["default"].vectorFieldType;
 }
 
 // Set scale for dimensionalizing field.
-template<typename mesh_type>
 inline
 void
-pylith::topology::Field<mesh_type>::scale(const PylithScalar value) {
+pylith::topology::Field::scale(const PylithScalar value) {
   _metadata["default"].scale = value;
 }
 
 // Set scale for dimensionalizing field.
-template<typename mesh_type>
 inline
 void
-pylith::topology::Field<mesh_type>::scale(const std::string& name, const PylithScalar value) {
+pylith::topology::Field::scale(const std::string& name,
+			       const PylithScalar value) {
   _metadata[name].scale = value;
 }
 
 // Get scale for dimensionalizing field.
-template<typename mesh_type>
 inline
 PylithScalar
-pylith::topology::Field<mesh_type>::scale(void) const {
+pylith::topology::Field::scale(void) const {
   return const_cast<Field *>(this)->_metadata["default"].scale;
 }
 
 // Set flag indicating whether it is okay to dimensionalize field.
-template<typename mesh_type>
 inline
 void
-pylith::topology::Field<mesh_type>::addDimensionOkay(const bool value) {
+pylith::topology::Field::addDimensionOkay(const bool value) {
   _metadata["default"].dimsOkay = value;
 }
 
 // Set flag indicating whether it is okay to dimensionalize field.
-template<typename mesh_type>
 inline
 bool
-pylith::topology::Field<mesh_type>::addDimensionOkay(void) const {
+pylith::topology::Field::addDimensionOkay(void) const {
   return const_cast<Field*>(this)->_metadata["default"].dimsOkay;
 }
 
 // Add two fields, storing the result in one of the fields.
-template<typename mesh_type>
 inline
 void
-pylith::topology::Field<mesh_type>::add(const Field& field) {
+pylith::topology::Field::add(const Field& field) {
   this->operator+=(field);
 }
 

Copied: short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.cc (from rev 22060, short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.icc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -0,0 +1,215 @@
+// -*- 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 "Fields.hh" // Implementation of class methods
+
+#include "Field.hh" // USES Field
+
+#include <pylith/utils/error.h> // USES PYLITH_CHECK_ERROR
+
+#include <sstream> // USES std::ostringstream
+#include <stdexcept> // USES std::runtime_error
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::Fields::Fields(const Mesh& mesh) :
+  _mesh(mesh)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor.
+pylith::topology::Fields::~Fields(void)
+{ // destructor
+  deallocate();
+} // destructor
+
+// ----------------------------------------------------------------------
+// Deallocate PETSc and local data structures.
+void
+pylith::topology::Fields::deallocate(void)
+{ // deallocate
+  const typename map_type::iterator begin = _fields.begin();
+  const typename map_type::iterator end = _fields.end();
+  for (typename map_type::iterator iter=begin; iter != end; ++iter) {
+    delete iter->second; iter->second = 0;
+  } // for
+} // deallocate
+
+// ----------------------------------------------------------------------
+// Check if fields contains a given field.
+bool
+pylith::topology::Fields::hasField(const char* name) const
+{ // hasField
+  typename map_type::const_iterator iter = _fields.find(name);
+  return iter != _fields.end();
+} // hasField
+
+// ----------------------------------------------------------------------
+// Add field.
+void
+pylith::topology::Fields::add(const char* name,
+			      const char* label)
+{ // add
+  if (hasField(name)) {
+    std::ostringstream msg;
+    msg << "Could not add field '" << name
+	<< "' to fields manager, because it already exists.";
+    throw std::runtime_error(msg.str());
+  } // if
+  
+  _fields[name] = new Field(_mesh);
+  _fields[name]->label(label);
+} // add
+
+// ----------------------------------------------------------------------
+// Add field.
+void 
+pylith::topology::Fields::add(const char* name,
+			      const char* label,
+			      const pylith::topology::FieldBase::DomainEnum domain,
+			      const int fiberDim)
+{ // add
+  if (hasField(name)) {
+    std::ostringstream msg;
+    msg << "Could not add field '" << name
+	<< "' to fields manager, because it already exists.";
+    throw std::runtime_error(msg.str());
+  } // if
+  
+  _fields[name] = new Field(_mesh);
+  _fields[name]->label(label);
+  _fields[name]->newSection(domain, fiberDim);
+} // add
+
+// ----------------------------------------------------------------------
+// Delete field.
+void
+pylith::topology::Fields::del(const char* name)
+{ // del
+  typename map_type::iterator iter = _fields.find(name);
+  if (iter == _fields.end()) {
+    std::ostringstream msg;
+    msg << "Could not find field '" << name
+	<< "' in fields manager to delete.";
+    throw std::runtime_error(msg.str());
+  } // if
+  delete iter->second; iter->second = 0;
+  _fields.erase(name);
+} // del
+
+// ----------------------------------------------------------------------
+// Delete field.
+void
+pylith::topology::Fields::delField(const char* name)
+{ // delField
+  del(name);
+} // delField
+
+// ----------------------------------------------------------------------
+// Get field.
+const pylith::topology::Field&
+pylith::topology::Fields::get(const char* name) const
+{ // get
+  typename map_type::const_iterator iter = _fields.find(name);
+  if (iter == _fields.end()) {
+    std::ostringstream msg;
+    msg << "Could not find field '" << name
+	<< "' in fields manager for retrieval.";
+    throw std::runtime_error(msg.str());
+  } // if
+  return *iter->second;
+} // get
+	   
+// ----------------------------------------------------------------------
+// Get field.
+pylith::topology::Field&
+pylith::topology::Fields::get(const char* name)
+{ // get
+  typename map_type::iterator iter = _fields.find(name);
+  if (iter == _fields.end()) {
+    std::ostringstream msg;
+    msg << "Could not find field '" << name
+	<< "' in fields manager for retrieval.";
+    throw std::runtime_error(msg.str());
+  } // if
+  return *iter->second;
+} // get
+
+// ----------------------------------------------------------------------
+// Copy layout to other fields.
+void
+pylith::topology::Fields::copyLayout(const char* name)
+{ // copyLayout
+  typename map_type::const_iterator src = _fields.find(name);
+  if (src == _fields.end()) {
+    std::ostringstream msg;
+    msg << "Could not find field '" << name
+	<< "' in fields manager for retrieval.";
+    throw std::runtime_error(msg.str());
+  } // if
+
+  const typename map_type::iterator begin = _fields.begin();
+  const typename map_type::iterator end = _fields.end();
+  for (typename map_type::iterator iter=begin; iter != end; ++iter)
+    if (iter != src)
+      iter->second->cloneSection(*src->second);
+} // copyLayout
+
+// ----------------------------------------------------------------------
+// Get mesh associated with fields.
+const pylith::topology::Mesh&
+pylith::topology::Fields::mesh(void) const
+{ // mesh
+  return _mesh;
+} // mesh
+
+// ----------------------------------------------------------------------
+// Get names of all fields
+void
+pylith::topology::Fields::fieldNames(int* numNames, 
+				     char*** names) const
+{ // fieldNames
+  assert(numNames);
+  assert(names);
+
+  *numNames = _fields.size();
+  *names = new char*[_fields.size()];
+  assert(*names);
+  const typename map_type::const_iterator namesEnd = _fields.end();
+  int i = 0;
+  for (typename map_type::const_iterator name = _fields.begin(); 
+       name != namesEnd;
+       ++name) {
+    const char len = name->first.length();
+    char* newName = 0;
+    if (len > 0) {
+      newName = new char[len+1];
+      strncpy(newName, name->first.c_str(), len+1);
+    } else {
+      newName = new char[1];
+      newName[0] ='\0';
+    } // if/else
+    (*names)[i++] = newName;
+  } // for
+} // fieldNames
+
+
+// End of file 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -35,7 +35,6 @@
 
 // Fields ---------------------------------------------------------------
 /// Container for managing multiple fields over a finite-element mesh.
-template<typename field_type>
 class pylith::topology::Fields
 { // Fields
   friend class TestFieldsMesh; // unit testing
@@ -48,7 +47,7 @@
    *
    * @param mesh Finite-element mesh.
    */
-  Fields(const typename field_type::Mesh& mesh);
+  Fields(const Mesh& mesh);
 
   /// Destructor.
   virtual
@@ -85,17 +84,6 @@
 	   const pylith::topology::FieldBase::DomainEnum domain,
 	   const int fiberDim);
 
-  /** Add field.
-   *
-   * @param name Name of field.
-   * @param numFields The number of fields to select
-   * @param fields Set of field numbers for this vector
-   */
-  void add(const char* name,
-           const char* oldName,
-           const int numFields,
-           const int fields[]);
-
   /** Delete field.
    *
    * @param name Name of field.
@@ -112,13 +100,13 @@
    *
    * @param name Name of field.
    */
-  const field_type& get(const char* name) const;
+  const Field& get(const char* name) const;
 	   
   /** Get field.
    *
    * @param name Name of field.
    */
-  field_type& get(const char* name);
+  Field& get(const char* name);
 	   
   /** Copy layout to other fields.
    *
@@ -130,7 +118,7 @@
    *
    * @returns Finite-element mesh.
    */
-  const typename field_type::Mesh& mesh(void) const;
+  const Mesh& mesh(void) const;
 
   /** Return the names of all fields.
    *
@@ -143,13 +131,13 @@
 // PROTECTED TYPEDEFS ///////////////////////////////////////////////////
 protected :
 
-  typedef std::map< std::string, field_type* > map_type;
+  typedef std::map< std::string, Field* > map_type;
 
 // PROTECTED MEMBERS ////////////////////////////////////////////////////
 protected :
 
   map_type _fields;
-  const typename field_type::Mesh& _mesh;
+  const Mesh& _mesh;
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :
@@ -159,8 +147,6 @@
 
 }; // Fields
 
-#include "Fields.icc"
-
 #endif // pylith_topology_fields_hh
 
 

Deleted: short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.icc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Fields.icc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -1,247 +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_fields_hh)
-#error "Fields.icc must be included only from Fields.hh"
-#endif
-
-#include <sstream> // USES std::ostringstream
-#include <stdexcept> // USES std::runtime_error
-#include <pylith/utils/error.h> // USES PYLITH_CHECK_ERROR
-
-// ----------------------------------------------------------------------
-// Default constructor.
-template<typename field_type>
-pylith::topology::Fields<field_type>::Fields(const typename field_type::Mesh& mesh) :
-  _mesh(mesh)
-{ // constructor
-} // constructor
-
-// ----------------------------------------------------------------------
-// Destructor.
-template<typename field_type>
-pylith::topology::Fields<field_type>::~Fields(void)
-{ // destructor
-  deallocate();
-} // destructor
-
-// ----------------------------------------------------------------------
-// Deallocate PETSc and local data structures.
-template<typename field_type>
-void
-pylith::topology::Fields<field_type>::deallocate(void)
-{ // deallocate
-  const typename map_type::iterator begin = _fields.begin();
-  const typename map_type::iterator end = _fields.end();
-  for (typename map_type::iterator iter=begin; iter != end; ++iter) {
-    delete iter->second; iter->second = 0;
-  } // for
-} // deallocate
-
-// ----------------------------------------------------------------------
-// Check if fields contains a given field.
-template<typename field_type>
-bool
-pylith::topology::Fields<field_type>::hasField(const char* name) const
-{ // hasField
-  typename map_type::const_iterator iter = _fields.find(name);
-  return iter != _fields.end();
-} // hasField
-
-// ----------------------------------------------------------------------
-// Add field.
-template<typename field_type>
-void
-pylith::topology::Fields<field_type>::add(const char* name,
-					  const char* label)
-{ // add
-  if (hasField(name)) {
-    std::ostringstream msg;
-    msg << "Could not add field '" << name
-	<< "' to fields manager, because it already exists.";
-    throw std::runtime_error(msg.str());
-  } // if
-  
-  _fields[name] = new field_type(_mesh);
-  _fields[name]->label(label);
-} // add
-
-// ----------------------------------------------------------------------
-// Add field.
-template<typename field_type>
-void 
-pylith::topology::Fields<field_type>::add(
-			const char* name,
-			const char* label,
-			const pylith::topology::FieldBase::DomainEnum domain,
-			const int fiberDim)
-{ // add
-  if (hasField(name)) {
-    std::ostringstream msg;
-    msg << "Could not add field '" << name
-	<< "' to fields manager, because it already exists.";
-    throw std::runtime_error(msg.str());
-  } // if
-  
-  _fields[name] = new field_type(_mesh);
-  _fields[name]->label(label);
-  _fields[name]->newSection(domain, fiberDim);
-} // add
-
-// ----------------------------------------------------------------------
-// Add field.
-template<typename field_type>
-void 
-pylith::topology::Fields<field_type>::add(
-			const char* name,
-			const char* oldName,
-			const int numFields,
-			const int fields[])
-{ // add
-  if (hasField(name)) {
-    std::ostringstream msg;
-    msg << "Could not add field '" << name
-	<< "' to fields manager, because it already exists.";
-    throw std::runtime_error(msg.str());
-  } // if
-  
-  _fields[name] = new field_type(_fields[oldName], numFields, fields);
-} // add
-
-// ----------------------------------------------------------------------
-// Delete field.
-template<typename field_type>
-void
-pylith::topology::Fields<field_type>::del(const char* name)
-{ // del
-  typename map_type::iterator iter = _fields.find(name);
-  if (iter == _fields.end()) {
-    std::ostringstream msg;
-    msg << "Could not find field '" << name
-	<< "' in fields manager to delete.";
-    throw std::runtime_error(msg.str());
-  } // if
-  delete iter->second; iter->second = 0;
-  _fields.erase(name);
-} // del
-
-// ----------------------------------------------------------------------
-// Delete field.
-template<typename field_type>
-inline
-void
-pylith::topology::Fields<field_type>::delField(const char* name)
-{ // delField
-  del(name);
-} // delField
-
-// ----------------------------------------------------------------------
-// Get field.
-template<typename field_type>
-const field_type&
-pylith::topology::Fields<field_type>::get(const char* name) const
-{ // get
-  typename map_type::const_iterator iter = _fields.find(name);
-  if (iter == _fields.end()) {
-    std::ostringstream msg;
-    msg << "Could not find field '" << name
-	<< "' in fields manager for retrieval.";
-    throw std::runtime_error(msg.str());
-  } // if
-  return *iter->second;
-} // get
-	   
-// ----------------------------------------------------------------------
-// Get field.
-template<typename field_type>
-field_type&
-pylith::topology::Fields<field_type>::get(const char* name)
-{ // get
-  typename map_type::iterator iter = _fields.find(name);
-  if (iter == _fields.end()) {
-    std::ostringstream msg;
-    msg << "Could not find field '" << name
-	<< "' in fields manager for retrieval.";
-    throw std::runtime_error(msg.str());
-  } // if
-  return *iter->second;
-} // get
-
-// ----------------------------------------------------------------------
-// Copy layout to other fields.
-template<typename field_type>
-void
-pylith::topology::Fields<field_type>::copyLayout(const char* name)
-{ // copyLayout
-  typename map_type::const_iterator src = _fields.find(name);
-  if (src == _fields.end()) {
-    std::ostringstream msg;
-    msg << "Could not find field '" << name
-	<< "' in fields manager for retrieval.";
-    throw std::runtime_error(msg.str());
-  } // if
-
-  const typename map_type::iterator begin = _fields.begin();
-  const typename map_type::iterator end = _fields.end();
-  for (typename map_type::iterator iter=begin; iter != end; ++iter)
-    if (iter != src)
-      iter->second->cloneSection(*src->second);
-} // copyLayout
-
-// ----------------------------------------------------------------------
-// Get mesh associated with fields.
-template<typename field_type>
-const typename field_type::Mesh&
-pylith::topology::Fields<field_type>::mesh(void) const
-{ // mesh
-  return _mesh;
-} // mesh
-
-// ----------------------------------------------------------------------
-// Get names of all fields
-template<typename field_type>
-void
-pylith::topology::Fields<field_type>::fieldNames(int* numNames, 
-						 char*** names) const
-{ // fieldNames
-  assert(numNames);
-  assert(names);
-
-  *numNames = _fields.size();
-  *names = new char*[_fields.size()];
-  assert(*names);
-  const typename map_type::const_iterator namesEnd = _fields.end();
-  int i = 0;
-  for (typename map_type::const_iterator name = _fields.begin(); 
-       name != namesEnd;
-       ++name) {
-    const char len = name->first.length();
-    char* newName = 0;
-    if (len > 0) {
-      newName = new char[len+1];
-      strncpy(newName, name->first.c_str(), len+1);
-    } else {
-      newName = new char[1];
-      newName[0] ='\0';
-    } // if/else
-    (*names)[i++] = newName;
-  } // for
-} // fieldNames
-
-
-// End of file 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -27,7 +27,7 @@
 
 // ----------------------------------------------------------------------
 // Default constructor.
-pylith::topology::Jacobian::Jacobian(const Field<Mesh>& field,
+pylith::topology::Jacobian::Jacobian(const Field& field,
                                      const char* matrixType,
                                      const bool blockOkay) :
   _matrix(0),

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -51,7 +51,7 @@
    * @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<Mesh>& field,
+  Jacobian(const Field& field,
            const char* matrixType ="aij",
            const bool blockOkay =false);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Makefile.am	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Makefile.am	2013-05-14 19:55:48 UTC (rev 22061)
@@ -26,9 +26,7 @@
 	FieldBase.hh \
 	Field.hh \
 	Field.icc \
-	Field.cc \
 	Fields.hh \
-	Fields.icc \
 	Jacobian.hh \
 	Mesh.hh \
 	Mesh.icc \

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/SolutionFields.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/SolutionFields.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/SolutionFields.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,7 +25,7 @@
 // ----------------------------------------------------------------------
 // Default constructor.
 pylith::topology::SolutionFields::SolutionFields(const Mesh& mesh) :
-  Fields<Field<Mesh> >(mesh),
+  Fields(mesh),
   _solutionName("")
 { // constructor
 } // constructor
@@ -42,7 +42,7 @@
 void
 pylith::topology::SolutionFields::deallocate(void)
 { // deallocate
-  Fields<Field<Mesh> >::deallocate();
+  Fields::deallocate();
 } // deallocate
   
 // ----------------------------------------------------------------------
@@ -62,7 +62,7 @@
 
 // ----------------------------------------------------------------------
 // Get solution field.
-const pylith::topology::Field<pylith::topology::Mesh>&
+const pylith::topology::Field&
 pylith::topology::SolutionFields::solution(void) const
 { // solution
   if (_solutionName == "")
@@ -73,7 +73,7 @@
 
 // ----------------------------------------------------------------------
 // Get solution field.
-pylith::topology::Field<pylith::topology::Mesh>&
+pylith::topology::Field&
 pylith::topology::SolutionFields::solution(void)
 { // solution
   if (_solutionName == "")

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/SolutionFields.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/SolutionFields.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/SolutionFields.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -29,17 +29,15 @@
 // Include directives ---------------------------------------------------
 #include "topologyfwd.hh" // forward declarations
 
+#include "Fields.hh" // ISA Fields
+
 #include <vector> // HASA std::vector
 
-#include "Mesh.hh" // ISA Field<Mesh>
-#include "Field.hh" // ISA Fields< Field<Mesh> >
-#include "Fields.hh" // ISA Fields< Field<Mesh> >
-
 // SolutionFields -------------------------------------------------------
 /** @brief Object for managing solution fields over a finite-element
  * mesh.
  */
-class pylith::topology::SolutionFields : public Fields<Field<Mesh> >
+class pylith::topology::SolutionFields : public Fields
 { // SolutionFields
   friend class TestSolutionFields; // unit testing
 
@@ -68,19 +66,17 @@
    *
    * @returns Solution field.
    */
-  const Field<Mesh>& solution(void) const;
+  const Field& solution(void) const;
 
   /** Get field used in solve.
    *
    * @returns Solution field.
    */
-  Field<Mesh>& solution(void);
+  Field& solution(void);
 
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  PetscVecScatter _scatter; /// Petsc vector scatter.
-
   /// Name of field that corresponds to the "working" solution to the
   /// problem.
   std::string _solutionName;

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -48,7 +48,7 @@
    *
    * @param field Field over a mesh.
    */
-  VecVisitorMesh(const Field<Mesh>& field);
+  VecVisitorMesh(const Field& field);
 
   /// Default destructor
   ~VecVisitorMesh(void);
@@ -57,8 +57,7 @@
    *
    * @param field Field over a mesh/submesh.
    */
-  template<typename field_type>
-  void initialize(const field_type& field);
+  void initialize(const Field& field);
 
   /// Clear cached data.
   void clear(void);
@@ -172,7 +171,7 @@
    * @param field Field associated with matrix layout.
    */
   MatVisitorMesh(const PetscMat mat,
-		 const Field<Mesh>& field);
+		 const Field& field);
 
   /// Default destructor
   ~MatVisitorMesh(void);

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.icc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorMesh.icc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -28,14 +28,14 @@
 // ----------------------------------------------------------------------
 // Constructor with field over a mesh.
 inline
-pylith::topology::VecVisitorMesh::VecVisitorMesh(const Field<Mesh>& field) :
+pylith::topology::VecVisitorMesh::VecVisitorMesh(const Field& field) :
   _dm(NULL),
   _localVec(NULL),
   _section(NULL),
   _localArray(NULL)
 { // constructor
   _dm = field.mesh().dmMesh();assert(_dm);
-  initialize<Field<Mesh> >(field);
+  initialize(field);
 } // constructor
 
 // ----------------------------------------------------------------------
@@ -49,10 +49,9 @@
 
 // ----------------------------------------------------------------------
 // Initialized cached data members.
-template<typename field_type>
 inline
 void
-pylith::topology::VecVisitorMesh::initialize(const field_type& field)
+pylith::topology::VecVisitorMesh::initialize(const Field& field)
 { // initialize
   clear();
 
@@ -186,7 +185,7 @@
 // Default constructor.
 inline
 pylith::topology::MatVisitorMesh::MatVisitorMesh(const PetscMat mat,
-						 const Field<Mesh>& field) :
+						 const Field& field) :
   _mat(mat),
   _dm(NULL),
   _section(NULL)

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -57,7 +57,7 @@
    * @param field Field associated with visitor.
    * @param submeshIS Submesh index set associated with visitor.
    */
-  VecVisitorSubMesh(const Field<Mesh>& field,
+  VecVisitorSubMesh(const Field& field,
 		    const SubMeshIS& submeshIS);
 
   /// Default destructor
@@ -139,7 +139,7 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  const Field<Mesh>& _field;
+  const Field& _field;
 
   PetscDM _dm; ///< Cached PETSc dm for submesh.
   PetscVec _localVec; ///< Cached local PETSc Vec.
@@ -173,7 +173,7 @@
    * @param submeshIS Submesh index set associated with visitor.
    */
   MatVisitorSubMesh(const PetscMat mat,
-		    const Field<Mesh>& field,
+		    const Field& field,
 		    const SubMeshIS& submeshIS);
 
   /// Default destructor

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.icc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/VisitorSubMesh.icc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,7 +25,7 @@
 // ----------------------------------------------------------------------
 // Default constructor.
 inline
-pylith::topology::VecVisitorSubMesh::VecVisitorSubMesh(const Field<Mesh>& field,
+pylith::topology::VecVisitorSubMesh::VecVisitorSubMesh(const Field& field,
 						       const SubMeshIS& submeshIS) :
   _field(field),
   _dm(NULL),
@@ -163,7 +163,7 @@
 // Default constructor.
 inline
 pylith::topology::MatVisitorSubMesh::MatVisitorSubMesh(const PetscMat mat,
-						       const Field<Mesh>& field,
+						       const Field& field,
 						       const SubMeshIS& submeshIS) :
   _mat(mat),
   _dm(NULL),

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/topologyfwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/topologyfwd.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/topologyfwd.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -57,8 +57,8 @@
     class StratumIS;
     
     class FieldBase;
-    template<typename mesh_type> class Field;
-    template<typename field_type> class Fields;
+    class Field;
+    class Fields;
     class VecVisitorMesh;
     class VecVisitorSubMesh;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/utils/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/utils/Makefile.am	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/utils/Makefile.am	2013-05-14 19:55:48 UTC (rev 22061)
@@ -30,8 +30,6 @@
 	macrodefs.h \
 	petscfwd.h \
 	error.h \
-	sievefwd.hh \
-	sievetypes.hh \
         types.hh \
 	utilsfwd.hh
 

Deleted: short/3D/PyLith/trunk/libsrc/pylith/utils/sievefwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/utils/sievefwd.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/utils/sievefwd.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -1,40 +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/utils/sievefwd.hh
- *
- * @brief Forward declarations for PETSc Sieve objects.
- */
-
-#if !defined(pylith_utils_sievefwd_hh)
-#define pylith_utils_sievefwd_hh
-
-#include "types.hh"
-
-/// Namespace for Sieve package.
-namespace ALE {
- 
-  /// PETSc mesh
-  template class Mesh<PylithInt,PylithScalar>;
-} // ALE
-
-#endif // pylith_utils_sievefwd_hh
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/libsrc/pylith/utils/sievetypes.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/utils/sievetypes.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/libsrc/pylith/utils/sievetypes.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -1,48 +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/utils/sievetypes.hh
- *
- * @brief Aliases for Sieve types.
- */
-
-#if !defined(pylith_utils_sievetypes_hh)
-#define pylith_utils_sievetypes_hh
-
-#include "types.hh"
-
-#include <petscdmmesh.hh> // PETSc Mesh
-
-namespace pylith {
-
-  /// Sieve mesh (default, fast access with set sizes).
-  typedef ALE::IMesh<PylithInt,PylithScalar> SieveMesh;
-
-  /// Sieve mesh (flexible, slower access without set sizes).
-  typedef ALE::Mesh<PylithInt,PylithScalar> SieveFlexMesh;
-
-  /// Sieve submesh.
-  typedef ALE::IMesh<PylithInt,PylithScalar,ALE::LabelSifter<int, SieveMesh::point_type> > SieveSubMesh;
-
-} // pylith
-
-#endif // pylith_utils_sievetypes_hh
-
-
-// End of file

Modified: short/3D/PyLith/trunk/modulesrc/bc/AbsorbingDampers.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/AbsorbingDampers.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/bc/AbsorbingDampers.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -60,7 +60,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
@@ -82,7 +82,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
+      void integrateJacobian(pylith::topology::Field* jacobian,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/modulesrc/bc/BCIntegratorSubMesh.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/BCIntegratorSubMesh.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/bc/BCIntegratorSubMesh.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -46,7 +46,7 @@
        *
        * @returns Parameter fields.
        */
-      const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >* parameterFields(void) const;
+      const pylith::topology::Fields* parameterFields(void) const;
       
       /** Get boundary mesh.
        *

Modified: short/3D/PyLith/trunk/modulesrc/bc/BoundaryConditionPoints.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/BoundaryConditionPoints.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/bc/BoundaryConditionPoints.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -45,7 +45,7 @@
        *
        * @returns Parameter fields.
        */
-      const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >* parameterFields(void) const;
+      const pylith::topology::Fields* parameterFields(void) const;
 
     }; // class BoundaryConditionPoints
 

Modified: short/3D/PyLith/trunk/modulesrc/bc/DirichletBC.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/DirichletBC.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/bc/DirichletBC.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -61,13 +61,13 @@
        *
        * @param field Solution field
        */
-      void setConstraintSizes(const pylith::topology::Field<pylith::topology::Mesh>& field);
+      void setConstraintSizes(const pylith::topology::Field& field);
       
       /** Set which degrees of freedom are constrained at points in field.
        *
        * @param field Solution field
        */
-      void setConstraints(const pylith::topology::Field<pylith::topology::Mesh>& field);
+      void setConstraints(const pylith::topology::Field& field);
       
       /** Set values in field.
        *
@@ -75,7 +75,7 @@
        * @param field Solution field
        */
       void setField(const PylithScalar t,
-		    const pylith::topology::Field<pylith::topology::Mesh>& field);
+		    const pylith::topology::Field& field);
       
       /** Set values in field.
        *
@@ -85,7 +85,7 @@
        */
       void setFieldIncr(const PylithScalar t0,
 			const PylithScalar t1,
-			const pylith::topology::Field<pylith::topology::Mesh>& field);
+			const pylith::topology::Field& field);
       
       // PROTECTED METHODS //////////////////////////////////////////////
     protected :

Modified: short/3D/PyLith/trunk/modulesrc/bc/DirichletBoundary.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/DirichletBoundary.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/bc/DirichletBoundary.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -61,7 +61,7 @@
        *
        * @returns Field over vertices.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
+      const pylith::topology::Field&
       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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/bc/Neumann.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -55,7 +55,7 @@
        * @param t Current time.
        * @param fields Solution fields.
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
@@ -85,9 +85,8 @@
        *
        * @returns Traction vector at integration points.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      cellField(const char* name,
-		pylith::topology::SolutionFields* const fields =0);
+      const pylith::topology::Field& cellField(const char* name,
+					       pylith::topology::SolutionFields* const fields =0);
 
       // PROTECTED METHODS //////////////////////////////////////////////
     protected :

Modified: short/3D/PyLith/trunk/modulesrc/bc/PointForce.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/PointForce.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/bc/PointForce.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -54,7 +54,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       

Modified: short/3D/PyLith/trunk/modulesrc/faults/BruneSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/BruneSlipFn.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/BruneSlipFn.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -76,20 +76,20 @@
        *
        * @returns Slip vector as left-lateral/reverse/normal.
        */
-      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
+      void slip(pylith::topology::Field* const slipField,
 		const PylithScalar t);
       
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void);
+      const pylith::topology::Field& finalSlip(void);
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void);
+      const pylith::topology::Field& slipTime(void);
 
     }; // class BruneSlipFn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/ConstRateSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/ConstRateSlipFn.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/ConstRateSlipFn.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -70,20 +70,20 @@
        *
        * @returns Slip vector as left-lateral/reverse/normal.
        */
-      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
+      void slip(pylith::topology::Field* const slipField,
 		const PylithScalar t);
   
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void);
+      const pylith::topology::Field& finalSlip(void);
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void);
+      const pylith::topology::Field& slipTime(void);
 
     }; // class ConstRateSlipFn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/EqKinSrc.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/EqKinSrc.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/EqKinSrc.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -71,20 +71,20 @@
        * @param slipField Slip field over fault mesh.
        * @param t Time t.
        */
-      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
+      void slip(pylith::topology::Field* const slipField,
 		const PylithScalar t);
 
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void) const;
+      const pylith::topology::Field& finalSlip(void) const;
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void) const;
+      const pylith::topology::Field& slipTime(void) const;
 
     }; // class EqKinSrc
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/Fault.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/Fault.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/Fault.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -137,9 +137,8 @@
        * @returns Vertex field.
        */
       virtual
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      vertexField(const char* name,
-		  const pylith::topology::SolutionFields* fields =0) = 0;
+      const pylith::topology::Field& vertexField(const char* name,
+						 const pylith::topology::SolutionFields* fields =0) = 0;
       
       /** Get cell field associated with integrator.
        *
@@ -148,9 +147,8 @@
        * @returns Cell field.
        */
       virtual
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      cellField(const char* name,
-		const pylith::topology::SolutionFields* fields =0) = 0;
+      const pylith::topology::Field& cellField(const char* name,
+					       const pylith::topology::SolutionFields* fields =0) = 0;
       
     }; // class Fault
     

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesive.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesive.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesive.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -85,7 +85,7 @@
        *
        * @returns Fields associated with fault.
        */
-      const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >* fields(void) const;
+      const pylith::topology::Fields* fields(void) const;
 
     }; // class FaultCohesive
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -91,7 +91,7 @@
        * @param fields Solution fields
        */
       virtual
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 				      const PylithScalar t,
 				      pylith::topology::SolutionFields* const fields);
 
@@ -123,7 +123,7 @@
        */
       void adjustSolnLumped(pylith::topology::SolutionFields* fields,
 			    const PylithScalar t,
-			    const pylith::topology::Field<pylith::topology::Mesh>& jacobian);
+			    const pylith::topology::Field& jacobian);
 
       /** Verify configuration is acceptable.
        *
@@ -137,9 +137,8 @@
        * @param fields Solution fields.
        * @returns Vertex field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      vertexField(const char* name,
-		  const pylith::topology::SolutionFields* fields =0);
+      const pylith::topology::Field& vertexField(const char* name,
+						 const pylith::topology::SolutionFields* fields =0);
       
       /** Get cell field associated with integrator.
        *
@@ -147,9 +146,8 @@
        * @param fields Solution fields.
        * @returns Cell field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      cellField(const char* name,
-		const pylith::topology::SolutionFields* fields =0);
+      const pylith::topology::Field& cellField(const char* name,
+					       const pylith::topology::SolutionFields* fields =0);
 
     }; // class FaultCohesiveDyn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveImpulses.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveImpulses.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveImpulses.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -99,7 +99,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
@@ -109,9 +109,8 @@
        * @param fields Solution fields.
        * @returns Vertex field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
-	vertexField(const char* name,
-		    const pylith::topology::SolutionFields* fields =0);
+      const pylith::topology::Field& vertexField(const char* name,
+						 const pylith::topology::SolutionFields* fields =0);
       
       /** Get cell field associated with integrator.
        *
@@ -119,9 +118,8 @@
        * @param fields Solution fields.
        * @returns Cell field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      cellField(const char* name,
-		const pylith::topology::SolutionFields* fields =0);
+      const pylith::topology::Field& cellField(const char* name,
+					       const pylith::topology::SolutionFields* fields =0);
 
     }; // class FaultCohesiveImpulses
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -76,7 +76,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
@@ -86,9 +86,8 @@
        * @param fields Solution fields.
        * @returns Vertex field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      vertexField(const char* name,
-		  const pylith::topology::SolutionFields* fields =0);
+      const pylith::topology::Field& vertexField(const char* name,
+						 const pylith::topology::SolutionFields* fields =0);
       
       /** Get cell field associated with integrator.
        *
@@ -96,9 +95,8 @@
        * @param fields Solution fields.
        * @returns Cell field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      cellField(const char* name,
-		const pylith::topology::SolutionFields* fields =0);
+      const pylith::topology::Field& cellField(const char* name,
+					       const pylith::topology::SolutionFields* fields =0);
 
     }; // class FaultCohesiveKin
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveLagrange.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveLagrange.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveLagrange.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -57,7 +57,7 @@
        *
        * @param field Solution field.
        */
-      void splitField(pylith::topology::Field<pylith::topology::Mesh>* field);
+      void splitField(pylith::topology::Field* field);
 
       /** Integrate contributions to residual term (r) for operator that
        * do not require assembly across processors.
@@ -67,7 +67,7 @@
        * @param fields Solution fields
        */
       virtual
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
@@ -90,7 +90,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
+      void integrateJacobian(pylith::topology::Field* jacobian,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
@@ -104,7 +104,7 @@
       virtual
       void adjustSolnLumped(pylith::topology::SolutionFields* fields,
 			    const PylithScalar t,
-			    const pylith::topology::Field<pylith::topology::Mesh>& jacobian);
+			    const pylith::topology::Field& jacobian);
 
       /** Verify configuration is acceptable.
        *
@@ -117,7 +117,7 @@
        * @param field Solution field.
        */
       virtual
-      void checkConstraints(const pylith::topology::Field<pylith::topology::Mesh>& solution) const;
+      void checkConstraints(const pylith::topology::Field& solution) const;
       
     }; // class FaultCohesiveLagrange
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -58,7 +58,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
@@ -86,9 +86,8 @@
        *
        * @returns Vertex field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      vertexField(const char* name,
-		  const pylith::topology::SolutionFields* fields =0);
+      const pylith::topology::Field& vertexField(const char* name,
+						 const pylith::topology::SolutionFields* fields =0);
       
       /** Get cell field associated with integrator.
        *
@@ -97,9 +96,8 @@
        *
        * @returns Cell field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      cellField(const char* name,
-		const pylith::topology::SolutionFields* fields =0);
+      const pylith::topology::Field& cellField(const char* name,
+					       const pylith::topology::SolutionFields* fields =0);
 
     }; // class FaultCohesiveTract
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/LiuCosSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/LiuCosSlipFn.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/LiuCosSlipFn.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -78,20 +78,20 @@
        *
        * @returns Slip vector as left-lateral/reverse/normal.
        */
-      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
+      void slip(pylith::topology::Field* const slipField,
 		const PylithScalar t);
   
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void);
+      const pylith::topology::Field& finalSlip(void);
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void);
+      const pylith::topology::Field& slipTime(void);
 
     }; // class LiuCosSlipFn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/SlipTimeFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/SlipTimeFn.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/SlipTimeFn.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -61,7 +61,7 @@
        * @returns Slip vector as left-lateral/reverse/normal.
        */
       virtual
-      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
+      void slip(pylith::topology::Field* const slipField,
 		const PylithScalar t) = 0;
   
       /** Get final slip.
@@ -69,21 +69,20 @@
        * @returns Final slip.
        */
       virtual
-      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void) = 0;
+      const pylith::topology::Field& finalSlip(void) = 0;
 
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
       virtual
-      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void) = 0;
+      const pylith::topology::Field& slipTime(void) = 0;
 
       /** Get parameter fields.
        *
        * @returns Parameter fields.
        */
-      const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
-      parameterFields(void) const;
+      const pylith::topology::Fields* parameterFields(void) const;
 
     }; // class SlipTimeFn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/StepSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/StepSlipFn.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/StepSlipFn.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -70,20 +70,20 @@
        *
        * @returns Slip vector as left-lateral/reverse/normal.
        */
-      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
+      void slip(pylith::topology::Field* const slipField,
 		const PylithScalar t);
       
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void);
+      const pylith::topology::Field& finalSlip(void);
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void);
+      const pylith::topology::Field& slipTime(void);
 
     }; // class StepSlipFn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -76,20 +76,20 @@
        *
        * @returns Slip vector as left-lateral/reverse/normal.
        */
-      void slip(pylith::topology::Field<pylith::topology::Mesh>* const slipField,
+      void slip(pylith::topology::Field* const slipField,
 		const PylithScalar t);
   
       /** Get final slip.
        *
        * @returns Final slip.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& finalSlip(void);
+      const pylith::topology::Field& finalSlip(void);
       
       /** Get time when slip begins at each point.
        *
        * @returns Time when slip begins.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& slipTime(void);
+      const pylith::topology::Field& slipTime(void);
 
     }; // class TimeHistorySlipFn
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/TractPerturbation.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/TractPerturbation.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/faults/TractPerturbation.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -51,7 +51,7 @@
        *
        * @returns Parameter fields.
        */
-      const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >* parameterFields(void) const;
+      const pylith::topology::Fields* parameterFields(void) const;
       
       /** Initialize slip time function.
        *
@@ -60,7 +60,7 @@
        * @param normalizer Nondimensionalization of scales.
        */
       void initialize(const pylith::topology::Mesh& faultMesh,
-		      const pylith::topology::Field<pylith::topology::Mesh>& faultOrientation,
+		      const pylith::topology::Field& faultOrientation,
 		      const spatialdata::units::Nondimensional& normalizer);
       
       /** Calculate spatial and temporal variation of value.
@@ -83,9 +83,8 @@
        *
        * @returns Traction vector field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      vertexField(const char* name,
-		  pylith::topology::SolutionFields* const fields =0);
+      const pylith::topology::Field& vertexField(const char* name,
+						 pylith::topology::SolutionFields* const fields =0);
       
       // PROTECTED METHODS //////////////////////////////////////////////
     protected :

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/Constraint.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/Constraint.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/Constraint.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -60,14 +60,14 @@
        * @param field Solution field
        */
       virtual
-      void setConstraintSizes(const pylith::topology::Field<pylith::topology::Mesh>& field) = 0;
+      void setConstraintSizes(const pylith::topology::Field& field) = 0;
 
       /** Set which degrees of freedom are constrained at points in field.
        *
        * @param field Solution field
        */
       virtual
-      void setConstraints(const pylith::topology::Field<pylith::topology::Mesh>& field) = 0;
+      void setConstraints(const pylith::topology::Field& field) = 0;
 
       /** Set values in field.
        *
@@ -76,7 +76,7 @@
        */
       virtual
       void setField(const PylithScalar t,
-		    const pylith::topology::Field<pylith::topology::Mesh>& field) = 0;
+		    const pylith::topology::Field& field) = 0;
       
       /** Set increment in values from t0 to t1 in field.
        *
@@ -87,7 +87,7 @@
       virtual
       void setFieldIncr(const PylithScalar t0,
 			const PylithScalar t1,
-			const pylith::topology::Field<pylith::topology::Mesh>& field) = 0;
+			const pylith::topology::Field& field) = 0;
 
     }; // class Constraint
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicit.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicit.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicit.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -66,7 +66,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
@@ -78,7 +78,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
+      void integrateJacobian(pylith::topology::Field* jacobian,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitLgDeform.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitLgDeform.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitLgDeform.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -57,7 +57,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
@@ -69,7 +69,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
+      void integrateJacobian(pylith::topology::Field* jacobian,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTet4.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTet4.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTet4.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -66,7 +66,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
@@ -78,7 +78,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
+      void integrateJacobian(pylith::topology::Field* jacobian,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTri3.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTri3.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTri3.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -66,7 +66,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
@@ -78,7 +78,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
+      void integrateJacobian(pylith::topology::Field* jacobian,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicit.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicit.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicit.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -68,7 +68,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -68,7 +68,7 @@
        * @param t Current time
        * @param fields Solution fields
        */
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -110,7 +110,7 @@
        * @param field Solution field.
        */
       virtual
-      void splitField(pylith::topology::Field<pylith::topology::Mesh>* field);
+      void splitField(pylith::topology::Field* field);
 
       /** Integrate contributions to residual term (r) for operator.
        *
@@ -119,7 +119,7 @@
        * @param fields Solution fields
        */
       virtual 
-      void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+      void integrateResidual(const pylith::topology::Field& residual,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
@@ -143,7 +143,7 @@
        * @param fields Solution fields
        */
       virtual
-      void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
+      void integrateJacobian(pylith::topology::Field* jacobian,
 			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
@@ -169,7 +169,7 @@
        * @param field Solution field.
        */
       virtual
-      void checkConstraints(const pylith::topology::Field<pylith::topology::Mesh>& solution) const;
+      void checkConstraints(const pylith::topology::Field& solution) const;
 
 
     }; // Integrator

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -82,17 +82,15 @@
        * @param fields Fields manager.
        * @returns Cell field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>&
-      cellField(const char* name,
-		const pylith::topology::Mesh& mesh,
-		pylith::topology::SolutionFields* const fields =0);
+      const pylith::topology::Field& cellField(const char* name,
+					       const pylith::topology::Mesh& mesh,
+					       pylith::topology::SolutionFields* const fields =0);
       
       /** Get output fields.
        *
        * @returns Output (buffer) fields.
        */
-      const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
-      outputFields(void) const;
+      const pylith::topology::Fields* outputFields(void) const;
 
     }; // IntegratorElasticity
 

Modified: short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -116,13 +116,13 @@
        * @param name Name of field to retrieve.
        * @returns Field over fault interface cells.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>& getField(const char* name);
+      const pylith::topology::Field& 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::Mesh> >& fieldsPropsStateVars() const;
+      const pylith::topology::Fields& fieldsPropsStateVars() const;
 
       /** Retrieve parameters for physical properties and state variables
        * for vertex.

Modified: short/3D/PyLith/trunk/modulesrc/friction/friction.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/friction.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/friction/friction.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -35,7 +35,6 @@
 
 #include "pylith/utils/types.hh"
 #include "pylith/utils/array.hh"
-#include "pylith/utils/sievetypes.hh"
 %}
 
 %include "exception.i"

Modified: short/3D/PyLith/trunk/modulesrc/materials/ElasticMaterial.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/ElasticMaterial.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/materials/ElasticMaterial.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -101,7 +101,7 @@
        *
        * @returns Initial stress field.
        */
-      const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >* initialFields(void) const;
+      const pylith::topology::Fields* initialFields(void) const;
 
       // PROTECTED METHODS //////////////////////////////////////////////
     protected :

Modified: short/3D/PyLith/trunk/modulesrc/materials/Material.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/Material.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/materials/Material.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -138,20 +138,20 @@
        * @param field Field over material cells.
        * @param name Name of field to retrieve.
        */
-      void getField(pylith::topology::Field<pylith::topology::Mesh>* field,
+      void getField(pylith::topology::Field* field,
 		    const char* name) const;
       
       /** Get the properties field.
        *
        * @returns Properties field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>* propertiesField() const;
+      const pylith::topology::Field* propertiesField() const;
       
       /** Get the state variables field.
        *
        * @returns State variables field.
        */
-      const pylith::topology::Field<pylith::topology::Mesh>* stateVarsField() const;
+      const pylith::topology::Field* stateVarsField() const;
 
       // PROTECTED METHODS //////////////////////////////////////////////
     protected :

Modified: short/3D/PyLith/trunk/modulesrc/materials/materials.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/materials.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/materials/materials.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -43,7 +43,6 @@
 #include "pylith/materials/DruckerPragerPlaneStrain.hh"
 
 #include "pylith/utils/arrayfwd.hh"
-#include "pylith/utils/sievetypes.hh"
 %}
 
 %include "exception.i"

Modified: short/3D/PyLith/trunk/modulesrc/meshio/CellFilter.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/CellFilter.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/CellFilter.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,7 +25,6 @@
 namespace pylith {
   namespace meshio {
 
-    template<typename mesh_type, typename field_type>
     class pylith::meshio::CellFilter
     { // CellFilter
 
@@ -65,9 +64,9 @@
        * @returns Averaged field.
        */
       virtual
-      field_type& filter(const field_type& fieldIn,
-			 const char* label =0,
-			 const int labelId =0) = 0;
+      pylith::topology::Field& filter(const pylith::topology::Field& fieldIn,
+				      const char* label =0,
+				      const int labelId =0) = 0;
 
     }; // CellFilter
 

Modified: short/3D/PyLith/trunk/modulesrc/meshio/CellFilterAvg.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/CellFilterAvg.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/CellFilterAvg.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,9 +25,7 @@
 namespace pylith {
   namespace meshio {
 
-    template<typename mesh_type, typename field_type>
-    class pylith::meshio::CellFilterAvg :
-      public CellFilter<mesh_type, field_type>
+    class pylith::meshio::CellFilterAvg : public CellFilter
     { // CellFilterAvg
 
       // PUBLIC METHODS /////////////////////////////////////////////////
@@ -43,7 +41,7 @@
        *
        * @returns Copy of filter.
        */
-      CellFilter<mesh_type, field_type>* clone(void) const;
+      CellFilter* clone(void) const;
       
       /// Deallocate PETSc and local data structures.
       void deallocate(void);
@@ -52,7 +50,7 @@
        *
        * @returns Field associated with averaged values.
        */
-      const field_type* fieldAvg(void) const;
+      const pylith::topology::Field* fieldAvg(void) const;
   
       /** Filter field over cells.
        *
@@ -62,9 +60,9 @@
        *
        * @returns Averaged field.
        */
-      field_type& filter(const field_type& fieldIn,
-			 const char* label =0,
-			 const int labelId =0);
+      pylith::topology::Field& filter(const pylith::topology::Field& fieldIn,
+				      const char* label =0,
+				      const int labelId =0);
 
     }; // CellFilterAvg
 

Modified: short/3D/PyLith/trunk/modulesrc/meshio/DataWriter.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/DataWriter.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/DataWriter.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,7 +25,6 @@
 namespace pylith {
   namespace meshio {
 
-    template<typename mesh_type, typename field_type>
     class pylith::meshio::DataWriter
     { // DataWriter
 
@@ -65,7 +64,7 @@
        * @param labelId Value of label defining which cells to include.
        */
       virtual
-      void open(const mesh_type& mesh,
+      void open(const pylith::topology::Mesh& mesh,
 		const int numTimeSteps,
 		const char* label =0,
 		const int labelId =0);
@@ -84,7 +83,7 @@
        */
       virtual
       void openTimeStep(const PylithScalar t,
-			const mesh_type& mesh,
+			const pylith::topology::Mesh& mesh,
 			const char* label =0,
 			const int labelId =0);
       
@@ -100,8 +99,8 @@
        */
       virtual
       void writeVertexField(const PylithScalar t,
-			    field_type& field,
-			    const mesh_type& mesh) = 0;
+			    pylith::topology::Field& field,
+			    const pylith::topology::Mesh& mesh) = 0;
       
       /** Write field over cells to file.
        *
@@ -113,7 +112,7 @@
        */
       virtual
       void writeCellField(const PylithScalar t,
-			  field_type& field,
+			  pylith::topology::Field& field,
 			  const char* label =0,
 			  const int labelId =0) = 0;
 

Modified: short/3D/PyLith/trunk/modulesrc/meshio/DataWriterHDF5.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/DataWriterHDF5.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/DataWriterHDF5.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,9 +25,7 @@
 namespace pylith {
   namespace meshio {
 
-    template<typename mesh_type, typenam field_type>
-    class pylith::meshio::DataWriterHDF5 :
-      public DataWriter<mesh_type, field_type>
+    class pylith::meshio::DataWriterHDF5 : public DataWriter
     { // DataWriterHDF5  
       
       // PUBLIC METHODS /////////////////////////////////////////////////
@@ -43,7 +41,7 @@
        *
        * @returns Copy of this.
        */
-      DataWriter<mesh_type, field_type>* clone(void) const;
+      DataWriter* clone(void) const;
       
       /// Deallocate PETSc and local data structures.
       void deallocate(void);
@@ -62,7 +60,7 @@
        *   (=0 means use all cells in mesh).
        * @param labelId Value of label defining which cells to include.
        */
-      void open(const mesh_type& mesh,
+      void open(const pylith::topology::Mesh& mesh,
 		const int numTimeSteps,
 		const char* label =0,
 		const int labelId =0);
@@ -77,8 +75,8 @@
        * @param mesh Mesh for output.
        */
       void writeVertexField(const PylithScalar t,
-			    field_type& field,
-			    const mesh_type& mesh);
+			    pylith::topology::Field& field,
+			    const pylith::topology::Mesh& mesh);
       
       /** Write field over cells to file.
        *
@@ -89,7 +87,7 @@
        * @param labelId Value of label defining which cells to include.
        */
       void writeCellField(const PylithScalar t,
-			  field_type& field,
+			  pylith::topology::Field& field,
 			  const char* label =0,
 			  const int labelId =0);
       

Modified: short/3D/PyLith/trunk/modulesrc/meshio/DataWriterHDF5Ext.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/DataWriterHDF5Ext.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/DataWriterHDF5Ext.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,9 +25,7 @@
 namespace pylith {
   namespace meshio {
 
-    template<typename mesh_type, typenam field_type>
-    class pylith::meshio::DataWriterHDF5Ext :
-      public DataWriter<mesh_type, field_type>
+    class pylith::meshio::DataWriterHDF5Ext : public DataWriter
     { // DataWriterHDF5Ext  
       
       // PUBLIC METHODS /////////////////////////////////////////////////
@@ -43,7 +41,7 @@
        *
        * @returns Copy of this.
        */
-      DataWriter<mesh_type, field_type>* clone(void) const;
+      DataWriter* clone(void) const;
       
       /// Deallocate PETSc and local data structures.
       void deallocate(void);
@@ -62,7 +60,7 @@
        *   (=0 means use all cells in mesh).
        * @param labelId Value of label defining which cells to include.
        */
-      void open(const mesh_type& mesh,
+      void open(const pylith::topology::Mesh& mesh,
 		const int numTimeSteps,
 		const char* label =0,
 		const int labelId =0);
@@ -77,8 +75,8 @@
        * @param mesh Mesh for output.
        */
       void writeVertexField(const PylithScalar t,
-			    field_type& field,
-			    const mesh_type& mesh);
+			    pylith::topology::Field& field,
+			    const pylith::topology::Mesh& mesh);
       
       /** Write field over cells to file.
        *
@@ -89,7 +87,7 @@
        * @param labelId Value of label defining which cells to include.
        */
       void writeCellField(const PylithScalar t,
-			  field_type& field,
+			  pylith::topology::Field& field,
 			  const char* label =0,
 			  const int labelId =0);
       

Modified: short/3D/PyLith/trunk/modulesrc/meshio/DataWriterVTK.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/DataWriterVTK.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/DataWriterVTK.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,9 +25,7 @@
 namespace pylith {
   namespace meshio {
 
-    template<typename mesh_type, typenam field_type>
-    class pylith::meshio::DataWriterVTK :
-      public DataWriter<mesh_type, field_type>
+    class pylith::meshio::DataWriterVTK : public DataWriter
     { // DataWriterVTK  
       
       // PUBLIC METHODS /////////////////////////////////////////////////
@@ -43,7 +41,7 @@
        *
        * @returns Copy of this.
        */
-      DataWriter<mesh_type, field_type>* clone(void) const;
+      DataWriter* clone(void) const;
       
       /// Deallocate PETSc and local data structures.
       void deallocate(void);
@@ -83,7 +81,7 @@
        *   (=0 means use all cells in mesh).
        * @param labelId Value of label defining which cells to include.
        */
-      void open(const mesh_type& mesh,
+      void open(const pylith::topology::Mesh& mesh,
 		const int numTimeSteps,
 		const char* label =0,
 		const int labelId =0);
@@ -100,7 +98,7 @@
        * @param labelId Value of label defining which cells to include.
        */
       void openTimeStep(const PylithScalar t,
-			const mesh_type& mesh,
+			const pylith::topology::Mesh& mesh,
 			const char* label =0,
 			const int labelId =0);
       
@@ -114,8 +112,8 @@
        * @param mesh Mesh for output.
        */
       void writeVertexField(const PylithScalar t,
-			    field_type& field,
-			    const mesh_type& mesh);
+			    pylith::topology::Field& field,
+			    const pylith::topology::Mesh& mesh);
       
       /** Write field over cells to file.
        *
@@ -126,7 +124,7 @@
        * @param labelId Value of label defining which cells to include.
        */
       void writeCellField(const PylithScalar t,
-			  field_type& field,
+			  pylith::topology::Field& field,
 			  const char* label =0,
 			  const int labelId =0);
       

Modified: short/3D/PyLith/trunk/modulesrc/meshio/OutputManager.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/OutputManager.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/OutputManager.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,7 +25,6 @@
 namespace pylith {
   namespace meshio {
 
-    template<typename mesh_type, typename field_type>
     class pylith::meshio::OutputManager
     { // OutputManager
 
@@ -54,25 +53,25 @@
        *
        * @param datawriter Writer for data.
        */
-      void writer(DataWriter<mesh_type, field_type>* const datawriter);
+      void writer(DataWriter* const datawriter);
       
       /** Set filter for vertex data.
        *
        * @param filter Filter to apply to vertex data before writing.
        */
-      void vertexFilter(VertexFilter<field_type>* const filter);
+      void vertexFilter(VertexFilter* const filter);
       
       /** Set filter for cell data.
        *
        * @param filter Filter to apply to cell data before writing.
        */
-      void cellFilter(CellFilter<mesh_type, field_type>* const filter);
+      void cellFilter(CellFilter* const filter);
       
       /** Get fields used in output.
        *
        * @returns Fields associated with output.
        */
-      const pylith::topology::Fields<field_type>* fields(void) const;
+      const pylith::topology::Fields* fields(void) const;
 
       /** Prepare for output.
        *
@@ -82,7 +81,7 @@
        *   (=0 means use all cells in mesh).
        * @param labelId Value of label defining which cells to include.
        */
-      void open(const mesh_type& mesh,
+      void open(const pylith::topology::Mesh& mesh,
 		const int numTimeSteps,
 		const char* label =0,
 		const int labelId =0);
@@ -99,7 +98,7 @@
        * @param labelId Value of label defining which cells to include.
        */
       void openTimeStep(const PylithScalar t,
-			const mesh_type& mesh,
+			const pylith::topology::Mesh& mesh,
 			const char* label =0,
 			const int labelId =0);
       
@@ -113,8 +112,8 @@
        * @param mesh Mesh for output.
        */
       void appendVertexField(const PylithScalar t,
-			     field_type& field,
-			     const mesh_type& mesh);
+			     pylith::topology::Field& field,
+			     const pylith::topology::Mesh& mesh);
       
       /** Append finite-element cell field to file.
        *
@@ -125,7 +124,7 @@
        * @param labelId Value of label defining which cells to include.
        */
       void appendCellField(const PylithScalar t,
-			   field_type& field,
+			   pylith::topology::Field& field,
 			   const char* label =0,
 			   const int labelId =0);
 

Modified: short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnPoints.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnPoints.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnPoints.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,10 +25,7 @@
 namespace pylith {
   namespace meshio {
 
-%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> >
+    class pylith::meshio::OutputSolnPoints : public OutputManager
     { // OutputSolnPoints
       
       // PUBLIC METHODS ///////////////////////////////////////////////////
@@ -101,7 +98,7 @@
        * @param mesh Mesh for output.
        */
       void appendVertexField(const PylithScalar t,
-			     pylith::topology::Field<topology::Mesh>& field,
+			     pylith::topology::Field& field,
 			     const pylith::topology::Mesh& mesh);
 
       /** Append finite-element cell field to file.
@@ -113,7 +110,7 @@
        * @param labelId Value of label defining which cells to include.
        */
       void appendCellField(const PylithScalar t,
-			   pylith::topology::Field<topology::Mesh>& field,
+			   pylith::topology::Field& field,
 			   const char* label =0,
 			   const int labelId =0);
 

Modified: short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnSubset.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnSubset.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/OutputSolnSubset.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -22,12 +22,10 @@
  * @brief Python interface to C++ OutputSolnSubset object.
  */
 
-%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::Mesh, pylith::topology::Field<pylith::topology::Mesh> >
+    class pylith::meshio::OutputSolnSubset : public OutputManager
     { // OutputSolnSubset
 
       // PUBLIC METHODS /////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/modulesrc/meshio/VertexFilter.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/VertexFilter.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/VertexFilter.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,7 +25,6 @@
 namespace pylith {
   namespace meshio {
 
-    template<typename field_type>
     class pylith::meshio::VertexFilter
     { // VertexFilter
 
@@ -55,7 +54,7 @@
        * @param fieldIn Field to filter.
        */
       virtual
-      const field_type& filter(const field_type& fieldIn) = 0;
+      const pylith::topology::Field& filter(const pylith::topology::Field& fieldIn) = 0;
 
     }; // VertexFilter
 

Modified: short/3D/PyLith/trunk/modulesrc/meshio/VertexFilterVecNorm.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/VertexFilterVecNorm.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/VertexFilterVecNorm.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,8 +25,7 @@
 namespace pylith {
   namespace meshio {
 
-    template<typename field_type>
-    class pylith::meshio::VertexFilterVecNorm : public VertexFilter<field_type>
+    class pylith::meshio::VertexFilterVecNorm : public VertexFilter
     { // VertexFilterVecNorm
 
       // PUBLIC METHODS /////////////////////////////////////////////////
@@ -42,7 +41,7 @@
        *
        * @returns Copy of filter.
        */
-      VertexFilter<field_type>* clone(void) const;
+      VertexFilter* clone(void) const;
       
       /// Deallocate PETSc and local data structures.
       void deallocate(void);
@@ -51,7 +50,7 @@
        *
        * @param fieldIn Field to filter.
        */
-      const field_type& filter(const field_type& fieldIn);
+      const pylith::topology::Field& filter(const pylith::topology::Field& fieldIn);
       
     }; // VertexFilterVecNorm
 

Modified: short/3D/PyLith/trunk/modulesrc/meshio/meshio.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/meshio.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/meshio/meshio.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -90,24 +90,4 @@
 %include "Xdmf.i"
 #endif
 
-// Template instatiation
-%template(MeshVertexFilter) pylith::meshio::VertexFilter<pylith::topology::Field<pylith::topology::Mesh> >;
-%template(MeshVertexFilterVecNorm) pylith::meshio::VertexFilterVecNorm<pylith::topology::Field<pylith::topology::Mesh> >;
-
-%template(MeshCellFilter) pylith::meshio::CellFilter<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%template(MeshCellFilterAvg) pylith::meshio::CellFilterAvg<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-
-%template(MeshDataWriter) pylith::meshio::DataWriter<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-
-%template(MeshDataWriterVTK) pylith::meshio::DataWriterVTK<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-%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(MeshDataWriterHDF5Ext) pylith::meshio::DataWriterHDF5Ext<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-#endif
-
-%template(MeshOutputManager) pylith::meshio::OutputManager<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >;
-
 // End of file

Modified: short/3D/PyLith/trunk/modulesrc/problems/Formulation.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/problems/Formulation.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/problems/Formulation.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -120,7 +120,7 @@
        * @param t Current time (nondimensional).
        * @param dt Time step (nondimension).
        */
-      void updateSettings(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
+      void updateSettings(pylith::topology::Field* jacobian,
 			  pylith::topology::SolutionFields* fields,
 			  const PylithScalar t,
 			  const PylithScalar dt);

Modified: short/3D/PyLith/trunk/modulesrc/problems/SolverLinear.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/problems/SolverLinear.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/problems/SolverLinear.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -57,9 +57,9 @@
        * @param jacobian Jacobian of the system.
        * @param residual Residual field.
        */
-      void solve(pylith::topology::Field<pylith::topology::Mesh>* solution,
+      void solve(pylith::topology::Field* solution,
 		 pylith::topology::Jacobian* jacobian,
-		 const pylith::topology::Field<pylith::topology::Mesh>& residual);
+		 const pylith::topology::Field& residual);
 
     }; // SolverLinear
 

Modified: short/3D/PyLith/trunk/modulesrc/problems/SolverLumped.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/problems/SolverLumped.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/problems/SolverLumped.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -48,7 +48,7 @@
        */
       void
       initialize(const pylith::topology::SolutionFields& fields,
-		 const pylith::topology::Field<pylith::topology::Mesh>& jacobian,
+		 const pylith::topology::Field& jacobian,
 		 Formulation* const formulation);
       
       /** Solve the system.
@@ -57,9 +57,9 @@
        * @param jacobian Jacobian of the system.
        * @param residual Residual field.
        */
-      void solve(pylith::topology::Field<pylith::topology::Mesh>* solution,
-		 const pylith::topology::Field<pylith::topology::Mesh>& jacobian,
-		 const pylith::topology::Field<pylith::topology::Mesh>& residual);
+      void solve(pylith::topology::Field* solution,
+		 const pylith::topology::Field& jacobian,
+		 const pylith::topology::Field& residual);
       
     }; // SolverLumped
 

Modified: short/3D/PyLith/trunk/modulesrc/problems/SolverNonlinear.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/problems/SolverNonlinear.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/problems/SolverNonlinear.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -57,9 +57,9 @@
        * @param jacobian Jacobian of the system.
        * @param residual Residual field.
        */
-      void solve(pylith::topology::Field<pylith::topology::Mesh>* solution,
+      void solve(pylith::topology::Field* solution,
 		 pylith::topology::Jacobian* jacobian,
-		 const pylith::topology::Field<pylith::topology::Mesh>& residual);
+		 const pylith::topology::Field& residual);
 
     }; // SolverNonlinear
 

Modified: short/3D/PyLith/trunk/modulesrc/problems/problems.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/problems/problems.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/problems/problems.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,8 +33,6 @@
 #include "pylith/problems/SolverLinear.hh"
 #include "pylith/problems/SolverNonlinear.hh"
 #include "pylith/problems/SolverLumped.hh"
-
-#include "pylith/utils/sievetypes.hh"
 %}
 
 %include "exception.i"

Modified: short/3D/PyLith/trunk/modulesrc/topology/Distributor.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/Distributor.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/topology/Distributor.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -55,7 +55,7 @@
        * @param cs Coordinate system for mesh.
        */
       static
-      void write(pylith::meshio::DataWriter<pylith::topology::Mesh, pylith::topology::Field<pylith::topology::Mesh> >* const writer,
+      void write(pylith::meshio::DataWriter* const writer,
 		 const pylith::topology::Mesh& mesh);
 
     }; // Distributor

Modified: short/3D/PyLith/trunk/modulesrc/topology/Field.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/Field.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/topology/Field.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,7 +25,6 @@
 namespace pylith {
   namespace topology {
 
-    template<typename mesh_type>
     class Field : public FieldBase
     { // Field
 
@@ -36,7 +35,7 @@
        *
        * @param mesh Finite-element mesh.
        */
-      Field(const mesh_type& mesh);
+      Field(const pylith::topology::Mesh& mesh);
 
       /// Destructor.
       ~Field(void);
@@ -48,7 +47,7 @@
        *
        * @returns Finite-element mesh.
        */
-      const mesh_type& mesh(void) const;
+      const pylith::topology::Mesh& mesh(void) const;
 
       /** Set label for field.
        *
@@ -189,8 +188,7 @@
        * @param mesh Mesh associated with scatter.
        * @param context Label for context associated with vector.
        */
-      template<typename scatter_mesh_type>
-      void createScatter(const scatter_mesh_type& mesh,
+      void createScatter(const pylith::topology::Mesh& mesh,
 			 const char* context ="");
 
       /** Get PETSc vector associated with field.

Modified: short/3D/PyLith/trunk/modulesrc/topology/Fields.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/Fields.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/topology/Fields.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,7 +25,6 @@
 namespace pylith {
   namespace topology {
 
-    template<typename field_type>
     class Fields
     { // Fields
 
@@ -36,7 +35,7 @@
        *
        * @param mesh Finite-element mesh.
        */
-      Fields(const typename field_type::Mesh& mesh);
+      Fields(const pylith::topology::Mesh& mesh);
 
       /// Destructor.
       virtual
@@ -83,13 +82,13 @@
        *
        * @param name Name of field.
        */
-      const field_type& get(const char* name) const;
+      const pylith::topology::Field& get(const char* name) const;
 	   
       /** Get field.
        *
        * @param name Name of field.
        */
-      field_type& get(const char* name);
+      pylith::topology::Field& get(const char* name);
 	   
       /** Copy layout to other fields.
        *
@@ -101,7 +100,7 @@
        *
        * @returns Finite-element mesh.
        */
-      const typename field_type::Mesh& mesh(void) const;
+      const pylith::topology::Mesh& mesh(void) const;
 
       /** Return the names of all fields.
        *

Modified: short/3D/PyLith/trunk/modulesrc/topology/Jacobian.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/Jacobian.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/topology/Jacobian.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -38,7 +38,7 @@
        * @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<Mesh>& field,
+      Jacobian(const Field& field,
 	       const char* matrixType ="aij",
 	       const bool blockOkay =false);
 

Modified: short/3D/PyLith/trunk/modulesrc/topology/SolutionFields.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/SolutionFields.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/topology/SolutionFields.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -22,12 +22,10 @@
  * @brief Python interface to C++ SolutionFields object.
  */
 
-%template(SolutionFieldsBase) pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >;
-
 namespace pylith {
   namespace topology {
 
-    class SolutionFields : public Fields <Field <Mesh> >
+    class SolutionFields : public Fields
     { // SolutionFields
 
       // PUBLIC MEMBERS /////////////////////////////////////////////////
@@ -52,13 +50,13 @@
        *
        * @returns Solution field.
        */
-      const Field<Mesh>& solution(void) const;
+      const Field& solution(void) const;
       
       /** Get solution field.
        *
        * @returns Solution field.
        */
-      Field<Mesh>& solution(void);
+      Field& solution(void);
       
     }; // SolutionFields
 

Modified: short/3D/PyLith/trunk/modulesrc/topology/topology.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/topology.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/topology/topology.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -67,14 +67,5 @@
 //%include "RefineUniform.i" // not yet updated
 %include "ReverseCuthillMcKee.i"
 
-// Template instatiation
-
-%template(MeshField) pylith::topology::Field<pylith::topology::Mesh>;
-%template(MeshFields) pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >;
-
-%extend pylith::topology::Field<pylith::topology::Mesh> {
-  %template(createScatterMesh) createScatter<pylith::topology::Mesh>;
- }
-
 // End of file
 

Modified: short/3D/PyLith/trunk/modulesrc/utils/utils.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/utils/utils.i	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/modulesrc/utils/utils.i	2013-05-14 19:55:48 UTC (rev 22061)
@@ -27,7 +27,6 @@
 
 #include <petsclog.h> // USES PetscLogEventBegin/End() in inline methods
 #include "pylith/utils/arrayfwd.hh" // USES scalar_array
-#include "pylith/utils/sievetypes.hh"
 %}
 
 %include "exception.i"

Modified: short/3D/PyLith/trunk/pylith/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/pylith/Makefile.am	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/Makefile.am	2013-05-14 19:55:48 UTC (rev 22061)
@@ -92,17 +92,14 @@
 	materials/DruckerPragerPlaneStrain.py \
 	meshio/__init__.py \
 	meshio/CellFilter.py \
-	meshio/CellFilterAvgMesh.py \
+	meshio/CellFilterAvg.py \
 	meshio/DataWriter.py \
 	meshio/DataWriterVTK.py \
-	meshio/DataWriterVTKMesh.py \
-	meshio/DataWriterVTKPoints.py \
 	meshio/MeshIOObj.py \
 	meshio/MeshIOAscii.py \
 	meshio/MeshIOLagrit.py \
 	meshio/OutputDirichlet.py \
 	meshio/OutputManager.py \
-	meshio/OutputManagerMesh.py \
 	meshio/OutputSoln.py \
 	meshio/OutputFaultKin.py \
 	meshio/OutputFaultDyn.py \
@@ -114,7 +111,7 @@
 	meshio/PointsList.py \
 	meshio/SingleOutput.py \
 	meshio/VertexFilter.py \
-	meshio/VertexFilterVecNormMesh.py \
+	meshio/VertexFilterVecNorm.py \
 	mpi/__init__.py \
 	mpi/Communicator.py \
 	perf/__init__.py \
@@ -186,9 +183,7 @@
 if ENABLE_HDF5
   nobase_pkgpyexec_PYTHON += \
 	meshio/DataWriterHDF5.py \
-	meshio/DataWriterHDF5Mesh.py \
 	meshio/DataWriterHDF5Ext.py \
-	meshio/DataWriterHDF5ExtMesh.py \
 	meshio/Xdmf.py
 endif
 

Modified: short/3D/PyLith/trunk/pylith/meshio/CellFilter.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/CellFilter.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/CellFilter.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -39,8 +39,7 @@
   import pyre.inventory
 
   from pylith.perf.MemoryLogger import MemoryLogger
-  perfLogger = pyre.inventory.facility("perf_logger", family="perf_logger",
-                                       factory=MemoryLogger)
+  perfLogger = pyre.inventory.facility("perf_logger", family="perf_logger", factory=MemoryLogger)
   perfLogger.meta['tip'] = "Performance and memory logging."
 
 
@@ -91,8 +90,7 @@
     """
     Model memory allocation.
     """
-    raise NotImplementedError("Please implement _modelMemoryUse() in "
-                              "derived class.")
+    raise NotImplementedError("Please implement _modelMemoryUse() in derived class.")
     return
 
 

Copied: short/3D/PyLith/trunk/pylith/meshio/CellFilterAvg.py (from rev 22060, short/3D/PyLith/trunk/pylith/meshio/CellFilterAvgMesh.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/CellFilterAvg.py	                        (rev 0)
+++ short/3D/PyLith/trunk/pylith/meshio/CellFilterAvg.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -0,0 +1,76 @@
+#!/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/CellFilterAvg.py
+##
+## @brief Python class for averaging cell fields over each cell's
+## quadrature points when writing finite-element data.
+##
+## Factory: output_cell_filter
+
+from CellFilter import CellFilter
+from meshio import CellFilterAvg as ModuleCellFilterAvg
+
+# CellFilterAvg class
+class CellFilterAvg(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="cellfilteravg"):
+    """
+    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.logField('Output', self.fieldAvg())
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def output_cell_filter():
+  """
+  Factory associated with CellFilter.
+  """
+  return CellFilterAvg()
+
+
+# End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/CellFilterAvgMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/CellFilterAvgMesh.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/CellFilterAvgMesh.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -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/CellFilterAvgMesh.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 MeshCellFilterAvg as ModuleCellFilterAvg
-
-# CellFilterAvgMesh class
-class CellFilterAvgMesh(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="cellfilteravgmesh"):
-    """
-    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.logField('Output', self.fieldAvg())
-    return
-
-
-# FACTORIES ////////////////////////////////////////////////////////////
-
-def output_cell_filter():
-  """
-  Factory associated with CellFilter.
-  """
-  return CellFilterAvgMesh()
-
-
-# End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -21,9 +21,10 @@
 ## @brief Python object for writing finite-element data to HDF5 file.
 
 from DataWriter import DataWriter
+from meshio import DataWriterHDF5 as ModuleDataWriterHDF5
 
 # DataWriterHDF5 class
-class DataWriterHDF5(DataWriter):
+class DataWriterHDF5(DataWriter, ModuleDataWriterHDF5):
   """
   Python object for writing finite-element data to HDF5 file.
 
@@ -50,7 +51,30 @@
     Constructor.
     """
     DataWriter.__init__(self, name)
+    ModuleDataWriterHDF5.__init__(self)
     return
 
 
+  def initialize(self, normalizer):
+    """
+    Initialize writer.
+    """
+    DataWriter.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 DataWriterHDF5()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5Ext.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5Ext.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5Ext.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -22,9 +22,10 @@
 ## with datasets stored in external binary files.
 
 from DataWriter import DataWriter
+from meshio import DataWriterHDF5Ext as ModuleDataWriterHDF5Ext
 
 # DataWriterHDF5Ext class
-class DataWriterHDF5Ext(DataWriter):
+class DataWriterHDF5Ext(DataWriter, ModuleDataWriterHDF5Ext):
   """
   @brief Python object for writing finite-element data to HDF5 file
   with datasets stored in external binary files.
@@ -52,6 +53,7 @@
     Constructor.
     """
     DataWriter.__init__(self, name)
+    ModuleDataWriterHDF5Ext.__init__(self)
     return
 
 
@@ -63,4 +65,26 @@
     return
 
 
+  def initialize(self, normalizer):
+    """
+    Initialize writer.
+    """
+    DataWriter.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 DataWriterHDF5Ext()
+
+
 # End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtMesh.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5ExtMesh.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -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/DataWriterHDF5ExtMesh.py
-##
-## @brief Python object for writing finite-element data to HDF5Ext file.
-
-from DataWriterHDF5Ext import DataWriterHDF5Ext
-from meshio import MeshDataWriterHDF5Ext as ModuleDataWriterHDF5Ext
-
-# DataWriterHDF5ExtMesh class
-class DataWriterHDF5ExtMesh(DataWriterHDF5Ext, ModuleDataWriterHDF5Ext):
-  """
-  Python object for writing finite-element data to HDF5Ext file.
-
-  Inventory
-
-  Factory: output_data_writer
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="datawriterhdf5mesh"):
-    """
-    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 DataWriterHDF5ExtMesh()
-
-
-# End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5Mesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5Mesh.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterHDF5Mesh.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -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/DataWriterHDF5Mesh.py
-##
-## @brief Python object for writing finite-element data to HDF5 file.
-
-from DataWriterHDF5 import DataWriterHDF5
-from meshio import MeshDataWriterHDF5 as ModuleDataWriterHDF5
-
-# DataWriterHDF5Mesh class
-class DataWriterHDF5Mesh(DataWriterHDF5, ModuleDataWriterHDF5):
-  """
-  Python object for writing finite-element data to HDF5 file.
-
-  Inventory
-
-  Factory: output_data_writer
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="datawriterhdf5mesh"):
-    """
-    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 DataWriterHDF5Mesh()
-
-
-# End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/DataWriterVTK.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterVTK.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterVTK.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -21,9 +21,10 @@
 ## @brief Python object for writing finite-element data to VTK file.
 
 from DataWriter import DataWriter
+from meshio import DataWriterVTK as ModuleDataWriterVTK
 
 # DataWriterVTK class
-class DataWriterVTK(DataWriter):
+class DataWriterVTK(DataWriter, ModuleDataWriterVTK):
   """
   Python object for writing finite-element data to VTK file.
 
@@ -66,9 +67,27 @@
     Constructor.
     """
     DataWriter.__init__(self, name)
+    ModuleDataWriterVTK.__init__(self)
     return
 
 
+  def initialize(self, normalizer):
+    """
+    Initialize writer.
+    """
+    DataWriter.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
+  
+
   # PRIVATE METHODS ////////////////////////////////////////////////////
 
   def _configure(self):
@@ -84,4 +103,14 @@
 
     return
 
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def data_writer():
+  """
+  Factory associated with DataWriter.
+  """
+  return DataWriterVTK()
+
+
 # End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKMesh.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKMesh.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -1,73 +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/DataWriterVTKMesh.py
-##
-## @brief Python object for writing finite-element data to VTK file.
-
-from DataWriterVTK import DataWriterVTK
-from meshio import MeshDataWriterVTK as ModuleDataWriterVTK
-
-# DataWriterVTKMesh class
-class DataWriterVTKMesh(DataWriterVTK, ModuleDataWriterVTK):
-  """
-  Python object for writing finite-element data to VTK file.
-
-  Inventory
-
-  Factory: output_data_writer
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="datawritervtkmesh"):
-    """
-    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 DataWriterVTKMesh()
-
-
-# End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKPoints.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKPoints.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKPoints.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -1,75 +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/DataWriterVTKPoints.py
-##
-## @brief Python object for writing finite-element solution at
-## arbitrary points to VTK file.
-
-from DataWriterVTK import DataWriterVTK
-from meshio import PointsDataWriterVTK as ModuleDataWriterVTK
-
-# DataWriterVTKPoints class
-class DataWriterVTKPoints(DataWriterVTK, ModuleDataWriterVTK):
-  """
-  Python object for writing finite-element data to VTK file.
-
-  Inventory
-
-  Factory: output_data_writer
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="datawritervtkpoints"):
-    """
-    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 DataWriterVTKPoints()
-
-
-# End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputDirichlet.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputDirichlet.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputDirichlet.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -23,10 +23,10 @@
 ##
 ## Factory: output_manager
 
-from OutputManagerMesh import OutputManagerMesh
+from OutputManager import OutputManager
 
 # OutputDirichlet class
-class OutputDirichlet(OutputManagerMesh):
+class OutputDirichlet(OutputManager):
   """
   Python object for managing output of finite-element information for
   Dirichlet boundary conditions.
@@ -36,7 +36,7 @@
 
   # INVENTORY //////////////////////////////////////////////////////////
 
-  class Inventory(OutputManagerMesh.Inventory):
+  class Inventory(OutputManager.Inventory):
     """
     Python object for managing OutputDirichlet facilities and properties.
     """
@@ -63,7 +63,7 @@
     """
     Constructor.
     """
-    OutputManagerMesh.__init__(self, name)
+    OutputManager.__init__(self, name)
     return
 
     
@@ -73,7 +73,7 @@
     """
     Set members based using inventory.
     """
-    OutputManagerMesh._configure(self)
+    OutputManager._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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputFaultDyn.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -23,10 +23,10 @@
 ##
 ## Factory: output_manager
 
-from OutputManagerMesh import OutputManagerMesh
+from OutputManager import OutputManager
 
 # OutputFaultDyn class
-class OutputFaultDyn(OutputManagerMesh):
+class OutputFaultDyn(OutputManager):
   """
   Python object for managing output of finite-element information for
   faults with dynamic ruptures.
@@ -69,7 +69,7 @@
     """
     Constructor.
     """
-    OutputManagerMesh.__init__(self, name)
+    OutputManager.__init__(self, name)
     return
 
     
@@ -79,7 +79,7 @@
     """
     Set members based using inventory.
     """
-    OutputManagerMesh._configure(self)
+    OutputManager._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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputFaultImpulses.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -23,10 +23,10 @@
 ##
 ## Factory: output_manager
 
-from OutputManagerMesh import OutputManagerMesh
+from OutputManager import OutputManager
 
 # OutputFaultImpulses class
-class OutputFaultImpulses(OutputManagerMesh):
+class OutputFaultImpulses(OutputManager):
   """
   Python object for managing output of finite-element information for
   faults with Green's function slip impulses.
@@ -70,7 +70,7 @@
     """
     Constructor.
     """
-    OutputManagerMesh.__init__(self, name)
+    OutputManager.__init__(self, name)
     return
 
     
@@ -80,7 +80,7 @@
     """
     Set members based using inventory.
     """
-    OutputManagerMesh._configure(self)
+    OutputManager._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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputFaultKin.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -23,10 +23,10 @@
 ##
 ## Factory: output_manager
 
-from OutputManagerMesh import OutputManagerMesh
+from OutputManager import OutputManager
 
 # OutputFaultKin class
-class OutputFaultKin(OutputManagerMesh):
+class OutputFaultKin(OutputManager):
   """
   Python object for managing output of finite-element information for
   faults with kinematic ruptures.
@@ -71,7 +71,7 @@
     """
     Constructor.
     """
-    OutputManagerMesh.__init__(self, name)
+    OutputManager.__init__(self, name)
     return
 
     
@@ -81,7 +81,7 @@
     """
     Set members based using inventory.
     """
-    OutputManagerMesh._configure(self)
+    OutputManager._configure(self)
     self.vertexInfoFields = self.inventory.vertexInfoFields
     self.vertexDataFields = self.inventory.vertexDataFields
     self.cellInfoFields   = self.inventory.cellInfoFields

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputManager.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputManager.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputManager.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -25,9 +25,10 @@
 
 from pylith.utils.PetscComponent import PetscComponent
 from pylith.utils.NullComponent import NullComponent
+from meshio import OutputManager as ModuleOutputManager
 
 # OutputManager class
-class OutputManager(PetscComponent):
+class OutputManager(PetscComponent, ModuleOutputManager):
   """
   Python abstract base class for managing output of finite-element
   information.
@@ -49,6 +50,10 @@
 
   import pyre.inventory
 
+  from DataWriterVTK import DataWriterVTK
+  writer = pyre.inventory.facility("writer", factory=DataWriterVTK, family="data_writer")
+  writer.meta['tip'] = "Writer for data."
+
   outputFreq = pyre.inventory.str("output_freq", default="skip",
                                   validator=pyre.inventory.choice(["skip", "time_step"]))
   outputFreq.meta['tip'] = "Flag indicating whether to use 'time_step' " \
@@ -263,6 +268,14 @@
     Set members based using inventory.
     """
     PetscComponent._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)
+
     self.perfLogger = self.inventory.perfLogger
     return
 
@@ -271,8 +284,7 @@
     """
     Create handle to C++ object.
     """
-    raise NotImplementedError, \
-        "Please implement _createModuleObj() in derived class."
+    ModuleOutputManager.__init__(self)
     return
   
 
@@ -398,28 +410,70 @@
     return
   
 
-  def _open(self):
-    raise NotImplementedError("Implement _open() in derived class.")
+  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):
-    raise NotImplementedError("Implement _openTimeStep() in derived class.")
+    """
+    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):
-    raise NotImplementedError("Implement _appendVertexField() in derived class.")
+    """
+    Call C++ appendVertexField();
+    """
+    ModuleOutputManager.appendVertexField(self, t, field, mesh)
+    return
 
 
   def _appendCellField(self, t, field, label, labelId):
-    raise NotImplementedError("Implement _appendCellField() in derived class.")
+    """
+    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):
-    raise NotImplementedError("Implement _closeTimeStep() in derived class.")
+    """
+    Call C++ closeTimeStep().
+    """
+    ModuleOutputManager.closeTimeStep(self)
+    return
 
 
   def _close(self):
-    raise NotImplementedError("Implement _close() in derived class.")
+    """
+    Call C++ close().
+    """
+    ModuleOutputManager.close(self)
+    return
 
 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def output_manager():
+  """
+  Factory associated with OutputManager.
+  """
+  return OutputManager()
+
+
 # End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/OutputManagerMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputManagerMesh.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputManagerMesh.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -1,156 +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/OutputManagerMesh.py
-##
-## @brief Python abstract base class for managing output of
-## finite-element information.
-##
-## Factory: output_manager
-
-from OutputManager import OutputManager
-from meshio import MeshOutputManager as ModuleOutputManager
-
-# OutputManagerMesh class
-class OutputManagerMesh(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 DataWriterVTKMesh import DataWriterVTKMesh
-  writer = pyre.inventory.facility("writer", factory=DataWriterVTKMesh,
-                                   family="data_writer")
-  writer.meta['tip'] = "Writer for data."
-
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="outputmanagermesh"):
-    """
-    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 OutputManagerMesh()
-
-
-# End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputMatElastic.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputMatElastic.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputMatElastic.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -23,10 +23,10 @@
 ##
 ## Factory: output_manager
 
-from OutputManagerMesh import OutputManagerMesh
+from OutputManager import OutputManager
 
 # OutputMatElastic class
-class OutputMatElastic(OutputManagerMesh):
+class OutputMatElastic(OutputManager):
   """
   Python object for managing output of finite-element information for
   material state variables.
@@ -36,7 +36,7 @@
 
   # INVENTORY //////////////////////////////////////////////////////////
 
-  class Inventory(OutputManagerMesh.Inventory):
+  class Inventory(OutputManager.Inventory):
     """
     Python object for managing OutputMatElastic facilities and properties.
     """
@@ -70,7 +70,7 @@
     """
     Constructor.
     """
-    OutputManagerMesh.__init__(self, name)
+    OutputManager.__init__(self, name)
     return
 
     
@@ -80,7 +80,7 @@
     """
     Set members based using inventory.
     """
-    OutputManagerMesh._configure(self)
+    OutputManager._configure(self)
     self.vertexInfoFields = []
     self.vertexDataFields = []
     self.cellInfoFields = self.inventory.cellInfoFields

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

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputSoln.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputSoln.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputSoln.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -23,10 +23,10 @@
 ##
 ## Factory: output_manager
 
-from OutputManagerMesh import OutputManagerMesh
+from OutputManager import OutputManager
 
 # OutputSoln class
-class OutputSoln(OutputManagerMesh):
+class OutputSoln(OutputManager):
   """
   Python object for managing output of finite-element solution
   information.
@@ -61,7 +61,7 @@
     """
     Constructor.
     """
-    OutputManagerMesh.__init__(self, name)
+    OutputManager.__init__(self, name)
     self.availableFields = \
         {'vertex': \
            {'info': [],
@@ -76,7 +76,7 @@
     """
     Do
     """
-    OutputManagerMesh.preinitialize(self, dataProvider=self)
+    OutputManager.preinitialize(self, dataProvider=self)
     return
   
 
@@ -89,7 +89,7 @@
 
     import weakref
     self.mesh = weakref.ref(mesh)
-    OutputManagerMesh.initialize(self, normalizer)
+    OutputManager.initialize(self, normalizer)
 
     self._eventLogger.eventEnd(logEvent)
     return
@@ -122,7 +122,7 @@
     """
     Set members based using inventory.
     """
-    OutputManagerMesh._configure(self)
+    OutputManager._configure(self)
     self.vertexDataFields = self.inventory.vertexDataFields
     self.cellInfoFields = self.inventory.cellInfoFields
     return

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputSolnPoints.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputSolnPoints.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputSolnPoints.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -50,7 +50,6 @@
   
   \b Facilities
   @li \b reader Reader for list of points.
-  @li \b writer Writer for data.
 
   Factory: output_manager
   """
@@ -67,12 +66,7 @@
   reader = pyre.inventory.facility("reader", factory=PointsList, family="points_list")
   reader.meta['tip'] = "Reader for points list."
 
-  from DataWriterVTKPoints import DataWriterVTKPoints
-  writer = pyre.inventory.facility("writer", factory=DataWriterVTKPoints,
-                                 family="data_writer")
-  writer.meta['tip'] = "Writer for data."
 
-
   # PUBLIC METHODS /////////////////////////////////////////////////////
 
   def __init__(self, name="outputsolnpoints"):
@@ -151,12 +145,6 @@
     """
     try:
       OutputManager._configure(self)
-      ModuleOutputSolnPoints.writer(self, self.inventory.writer)
-      from pylith.utils.NullComponent import NullComponent
-      if not isinstance(self.inventory.vertexFilter, NullComponent):
-        ModuleOutputSolnPoints.vertexFilter(self, self.inventory.vertexFilter)
-      if not isinstance(self.inventory.cellFilter, NullComponent):
-        ModuleOutputSolnPoints.cellFilter(self, self.inventory.cellFilter)
     except ValueError, err:
       aliases = ", ".join(self.aliases)
       raise ValueError("Error while configuring output over points "
@@ -173,59 +161,6 @@
     return
 
 
-  def _open(self, mesh, nsteps, label, labelId):
-    """
-    Call C++ open();
-    """
-    if label != None and labelId != None:
-      ModuleOutputSolnPoints.open(self, mesh, nsteps, label, labelId)
-    else:
-      ModuleOutputSolnPoints.open(self, mesh, nsteps)
-    return
-
-
-  def _openTimeStep(self, t, mesh, label, labelId):
-    """
-    Call C++ openTimeStep();
-    """
-    if label != None and labelId != None:
-      ModuleOutputSolnPoints.openTimeStep(self, t, mesh, label, labelId)
-    else:
-      ModuleOutputSolnPoints.openTimeStep(self, t, mesh)
-    return
-
-
-  def _appendVertexField(self, t, field, mesh):
-    """
-    Call C++ appendVertexField();
-    """
-    ModuleOutputSolnPoints.appendVertexField(self, t, field, mesh)
-    return
-
-  def _appendCellField(self, t, field):
-    """
-    Call C++ appendCellField();
-    """
-    raise NotImplementedError("Output of cell field not implemented for arbitrary points.")
-    return
-
-
-  def _closeTimeStep(self):
-    """
-    Call C++ closeTimeStep().
-    """
-    ModuleOutputSolnPoints.closeTimeStep(self)
-    return
-
-
-  def _close(self):
-    """
-    Call C++ close().
-    """
-    ModuleOutputSolnPoints.close(self)
-    return
-
-
 # FACTORIES ////////////////////////////////////////////////////////////
 
 def output_manager():

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -66,12 +66,6 @@
   label = pyre.inventory.str("label", default="", validator=validateLabel)
   label.meta['tip'] = "Label identifier for subdomain."
 
-  from DataWriterVTKMesh import DataWriterVTKMesh
-  writer = pyre.inventory.facility("writer", factory=DataWriterVTKMesh,
-                                 family="data_writer")
-  writer.meta['tip'] = "Writer for data."
-
-
   # PUBLIC METHODS /////////////////////////////////////////////////////
 
   def __init__(self, name="outputsolnsubset"):
@@ -151,13 +145,6 @@
     try:
       OutputManager._configure(self)
       ModuleOutputSolnSubset.label(self, self.label)
-      ModuleOutputSolnSubset.coordsys(self, self.inventory.coordsys)
-      ModuleOutputSolnSubset.writer(self, self.inventory.writer)
-      from pylith.utils.NullComponent import NullComponent
-      if not isinstance(self.inventory.vertexFilter, NullComponent):
-        ModuleOutputSolnSubset.vertexFilter(self, self.inventory.vertexFilter)
-      if not isinstance(self.inventory.cellFilter, NullComponent):
-        ModuleOutputSolnSubset.cellFilter(self, self.inventory.cellFilter)
     except ValueError, err:
       aliases = ", ".join(self.aliases)
       raise ValueError("Error while configuring output over boundary "
@@ -174,59 +161,6 @@
     return
 
 
-  def _open(self, mesh, nsteps, label, labelId):
-    """
-    Call C++ open();
-    """
-    if label != None and labelId != None:
-      ModuleOutputSolnSubset.open(self, mesh, nsteps, label, labelId)
-    else:
-      ModuleOutputSolnSubset.open(self, mesh, nsteps)
-    return
-
-
-  def _openTimeStep(self, t, mesh, label, labelId):
-    """
-    Call C++ openTimeStep();
-    """
-    if label != None and labelId != None:
-      ModuleOutputSolnSubset.openTimeStep(self, t, mesh, label, labelId)
-    else:
-      ModuleOutputSolnSubset.openTimeStep(self, t, mesh)
-    return
-
-
-  def _appendVertexField(self, t, field, mesh):
-    """
-    Call C++ appendVertexField();
-    """
-    ModuleOutputSolnSubset.appendVertexField(self, t, field, mesh)
-    return
-
-  def _appendCellField(self, t, field):
-    """
-    Call C++ appendCellField();
-    """
-    ModuleOutputSolnSubset.appendCellField(self, t, field)
-    return
-
-
-  def _closeTimeStep(self):
-    """
-    Call C++ closeTimeStep().
-    """
-    ModuleOutputSolnSubset.closeTimeStep(self)
-    return
-
-
-  def _close(self):
-    """
-    Call C++ close().
-    """
-    ModuleOutputSolnSubset.close(self)
-    return
-
-
 # FACTORIES ////////////////////////////////////////////////////////////
 
 def output_manager():

Copied: short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNorm.py (from rev 22060, short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNormMesh.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNorm.py	                        (rev 0)
+++ short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNorm.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -0,0 +1,59 @@
+#!/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/VertexFilterVecNormMesh.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 VertexFilterVecNorm as ModuleVertexFilterVecNorm
+
+# VertexFilterVecNorm class
+class VertexFilterVecNorm(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="vertexfiltervecnor"):
+    """
+    Constructor.
+    """
+    VertexFilter.__init__(self, name)
+    ModuleVertexFilterVecNorm.__init__(self)
+    self.filter = True
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def output_vertex_filter():
+  """
+  Factory associated with VertexFilter.
+  """
+  return VertexFilterVecNorm()
+
+
+# End of file 

Deleted: short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNormMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNormMesh.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/VertexFilterVecNormMesh.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -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/VertexFilterVecNormMesh.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 MeshVertexFilterVecNorm as ModuleVertexFilterVecNorm
-
-# VertexFilterVecNormMesh class
-class VertexFilterVecNormMesh(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="vertexfiltervecnormmesh"):
-    """
-    Constructor.
-    """
-    VertexFilter.__init__(self, name)
-    ModuleVertexFilterVecNorm.__init__(self)
-    self.filter = True
-    return
-
-
-# FACTORIES ////////////////////////////////////////////////////////////
-
-def output_vertex_filter():
-  """
-  Factory associated with VertexFilter.
-  """
-  return VertexFilterVecNormMesh()
-
-
-# End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/__init__.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/meshio/__init__.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -21,11 +21,9 @@
 ## @brief Python PyLith meshio module initialization
 
 __all__ = ['CellFilter',
-           'CellFilterAvgMesh',
+           'CellFilterAvg',
            'DataWriter',
            'DataWriterVTK',
-           'DataWriterVTKMesh',
-           'DataWriterVTKPoints',
            'MeshIOObj',
            'MeshIOAscii',
            'MeshIOCubit',
@@ -33,7 +31,6 @@
            'OutputDirichlet',
            'OutputFaultKin',
            'OutputManager',
-           'OutputManagerMesh',
            'OutputMatElastic',
            'OutputNeumann'
            'OutputSoln',
@@ -42,7 +39,7 @@
            'PointsList',
            'SingleOutput',
            'VertexFilter',
-           'VertexFilterVecNormMesh',
+           'VertexFilterVecNorm',
            ]
 
 

Modified: short/3D/PyLith/trunk/pylith/problems/Explicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Explicit.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/problems/Explicit.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -130,7 +130,7 @@
     dispT.zero()
     residual = self.fields.get("residual")
     residual.zero()
-    residual.createScatterMesh(residual.mesh())
+    residual.createScatter(residual.mesh())
 
     lengthScale = normalizer.lengthScale()
     timeScale = normalizer.timeScale()
@@ -149,8 +149,8 @@
 
     if 0 == comm.rank:
       self._info.log("Creating lumped Jacobian matrix.")
-    from pylith.topology.topology import MeshField
-    jacobian = MeshField(self.mesh())
+    from pylith.topology.topology import Field
+    jacobian = Field(self.mesh())
     jacobian.newSection(jacobian.VERTICES_FIELD, dimension)
     jacobian.allocate()
     jacobian.label("jacobian")

Modified: short/3D/PyLith/trunk/pylith/problems/Formulation.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Formulation.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/problems/Formulation.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -566,7 +566,7 @@
     #memoryLogger.stagePop()
 
     # This also creates a global order.
-    solution.createScatterMesh(solution.mesh())
+    solution.createScatter(solution.mesh())
 
     #memoryLogger.stagePush("Problem")
     dispT = self.fields.get("disp(t)")

Modified: short/3D/PyLith/trunk/pylith/problems/Implicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Implicit.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/problems/Implicit.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -142,7 +142,7 @@
     dispT.zero()
     residual = self.fields.get("residual")
     residual.zero()
-    residual.createScatterMesh(residual.mesh())
+    residual.createScatter(residual.mesh())
 
     lengthScale = normalizer.lengthScale()
     timeScale = normalizer.timeScale()

Modified: short/3D/PyLith/trunk/pylith/topology/Distributor.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/Distributor.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/topology/Distributor.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -54,8 +54,8 @@
   writePartition = pyre.inventory.bool("write_partition", default=False)
   writePartition.meta['tip'] = "Write partition information to file."
   
-  from pylith.meshio.DataWriterVTKMesh import DataWriterVTKMesh
-  dataWriter = pyre.inventory.facility("data_writer", factory=DataWriterVTKMesh,
+  from pylith.meshio.DataWriterVTK import DataWriterVTK
+  dataWriter = pyre.inventory.facility("data_writer", factory=DataWriterVTK,
                                        family="data_writer")
   dataWriter.meta['tip'] = "Data writer for partition information."
 

Modified: short/3D/PyLith/trunk/pylith/topology/Field.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/Field.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/topology/Field.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -21,11 +21,11 @@
 ## @brief Python object for managing a vector field over vertices or
 ## cells of a finite-element mesh.
 
-from topology import MeshField as ModuleMeshField
+from topology import Field as ModuleField
 
 # ----------------------------------------------------------------------
-# MeshField class
-class MeshField(ModuleMeshField):
+# Field class
+class Field(ModuleField):
   """
   Python object for managing a vector field over vertices or cells of
   a finite-element mesh.
@@ -37,7 +37,7 @@
     """
     Constructor.
     """
-    ModuleMeshField.__init__(self, mesh)
+    ModuleField.__init__(self, mesh)
     return
 
 

Modified: short/3D/PyLith/trunk/pylith/topology/Fields.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/Fields.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/pylith/topology/Fields.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -21,11 +21,11 @@
 ## @brief Python object for managing vector fields over vertices or
 ## cells of a finite-element mesh.
 
-from topology import MeshFields as ModuleMeshFields
+from topology import Fields as ModuleFields
 
 # ----------------------------------------------------------------------
-# MeshFields class
-class MeshFields(ModuleMeshFields):
+# Fields class
+class Fields(ModuleFields):
   """
   Python object for managing vector fields over vertices or cells of a
   finite-element mesh.
@@ -37,7 +37,7 @@
     """
     Constructor.
     """
-    ModuleMeshFields.__init__(self, mesh)
+    ModuleFields.__init__(self, mesh)
     return
     
 

Modified: short/3D/PyLith/trunk/tests_auto/1d/line2/dislocation.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/1d/line2/dislocation.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/1d/line2/dislocation.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -101,14 +101,14 @@
 # output
 # ----------------------------------------------------------------------
 [dislocation.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = dislocation.h5
 
 [dislocation.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = dislocation-elastic.h5
 
 [dislocation.timedependent.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = dislocation-fault.h5

Modified: short/3D/PyLith/trunk/tests_auto/1d/line2/extensiondisp.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/1d/line2/extensiondisp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/1d/line2/extensiondisp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -91,10 +91,10 @@
 # output
 # ----------------------------------------------------------------------
 [extensiondisp.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = extensiondisp.h5
 
 [extensiondisp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = extensiondisp-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/1d/line2/extensiondisp_np2.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/1d/line2/extensiondisp_np2.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/1d/line2/extensiondisp_np2.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -90,10 +90,10 @@
 # output
 # ----------------------------------------------------------------------
 [extensiondisp_np2.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = extensiondisp_np2.h5
 
 [extensiondisp_np2.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = extensiondisp_np2-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/1d/line2/extensionforce.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/1d/line2/extensionforce.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/1d/line2/extensionforce.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -95,10 +95,10 @@
 # output
 # ----------------------------------------------------------------------
 [extensionforce.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = extensionforce.h5
 
 [extensionforce.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = extensionforce-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/1d/line2/lgdeformtranslation.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/1d/line2/lgdeformtranslation.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/1d/line2/lgdeformtranslation.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -91,5 +91,5 @@
 filename = lgdeformtranslation.vtk
 
 [pylithapp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = lgdeformtranslation-elastic.vtk

Modified: short/3D/PyLith/trunk/tests_auto/1d/line3/axialextension.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/1d/line3/axialextension.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/1d/line3/axialextension.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -88,10 +88,10 @@
 # output
 # ----------------------------------------------------------------------
 [axialextension.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = axialextension.h5
 
 [axialextension.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = axialextension-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/1d/line3/dislocation.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/1d/line3/dislocation.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/1d/line3/dislocation.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -99,14 +99,14 @@
 # output
 # ----------------------------------------------------------------------
 [dislocation.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = dislocation.h5
 
 [dislocation.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = dislocation-elastic.h5
 
 [dislocation.timedependent.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = dislocation-fault.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/axialdisp.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/axialdisp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/axialdisp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -99,10 +99,10 @@
 # output
 # ----------------------------------------------------------------------
 [axialdisp.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = axialdisp.h5
 
 [axialdisp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = axialdisp-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/dislocation.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/dislocation.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/dislocation.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -120,14 +120,14 @@
 # output
 # ----------------------------------------------------------------------
 [dislocation.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = dislocation.h5
 
 [dislocation.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = dislocation-elastic.h5
 
 [dislocation.timedependent.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = dislocation-fault.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/dislocation2.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/dislocation2.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/dislocation2.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -141,7 +141,7 @@
 filename = dislocation2.vtk
 
 [pylithapp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = dislocation2-elastic.vtk
 
 [pylithapp.timedependent.interfaces.fault1.output.writer]

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/fourcells_twofaults.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/fourcells_twofaults.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/fourcells_twofaults.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -135,7 +135,7 @@
 filename = fourcells_twofaults.vtk
 
 [pylithapp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = fourcells_twofaults-elastic.vtk
 
 [pylithapp.timedependent.interfaces.fault1.output.writer]

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_compression.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_compression.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_compression.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -156,15 +156,15 @@
 # output
 # ----------------------------------------------------------------------
 [friction_compression.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_compression.h5
 
 [friction_compression.timedependent.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_compression-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,friction_coefficient,cohesion]
 
 [friction_compression.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_compression-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_opening.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_opening.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_opening.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -159,15 +159,15 @@
 # output
 # ----------------------------------------------------------------------
 [friction_opening.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_opening.h5
 
 [friction_opening.timedependent.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_opening-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,friction_coefficient,cohesion]
 
 [friction_opening.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_opening-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_shear_sliding.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_shear_sliding.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_shear_sliding.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -176,15 +176,15 @@
 # output
 # ----------------------------------------------------------------------
 [friction_shear_sliding.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_shear_sliding.h5
 
 [friction_shear_sliding.timedependent.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_shear_sliding-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,friction_coefficient,cohesion]
 
 [friction_shear_sliding.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_shear_sliding-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_shear_stick.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_shear_stick.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/friction_shear_stick.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -182,15 +182,15 @@
 # output
 # ----------------------------------------------------------------------
 [friction_shear_stick.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_shear_stick.h5
 
 [friction_shear_stick.timedependent.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_shear_stick-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,friction_coefficient,cohesion]
 
 [friction_shear_stick.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = friction_shear_stick-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/lgdeformrigidbody.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/lgdeformrigidbody.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/lgdeformrigidbody.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -108,10 +108,10 @@
 # output
 # ----------------------------------------------------------------------
 [lgdeformrigidbody.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = lgdeformrigidbody.h5
 
 [lgdeformrigidbody.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = lgdeformrigidbody-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/lgdeformtraction.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/lgdeformtraction.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/lgdeformtraction.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -118,10 +118,10 @@
 # output
 # ----------------------------------------------------------------------
 [lgdeformtraction.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = lgdeformtraction.h5
 
 [lgdeformtraction.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = lgdeformtraction-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/sheardisp.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/sheardisp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/sheardisp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -108,10 +108,10 @@
 # output
 # ----------------------------------------------------------------------
 [sheardisp.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = sheardisp.h5
 
 [sheardisp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = sheardisp-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_compression.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_compression.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_compression.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -156,17 +156,17 @@
 # output
 # ----------------------------------------------------------------------
 [slipweakening_compression.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_compression.h5
 
 [slipweakening_compression.timedependent.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_compression-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,static_coefficient,dynamic_coefficient,slip_weakening_parameter,cohesion]
 vertex_data_fields = [slip,traction,cumulative_slip,previous_slip]
 
 [slipweakening_compression.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_compression-elastic.h5
 

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_opening.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_opening.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_opening.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -148,16 +148,16 @@
 # output
 # ----------------------------------------------------------------------
 [slipweakening_opening.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_opening.h5
 
 [slipweakening_opening.timedependent.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_opening-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,static_coefficient,dynamic_coefficient,slip_weakening_parameter,cohesion]
 vertex_data_fields = [slip,traction,cumulative_slip,previous_slip]
 
 [slipweakening_opening.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_opening-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_sliding.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -169,16 +169,16 @@
 # output
 # ----------------------------------------------------------------------
 [slipweakening_shear_sliding.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_shear_sliding.h5
 
 [slipweakening_shear_sliding.timedependent.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_shear_sliding-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,static_coefficient,dynamic_coefficient,slip_weakening_parameter,cohesion]
 vertex_data_fields = [slip,traction,cumulative_slip,previous_slip]
 
 [slipweakening_shear_sliding.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_shear_sliding-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_stick.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_stick.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/quad4/slipweakening_shear_stick.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -184,16 +184,16 @@
 # output
 # ----------------------------------------------------------------------
 [slipweakening_shear_stick.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_shear_stick.h5
 
 [slipweakening_shear_stick.timedependent.interfaces.fault.output]
-writer = pylith.meshio.DataWriterHDF5SubSubMesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_shear_stick-fault.h5
 vertex_info_fields = [strike_dir,normal_dir,traction_initial_value,static_coefficient,dynamic_coefficient,slip_weakening_parameter,cohesion]
 vertex_data_fields = [slip,traction,cumulative_slip,previous_slip]
 
 [slipweakening_shear_stick.timedependent.materials.material.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = slipweakening_shear_stick-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/tri3/axialdisp.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/tri3/axialdisp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/tri3/axialdisp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -102,10 +102,10 @@
 # output
 # ----------------------------------------------------------------------
 [axialdisp.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = axialdisp.h5
 
 [axialdisp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = axialdisp-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/tri3/sheardisp.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/tri3/sheardisp.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/tri3/sheardisp.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -109,10 +109,10 @@
 # output
 # ----------------------------------------------------------------------
 [sheardisp.problem.formulation.output.output]
-writer = pylith.meshio.DataWriterHDF5Mesh
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = sheardisp.h5
 
 [sheardisp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
-writer = pylith.meshio.DataWriterHDF5Mesh
+cell_filter = pylith.meshio.CellFilterAvg
+writer = pylith.meshio.DataWriterHDF5
 writer.filename = sheardisp-elastic.h5

Modified: short/3D/PyLith/trunk/tests_auto/2d/tri3/sheardisp_refine.cfg
===================================================================
--- short/3D/PyLith/trunk/tests_auto/2d/tri3/sheardisp_refine.cfg	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/tests_auto/2d/tri3/sheardisp_refine.cfg	2013-05-14 19:55:48 UTC (rev 22061)
@@ -119,5 +119,5 @@
 filename = sheardisp.vtk
 
 [pylithapp.timedependent.materials.elastic.output]
-cell_filter = pylith.meshio.CellFilterAvgMesh
+cell_filter = pylith.meshio.CellFilterAvg
 writer.filename = sheardisp-elastic.vtk

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -37,6 +37,7 @@
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestAbsorbingDampers );
@@ -195,7 +196,7 @@
   PetscDM             subMesh = boundaryMesh.dmMesh();
   PetscErrorCode err;
 
-  topology::Field<topology::Mesh>& residual = fields.get("residual");
+  topology::Field& residual = fields.get("residual");
   const PylithScalar t = 0.0;
   bc.integrateResidual(residual, t, &fields);
 
@@ -251,7 +252,7 @@
   const topology::Mesh& boundaryMesh = *bc._boundaryMesh;
   PetscDM subMesh = boundaryMesh.dmMesh();CPPUNIT_ASSERT(subMesh);
 
-  topology::Field<topology::Mesh>& solution = fields.solution();
+  topology::Field& solution = fields.solution();
   topology::Jacobian jacobian(solution);
 
   const PylithScalar t = 1.0;
@@ -326,7 +327,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &bc, &fields);
 
-  topology::Field<topology::Mesh> jacobian(mesh);
+  topology::Field jacobian(mesh);
   jacobian.label("Jacobian");
   jacobian.vectorFieldType(topology::FieldBase::VECTOR);
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
@@ -458,9 +459,9 @@
   fields->add("velocity(t)", "velocity");
   fields->solutionName("dispIncr(t->t+dt)");
 
-  topology::Field<topology::Mesh>& residual = fields->get("residual");
-  PetscDM             dmMesh = mesh->dmMesh();
-  PetscInt       vStart, vEnd;
+  topology::Field& residual = fields->get("residual");
+  PetscDM dmMesh = mesh->dmMesh();CPPUNIT_ASSERT(dmMesh);
+  PetscInt vStart, vEnd;
   PetscErrorCode err;
 
   CPPUNIT_ASSERT(dmMesh);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestBoundaryMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestBoundaryMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestBoundaryMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -31,6 +31,7 @@
 #include "pylith/faults/FaultCohesiveKin.hh" // USES FaultsCohesiveKin
 
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 // ----------------------------------------------------------------------
 // Setup testing data.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBC.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBC.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBC.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -36,6 +36,7 @@
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
 #include "spatialdata/spatialdb/UniformDB.hh" // USES UniformDB
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletBC );
@@ -172,7 +173,7 @@
 
   const int fiberDim = _data->numDOF;
   const int spaceDim = mesh.dimension();
-  topology::Field<topology::Mesh> field(mesh);
+  topology::Field field(mesh);
   field.addField("bc", spaceDim);
   field.setupFields();
   field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -235,7 +236,7 @@
 
   const int spaceDim = mesh.dimension();
   const int fiberDim = _data->numDOF;
-  topology::Field<topology::Mesh> field(mesh);
+  topology::Field field(mesh);
   field.addField("bc", spaceDim);
   field.setupFields();
   field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -302,7 +303,7 @@
   _initialize(&mesh, &bc);
 
   const int fiberDim = _data->numDOF;
-  topology::Field<topology::Mesh> field(mesh);
+  topology::Field field(mesh);
   field.addField("bc", fiberDim);
   field.setupFields();
   field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -410,7 +411,7 @@
   _initialize(&mesh, &bc);
 
   const int fiberDim = _data->numDOF;
-  topology::Field<topology::Mesh> field(mesh);
+  topology::Field field(mesh);
   field.addField("bc", fiberDim);
   field.setupFields();
   field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBCMulti.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBCMulti.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBCMulti.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -34,6 +34,7 @@
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 // ----------------------------------------------------------------------
 // Setup testing data.
@@ -75,7 +76,7 @@
   _initialize(&mesh, &bcA, &bcB, &bcC);
 
   const int fiberDim = _data->numDOF;
-  topology::Field<topology::Mesh> field(mesh);
+  topology::Field field(mesh);
   field.addField("bc", fiberDim);
   field.setupFields();
   field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -126,7 +127,7 @@
   _initialize(&mesh, &bcA, &bcB, &bcC);
 
   const int fiberDim = _data->numDOF;
-  topology::Field<topology::Mesh> field(mesh);
+  topology::Field field(mesh);
   field.addField("bc", fiberDim);
   field.setupFields();
   field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -190,7 +191,7 @@
   _initialize(&mesh, &bcA, &bcB, &bcC);
 
   const int fiberDim = _data->numDOF;
-  topology::Field<topology::Mesh> field(mesh);
+  topology::Field field(mesh);
   field.addField("bc", fiberDim);
   field.setupFields();
   field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -270,7 +271,7 @@
   _initialize(&mesh, &bcA, &bcB, &bcC);
 
   const int fiberDim = _data->numDOF;
-  topology::Field<topology::Mesh> field(mesh);
+  topology::Field field(mesh);
   field.addField("bc", fiberDim);
   field.setupFields();
   field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -37,6 +37,7 @@
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
 #include "spatialdata/spatialdb/TimeHistory.hh" // USES TimeHistory
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 #include "data/NeumannDataQuad4.hh" // USES NeumannDataQuad4
 #include "pylith/feassemble/GeometryLine2D.hh" // USES GeometryLine2D
@@ -93,7 +94,7 @@
       static
       void _checkValues(const PylithScalar* valuesE,
 			const int fiberDimE,
-			const topology::Field<topology::Mesh>& field);
+			const topology::Field& field);
     } // _TestNeumann
   } // bc
 } // pylith
@@ -245,7 +246,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &bc, &fields);
 
-  topology::Field<topology::Mesh>& residual = fields.get("residual");
+  topology::Field& residual = fields.get("residual");
   const PylithScalar t = 0.0;
   bc.integrateResidual(residual, t, &fields);
 
@@ -335,23 +336,23 @@
   // bc._parameters->view("PARAMETERS"); // DEBUGGING
 
   // Check initial values.
-  const topology::Field<topology::Mesh>& initial = bc._parameters->get("initial");
+  const topology::Field& initial = bc._parameters->get("initial");
   _TestNeumann::_checkValues(_TestNeumann::initial, numQuadPts*spaceDim, initial);
 
   // Check rate values.
-  const topology::Field<topology::Mesh>& rate = bc._parameters->get("rate");
+  const topology::Field& rate = bc._parameters->get("rate");
   _TestNeumann::_checkValues(_TestNeumann::rate, numQuadPts*spaceDim, rate);
 
   // Check rate start time.
-  const topology::Field<topology::Mesh>& rateTime = bc._parameters->get("rate time");
+  const topology::Field& rateTime = bc._parameters->get("rate time");
   _TestNeumann::_checkValues(_TestNeumann::rateTime, numQuadPts, rateTime);
 
   // Check change values.
-  const topology::Field<topology::Mesh>& change = bc._parameters->get("change");
+  const topology::Field& change = bc._parameters->get("change");
   _TestNeumann::_checkValues(_TestNeumann::change, numQuadPts*spaceDim, change);
 
   // Check change start time.
-  const topology::Field<topology::Mesh>& changeTime = bc._parameters->get("change time");
+  const topology::Field& changeTime = bc._parameters->get("change time");
   _TestNeumann::_checkValues(_TestNeumann::changeTime, numQuadPts, changeTime);
   th.close();
 
@@ -417,7 +418,7 @@
     valuesE[i+0] = _TestNeumann::initial[i+0]; // x
     valuesE[i+1] = -_TestNeumann::initial[i+1]; // y
   } // for
-  const topology::Field<topology::Mesh>& initial = bc._parameters->get("initial");
+  const topology::Field& initial = bc._parameters->get("initial");
   _TestNeumann::_checkValues(&valuesE[0], numQuadPts*spaceDim, initial);
 
   // Check rate values.
@@ -425,7 +426,7 @@
     valuesE[i+0] = _TestNeumann::rate[i+0]; // x
     valuesE[i+1] = -_TestNeumann::rate[i+1]; // y
   } // for
-  const topology::Field<topology::Mesh>& rate = bc._parameters->get("rate");
+  const topology::Field& rate = bc._parameters->get("rate");
   _TestNeumann::_checkValues(&valuesE[0], numQuadPts*spaceDim, rate);
 
   // Check change values.
@@ -433,7 +434,7 @@
     valuesE[i+0] = _TestNeumann::change[i+0]; // x
     valuesE[i+1] = -_TestNeumann::change[i+1]; // y
   } // for
-  const topology::Field<topology::Mesh>& change = bc._parameters->get("change");
+  const topology::Field& change = bc._parameters->get("change");
   _TestNeumann::_checkValues(&valuesE[0], numQuadPts*spaceDim, change);
 
   PYLITH_METHOD_END;
@@ -473,7 +474,7 @@
   CPPUNIT_ASSERT(bc._parameters);
   
   // Check values.
-  const topology::Field<topology::Mesh>& value = bc._parameters->get("value");
+  const topology::Field& value = bc._parameters->get("value");
   _TestNeumann::_checkValues(_TestNeumann::initial, numQuadPts*spaceDim, value);
 
   PYLITH_METHOD_END;
@@ -513,7 +514,7 @@
   CPPUNIT_ASSERT(bc._parameters);
   
   // Check values.
-  const topology::Field<topology::Mesh>& value = bc._parameters->get("value");
+  const topology::Field& value = bc._parameters->get("value");
   _TestNeumann::_checkValues(_TestNeumann::valuesRate, numQuadPts*spaceDim, value);
 
   PYLITH_METHOD_END;
@@ -553,7 +554,7 @@
   CPPUNIT_ASSERT(bc._parameters);
   
   // Check values.
-  const topology::Field<topology::Mesh>& value = bc._parameters->get("value");
+  const topology::Field& value = bc._parameters->get("value");
   _TestNeumann::_checkValues(_TestNeumann::valuesChange, numQuadPts*spaceDim, value);
 
   PYLITH_METHOD_END;
@@ -597,7 +598,7 @@
   CPPUNIT_ASSERT(bc._parameters);
   
   // Check values.
-  const topology::Field<topology::Mesh>& value = bc._parameters->get("value");
+  const topology::Field& value = bc._parameters->get("value");
   _TestNeumann::_checkValues(_TestNeumann::valuesChangeTH, numQuadPts*spaceDim, value);
 
   PYLITH_METHOD_END;
@@ -663,7 +664,7 @@
       _TestNeumann::valuesRate[i] +
       _TestNeumann::valuesChangeTH[i];
   
-  const topology::Field<topology::Mesh>& value = bc._parameters->get("value");
+  const topology::Field& value = bc._parameters->get("value");
   _TestNeumann::_checkValues(&valuesE[0], numQuadPts*spaceDim, value);
 
   PYLITH_METHOD_END;
@@ -749,7 +750,7 @@
   fields->add("disp(t), bc(t+dt)", "displacement");
   fields->solutionName("disp(t), bc(t+dt)");
 
-  topology::Field<topology::Mesh>& residual = fields->get("residual");
+  topology::Field& residual = fields->get("residual");
   residual.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
   residual.allocate();
   residual.scale(_data->lengthScale);
@@ -765,7 +766,7 @@
 void
 pylith::bc::_TestNeumann::_checkValues(const PylithScalar* valuesE,
 				       const int fiberDimE,
-				       const topology::Field<topology::Mesh>& field)
+				       const topology::Field& field)
 { // _checkValues
   PYLITH_METHOD_BEGIN;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestPointForce.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestPointForce.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestPointForce.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -37,6 +37,7 @@
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
 #include "spatialdata/spatialdb/UniformDB.hh" // USES UniformDB
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestPointForce );
@@ -176,7 +177,7 @@
   PointForce bc;
   _initialize(&mesh, &bc);
 
-  topology::Field<topology::Mesh> residual(mesh);
+  topology::Field residual(mesh);
   const spatialdata::geocoords::CoordSys* cs = mesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
   residual.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestTimeDependentPoints.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestTimeDependentPoints.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestTimeDependentPoints.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,6 +33,7 @@
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
 #include "spatialdata/spatialdb/TimeHistory.hh" // USES TimeHistory
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestTimeDependentPoints );
@@ -107,7 +108,7 @@
       static
       void _checkValues(const PylithScalar* valuesE,
 			const int fiberDimE,
-			const topology::Field<topology::Mesh>& field,
+			const topology::Field& field,
 			const PylithScalar scale);
     } // _TestTimeDependentPoints
   } // bc
@@ -695,7 +696,7 @@
 void
 pylith::bc::_TestTimeDependentPoints::_checkValues(const PylithScalar* valuesE,
 						   const int fiberDimE,
-						   const topology::Field<topology::Mesh>& field,
+						   const topology::Field& field,
 						   const PylithScalar scale)
 { // _checkValues
   PYLITH_METHOD_BEGIN;

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -264,7 +264,7 @@
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::Mesh> slip(faultMesh);
+  topology::Field slip(faultMesh);
   slip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slip.allocate();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -226,8 +226,8 @@
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::Mesh> slip(faultMesh);
-  slip.newSection(topology::Field<topology::Mesh>::VERTICES_FIELD, spaceDim);
+  topology::Field slip(faultMesh);
+  slip.newSection(topology::Field::VERTICES_FIELD, spaceDim);
   slip.allocate();
 
   const PylithScalar t = 1.234;

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -127,7 +127,7 @@
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::Mesh> slip(faultMesh);
+  topology::Field slip(faultMesh);
   slip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slip.allocate();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -39,6 +39,7 @@
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 #include <stdexcept> // USES runtime_error
 
@@ -237,8 +238,8 @@
   fault.timeStep(dt);
   fault.constrainSolnSpace(&fields, t, jacobian);
   
-  topology::Field<topology::Mesh>& solution = fields.solution();
-  const topology::Field<topology::Mesh>& dispIncrAdj = fields.get("dispIncr adjust");
+  topology::Field& solution = fields.solution();
+  const topology::Field& dispIncrAdj = fields.get("dispIncr adjust");
   solution += dispIncrAdj;
 
   fault.updateStateVars(t, &fields);
@@ -326,8 +327,8 @@
   fault.timeStep(dt);
   fault.constrainSolnSpace(&fields, t, jacobian);
 
-  topology::Field<topology::Mesh>& solution = fields.solution();
-  const topology::Field<topology::Mesh>& dispIncrAdj = fields.get("dispIncr adjust");
+  topology::Field& solution = fields.solution();
+  const topology::Field& dispIncrAdj = fields.get("dispIncr adjust");
   solution += dispIncrAdj;
 
   fault.updateStateVars(t, &fields);
@@ -416,8 +417,8 @@
   fault.timeStep(dt);
   fault.constrainSolnSpace(&fields, t, jacobian);
 
-  topology::Field<topology::Mesh>& solution = fields.solution();
-  const topology::Field<topology::Mesh>& dispIncrAdj = fields.get("dispIncr adjust");
+  topology::Field& solution = fields.solution();
+  const topology::Field& dispIncrAdj = fields.get("dispIncr adjust");
   solution += dispIncrAdj;
 
   fault.updateStateVars(t, &fields);
@@ -531,7 +532,7 @@
   _setFieldsJacobian(&mesh, &fault, &fields, &jacobian, _data->fieldIncrStick);
 
   const int spaceDim = _data->spaceDim;
-  topology::Field<topology::Mesh> tractions(*fault._faultMesh);
+  topology::Field tractions(*fault._faultMesh);
   tractions.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   tractions.allocate();
   tractions.zero();
@@ -698,7 +699,7 @@
   fields->solutionName("dispIncr(t->t+dt)");
   
   const int spaceDim = _data->spaceDim;
-  topology::Field<topology::Mesh>& disp = fields->get("disp(t)");
+  topology::Field& disp = fields->get("disp(t)");
   disp.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   disp.allocate();
   disp.scale(_data->lengthScale);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveImpulses.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -35,6 +35,7 @@
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 #include <stdexcept> // USES runtime_error
 
@@ -267,7 +268,7 @@
   const PylithScalar dt = 1.0;
   fault.timeStep(dt);
 
-  topology::Field<topology::Mesh>& residual = fields.get("residual");
+  topology::Field& residual = fields.get("residual");
   residual.zero();
   fault.integrateResidual(residual, t, &fields);
   //residual.view("RESIDUAL"); // DEBUGGING
@@ -376,7 +377,7 @@
   fields->solutionName("dispIncr(t->t+dt)");
   
   const int spaceDim = _data->spaceDim;
-  topology::Field<topology::Mesh>& disp = fields->get("disp(t)");
+  topology::Field& disp = fields->get("disp(t)");
   disp.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   disp.allocate();
   fields->copyLayout("disp(t)");

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -39,6 +39,7 @@
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 #include <stdexcept> // USES runtime_error
 
@@ -272,7 +273,7 @@
   const PylithScalar t = 2.134 / _data->timeScale;
   const PylithScalar dt = 0.01 / _data->timeScale;
   fault.timeStep(dt);
-  topology::Field<topology::Mesh>& residual = fields.get("residual");
+  topology::Field& residual = fields.get("residual");
   fault.integrateResidual(residual, t, &fields);
 
   //residual.view("RESIDUAL"); // DEBUGGING
@@ -402,7 +403,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &fault, &fields);
 
-  topology::Field<topology::Mesh> jacobian(mesh);
+  topology::Field jacobian(mesh);
   jacobian.label("Jacobian");
   jacobian.vectorFieldType(topology::FieldBase::VECTOR);
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
@@ -503,7 +504,7 @@
   const PylithScalar t = 2.134 / _data->timeScale;
   const PylithScalar dt = 0.01 / _data->timeScale;
   fault.timeStep(dt);
-  topology::Field<topology::Mesh>& residual = fields.get("residual");
+  topology::Field& residual = fields.get("residual");
   fault.integrateResidual(residual, t, &fields);
   residual.complete();
 
@@ -521,7 +522,7 @@
   } // setup disp increment
 
   // Set Jacobian values
-  topology::Field<topology::Mesh> jacobian(mesh);
+  topology::Field jacobian(mesh);
   jacobian.label("Jacobian");
   jacobian.vectorFieldType(topology::FieldBase::VECTOR);
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
@@ -540,9 +541,9 @@
   } // setup jacobian
   jacobian.complete();
 
-  topology::Field<topology::Mesh>& solution = fields.get("dispIncr(t->t+dt)");
+  topology::Field& solution = fields.get("dispIncr(t->t+dt)");
   fault.adjustSolnLumped(&fields, t, jacobian);
-  const topology::Field<topology::Mesh>& dispIncrAdj = fields.get("dispIncr adjust");
+  const topology::Field& dispIncrAdj = fields.get("dispIncr adjust");
   solution += dispIncrAdj;
 
   //solution.view("SOLUTION AFTER ADJUSTMENT"); // DEBUGGING
@@ -601,7 +602,7 @@
   } // setup disp
 
   CPPUNIT_ASSERT(fault._faultMesh);
-  topology::Field<topology::Mesh> tractions(*fault._faultMesh);
+  topology::Field tractions(*fault._faultMesh);
   tractions.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   tractions.allocate();
   tractions.zero();
@@ -685,11 +686,11 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &fault, &fields);
 
-  const topology::Field<topology::Mesh>& disp = fields.get("disp(t)");
+  const topology::Field& disp = fields.get("disp(t)");
   const spatialdata::geocoords::CoordSys* cs = mesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::Mesh> splitField(mesh);
+  topology::Field splitField(mesh);
   splitField.addField("displacement", spaceDim);
   splitField.addField("multipliers", spaceDim);
   splitField.setupFields();
@@ -848,7 +849,7 @@
   fields->solutionName("dispIncr(t->t+dt)");
   
   const int spaceDim = _data->spaceDim;
-  topology::Field<topology::Mesh>& residual = fields->get("residual");
+  topology::Field& residual = fields->get("residual");
   residual.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   residual.allocate();
   fields->copyLayout("residual");

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -262,7 +262,7 @@
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::Mesh> slip(faultMesh);
+  topology::Field slip(faultMesh);
   slip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slip.allocate();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -225,8 +225,8 @@
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::Mesh> slip(faultMesh);
-  slip.newSection(topology::Field<topology::Mesh>::VERTICES_FIELD, spaceDim);
+  topology::Field slip(faultMesh);
+  slip.newSection(topology::Field::VERTICES_FIELD, spaceDim);
   slip.allocate();
 
   const PylithScalar t = 1.234;

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -258,7 +258,7 @@
   const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();CPPUNIT_ASSERT(cs);
   const int spaceDim = cs->spaceDim();
 
-  topology::Field<topology::Mesh> slip(faultMesh);
+  topology::Field slip(faultMesh);
   slip.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   slip.allocate();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -212,7 +212,7 @@
   TractPerturbation tract;
   _initialize(&mesh, &faultMesh, &tract);
   
-  const topology::Fields<topology::Field<topology::Mesh> >* parameters = tract.parameterFields();CPPUNIT_ASSERT(parameters);
+  const topology::Fields* parameters = tract.parameterFields();CPPUNIT_ASSERT(parameters);
 
   PetscDM faultDMMesh = faultMesh.dmMesh();CPPUNIT_ASSERT(faultDMMesh);
   topology::Stratum verticesStratum(faultDMMesh, topology::Stratum::DEPTH, 0);
@@ -283,7 +283,7 @@
   TractPerturbation tract;
   _initialize(&mesh, &faultMesh, &tract);
 
-  const topology::Field<topology::Mesh>& field = tract.vertexField(label);
+  const topology::Field& field = tract.vertexField(label);
 
   PetscDM faultDMMesh = faultMesh.dmMesh();CPPUNIT_ASSERT(faultDMMesh);
   topology::Stratum verticesStratum(faultDMMesh, topology::Stratum::DEPTH, 0);
@@ -365,7 +365,7 @@
   dbChange.ioHandler(&ioChange);
 
   // Setup fault orientation
-  topology::Field<topology::Mesh> faultOrientation(*faultMesh);
+  topology::Field faultOrientation(*faultMesh);
   faultOrientation.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim*spaceDim);
   faultOrientation.allocate();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -198,7 +198,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  topology::Field<topology::Mesh>& residual = fields.get("residual");
+  topology::Field& residual = fields.get("residual");
   const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
@@ -255,7 +255,7 @@
   _initialize(&mesh, &integrator, &fields);
   integrator._needNewJacobian = true;
 
-  topology::Field<topology::Mesh> jacobian(mesh);
+  topology::Field jacobian(mesh);
   jacobian.label("Jacobian");
   jacobian.vectorFieldType(topology::FieldBase::VECTOR);
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
@@ -440,7 +440,7 @@
   fields->add("acceleration(t)", "acceleration");
   fields->solutionName("dispIncr(t->t+dt)");
   
-  topology::Field<topology::Mesh>& residual = fields->get("residual");
+  topology::Field& residual = fields->get("residual");
   residual.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   residual.allocate();
   residual.zero();

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -116,7 +116,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  topology::Field<topology::Mesh>& residual = fields.get("residual");
+  topology::Field& residual = fields.get("residual");
   const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
@@ -172,7 +172,7 @@
   _initialize(&mesh, &integrator, &fields);
   integrator._needNewJacobian = true;
 
-  topology::Field<topology::Mesh> jacobian(mesh);
+  topology::Field jacobian(mesh);
   jacobian.label("Jacobian");
   jacobian.vectorFieldType(topology::FieldBase::VECTOR);
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
@@ -333,7 +333,7 @@
   fields->add("acceleration(t)", "acceleration");
   fields->solutionName("dispIncr(t->t+dt)");
   
-  topology::Field<topology::Mesh>& residual = fields->get("residual");
+  topology::Field& residual = fields->get("residual");
   residual.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   residual.allocate();
   residual.zero();

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -187,7 +187,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  topology::Field<topology::Mesh>& residual = fields.get("residual");
+  topology::Field& residual = fields.get("residual");
   const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
@@ -244,7 +244,7 @@
   _initialize(&mesh, &integrator, &fields);
   integrator._needNewJacobian = true;
 
-  topology::Field<topology::Mesh> jacobian(mesh);
+  topology::Field jacobian(mesh);
   jacobian.label("Jacobian");
   jacobian.vectorFieldType(topology::FieldBase::VECTOR);
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
@@ -427,7 +427,7 @@
   fields->add("acceleration(t)", "acceleration");
   fields->solutionName("dispIncr(t->t+dt)");
   
-  topology::Field<topology::Mesh>& residual = fields->get("residual");
+  topology::Field& residual = fields->get("residual");
   residual.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   residual.allocate();
   residual.zero();

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -187,7 +187,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  topology::Field<topology::Mesh>& residual = fields.get("residual");
+  topology::Field& residual = fields.get("residual");
   const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
@@ -244,7 +244,7 @@
   _initialize(&mesh, &integrator, &fields);
   integrator._needNewJacobian = true;
 
-  topology::Field<topology::Mesh> jacobian(mesh);
+  topology::Field jacobian(mesh);
   jacobian.label("Jacobian");
   jacobian.vectorFieldType(topology::FieldBase::VECTOR);
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
@@ -426,7 +426,7 @@
   fields->add("acceleration(t)", "acceleration");
   fields->solutionName("dispIncr(t->t+dt)");
   
-  topology::Field<topology::Mesh>& residual = fields->get("residual");
+  topology::Field& residual = fields->get("residual");
   residual.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
   residual.allocate();
   residual.zero();

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -179,7 +179,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  topology::Field<topology::Mesh>& residual = fields.get("residual");
+  topology::Field& residual = fields.get("residual");
   const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
@@ -408,7 +408,7 @@
   fields->add("dispIncr(t->t+dt)", "displacement_increment");
   fields->solutionName("dispIncr(t->t+dt)");
   
-  topology::Field<topology::Mesh>& residual = fields->get("residual");
+  topology::Field& residual = fields->get("residual");
   residual.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
   residual.allocate();
   residual.zero();

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -116,7 +116,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  topology::Field<topology::Mesh>& residual = fields.get("residual");
+  topology::Field& residual = fields.get("residual");
   const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
@@ -329,7 +329,7 @@
   fields->add("dispIncr(t->t+dt)", "displacement_increment");
   fields->solutionName("dispIncr(t->t+dt)");
   
-  topology::Field<topology::Mesh>& residual = fields->get("residual");
+  topology::Field& residual = fields->get("residual");
   residual.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
   residual.allocate();
   residual.zero();

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -29,6 +29,7 @@
 #include "pylith/utils/constdefs.h" // USES MAXSCALAR
 
 #include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestIntegrator );
@@ -292,7 +293,7 @@
   PYLITH_METHOD_BEGIN;
 
   topology::Mesh mesh;
-  topology::Field<topology::Mesh> field(mesh);
+  topology::Field field(mesh);
   
   ElasticityExplicit integrator;
   integrator.splitField(&field);

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -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::Mesh>& prop = friction._fieldsPropsStateVars->get(property.name.c_str());
+      topology::Field& 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::Mesh>& frictionField = friction.getField("friction_coefficient");
+  const topology::Field& 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::Mesh>& stateVarField = friction._fieldsPropsStateVars->get(stateVar.name.c_str());
+      topology::Field& stateVarField = friction._fieldsPropsStateVars->get(stateVar.name.c_str());
       topology::VecVisitorMesh stateVarVisitor(stateVarField);
       PetscScalar *fieldsArray = stateVarVisitor.localArray();CPPUNIT_ASSERT(fieldsArray);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -117,7 +117,7 @@
   int fiberDim = numQuadPts * tensorSize;
 
   CPPUNIT_ASSERT(material._initialFields);
-  topology::Field<topology::Mesh>& stressField = material._initialFields->get("initial stress");
+  topology::Field& stressField = material._initialFields->get("initial stress");
   topology::VecVisitorMesh stressVisitor(stressField);
   const PetscScalar* initialStress = stressVisitor.localArray();
   PetscInt off = stressVisitor.sectionOffset(cell);
@@ -132,7 +132,7 @@
   fiberDim = numQuadPts * tensorSize;
 
   CPPUNIT_ASSERT(material._initialFields);
-  topology::Field<topology::Mesh>& strainField = material._initialFields->get("initial strain");
+  topology::Field& strainField = material._initialFields->get("initial strain");
   topology::VecVisitorMesh strainVisitor(strainField);
   const PetscScalar* initialStrain = strainVisitor.localArray();
   off = strainVisitor.sectionOffset(cell);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestCellFilterAvg.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestCellFilterAvg.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestCellFilterAvg.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -32,14 +32,11 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestCellFilterAvg );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Test constructor
 void
 pylith::meshio::TestCellFilterAvg::testConstructor(void)
 { // testConstructor
-  CellFilterAvg<topology::Mesh, MeshField> filter;
+  CellFilterAvg filter;
 } // testConstructor
 
 // ----------------------------------------------------------------------
@@ -95,7 +92,7 @@
   iohandler.read(&mesh);
 
   // Set cell field
-  MeshField field(mesh);
+  topology::Field field(mesh);
   field.newSection(topology::FieldBase::CELLS_FIELD, fiberDim);
   field.allocate();
   field.vectorFieldType(fieldType);
@@ -124,10 +121,10 @@
 			quadWts, numQuadPts,
 			spaceDim);
 
-  CellFilterAvg<topology::Mesh, MeshField> filter;
+  CellFilterAvg filter;
   filter.quadrature(&quadrature);
 
-  const MeshField& fieldF = filter.filter(field);
+  const topology::Field& fieldF = filter.filter(field);
 
   CPPUNIT_ASSERT_EQUAL(fieldTypeE, fieldF.vectorFieldType());
   CPPUNIT_ASSERT_EQUAL(label, std::string(fieldF.label()));
@@ -200,7 +197,7 @@
   topology::Mesh submesh(mesh, group);
 
   // Set cell field
-  MeshField field(submesh);
+  topology::Field field(submesh);
   field.newSection(topology::FieldBase::FACES_FIELD, fiberDim);
   field.allocate();
   field.vectorFieldType(fieldType);
@@ -229,10 +226,10 @@
 			quadWts, numQuadPts,
 			spaceDim);
 
-  CellFilterAvg<topology::Mesh, MeshField> filter;
+  CellFilterAvg filter;
   filter.quadrature(&quadrature);
 
-  const MeshField& fieldF = filter.filter(field);
+  const topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -36,9 +36,6 @@
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterBCMesh::setUp(void)
@@ -108,7 +105,7 @@
 // ----------------------------------------------------------------------
 // Create vertex fields.
 void
-pylith::meshio::TestDataWriterBCMesh::_createVertexFields(topology::Fields<MeshField>* fields) const
+pylith::meshio::TestDataWriterBCMesh::_createVertexFields(topology::Fields* fields) const
 { // _createVertexFields
   PYLITH_METHOD_BEGIN;
 
@@ -128,7 +125,7 @@
     const char* name = _data->vertexFieldsInfo[i].name;
     const int fiberDim = _data->vertexFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    MeshField& field = fields->get(name);
+    topology::Field& field = fields->get(name);
     field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
     field.allocate();
     field.vectorFieldType(_data->vertexFieldsInfo[i].field_type);
@@ -152,7 +149,7 @@
 // ----------------------------------------------------------------------
 // Create cell fields.
 void
-pylith::meshio::TestDataWriterBCMesh::_createCellFields(topology::Fields<MeshField>* fields) const
+pylith::meshio::TestDataWriterBCMesh::_createCellFields(topology::Fields* fields) const
 { // _createCellFields
   PYLITH_METHOD_BEGIN;
 
@@ -174,7 +171,7 @@
     const char* name = _data->cellFieldsInfo[i].name;
     const int fiberDim = _data->cellFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    MeshField& field = fields->get(name);
+    topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -59,14 +59,14 @@
    * @param fields Vertex fields.
    */
   void
-  _createVertexFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
+  _createVertexFields(topology::Fields* fields) const;
 
   /** Create cell fields.
    *
    * @param fields Cell fields.
    */
   void
-  _createCellFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
+  _createCellFields(topology::Fields* fields) const;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -39,9 +39,6 @@
 #include <map> // USES std::map
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterFaultMesh::setUp(void)
@@ -111,7 +108,7 @@
 // ----------------------------------------------------------------------
 // Create vertex fields.
 void
-pylith::meshio::TestDataWriterFaultMesh::_createVertexFields(topology::Fields<MeshField>* fields) const
+pylith::meshio::TestDataWriterFaultMesh::_createVertexFields(topology::Fields* fields) const
 { // _createVertexFields
   PYLITH_METHOD_BEGIN;
 
@@ -131,7 +128,7 @@
     const char* name = _data->vertexFieldsInfo[i].name;
     const int fiberDim = _data->vertexFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    MeshField& field = fields->get(name);
+    topology::Field& field = fields->get(name);
     field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
     field.allocate();
     field.vectorFieldType(_data->vertexFieldsInfo[i].field_type);
@@ -156,7 +153,7 @@
 // ----------------------------------------------------------------------
 // Create cell fields.
 void
-pylith::meshio::TestDataWriterFaultMesh::_createCellFields(topology::Fields<MeshField>* fields) const
+pylith::meshio::TestDataWriterFaultMesh::_createCellFields(topology::Fields* fields) const
 { // _createCellFields
   PYLITH_METHOD_BEGIN;
 
@@ -177,7 +174,7 @@
     const char* name = _data->cellFieldsInfo[i].name;
     const int fiberDim = _data->cellFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    MeshField& field = fields->get(name);
+    topology::Field& field = fields->get(name);
     field.newSection(topology::FieldBase::FACES_FIELD, fiberDim);
     field.allocate();
     field.vectorFieldType(_data->cellFieldsInfo[i].field_type);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -59,14 +59,14 @@
    * @param fields Vertex fields.
    */
   void
-  _createVertexFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
+  _createVertexFields(topology::Fields* fields) const;
 
   /** Create cell fields.
    *
    * @param fields Cell fields.
    */
   void
-  _createCellFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
+  _createCellFields(topology::Fields* fields) const;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,9 +33,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5BCMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5BCMesh::setUp(void)
@@ -66,7 +63,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
 
@@ -83,7 +80,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -117,9 +114,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
-  topology::Fields<MeshField> vertexFields(*_submesh);
+  topology::Fields vertexFields(*_submesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -140,7 +137,7 @@
     writer.openTimeStep(t, *_submesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_submesh);
   } // for
   writer.closeTimeStep();
@@ -161,9 +158,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
-  topology::Fields<MeshField> cellFields(*_submesh);
+  topology::Fields cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -178,7 +175,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -187,7 +184,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,9 +33,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtBCMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtBCMesh::setUp(void)
@@ -66,7 +63,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -81,7 +78,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -115,9 +112,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
-  topology::Fields<MeshField> vertexFields(*_submesh);
+  topology::Fields vertexFields(*_submesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -138,7 +135,7 @@
     writer.openTimeStep(t, *_submesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_submesh);
   } // for
   writer.closeTimeStep();
@@ -159,9 +156,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
-  topology::Fields<MeshField> cellFields(*_submesh);
+  topology::Fields cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -176,7 +173,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -185,7 +182,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -36,9 +36,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtFaultMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtFaultMesh::setUp(void)
@@ -69,7 +66,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -84,7 +81,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -118,9 +115,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
-  topology::Fields<MeshField> vertexFields(*_faultMesh);
+  topology::Fields vertexFields(*_faultMesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -141,7 +138,7 @@
     writer.openTimeStep(t, *_faultMesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_faultMesh);
   } // for
   writer.closeTimeStep();
@@ -162,9 +159,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
-  topology::Fields<MeshField> cellFields(*_faultMesh);
+  topology::Fields cellFields(*_faultMesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -179,7 +176,7 @@
     writer.open(*_faultMesh, numTimeSteps);
     writer.openTimeStep(t, *_faultMesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -188,7 +185,7 @@
     writer.open(*_faultMesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_faultMesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,9 +33,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtMesh::setUp(void)
@@ -66,7 +63,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
   CPPUNIT_ASSERT(writer._h5);
 
@@ -80,7 +77,7 @@
 { // testDebug
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
   const char* filename = "data.h5";
   writer.filename(filename);
@@ -99,7 +96,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -130,9 +127,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
-  topology::Fields<MeshField> vertexFields(*_mesh);
+  topology::Fields vertexFields(*_mesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -153,7 +150,7 @@
     writer.openTimeStep(t, *_mesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_mesh);
   } // for
   writer.closeTimeStep();
@@ -174,9 +171,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
-  topology::Fields<MeshField> cellFields(*_mesh);
+  topology::Fields cellFields(*_mesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -191,7 +188,7 @@
     writer.open(*_mesh, numTimeSteps);
     writer.openTimeStep(t, *_mesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -200,7 +197,7 @@
     writer.open(*_mesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_mesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else
@@ -218,7 +215,7 @@
 { // testHdf5Filename
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
   // Append info to filename if number of time steps is 0.
   writer._numTimeSteps = 0;
@@ -244,7 +241,7 @@
 { // testDatasetFilename
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
   // Append info to filename if number of time steps is 0.
   writer._numTimeSteps = 0;

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,9 +33,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5ExtSubMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5ExtSubMesh::setUp(void)
@@ -66,7 +63,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -81,7 +78,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -112,9 +109,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
-  topology::Fields<MeshField> vertexFields(*_mesh);
+  topology::Fields vertexFields(*_mesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -135,7 +132,7 @@
     writer.openTimeStep(t, *_submesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_submesh);
   } // for
   writer.closeTimeStep();
@@ -156,9 +153,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5Ext<topology::Mesh, MeshField> writer;
+  DataWriterHDF5Ext writer;
 
-  topology::Fields<MeshField> cellFields(*_submesh);
+  topology::Fields cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -173,7 +170,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -182,7 +179,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -36,9 +36,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5FaultMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5FaultMesh::setUp(void)
@@ -69,7 +66,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
 
@@ -86,7 +83,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -120,9 +117,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
-  topology::Fields<MeshField> vertexFields(*_faultMesh);
+  topology::Fields vertexFields(*_faultMesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -143,7 +140,7 @@
     writer.openTimeStep(t, *_faultMesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_faultMesh);
   } // for
   writer.closeTimeStep();
@@ -164,9 +161,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
-  topology::Fields<MeshField> cellFields(*_faultMesh);
+  topology::Fields cellFields(*_faultMesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -181,7 +178,7 @@
     writer.open(*_faultMesh, numTimeSteps);
     writer.openTimeStep(t, *_faultMesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -190,7 +187,7 @@
     writer.open(*_faultMesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_faultMesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5Mesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5Mesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5Mesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -31,9 +31,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5Mesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5Mesh::setUp(void)
@@ -64,7 +61,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
 
@@ -78,7 +75,7 @@
 { // testDebug
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
   const char* filename = "data.h5";
   writer.filename(filename);
@@ -97,7 +94,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -128,9 +125,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
-  topology::Fields<MeshField> vertexFields(*_mesh);
+  topology::Fields vertexFields(*_mesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -151,7 +148,7 @@
     writer.openTimeStep(t, *_mesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_mesh);
   } // for
   writer.closeTimeStep();
@@ -172,9 +169,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
-  topology::Fields<MeshField> cellFields(*_mesh);
+  topology::Fields cellFields(*_mesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -189,7 +186,7 @@
     writer.open(*_mesh, numTimeSteps);
     writer.openTimeStep(t, *_mesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -198,7 +195,7 @@
     writer.open(*_mesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_mesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else
@@ -216,7 +213,7 @@
 { // testHdf5Filename
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
   // Append info to filename if number of time steps is 0.
   writer._numTimeSteps = 0;

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,9 +33,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterHDF5SubMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterHDF5SubMesh::setUp(void)
@@ -66,7 +63,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
 
@@ -83,7 +80,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
   writer.filename(_data->timestepFilename);
 
@@ -114,9 +111,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
-  topology::Fields<MeshField> vertexFields(*_mesh);
+  topology::Fields vertexFields(*_mesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -137,7 +134,7 @@
     writer.openTimeStep(t, *_submesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_submesh);
   } // for
   writer.closeTimeStep();
@@ -158,9 +155,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterHDF5<topology::Mesh, MeshField> writer;
+  DataWriterHDF5 writer;
 
-  topology::Fields<MeshField> cellFields(*_submesh);
+  topology::Fields cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -175,7 +172,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
     } // for
   } else {
@@ -184,7 +181,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
     } // for
   } // else

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -36,9 +36,6 @@
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterMesh::setUp(void)
@@ -104,7 +101,7 @@
 // ----------------------------------------------------------------------
 // Create vertex fields.
 void
-pylith::meshio::TestDataWriterMesh::_createVertexFields(topology::Fields<MeshField>* fields) const
+pylith::meshio::TestDataWriterMesh::_createVertexFields(topology::Fields* fields) const
 { // _createVertexFields
   PYLITH_METHOD_BEGIN;
 
@@ -124,7 +121,7 @@
     const char* name = _data->vertexFieldsInfo[i].name;
     const int fiberDim = _data->vertexFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    MeshField& field = fields->get(name);
+    topology::Field& field = fields->get(name);
     field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
     field.allocate();
     field.vectorFieldType(_data->vertexFieldsInfo[i].field_type);
@@ -148,7 +145,7 @@
 // ----------------------------------------------------------------------
 // Create cell fields.
 void
-pylith::meshio::TestDataWriterMesh::_createCellFields(topology::Fields<MeshField>* fields) const
+pylith::meshio::TestDataWriterMesh::_createCellFields(topology::Fields* fields) const
 { // _createCellFields
   PYLITH_METHOD_BEGIN;
 
@@ -176,7 +173,7 @@
     const char* name = _data->cellFieldsInfo[i].name;
     const int fiberDim = _data->cellFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    MeshField& field = fields->get(name);
+    topology::Field& field = fields->get(name);
     field.newSection(topology::FieldBase::CELLS_FIELD, fiberDim);
     field.allocate();
     field.vectorFieldType(_data->cellFieldsInfo[i].field_type);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterMesh.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterMesh.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -59,14 +59,14 @@
    * @param fields Vertex fields.
    */
   void
-  _createVertexFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
+  _createVertexFields(topology::Fields* fields) const;
 
   /** Create cell fields.
    *
    * @param fields Cell fields.
    */
   void
-  _createCellFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
+  _createCellFields(topology::Fields* fields) const;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterPoints.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterPoints.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterPoints.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -36,9 +36,6 @@
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterPoints::setUp(void)
@@ -104,7 +101,7 @@
 // ----------------------------------------------------------------------
 // Create vertex fields.
 void
-pylith::meshio::TestDataWriterPoints::_createVertexFields(topology::Fields<MeshField>* fields) const
+pylith::meshio::TestDataWriterPoints::_createVertexFields(topology::Fields* fields) const
 { // _createVertexFields
   PYLITH_METHOD_BEGIN;
 
@@ -124,7 +121,7 @@
     const char* name = _data->vertexFieldsInfo[i].name;
     const int fiberDim = _data->vertexFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    MeshField& field = fields->get(name);
+    topology::Field& field = fields->get(name);
     field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
     field.allocate();
     field.vectorFieldType(_data->vertexFieldsInfo[i].field_type);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterPoints.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterPoints.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterPoints.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -59,7 +59,7 @@
    * @param fields Vertex fields.
    */
   void
-  _createVertexFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
+  _createVertexFields(topology::Fields* fields) const;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -36,9 +36,6 @@
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterSubMesh::setUp(void)
@@ -109,7 +106,7 @@
 // ----------------------------------------------------------------------
 // Create vertex fields.
 void
-pylith::meshio::TestDataWriterSubMesh::_createVertexFields(topology::Fields<MeshField>* fields) const
+pylith::meshio::TestDataWriterSubMesh::_createVertexFields(topology::Fields* fields) const
 { // _createVertexFields
   PYLITH_METHOD_BEGIN;
 
@@ -129,7 +126,7 @@
     const char* name = _data->vertexFieldsInfo[i].name;
     const int fiberDim = _data->vertexFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    MeshField& field = fields->get(name);
+    topology::Field& field = fields->get(name);
     field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
     field.allocate();
     field.vectorFieldType(_data->vertexFieldsInfo[i].field_type);
@@ -153,7 +150,7 @@
 // ----------------------------------------------------------------------
 // Create cell fields.
 void
-pylith::meshio::TestDataWriterSubMesh::_createCellFields(topology::Fields<MeshField>* fields) const
+pylith::meshio::TestDataWriterSubMesh::_createCellFields(topology::Fields* fields) const
 { // _createCellFields
   PYLITH_METHOD_BEGIN;
 
@@ -174,7 +171,7 @@
     const char* name = _data->cellFieldsInfo[i].name;
     const int fiberDim = _data->cellFieldsInfo[i].fiber_dim;
     fields->add(name, name);
-    MeshField& field = fields->get(name);
+    topology::Field& 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -59,14 +59,14 @@
    * @param fields Vertex fields.
    */
   void
-  _createVertexFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
+  _createVertexFields(topology::Fields* fields) const;
 
   /** Create cell fields.
    *
    * @param fields Cell fields.
    */
   void
-  _createCellFields(topology::Fields<topology::Field<topology::Mesh> >* fields) const;
+  _createCellFields(topology::Fields* fields) const;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,9 +33,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKBCMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKBCMesh::setUp(void)
@@ -66,7 +63,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
   CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
@@ -85,7 +82,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   writer.filename(_data->timestepFilename);
   writer.timeFormat(_data->timeFormat);
@@ -129,9 +126,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
-  topology::Fields<MeshField> vertexFields(*_submesh);
+  topology::Fields vertexFields(*_submesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -151,7 +148,7 @@
     writer.openTimeStep(t, *_submesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_submesh);
     CPPUNIT_ASSERT(writer._wroteVertexHeader);
     CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
@@ -176,9 +173,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
-  topology::Fields<MeshField> cellFields(*_submesh);
+  topology::Fields cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -192,7 +189,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
       CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
       CPPUNIT_ASSERT(writer._wroteCellHeader);
@@ -203,7 +200,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& 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/TestDataWriterVTKFaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -36,9 +36,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKFaultMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKFaultMesh::setUp(void)
@@ -69,7 +66,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
   CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
@@ -88,7 +85,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   writer.filename(_data->timestepFilename);
   writer.timeFormat(_data->timeFormat);
@@ -132,9 +129,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
-  topology::Fields<MeshField> vertexFields(*_faultMesh);
+  topology::Fields vertexFields(*_faultMesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -154,7 +151,7 @@
     writer.openTimeStep(t, *_faultMesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_faultMesh);
     CPPUNIT_ASSERT(writer._wroteVertexHeader);
     CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
@@ -179,9 +176,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
-  topology::Fields<MeshField> cellFields(*_faultMesh);
+  topology::Fields cellFields(*_faultMesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -195,7 +192,7 @@
     writer.open(*_faultMesh, numTimeSteps);
     writer.openTimeStep(t, *_faultMesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
       CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
       CPPUNIT_ASSERT(writer._wroteCellHeader);
@@ -206,7 +203,7 @@
     writer.open(*_faultMesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_faultMesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& 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/TestDataWriterVTKMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,9 +33,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKMesh::setUp(void)
@@ -66,7 +63,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
   CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
@@ -82,7 +79,7 @@
 { // testDebug
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   const char* filename = "data.vtk";
   writer.filename(filename);
@@ -98,7 +95,7 @@
 { // testTimeFormat
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   const char* format = "%4.1f";
   writer.timeFormat(format);
@@ -114,7 +111,7 @@
 { // testTimeConstant
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   const PylithScalar value = 4.5;
   writer.timeConstant(value);
@@ -130,7 +127,7 @@
 { // testPrecision
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   const int value = 4;
   writer.precision(value);
@@ -149,7 +146,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   writer.filename(_data->timestepFilename);
   writer.timeFormat(_data->timeFormat);
@@ -193,9 +190,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
-  topology::Fields<MeshField> vertexFields(*_mesh);
+  topology::Fields vertexFields(*_mesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -215,7 +212,7 @@
     writer.openTimeStep(t, *_mesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_mesh);
     CPPUNIT_ASSERT(writer._wroteVertexHeader);
     CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
@@ -240,9 +237,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
-  topology::Fields<MeshField> cellFields(*_mesh);
+  topology::Fields cellFields(*_mesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -256,7 +253,7 @@
     writer.open(*_mesh, numTimeSteps);
     writer.openTimeStep(t, *_mesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
       CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
       CPPUNIT_ASSERT(writer._wroteCellHeader);
@@ -267,7 +264,7 @@
     writer.open(*_mesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_mesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field, label, id);
       CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
       CPPUNIT_ASSERT(writer._wroteCellHeader);
@@ -289,7 +286,7 @@
 { // testVtkFilename
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   // Append info to filename if number of time steps is 0.
   writer._numTimeSteps = 0;

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKPoints.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKPoints.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKPoints.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -30,13 +30,12 @@
 #include "pylith/meshio/DataWriterVTK.hh" // USES DataWriterVTK
 #include "pylith/faults/FaultCohesiveKin.hh" // USES FaultCohesiveKin
 
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
+
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKPoints );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKPoints::setUp(void)
@@ -67,7 +66,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
   CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
@@ -87,7 +86,7 @@
   CPPUNIT_ASSERT(_data);
 
   OutputSolnPoints output;
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
   spatialdata::units::Nondimensional normalizer;
 
   writer.filename(_data->timestepFilename);
@@ -126,10 +125,10 @@
   CPPUNIT_ASSERT(_data);
 
   OutputSolnPoints output;
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
   spatialdata::units::Nondimensional normalizer;
 
-  topology::Fields<MeshField> vertexFields(*_mesh);
+  topology::Fields vertexFields(*_mesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -151,7 +150,7 @@
     output.openTimeStep(t, *_mesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     // field.view("FIELD"); // DEBUGGING
     output.appendVertexField(t, field, *_mesh);
     CPPUNIT_ASSERT(writer._wroteVertexHeader);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -33,9 +33,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestDataWriterVTKSubMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::meshio::TestDataWriterVTKSubMesh::setUp(void)
@@ -66,7 +63,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   CPPUNIT_ASSERT(!writer._viewer);
   CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
@@ -85,7 +82,7 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
   writer.filename(_data->timestepFilename);
   writer.timeFormat(_data->timeFormat);
@@ -129,9 +126,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
-  topology::Fields<MeshField> vertexFields(*_mesh);
+  topology::Fields vertexFields(*_mesh);
   _createVertexFields(&vertexFields);
 
   writer.filename(_data->vertexFilename);
@@ -151,7 +148,7 @@
     writer.openTimeStep(t, *_submesh, label, id);
   } // else
   for (int i=0; i < nfields; ++i) {
-    MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
+    topology::Field& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
     writer.writeVertexField(t, field, *_submesh);
     CPPUNIT_ASSERT(writer._wroteVertexHeader);
     CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
@@ -176,9 +173,9 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_data);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
 
-  topology::Fields<MeshField> cellFields(*_submesh);
+  topology::Fields cellFields(*_submesh);
   _createCellFields(&cellFields);
 
   writer.filename(_data->cellFilename);
@@ -192,7 +189,7 @@
     writer.open(*_submesh, numTimeSteps);
     writer.openTimeStep(t, *_submesh);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& field = cellFields.get(_data->cellFieldsInfo[i].name);
       writer.writeCellField(t, field);
       CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
       CPPUNIT_ASSERT(writer._wroteCellHeader);
@@ -203,7 +200,7 @@
     writer.open(*_submesh, numTimeSteps, label, id);
     writer.openTimeStep(t, *_submesh, label, id);
     for (int i=0; i < nfields; ++i) {
-      MeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
+      topology::Field& 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/TestOutputManager.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputManager.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputManager.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -21,6 +21,8 @@
 #include "TestOutputManager.hh" // Implementation of class methods
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/Stratum.hh" // USES Stratum
+#include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/meshio/OutputManager.hh"
 
@@ -40,9 +42,6 @@
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestOutputManager );
 
- // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
 // ----------------------------------------------------------------------
 // Test constructor
 void
@@ -50,7 +49,7 @@
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  OutputManager<topology::Mesh, MeshField> manager;
+  OutputManager manager;
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -62,7 +61,7 @@
 { // testCoordsys
   PYLITH_METHOD_BEGIN;
 
-  OutputManager<topology::Mesh, MeshField> manager;
+  OutputManager manager;
 
   CPPUNIT_ASSERT(!manager._coordsys);
 
@@ -80,11 +79,11 @@
 { // testWriter
   PYLITH_METHOD_BEGIN;
 
-  OutputManager<topology::Mesh, MeshField> manager;
+  OutputManager manager;
 
   CPPUNIT_ASSERT(!manager._writer);
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
   manager.writer(&writer);
   CPPUNIT_ASSERT(manager._writer);
 
@@ -98,12 +97,12 @@
 { // testVertexFilter
   PYLITH_METHOD_BEGIN;
 
-  OutputManager<topology::Mesh, MeshField> manager;
+  OutputManager manager;
 
   CPPUNIT_ASSERT(!manager._vertexFilter);
   CPPUNIT_ASSERT(!manager._cellFilter);
 
-  VertexFilterVecNorm<MeshField> filter;
+  VertexFilterVecNorm filter;
   manager.vertexFilter(&filter);
   CPPUNIT_ASSERT(manager._vertexFilter);
   CPPUNIT_ASSERT(!manager._cellFilter);
@@ -118,12 +117,12 @@
 { // testCellFilter
   PYLITH_METHOD_BEGIN;
 
-  OutputManager<topology::Mesh, MeshField> manager;
+  OutputManager manager;
 
   CPPUNIT_ASSERT(!manager._vertexFilter);
   CPPUNIT_ASSERT(!manager._cellFilter);
 
-  CellFilterAvg<topology::Mesh, MeshField> filter;
+  CellFilterAvg filter;
   manager.cellFilter(&filter);
   CPPUNIT_ASSERT(manager._cellFilter);
   CPPUNIT_ASSERT(!manager._vertexFilter);
@@ -138,7 +137,7 @@
 { // testOpenClose
   PYLITH_METHOD_BEGIN;
 
-  OutputManager<topology::Mesh, MeshField> manager;
+  OutputManager manager;
 
   topology::Mesh mesh;
   MeshIOAscii iohandler;
@@ -150,7 +149,7 @@
 
   // TODO Replace DataVTKWriter with writer that has nontrivial
   // open()/close().
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
   manager.writer(&writer);
 
   manager.open(mesh, numTimeSteps);
@@ -166,7 +165,7 @@
 { // testOpenCloseTimeStep
   PYLITH_METHOD_BEGIN;
 
-  OutputManager<topology::Mesh, MeshField> manager;
+  OutputManager manager;
 
   topology::Mesh mesh;
   MeshIOAscii iohandler;
@@ -179,7 +178,7 @@
   const char* filenameRoot = "output.vtk";
   const char* timeFormat = "%3.1f";
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
   writer.filename(filenameRoot);
   writer.timeFormat(timeFormat);
   manager.writer(&writer);
@@ -226,7 +225,7 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  MeshField field(mesh);
+  topology::Field field(mesh);
   field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
   field.allocate();
   field.label(label);
@@ -252,11 +251,11 @@
   const char* filenameRootF = "output_vertex_filter.vtk";
   const char* timeFormat = "%3.1f";
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
   writer.filename(filenameRoot);
   writer.timeFormat(timeFormat);
 
-  OutputManager<topology::Mesh, MeshField> manager;
+  OutputManager manager;
   manager.writer(&writer);
   manager.open(mesh, numTimeSteps);
   manager.openTimeStep(t, mesh);
@@ -266,7 +265,7 @@
 
   TestDataWriterVTK::checkFile(filenameRoot, t, timeFormat);
 
-  VertexFilterVecNorm<MeshField> filter;
+  VertexFilterVecNorm filter;
   manager.vertexFilter(&filter);
   writer.filename(filenameRootF);
   manager.writer(&writer);
@@ -313,7 +312,7 @@
   const PetscInt cEnd = cellsStratum.end();
   PetscInt numCells = cellsStratum.size();
 
-  MeshField field(mesh);
+  topology::Field field(mesh);
   field.newSection(topology::FieldBase::CELLS_FIELD, fiberDim);
   field.allocate();
   field.label(label);
@@ -341,11 +340,11 @@
   const char* filenameRootF = "output_cell_filter.vtk";
   const char* timeFormat = "%3.1f";
 
-  DataWriterVTK<topology::Mesh, MeshField> writer;
+  DataWriterVTK writer;
   writer.filename(filenameRoot);
   writer.timeFormat(timeFormat);
 
-  OutputManager<topology::Mesh, MeshField> manager;
+  OutputManager manager;
   manager.writer(&writer);
   manager.open(mesh, numTimeSteps);
   manager.openTimeStep(t, mesh);
@@ -384,7 +383,7 @@
 			quadWts, numQuadPts,
 			spaceDim);
 
-  CellFilterAvg<topology::Mesh, MeshField> filter;
+  CellFilterAvg filter;
   filter.quadrature(&quadrature);
   manager.cellFilter(&filter);
   writer.filename(filenameRootF);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputSolnPoints.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputSolnPoints.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputSolnPoints.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -28,6 +28,7 @@
 #include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
 
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
 #include "data/OutputSolnPointsDataTri3.hh"
 #include "data/OutputSolnPointsDataQuad4.hh"

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestVertexFilterVecNorm.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestVertexFilterVecNorm.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestVertexFilterVecNorm.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -20,9 +20,12 @@
 
 #include "TestVertexFilterVecNorm.hh" // Implementation of class methods
 
-#include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/meshio/VertexFilterVecNorm.hh"
 
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/Stratum.hh" // USES Stratum
+#include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
+
 #include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
 #include "pylith/topology/Field.hh" // USES Field
 
@@ -30,16 +33,13 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestVertexFilterVecNorm );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
-
-// ----------------------------------------------------------------------
 // Test constructor
 void
 pylith::meshio::TestVertexFilterVecNorm::testConstructor(void)
 { // testConstructor
   PYLITH_METHOD_BEGIN;
 
-  VertexFilterVecNorm<MeshField> filter;
+  VertexFilterVecNorm filter;
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -83,7 +83,7 @@
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
   
-  MeshField field(mesh);
+  topology::Field field(mesh);
   field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
   field.allocate();
   field.vectorFieldType(fieldType);
@@ -105,8 +105,8 @@
     } // for
   } // Setup vertex field
 
-  VertexFilterVecNorm<MeshField> filter;
-  const MeshField& fieldNorm = filter.filter(field);
+  VertexFilterVecNorm filter;
+  const topology::Field& fieldNorm = filter.filter(field);
 
   CPPUNIT_ASSERT_EQUAL(fieldTypeE, fieldNorm.vectorFieldType());
   CPPUNIT_ASSERT_EQUAL(label, std::string(fieldNorm.label()));

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -60,7 +60,7 @@
   PYLITH_METHOD_BEGIN;
 
   Mesh mesh;
-  Field<Mesh> field(mesh);
+  Field field(mesh);
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -73,7 +73,7 @@
   PYLITH_METHOD_BEGIN;
 
   Mesh mesh;
-  Field<Mesh> field(mesh);
+  Field field(mesh);
 
   PetscSection section = field.petscSection();
   CPPUNIT_ASSERT(!section);
@@ -90,7 +90,7 @@
 
   Mesh mesh;
   _buildMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
 
   const Mesh& mesh2 = field.mesh();
   CPPUNIT_ASSERT_EQUAL(_TestFieldMesh::cellDim, mesh2.dimension());  
@@ -109,7 +109,7 @@
 
   Mesh mesh;
   _buildMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
 
   field.label(label.c_str());
   CPPUNIT_ASSERT_EQUAL(label, std::string(field.label()));
@@ -128,7 +128,7 @@
 
   Mesh mesh;
   _buildMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
 
   field.vectorFieldType(FieldBase::SCALAR);
   CPPUNIT_ASSERT_EQUAL(FieldBase::SCALAR, field._metadata[label].vectorFieldType);
@@ -147,7 +147,7 @@
 
   Mesh mesh;
   _buildMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
 
   const PylithScalar scale = 2.0;
   field.scale(scale);
@@ -168,7 +168,7 @@
 
   Mesh mesh;
   _buildMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
 
   CPPUNIT_ASSERT_EQUAL(false, field._metadata[label].dimsOkay);
   field.addDimensionOkay(true);
@@ -186,7 +186,7 @@
 
   Mesh mesh;
   _buildMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
 
   CPPUNIT_ASSERT_EQUAL(_TestFieldMesh::cellDim, field.spaceDim());
 
@@ -203,7 +203,7 @@
   Mesh mesh;
   _buildMesh(&mesh);
 
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   const std::string& label = "field A";
   field.label(label.c_str());
 
@@ -227,7 +227,7 @@
   Mesh mesh;
   _buildMesh(&mesh);
 
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   field.label(label.c_str());
   field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
   field.allocate();
@@ -262,7 +262,7 @@
   Mesh mesh;
   _buildMesh(&mesh);
 
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   const std::string& label = "field A";
   field.label(label.c_str());
 
@@ -326,10 +326,10 @@
   Mesh mesh;
   _buildMesh(&mesh);
 
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   const std::string& label = "field A";
   field.label(label.c_str());
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   PetscDM dmMesh = mesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -363,12 +363,12 @@
   _buildMesh(&mesh);
 
   // Create field with atlas to use to create new field
-  Field<Mesh> fieldSrc(mesh);
-  fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field fieldSrc(mesh);
+  fieldSrc.newSection(Field::VERTICES_FIELD, fiberDim);
   fieldSrc.allocate();
 
   const int fiberDim2 = 5;
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   const std::string& label = "field A";
   field.label(label.c_str());
   field.newSection(fieldSrc, fiberDim2);
@@ -419,9 +419,9 @@
   PetscErrorCode err = 0;
 
   // Create field with atlas to use to create new field
-  Field<Mesh> fieldSrc(mesh);
+  Field fieldSrc(mesh);
   { // Setup source field
-    fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    fieldSrc.newSection(Field::VERTICES_FIELD, fiberDim);
     PetscSection section = fieldSrc.petscSection();CPPUNIT_ASSERT(section);
     for(PetscInt v = vStart, iV = 0; v < vEnd; ++v) {
       err = PetscSectionAddConstraintDof(section, v, nconstraints[iV++]);PYLITH_CHECK_ERROR(err);
@@ -437,7 +437,7 @@
     fieldSrc.createScatter(mesh, "A");
   } // Setup source field
 
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   const std::string& label = "field A";
   field.label(label.c_str());
   field.cloneSection(fieldSrc);
@@ -470,16 +470,16 @@
   PYLITH_METHOD_BEGIN;
 
   Mesh mesh(_TestFieldMesh::cellDim);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
 
   field.scale(2.0);
-  field.vectorFieldType(Field<Mesh>::TENSOR);
+  field.vectorFieldType(Field::TENSOR);
   field.addDimensionOkay(true);
   
   field.clear();
 
   CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), field._metadata["default"].scale);
-  CPPUNIT_ASSERT_EQUAL(Field<Mesh>::OTHER, field._metadata["default"].vectorFieldType);
+  CPPUNIT_ASSERT_EQUAL(Field::OTHER, field._metadata["default"].vectorFieldType);
   CPPUNIT_ASSERT_EQUAL(false, field._metadata["default"].dimsOkay);
 
   PYLITH_METHOD_END;
@@ -504,8 +504,8 @@
   Mesh mesh;
   _buildMesh(&mesh);
 
-  Field<Mesh> field(mesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(mesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   PetscDM dmMesh = mesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -554,8 +554,8 @@
   Mesh mesh;
   _buildMesh(&mesh);
 
-  Field<Mesh> field(mesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(mesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   PetscDM dmMesh = mesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -620,8 +620,8 @@
   const PetscInt vEnd = depthStratum.end();
 
   // Create field and set constraint sizes
-  Field<Mesh> field(mesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(mesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   PetscSection section = field.petscSection();CPPUNIT_ASSERT(section);
   PetscErrorCode err = 0;
   PetscInt index = 0;
@@ -684,8 +684,8 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> field(mesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(mesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   VecVisitorMesh fieldVisitor(field);
@@ -738,9 +738,9 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> fieldSrc(mesh);
+  Field fieldSrc(mesh);
   { // Setup source field
-    fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    fieldSrc.newSection(Field::VERTICES_FIELD, fiberDim);
     fieldSrc.allocate();
     VecVisitorMesh fieldVisitor(fieldSrc);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -751,8 +751,8 @@
     } // for
   } // Setup source field
     
-  Field<Mesh> field(mesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(mesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   field.copy(fieldSrc);
@@ -800,9 +800,9 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> fieldSrc(mesh);
+  Field fieldSrc(mesh);
   { // Setup source field
-    fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    fieldSrc.newSection(Field::VERTICES_FIELD, fiberDim);
     fieldSrc.allocate();
     VecVisitorMesh fieldVisitor(fieldSrc);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -814,9 +814,9 @@
   } // Setup source field
     
 
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   { // Setup destination field
-    field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    field.newSection(Field::VERTICES_FIELD, fiberDim);
     field.allocate();
     VecVisitorMesh fieldVisitor(field);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -866,9 +866,9 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   { // setup field
-    field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    field.newSection(Field::VERTICES_FIELD, fiberDim);
     field.allocate();
 
     VecVisitorMesh fieldVisitor(field);
@@ -921,8 +921,8 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> field(mesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(mesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
   VecVisitorMesh fieldVisitor(field);
   PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -949,10 +949,10 @@
   Mesh mesh;
   _buildMesh(&mesh);
 
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   const std::string& label = "field A";
   field.label(label.c_str());
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
   
   CPPUNIT_ASSERT_EQUAL(size_t(0), field._scatters.size());
@@ -965,7 +965,7 @@
 
   CPPUNIT_ASSERT_EQUAL(size_t(1), field._scatters.size());
 
-  const Field<Mesh>::ScatterInfo& sinfo = field._getScatter("");
+  const Field::ScatterInfo& sinfo = field._getScatter("");
   CPPUNIT_ASSERT(sinfo.dm);
   CPPUNIT_ASSERT(sinfo.vector);
 
@@ -986,19 +986,19 @@
   // Create another scatter.
   field.createScatter(mesh, "B");
   CPPUNIT_ASSERT_EQUAL(size_t(2), field._scatters.size());
-  const Field<Mesh>::ScatterInfo& sinfoB = field._getScatter("B");
+  const Field::ScatterInfo& sinfoB = field._getScatter("B");
   CPPUNIT_ASSERT(sinfoB.dm);
   CPPUNIT_ASSERT(sinfoB.vector);
 
-  Field<Mesh> field2(mesh);
+  Field field2(mesh);
   field2.cloneSection(field);
   CPPUNIT_ASSERT_EQUAL(size_t(2), field2._scatters.size());
 
-  const Field<Mesh>::ScatterInfo& sinfo2 = field2._getScatter("");
+  const Field::ScatterInfo& sinfo2 = field2._getScatter("");
   CPPUNIT_ASSERT(sinfo2.dm);
   CPPUNIT_ASSERT(sinfo2.vector);
 
-  const Field<Mesh>::ScatterInfo& sinfo2B = field2._getScatter("B");
+  const Field::ScatterInfo& sinfo2B = field2._getScatter("B");
   CPPUNIT_ASSERT(sinfo2B.dm);
   CPPUNIT_ASSERT(sinfo2B.vector);
 
@@ -1018,10 +1018,10 @@
   Mesh mesh;
   _buildMesh(&mesh);
 
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   const std::string& label = "field A";
   field.label(label.c_str());
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   CPPUNIT_ASSERT_EQUAL(size_t(0), field._scatters.size());
@@ -1033,7 +1033,7 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  const Field<Mesh>::ScatterInfo& sinfo = field._getScatter("");
+  const Field::ScatterInfo& sinfo = field._getScatter("");
   CPPUNIT_ASSERT(sinfo.dm);
   CPPUNIT_ASSERT(sinfo.vector);
 
@@ -1054,19 +1054,19 @@
   // Create another scatter.
   field.createScatterWithBC(mesh, "B");
   CPPUNIT_ASSERT_EQUAL(size_t(2), field._scatters.size());
-  const Field<Mesh>::ScatterInfo& sinfoB = field._getScatter("B");
+  const Field::ScatterInfo& sinfoB = field._getScatter("B");
   CPPUNIT_ASSERT(sinfoB.dm);
   CPPUNIT_ASSERT(sinfoB.vector);
 
-  Field<Mesh> field2(mesh);
+  Field field2(mesh);
   field2.cloneSection(field);
   CPPUNIT_ASSERT_EQUAL(size_t(2), field2._scatters.size());
 
-  const Field<Mesh>::ScatterInfo& sinfo2 = field2._getScatter("");
+  const Field::ScatterInfo& sinfo2 = field2._getScatter("");
   CPPUNIT_ASSERT(sinfo2.dm);
   CPPUNIT_ASSERT(sinfo2.vector);
 
-  const Field<Mesh>::ScatterInfo& sinfo2B = field2._getScatter("B");
+  const Field::ScatterInfo& sinfo2B = field2._getScatter("B");
   CPPUNIT_ASSERT(sinfo2B.dm);
   CPPUNIT_ASSERT(sinfo2B.vector);
 
@@ -1086,14 +1086,14 @@
   Mesh mesh;
   _buildMesh(&mesh);
 
-  Field<Mesh> field(mesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(mesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
   
   CPPUNIT_ASSERT_EQUAL(size_t(0), field._scatters.size());
   field.createScatter(mesh);
   CPPUNIT_ASSERT_EQUAL(size_t(1), field._scatters.size());
-  const Field<Mesh>::ScatterInfo& sinfo = field._getScatter("");
+  const Field::ScatterInfo& sinfo = field._getScatter("");
   CPPUNIT_ASSERT(sinfo.dm);
   CPPUNIT_ASSERT(sinfo.vector);
 
@@ -1136,9 +1136,9 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   { // setup field
-    field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    field.newSection(Field::VERTICES_FIELD, fiberDim);
     field.allocate();
     VecVisitorMesh fieldVisitor(field);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -1192,8 +1192,8 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> field(mesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(mesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
   field.createScatter(mesh, context);
 
@@ -1252,7 +1252,7 @@
   PetscErrorCode err = 0;
 
   // Create field with section to use to create new field
-  Field<Mesh> fieldSrc(mesh);
+  Field fieldSrc(mesh);
   { // Setup source field
     for(PetscInt f = 0; f < numFields; ++f) {
       std::ostringstream msg;
@@ -1260,11 +1260,11 @@
       fieldSrc.addField(msg.str().c_str(), 1);
     } // for
     fieldSrc.setupFields();
-    fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, spaceDim);
+    fieldSrc.newSection(Field::VERTICES_FIELD, spaceDim);
     for(PetscInt f = 0; f < spaceDim; ++f) {
       std::ostringstream msg;
       msg << "Field "<<f;
-      fieldSrc.updateDof(msg.str().c_str(), Field<Mesh>::VERTICES_FIELD, 1);
+      fieldSrc.updateDof(msg.str().c_str(), Field::VERTICES_FIELD, 1);
     } // for
     PetscSection section = fieldSrc.petscSection();CPPUNIT_ASSERT(section);
     PetscInt iV = 0, iC = 0;
@@ -1346,7 +1346,7 @@
   PetscErrorCode err = 0;
 
   // Create field with atlas to use to create new field
-  Field<Mesh> fieldSrc(mesh);
+  Field fieldSrc(mesh);
   { // Setup source field
     for(PetscInt f = 0; f < numFields; ++f) {
       std::ostringstream msg;
@@ -1354,11 +1354,11 @@
       fieldSrc.addField(msg.str().c_str(), 1);
     } // for
     fieldSrc.setupFields();
-    fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, spaceDim);
+    fieldSrc.newSection(Field::VERTICES_FIELD, spaceDim);
     for(PetscInt f = 0; f < spaceDim; ++f) {
       std::ostringstream msg;
       msg << "Field "<<f;
-      fieldSrc.updateDof(msg.str().c_str(), Field<Mesh>::VERTICES_FIELD, 1);
+      fieldSrc.updateDof(msg.str().c_str(), Field::VERTICES_FIELD, 1);
     } // for
     PetscSection section = fieldSrc.petscSection();
     CPPUNIT_ASSERT(section);
@@ -1387,7 +1387,7 @@
     } // for
   } // Setup source field
 
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   field.cloneSection(fieldSrc);
 
   PetscSection section = field.petscSection();CPPUNIT_ASSERT(section);

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -74,7 +74,7 @@
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<Mesh> field(submesh);
+  Field field(submesh);
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -89,7 +89,7 @@
   Mesh mesh;
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
-  Field<Mesh> field(submesh);
+  Field field(submesh);
 
   PetscSection section = field.petscSection();
   CPPUNIT_ASSERT(section);
@@ -107,7 +107,7 @@
   Mesh mesh;
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
-  Field<Mesh> field(submesh);
+  Field field(submesh);
 
   const Mesh& mesh2 = field.mesh();
   CPPUNIT_ASSERT_EQUAL(_TestFieldSubMesh::cellDim-1, mesh2.dimension());  
@@ -125,7 +125,7 @@
   Mesh mesh;
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
-  Field<Mesh> field(submesh);
+  Field field(submesh);
 
   CPPUNIT_ASSERT_EQUAL(_TestFieldSubMesh::cellDim, field.spaceDim());
 
@@ -142,7 +142,7 @@
   Mesh mesh;
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
-  Field<Mesh> field(submesh);
+  Field field(submesh);
 
   field.newSection();
   PetscSection section = field.petscSection();
@@ -164,7 +164,7 @@
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<Mesh> field(submesh);
+  Field field(submesh);
   field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
   field.allocate();
 
@@ -194,8 +194,8 @@
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<Mesh> field(submesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(submesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -225,12 +225,12 @@
   Mesh submesh(mesh, _TestFieldSubMesh::label);
 
   // Create field with atlas to use to create new field
-  Field<Mesh> fieldSrc(submesh);
-  fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field fieldSrc(submesh);
+  fieldSrc.newSection(Field::VERTICES_FIELD, fiberDim);
   fieldSrc.allocate();
 
   const int fiberDim2 = 4;
-  Field<Mesh> field(submesh);
+  Field field(submesh);
   field.newSection(fieldSrc, fiberDim2);
   field.allocate();
 
@@ -273,9 +273,9 @@
   err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);PYLITH_CHECK_ERROR(err);
 
   // Create field with atlas to use to create new field
-  Field<Mesh> fieldSrc(submesh);
+  Field fieldSrc(submesh);
   { // Setup source field
-    fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    fieldSrc.newSection(Field::VERTICES_FIELD, fiberDim);
     PetscSection section = fieldSrc.petscSection();CPPUNIT_ASSERT(section);
     int iV=0;
     for(PetscInt v = vStart; v < vEnd; ++v) {
@@ -291,7 +291,7 @@
     fieldSrc.zero();
   } // Setup source field
 
-  Field<Mesh> field(submesh);
+  Field field(submesh);
   field.cloneSection(fieldSrc);
   PetscSection section = field.petscSection();CPPUNIT_ASSERT(section);
   PetscVec vec = field.localVector();CPPUNIT_ASSERT(vec);
@@ -318,16 +318,16 @@
   Mesh mesh;
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
-  Field<Mesh> field(submesh);
+  Field field(submesh);
 
   field.scale(2.0);
-  field.vectorFieldType(Field<Mesh>::TENSOR);
+  field.vectorFieldType(Field::TENSOR);
   field.addDimensionOkay(true);
   
   field.clear();
 
   CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), field._metadata["default"].scale);
-  CPPUNIT_ASSERT_EQUAL(Field<Mesh>::OTHER, field._metadata["default"].vectorFieldType);
+  CPPUNIT_ASSERT_EQUAL(Field::OTHER, field._metadata["default"].vectorFieldType);
   CPPUNIT_ASSERT_EQUAL(false, field._metadata["default"].dimsOkay);
 
   PYLITH_METHOD_END;
@@ -352,8 +352,8 @@
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<Mesh> field(submesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(submesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -403,8 +403,8 @@
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<Mesh> field(submesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(submesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
 
   PetscDM dmMesh = submesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -461,9 +461,9 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> field(submesh);
+  Field field(submesh);
   { // setup field
-    field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    field.newSection(Field::VERTICES_FIELD, fiberDim);
     field.allocate();
     VecVisitorMesh fieldVisitor(field);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -514,9 +514,9 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> fieldSrc(submesh);
+  Field fieldSrc(submesh);
   { // setup source field
-    fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    fieldSrc.newSection(Field::VERTICES_FIELD, fiberDim);
     fieldSrc.allocate();
     VecVisitorMesh fieldVisitor(fieldSrc);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -528,8 +528,8 @@
     } // for
   } // setup source field
 
-  Field<Mesh> field(submesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(submesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
   field.copy(fieldSrc);
 
@@ -575,9 +575,9 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> fieldSrc(submesh);
+  Field fieldSrc(submesh);
   { // setup source field
-    fieldSrc.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    fieldSrc.newSection(Field::VERTICES_FIELD, fiberDim);
     fieldSrc.allocate();
     VecVisitorMesh fieldVisitor(fieldSrc);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -589,9 +589,9 @@
     } // for
   } // setup source field
 
-  Field<Mesh> field(submesh);
+  Field field(submesh);
   { // setup destination field
-    field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    field.newSection(Field::VERTICES_FIELD, fiberDim);
     field.allocate();
     VecVisitorMesh fieldVisitor(field);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -642,9 +642,9 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> field(submesh);
+  Field field(submesh);
   { // setup field
-    field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    field.newSection(Field::VERTICES_FIELD, fiberDim);
     field.allocate();
     VecVisitorMesh fieldVisitor(field);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -697,8 +697,8 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> field(submesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(submesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
   VecVisitorMesh fieldVisitor(field);
   PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -726,7 +726,7 @@
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<Mesh> field(submesh);
+  Field field(submesh);
   field.newSection(FieldBase::VERTICES_FIELD, fiberDim);
   field.allocate();
 
@@ -739,7 +739,7 @@
   const PetscInt vEnd = depthStratum.end();
 
   CPPUNIT_ASSERT_EQUAL(size_t(1), field._scatters.size());
-  const Field<Mesh>::ScatterInfo& sinfo = field._getScatter("");
+  const Field::ScatterInfo& sinfo = field._getScatter("");
   CPPUNIT_ASSERT(sinfo.dm);
   CPPUNIT_ASSERT(sinfo.vector);
 
@@ -755,19 +755,19 @@
   // Create another scatter.
   field.createScatter(submesh, "B");
   CPPUNIT_ASSERT_EQUAL(size_t(2), field._scatters.size());
-  const Field<Mesh>::ScatterInfo& sinfoB = field._getScatter("B");
+  const Field::ScatterInfo& sinfoB = field._getScatter("B");
   CPPUNIT_ASSERT(sinfoB.dm);
   CPPUNIT_ASSERT(sinfoB.vector);
 
-  Field<Mesh> field2(submesh);
+  Field field2(submesh);
   field2.cloneSection(field);
   CPPUNIT_ASSERT_EQUAL(size_t(2), field2._scatters.size());
 
-  const Field<Mesh>::ScatterInfo& sinfo2 = field2._getScatter("");
+  const Field::ScatterInfo& sinfo2 = field2._getScatter("");
   CPPUNIT_ASSERT(sinfo2.dm);
   CPPUNIT_ASSERT(sinfo2.vector);
 
-  const Field<Mesh>::ScatterInfo& sinfo2B = field2._getScatter("B");
+  const Field::ScatterInfo& sinfo2B = field2._getScatter("B");
   CPPUNIT_ASSERT(sinfo2B.dm);
   CPPUNIT_ASSERT(sinfo2B.vector);
 
@@ -787,7 +787,7 @@
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<Mesh> field(submesh);
+  Field field(submesh);
   field.newSection(FieldBase::VERTICES_FIELD, fiberDim);
   field.allocate();
   
@@ -800,7 +800,7 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  const Field<Mesh>::ScatterInfo& sinfo = field._getScatter("");
+  const Field::ScatterInfo& sinfo = field._getScatter("");
   CPPUNIT_ASSERT(sinfo.dm);
   CPPUNIT_ASSERT(sinfo.vector);
 
@@ -816,19 +816,19 @@
   // Create another scatter.
   field.createScatterWithBC(submesh, "B");
   CPPUNIT_ASSERT_EQUAL(size_t(2), field._scatters.size());
-  const Field<Mesh>::ScatterInfo& sinfoB = field._getScatter("B");
+  const Field::ScatterInfo& sinfoB = field._getScatter("B");
   CPPUNIT_ASSERT(sinfoB.dm);
   CPPUNIT_ASSERT(sinfoB.vector);
 
-  Field<Mesh> field2(submesh);
+  Field field2(submesh);
   field2.cloneSection(field);
   CPPUNIT_ASSERT_EQUAL(size_t(2), field2._scatters.size());
 
-  const Field<Mesh>::ScatterInfo& sinfo2 = field2._getScatter("");
+  const Field::ScatterInfo& sinfo2 = field2._getScatter("");
   CPPUNIT_ASSERT(sinfo2.dm);
   CPPUNIT_ASSERT(sinfo2.vector);
 
-  const Field<Mesh>::ScatterInfo& sinfo2B = field2._getScatter("B");
+  const Field::ScatterInfo& sinfo2B = field2._getScatter("B");
   CPPUNIT_ASSERT(sinfo2B.dm);
   CPPUNIT_ASSERT(sinfo2B.vector);
 
@@ -848,14 +848,14 @@
   _buildMesh(&mesh);
   Mesh submesh(mesh, _TestFieldSubMesh::label);
 
-  Field<Mesh> field(submesh);
+  Field 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<Mesh>::ScatterInfo& sinfo = field._getScatter("");
+  const Field::ScatterInfo& sinfo = field._getScatter("");
   CPPUNIT_ASSERT(sinfo.dm);
   CPPUNIT_ASSERT(sinfo.vector);
 
@@ -897,9 +897,9 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> field(submesh);
+  Field field(submesh);
   { // setup field
-    field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+    field.newSection(Field::VERTICES_FIELD, fiberDim);
     field.allocate();
     VecVisitorMesh fieldVisitor(field);
     PetscScalar* fieldArray = fieldVisitor.localArray();
@@ -955,8 +955,8 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
 
-  Field<Mesh> field(submesh);
-  field.newSection(Field<Mesh>::VERTICES_FIELD, fiberDim);
+  Field field(submesh);
+  field.newSection(Field::VERTICES_FIELD, fiberDim);
   field.allocate();
   field.createScatter(submesh, context);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -32,9 +32,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::topology::TestFieldsMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> > FieldsMesh;
-
-// ----------------------------------------------------------------------
 void
 pylith::topology::TestFieldsMesh::setUp(void)
 { // setUp
@@ -67,7 +64,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_mesh);
-  FieldsMesh fields(*_mesh);
+  Fields fields(*_mesh);
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -80,7 +77,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_mesh);
-  FieldsMesh fields(*_mesh);
+  Fields fields(*_mesh);
   
   const char* label = "field";
   fields.add(label, "displacement");
@@ -100,14 +97,14 @@
   const int fiberDim = 3;
 
   CPPUNIT_ASSERT(_mesh);
-  FieldsMesh fields(*_mesh);
+  Fields fields(*_mesh);
 
   const char* label = "field";
-  fields.add(label, "velocity", Field<Mesh>::VERTICES_FIELD, fiberDim);
+  fields.add(label, "velocity", Field::VERTICES_FIELD, fiberDim);
   const size_t size = 1;
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
 
-  Field<Mesh>& field = fields.get(label);
+  Field& field = fields.get(label);
   field.allocate();
 
   PetscDM dmMesh = _mesh->dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -131,7 +128,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_mesh);
-  FieldsMesh fields(*_mesh);
+  Fields fields(*_mesh);
 
   const char* labelA = "field A";
   fields.add(labelA, "displacement");
@@ -144,7 +141,7 @@
   fields.del(labelA);
   size = 1;
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
-  const Field<Mesh>& field = fields.get(labelB);
+  const Field& field = fields.get(labelB);
   CPPUNIT_ASSERT_EQUAL(std::string("velocity"), std::string(field.label()));
 
   PYLITH_METHOD_END;
@@ -158,11 +155,11 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_mesh);
-  FieldsMesh fields(*_mesh);
+  Fields fields(*_mesh);
 
   const char* label = "field";
   fields.add(label, "velocity");
-  const Field<Mesh>& field = fields.get(label);
+  const Field& field = fields.get(label);
 
   PYLITH_METHOD_END;
 } // testGet
@@ -175,14 +172,14 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_mesh);
-  FieldsMesh fields(*_mesh);
+  Fields fields(*_mesh);
 
   const char* label = "field";
   fields.add(label, "velocity");
 
-  const FieldsMesh* fieldsPtr = &fields;
+  const Fields* fieldsPtr = &fields;
   CPPUNIT_ASSERT(fieldsPtr);
-  const Field<Mesh>& field = fieldsPtr->get(label);
+  const Field& field = fieldsPtr->get(label);
 
   PYLITH_METHOD_END;
 } // testGetConst
@@ -195,7 +192,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_mesh);
-  FieldsMesh fields(*_mesh);
+  Fields fields(*_mesh);
 
   fields.add("field A", "velocity");
   
@@ -223,14 +220,14 @@
   const int fiberDim = 3;
 
   CPPUNIT_ASSERT(_mesh);
-  FieldsMesh fields(*_mesh);
+  Fields fields(*_mesh);
 
   const char* labelA = "field A";
-  fields.add(labelA, "displacement", Field<Mesh>::VERTICES_FIELD, fiberDim);
+  fields.add(labelA, "displacement", Field::VERTICES_FIELD, fiberDim);
 
   const char* labelB = "field B";
   fields.add(labelB, "velocity");
-  Field<Mesh>& fieldA = fields.get(labelA);
+  Field& fieldA = fields.get(labelA);
   fieldA.allocate();
 
   fields.copyLayout(labelA);
@@ -243,7 +240,7 @@
   const PetscInt vStart = depthStratum.begin();
   const PetscInt vEnd = depthStratum.end();
   
-  const Field<Mesh>& field = fields.get(labelB);
+  const Field& field = fields.get(labelB);
   VecVisitorMesh fieldVisitor(field);
   for(PetscInt v = vStart; v < vEnd; ++v) {
     CPPUNIT_ASSERT_EQUAL(fiberDim, fieldVisitor.sectionDof(v));

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -32,9 +32,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::topology::TestFieldsSubMesh );
 
 // ----------------------------------------------------------------------
-typedef pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> > FieldsMesh;
-
-// ----------------------------------------------------------------------
 void
 pylith::topology::TestFieldsSubMesh::setUp(void)
 { // setUp
@@ -70,7 +67,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsMesh fields(*_submesh);
+  Fields fields(*_submesh);
 
   PYLITH_METHOD_END;
 } // testConstructor
@@ -83,7 +80,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsMesh fields(*_submesh);
+  Fields fields(*_submesh);
   
   const char* label = "field";
   fields.add(label, "displacement");
@@ -103,14 +100,14 @@
   const int fiberDim = 3;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsMesh fields(*_submesh);
+  Fields fields(*_submesh);
 
   const char* label = "field";
-  fields.add(label, "velocity", Field<Mesh>::VERTICES_FIELD, fiberDim);
+  fields.add(label, "velocity", Field::VERTICES_FIELD, fiberDim);
   const size_t size = 1;
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
 
-  Field<Mesh>& field = fields.get(label);
+  Field& field = fields.get(label);
   field.allocate();
 
   PetscDM dmMesh = _submesh->dmMesh();CPPUNIT_ASSERT(dmMesh);
@@ -134,7 +131,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsMesh fields(*_submesh);
+  Fields fields(*_submesh);
 
   const char* labelA = "field A";
   fields.add(labelA, "displacement");
@@ -147,7 +144,7 @@
   fields.del(labelA);
   size = 1;
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
-  const Field<Mesh>& field = fields.get(labelB);
+  const Field& field = fields.get(labelB);
 
   PYLITH_METHOD_END;
 } // testDelete
@@ -160,11 +157,11 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsMesh fields(*_submesh);
+  Fields fields(*_submesh);
 
   const char* label = "field";
   fields.add(label, "displacement");
-  const Field<Mesh>& field = fields.get(label);
+  const Field& field = fields.get(label);
 
   PYLITH_METHOD_END;
 } // testGet
@@ -177,14 +174,14 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsMesh fields(*_submesh);
+  Fields fields(*_submesh);
 
   const char* label = "field";
   fields.add(label, "displacement");
 
-  const FieldsMesh* fieldsPtr = &fields;
+  const Fields* fieldsPtr = &fields;
   CPPUNIT_ASSERT(fieldsPtr);
-  const Field<Mesh>& field = fieldsPtr->get(label);
+  const Field& field = fieldsPtr->get(label);
 
   PYLITH_METHOD_END;
 } // testGetConst
@@ -197,7 +194,7 @@
   PYLITH_METHOD_BEGIN;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsMesh fields(*_submesh);
+  Fields fields(*_submesh);
 
   fields.add("field A", "velocity");
   
@@ -224,21 +221,21 @@
   const int fiberDim = 3;
 
   CPPUNIT_ASSERT(_submesh);
-  FieldsMesh fields(*_submesh);
+  Fields fields(*_submesh);
   
   const char* labelA = "field A";
-  fields.add(labelA, "velocity", Field<Mesh>::VERTICES_FIELD, fiberDim);
+  fields.add(labelA, "velocity", Field::VERTICES_FIELD, fiberDim);
 
   const char* labelB = "field B";
   fields.add(labelB, "displacement");
-  Field<Mesh>& fieldA = fields.get(labelA);
+  Field& fieldA = fields.get(labelA);
   fieldA.allocate();
 
   fields.copyLayout(labelA);
 
   const size_t size = 2;
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
-  const Field<Mesh>& field = fields.get(labelB);
+  const Field& 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/TestJacobian.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -40,7 +40,7 @@
 
   Mesh mesh;
   _initializeMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
@@ -61,11 +61,11 @@
 
   Mesh mesh;
   _initializeMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   _initializeField(&mesh, &field);
 
   Mesh submesh(mesh, "bc");
-  Field<Mesh> subfield(submesh);
+  Field subfield(submesh);
   subfield.newSection(FieldBase::VERTICES_FIELD, submesh.dimension());
   subfield.allocate();
   subfield.zero();
@@ -84,7 +84,7 @@
 
   Mesh mesh;
   _initializeMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
@@ -103,7 +103,7 @@
 
   Mesh mesh;
   _initializeMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
@@ -122,7 +122,7 @@
 
   Mesh mesh;
   _initializeMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
@@ -140,7 +140,7 @@
 
   Mesh mesh;
   _initializeMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
@@ -160,7 +160,7 @@
 
   Mesh mesh;
   _initializeMesh(&mesh);
-  Field<Mesh> field(mesh);
+  Field field(mesh);
   _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
@@ -189,7 +189,7 @@
 // ----------------------------------------------------------------------
 void
 pylith::topology::TestJacobian::_initializeField(Mesh* mesh,
-                                                 Field<Mesh>* field) const
+                                                 Field* field) const
 { // _initializeField
   PYLITH_METHOD_BEGIN;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.hh	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.hh	2013-05-14 19:55:48 UTC (rev 22061)
@@ -95,7 +95,7 @@
    * @param field Solution field.
    */
   void _initializeField(Mesh* mesh,
-                        Field<Mesh>* field) const;
+                        Field* field) const;
 
 }; // class TestJacobian
 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestSolutionFields.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestSolutionFields.cc	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestSolutionFields.cc	2013-05-14 19:55:48 UTC (rev 22061)
@@ -82,9 +82,9 @@
   for (int i=0; i < size; ++i)
     manager.add(labels[i], "displacement");
 
-  Field<Mesh>& fieldA = manager.get(labels[0]);
-  Field<Mesh>& fieldB = manager.get(labels[1]);
-  Field<Mesh>& fieldC = manager.get(labels[2]);
+  Field& fieldA = manager.get(labels[0]);
+  Field& fieldB = manager.get(labels[1]);
+  Field& fieldC = manager.get(labels[2]);
   fieldA.newSection(FieldBase::VERTICES_FIELD, fiberDimA);
   fieldA.allocate();
   

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichletBC.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichletBC.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichletBC.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -240,8 +240,8 @@
     bc.initialize(totalTime=0.0, numTimeSteps=1, normalizer=normalizer)
 
     # Setup field
-    from pylith.topology.Field import MeshField
-    field = MeshField(mesh)
+    from pylith.topology.Field import Field
+    field = Field(mesh)
     field.newSection(field.VERTICES_FIELD, cs.spaceDim())
 
     return (mesh, bc, field)

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichletBoundary.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichletBoundary.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichletBoundary.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -193,8 +193,8 @@
     bc.initialize(totalTime=0.0, numTimeSteps=1, normalizer=normalizer)
 
     # Setup field
-    from pylith.topology.Field import MeshField
-    field = MeshField(mesh)
+    from pylith.topology.Field import Field
+    field = Field(mesh)
     field.newSection(field.VERTICES_FIELD, cs.spaceDim())
     
     return (mesh, bc, field)

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicit.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicit.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicit.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -191,8 +191,8 @@
     (mesh, integrator) = self._preinitialize()
     fields = self._initialize(mesh, integrator)
 
-    from pylith.topology.Field import MeshField
-    jacobian = MeshField(mesh)
+    from pylith.topology.Field import Field
+    jacobian = Field(mesh)
     jacobian.newSection(jacobian.VERTICES_FIELD, mesh.coordsys().spaceDim())
     jacobian.allocate()
     jacobian.zero()

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -185,8 +185,8 @@
     (mesh, integrator) = self._preinitialize()
     fields = self._initialize(mesh, integrator)
 
-    from pylith.topology.Field import MeshField
-    jacobian = MeshField(mesh)
+    from pylith.topology.Field import Field
+    jacobian = Field(mesh)
     jacobian.newSection(jacobian.VERTICES_FIELD, mesh.coordsys().spaceDim())
     jacobian.allocate()
     jacobian.zero()

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestCellFilterAvg.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestCellFilterAvg.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestCellFilterAvg.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -22,10 +22,10 @@
 
 import unittest
 
-from pylith.meshio.CellFilterAvgMesh import CellFilterAvgMesh
+from pylith.meshio.CellFilterAvg import CellFilterAvg
 
 # ----------------------------------------------------------------------
-class TestCellFilterAvgMesh(unittest.TestCase):
+class TestCellFilterAvg(unittest.TestCase):
   """
   Unit testing of Python CellFilterAvg object.
   """
@@ -34,7 +34,7 @@
     """
     Test constructor.
     """
-    filter = CellFilterAvgMesh()
+    filter = CellFilterAvg()
     filter._configure()
     self.failIf(filter.filter is None)
     return
@@ -60,7 +60,7 @@
     quadrature.preinitialize(spaceDim)
     quadrature.initialize()
 
-    filter = CellFilterAvgMesh()
+    filter = CellFilterAvg()
     filter._configure()
     filter.initialize(quadrature)
     return
@@ -70,7 +70,7 @@
     """
     Test factory method.
     """
-    from pylith.meshio.CellFilterAvgMesh import output_cell_filter
+    from pylith.meshio.CellFilterAvg import output_cell_filter
     filter = output_cell_filter()
     return
 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -22,19 +22,19 @@
 
 import unittest
 
-from pylith.meshio.DataWriterHDF5Mesh import DataWriterHDF5Mesh
+from pylith.meshio.DataWriterHDF5 import DataWriterHDF5
 
 # ----------------------------------------------------------------------
-class TestDataWriterHDF5Mesh(unittest.TestCase):
+class TestDataWriterHDF5(unittest.TestCase):
   """
-  Unit testing of Python DataWriterHDF5Mesh object.
+  Unit testing of Python DataWriterHDF5 object.
   """
 
   def test_constructor(self):
     """
     Test constructor.
     """
-    filter = DataWriterHDF5Mesh()
+    filter = DataWriterHDF5()
     filter._configure()
     return
 
@@ -43,7 +43,7 @@
     """
     Test constructor.
     """
-    filter = DataWriterHDF5Mesh()
+    filter = DataWriterHDF5()
     filter._configure()
 
     from spatialdata.units.Nondimensional import Nondimensional
@@ -56,7 +56,7 @@
     """
     Test factory method.
     """
-    from pylith.meshio.DataWriterHDF5Mesh import data_writer
+    from pylith.meshio.DataWriterHDF5 import data_writer
     filter = data_writer()
     return
 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5Ext.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5Ext.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterHDF5Ext.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -22,19 +22,19 @@
 
 import unittest
 
-from pylith.meshio.DataWriterHDF5ExtMesh import DataWriterHDF5ExtMesh
+from pylith.meshio.DataWriterHDF5Ext import DataWriterHDF5Ext
 
 # ----------------------------------------------------------------------
-class TestDataWriterHDF5ExtMesh(unittest.TestCase):
+class TestDataWriterHDF5Ext(unittest.TestCase):
   """
-  Unit testing of Python DataWriterHDF5ExtMesh object.
+  Unit testing of Python DataWriterHDF5Ext object.
   """
 
   def test_constructor(self):
     """
     Test constructor.
     """
-    filter = DataWriterHDF5ExtMesh()
+    filter = DataWriterHDF5Ext()
     filter._configure()
     return
 
@@ -43,7 +43,7 @@
     """
     Test constructor.
     """
-    filter = DataWriterHDF5ExtMesh()
+    filter = DataWriterHDF5Ext()
     filter._configure()
 
     from spatialdata.units.Nondimensional import Nondimensional
@@ -56,7 +56,7 @@
     """
     Test factory method.
     """
-    from pylith.meshio.DataWriterHDF5ExtMesh import data_writer
+    from pylith.meshio.DataWriterHDF5Ext import data_writer
     filter = data_writer()
     return
 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterVTK.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterVTK.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestDataWriterVTK.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -22,19 +22,19 @@
 
 import unittest
 
-from pylith.meshio.DataWriterVTKMesh import DataWriterVTKMesh
+from pylith.meshio.DataWriterVTK import DataWriterVTK
 
 # ----------------------------------------------------------------------
-class TestDataWriterVTKMesh(unittest.TestCase):
+class TestDataWriterVTK(unittest.TestCase):
   """
-  Unit testing of Python DataWriterVTKMesh object.
+  Unit testing of Python DataWriterVTK object.
   """
 
   def test_constructor(self):
     """
     Test constructor.
     """
-    filter = DataWriterVTKMesh()
+    filter = DataWriterVTK()
     filter._configure()
     return
 
@@ -43,7 +43,7 @@
     """
     Test constructor.
     """
-    filter = DataWriterVTKMesh()
+    filter = DataWriterVTK()
     filter._configure()
 
     from spatialdata.units.Nondimensional import Nondimensional
@@ -56,7 +56,7 @@
     """
     Test factory method.
     """
-    from pylith.meshio.DataWriterVTKMesh import data_writer
+    from pylith.meshio.DataWriterVTK import data_writer
     filter = data_writer()
     return
 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestOutputManagerMesh.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestOutputManagerMesh.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestOutputManagerMesh.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,11 +18,11 @@
 
 ## @file unittests/pytests/meshio/TestOutputManagerMesh.py
 
-## @brief Unit testing of Python OutputManagerMesh object.
+## @brief Unit testing of Python OutputManager object with mesh.
 
 import unittest
 
-from pylith.meshio.OutputManagerMesh import OutputManagerMesh
+from pylith.meshio.OutputManager import OutputManager
 
 # ----------------------------------------------------------------------
 class TestProvider(object):
@@ -54,8 +54,8 @@
     normalizer._configure()
     mesh = iohandler.read(debug=False, interpolate=False)
 
-    from pylith.topology.Fields import MeshFields
-    fields = MeshFields(mesh)
+    from pylith.topology.Fields import Fields
+    fields = Fields(mesh)
     
     self.mesh = mesh
     self.fields = fields
@@ -121,7 +121,7 @@
 # ----------------------------------------------------------------------
 class TestOutputManagerMesh(unittest.TestCase):
   """
-  Unit testing of Python OutputManagerMesh object.
+  Unit testing of Python OutputManager object.
   """
 
   def setUp(self):
@@ -135,7 +135,7 @@
     """
     Test constructor.
     """
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer._configure()
     output._configure()
     return
@@ -146,7 +146,7 @@
     Test preinitialize().
     """
     dataProvider = TestProvider()
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.preinitialize(dataProvider)
     
     self.failIf(output.dataProvider is None)
@@ -158,7 +158,7 @@
     Test verifyConfiguration().
     """
     dataProvider = TestProvider()
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.preinitialize(dataProvider)
 
     output.vertexInfoFields = ["vertex info"]
@@ -174,7 +174,7 @@
     Test initialize().
     """
     # No quadrature
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer.inventory.filename = "test.vtk"
     output.inventory.writer._configure()
     output._configure()
@@ -195,7 +195,7 @@
     quadrature.inventory.cell = cell
     quadrature._configure()
     
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer.inventory.filename = "test.vtk"
     output.inventory.writer._configure()
     output._configure()
@@ -209,7 +209,7 @@
     """
     Test open() and close().
     """
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer.inventory.filename = "output.vtk"
     output.inventory.writer._configure()
     output._configure()
@@ -226,7 +226,7 @@
     """
     Test writeInfo().
     """
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer.inventory.filename = "output.vtk"
     output.inventory.writer._configure()
     output.inventory.vertexInfoFields = ["vertex info"]
@@ -247,7 +247,7 @@
     """
     Test writeData().
     """
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer.inventory.filename = "output.vtk"
     output.inventory.writer.inventory.timeFormat = "%3.1f"
     output.inventory.writer._configure()
@@ -272,7 +272,7 @@
     """
     from pyre.units.time import second
 
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.outputFreq = "skip"
     output.inventory.skip = 2
     output._configure()
@@ -289,7 +289,7 @@
     totalTime = 1.0*second
     self.assertEqual(1, output._estimateNumSteps(totalTime, numTimeSteps))
 
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.outputFreq = "time_step"
     output.inventory.dt = 2.0*second
     output._configure()
@@ -318,7 +318,7 @@
     dataProvider = TestProvider()
 
     # Default values should be true
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer._configure()
     output._configure()
     output.preinitialize(dataProvider)
@@ -327,7 +327,7 @@
     self.assertEqual(True, output._checkWrite(3.234e+8))
 
     # Check writing based on time
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer._configure()
     output._configure()
     output.preinitialize(dataProvider)
@@ -345,7 +345,7 @@
     self.assertEqual(True, output._checkWrite(t))
     
     # Check writing based on number of steps
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer._configure()
     output.inventory.outputFreq = "skip"
     output.inventory.skip = 1
@@ -374,7 +374,7 @@
     """
     Test factory method.
     """
-    from pylith.meshio.OutputManagerMesh import output_manager
+    from pylith.meshio.OutputManager import output_manager
     o = output_manager()
     return
 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/TestOutputManagerSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/TestOutputManagerSubMesh.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestOutputManagerSubMesh.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -22,7 +22,7 @@
 
 import unittest
 
-from pylith.meshio.OutputManagerMesh import OutputManagerMesh
+from pylith.meshio.OutputManager import OutputManager
 
 # ----------------------------------------------------------------------
 class TestProvider(object):
@@ -57,8 +57,8 @@
     from pylith.topology.Mesh import Mesh
     submesh = Mesh(mesh=mesh, label="4")
 
-    from pylith.topology.Fields import MeshFields
-    fields = MeshFields(submesh)
+    from pylith.topology.Fields import Fields
+    fields = Fields(submesh)
     
     self.mesh = mesh
     self.submesh = submesh
@@ -139,7 +139,7 @@
     """
     Test constructor.
     """
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer._configure()
     output._configure()
     return
@@ -150,7 +150,7 @@
     Test preinitialize().
     """
     dataProvider = TestProvider()
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.preinitialize(dataProvider)
     
     self.failIf(output.dataProvider is None)
@@ -162,7 +162,7 @@
     Test verifyConfiguration().
     """
     dataProvider = TestProvider()
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.preinitialize(dataProvider)
 
     output.vertexInfoFields = ["vertex info"]
@@ -178,7 +178,7 @@
     Test initialize().
     """
     # No quadrature
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer.inventory.filename = "test.vtk"
     output.inventory.writer._configure()
     output._configure()
@@ -199,7 +199,7 @@
     quadrature.inventory.cell = cell
     quadrature._configure()
     
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer.inventory.filename = "test.vtk"
     output.inventory.writer._configure()
     output._configure()
@@ -213,7 +213,7 @@
     """
     Test open() and close().
     """
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer.inventory.filename = "output.vtk"
     output.inventory.writer._configure()
     output._configure()
@@ -230,7 +230,7 @@
     """
     Test writeInfo().
     """
-    output = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer.inventory.filename = "output.vtk"
     output.inventory.writer._configure()
     output.inventory.vertexInfoFields = ["vertex info"]
@@ -251,7 +251,7 @@
     """
     Test writeData().
     """
-    output = OutputManagerMesh()
+    output = OutputManager()
     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 = OutputManagerMesh()
+    output = OutputManager()
     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 = OutputManagerMesh()
+    output = OutputManager()
     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 = OutputManagerMesh()
+    output = OutputManager()
     output.inventory.writer._configure()
     output.inventory.outputFreq = "skip"
     output.inventory.skip = 1
@@ -333,7 +333,7 @@
     """
     Test factory method.
     """
-    from pylith.meshio.OutputManagerMesh import output_manager
+    from pylith.meshio.OutputManager 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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/TestVertexFilterVecNorm.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -22,10 +22,10 @@
 
 import unittest
 
-from pylith.meshio.VertexFilterVecNormMesh import VertexFilterVecNormMesh
+from pylith.meshio.VertexFilterVecNorm import VertexFilterVecNorm
 
 # ----------------------------------------------------------------------
-class TestVertexFilterVecNormMesh(unittest.TestCase):
+class TestVertexFilterVecNorm(unittest.TestCase):
   """
   Unit testing of Python VertexFilterVecNorm object.
   """
@@ -34,7 +34,7 @@
     """
     Test constructor.
     """
-    filter = VertexFilterVecNormMesh()
+    filter = VertexFilterVecNorm()
     filter._configure()
     self.failIf(filter.filter is None)
     return
@@ -44,7 +44,7 @@
     """
     Test constructor.
     """
-    filter = VertexFilterVecNormMesh()
+    filter = VertexFilterVecNorm()
     filter._configure()
     filter.initialize()
     return
@@ -54,7 +54,7 @@
     """
     Test factory method.
     """
-    from pylith.meshio.VertexFilterVecNormMesh import output_vertex_filter
+    from pylith.meshio.VertexFilterVecNorm import output_vertex_filter
     filter = output_vertex_filter()
     return
 

Modified: short/3D/PyLith/trunk/unittests/pytests/meshio/testhdf5.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/meshio/testhdf5.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/testhdf5.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -63,11 +63,11 @@
 
     suite = unittest.TestSuite()
 
-    from TestDataWriterHDF5 import TestDataWriterHDF5Mesh
-    suite.addTest(unittest.makeSuite(TestDataWriterHDF5Mesh))
+    from TestDataWriterHDF5 import TestDataWriterHDF5
+    suite.addTest(unittest.makeSuite(TestDataWriterHDF5))
 
-    from TestDataWriterHDF5Ext import TestDataWriterHDF5ExtMesh
-    suite.addTest(unittest.makeSuite(TestDataWriterHDF5ExtMesh))
+    from TestDataWriterHDF5Ext import TestDataWriterHDF5Ext
+    suite.addTest(unittest.makeSuite(TestDataWriterHDF5Ext))
 
     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-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/meshio/testmeshio.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -69,14 +69,14 @@
     from TestMeshIOLagrit import TestMeshIOLagrit
     suite.addTest(unittest.makeSuite(TestMeshIOLagrit))
 
-    from TestVertexFilterVecNorm import TestVertexFilterVecNormMesh
-    suite.addTest(unittest.makeSuite(TestVertexFilterVecNormMesh))
+    from TestVertexFilterVecNorm import TestVertexFilterVecNorm
+    suite.addTest(unittest.makeSuite(TestVertexFilterVecNorm))
 
-    from TestCellFilterAvg import TestCellFilterAvgMesh
-    suite.addTest(unittest.makeSuite(TestCellFilterAvgMesh))
+    from TestCellFilterAvg import TestCellFilterAvg
+    suite.addTest(unittest.makeSuite(TestCellFilterAvg))
 
-    from TestDataWriterVTK import TestDataWriterVTKMesh
-    suite.addTest(unittest.makeSuite(TestDataWriterVTKMesh))
+    from TestDataWriterVTK import TestDataWriterVTK
+    suite.addTest(unittest.makeSuite(TestDataWriterVTK))
 
     from TestOutputManagerMesh import TestOutputManagerMesh
     suite.addTest(unittest.makeSuite(TestOutputManagerMesh))

Modified: short/3D/PyLith/trunk/unittests/pytests/topology/TestMeshField.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/topology/TestMeshField.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/topology/TestMeshField.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,16 +18,16 @@
 
 ## @file unittests/pytests/topology/TestMeshField.py
 
-## @brief Unit testing of MeshField object.
+## @brief Unit testing of Field object with mesh.
 
 import unittest
 
-from pylith.topology.Field import MeshField
+from pylith.topology.Field import Field
 
 # ----------------------------------------------------------------------
 class TestMeshField(unittest.TestCase):
   """
-  Unit testing of MeshField object.
+  Unit testing of Field object.
   """
 
   def setUp(self):
@@ -50,7 +50,7 @@
     importer._configure()
     self.mesh = importer.read(debug=False, interpolate=False)
     
-    self.field = MeshField(self.mesh)
+    self.field = Field(self.mesh)
     self.field.allocate()
     return
 
@@ -87,7 +87,7 @@
     """
     Test vectorFieldType().
     """
-    fieldType = MeshField.MULTI_SCALAR
+    fieldType = Field.MULTI_SCALAR
 
     self.field.vectorFieldType(fieldType)
     self.assertEqual(fieldType, self.field.vectorFieldType())
@@ -138,7 +138,7 @@
     """
     Test newSection(domain).
     """
-    self.field.newSection(MeshField.VERTICES_FIELD, 4)
+    self.field.newSection(Field.VERTICES_FIELD, 4)
 
     # No test of result
     return
@@ -148,7 +148,7 @@
     """
     Test newSection(field).
     """
-    fieldB = MeshField(self.mesh)
+    fieldB = Field(self.mesh)
     fieldB.cloneSection(self.field)
 
     # No test of result
@@ -158,7 +158,7 @@
     """
     Test add().
     """
-    fieldB = MeshField(self.mesh)
+    fieldB = Field(self.mesh)
     fieldB.allocate()
     self.field.add(fieldB)
 
@@ -170,7 +170,7 @@
     """
     Test newSection(field).
     """
-    fieldB = MeshField(self.mesh)
+    fieldB = Field(self.mesh)
     fieldB.allocate()
     fieldB.copy(self.field)
 

Modified: short/3D/PyLith/trunk/unittests/pytests/topology/TestMeshFields.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/topology/TestMeshFields.py	2013-05-14 06:37:06 UTC (rev 22060)
+++ short/3D/PyLith/trunk/unittests/pytests/topology/TestMeshFields.py	2013-05-14 19:55:48 UTC (rev 22061)
@@ -18,16 +18,16 @@
 
 ## @file unittests/pytests/topology/TestMeshFields.py
 
-## @brief Unit testing of MeshFields object.
+## @brief Unit testing of Fields object with mesh.
 
 import unittest
 
-from pylith.topology.Fields import MeshFields
+from pylith.topology.Fields import Fields
 
 # ----------------------------------------------------------------------
 class TestMeshFields(unittest.TestCase):
   """
-  Unit testing of MeshFields object.
+  Unit testing of Fields object.
   """
 
   def setUp(self):
@@ -50,7 +50,7 @@
     importer._configure()
     self.mesh = importer.read(debug=False, interpolate=False)
     
-    self.fields = MeshFields(self.mesh)
+    self.fields = Fields(self.mesh)
     return
 
 



More information about the CIG-COMMITS mailing list